操作系统进程、线程

355 阅读2分钟

批处理操作系统

早期的批处理操作系统是将一系列需要执行的操作指令写下来,成为一个清单,一次交给计算机进行处理,计算机不断地读取指令进行操作.假如有两个任务A和B,任务需要进行大量的I/O操作,这时cpu是处于空闲状态的,但是任务B也只能等待任务A执行完以后才能继续执行,导致有一段时间内,操作系统资源并没有得到很好的利用

进程

在上述早期的批处理操作系统中,我们期望在任务A执行I/O操作的时候,CPU去执行任务B,这就是进程出现的初衷。一个进程对应一个程序,每一个程序都有自己的独立的内存空间且互不干扰,进程保存了每个程序的运行状态,为进程切换提供了可能。操作系统进行线程切换时,保存当前的线程状态,下一次切换回来是,根据进程的状态继续执行。

线程

进程解决了操作系统的并发问题,但是一个进程在一个时间段内只能做一件事情,假如程序在访问db获取数据的时候(处理时间很长),用户再次发起某一个响应时间极短的请求,那么只能等待上一个数据获取完成以后才能去响应用户的下一个请求,这就是线程出现的原因,我们期待进程可以分成多个子任务,每个子任务对应一个线程,各个线程之间可以切换,在用户触发下一次请求后,获取数据的线程可以暂时让出cpu资源,让cpu先去响应用户的下一次请求,满足用户实时性的要求,用户感觉所有的操作都是实时的。

参考文章:Java 多线程基础:进程和线程之由来