在任意时刻下,通常只有一个进程可以被加载到计算机的CPU上运行。
三状态模型
任何一个进程在它的生命周期内都会处于下面三种状态,使用这三种状态可以简单描述运行在计算机上的进程之间的状态切换,进程的一生都处在这三种状态间相互转换。
- 运行态(Running):指该进程正在被CPU调度运行。
- 就绪态(Ready):指该进程满足被CPU调度的所有条件但此时并没有被调度执行。
- 阻塞态(Blocked):指该进程正在等待某事件的发生之后才可以继续被CPU调度运行。
三状态模型之间的切换
CPU在调度进程时,只会去操作系统维护的处于就绪态的进程PCB链表中调度,所以三状态模型之间的切换只有4种切换方式:
- 就绪态—>运行态:当操作系统的调度程序从就绪态的链表中调度一个进程时,该进程的进程状态就会被切换为运行态,与此同时CPU即会开始运行此进程。
- 运行态—>就绪态:当一个进程的时间片到达,CPU必须去调度下一个进程时,此时处于运行态的进程的进程状态就会被切换为就绪态并重新进入操作系统就绪态的进程链表。
- 运行态—>阻塞态:当CPU正在运行一个进程时,该进程此时需要等待一个时间的完成才能继续运行(例如:程序的I/O流 …),这时操作系统就会将该进程的进程状态切换为阻塞状态,直到进程所需要的等待事件完成。