我们现在的电脑基本上都是多任务,我们聊着 QQ 的时候,同时可以看着视频,这里相当于 QQ 和视频两个程序同时运行着(两个进程)。早期的时候,电脑的 CPU 是单核的(单核理论上只运行操作一个任务),那它是如何做到多任务的呢?这就涉及到进程的调度策略。现在给大家举这么一个例子,有 A,B,C 三个进程,在我们单 CPU 的情况下,每一个时刻只有一个进程在运行,如果 A 运行完,B 运行,B 运行完,C 运行,C 运行完,A 运行,而 CPU 的运算速度足够快,A 两次运行时间间隔足够短,从宏观上就我们就看到 A,B,C 好像同时运行,这就是实现单 CPU 运行多个任务的核心原理,通过时间片轮询调度策略实现多任务。
1.进程的三种状态
就绪态:进程已经具备执行的一切条件,正在等待分配 CPU 的处理时间。 执行态:该进程正在占用 CPU 运行。 等待态:进程因不具备某些执行条件而暂时无法继续执行的状态。
这里需要注意,就绪态和等待态都是不执行,但它们是有区别的,就绪态是指满足条件,时间没到,等待态是不满足条件。
进程的这三种状态可以相互转换的关系图如下:

简单一句话就是时间片的轮转和上下文的切换。