三态模型
运行状态
当一个进程在处理机上运行时,则该进程处于运行状态。处于次状态的进程的数目小于等于处理器的数目,在单处理系统中,处于运行态的进程只有一个。
就绪状态
当一个进程获得了除CPU以外的任何资源,一旦获得CPU,便可立即执行,则该进程处于就绪状态。一个系统中处于就绪状态的进程可能有多个,通常它们按优先级排成一个队列,称为就绪队列。
阻塞状态
正在执行的进程由于发生某事件而暂时无法继续执行时,便放弃处理机而处于暂停状态,亦即进程的执行受到阻塞,把这种暂停状态称为阻塞状态,有时也称为等待状态或封锁状态。致使进程阻塞的典型事件有:请求I/O,申请缓冲空间等。通常将这种处于阻塞状态的进程也排成一个队列。有的系统则根据阻塞原因的不同而把处于阻塞状态的进程排成多个队列。
五态模型
对于实际系统,进程的状态和转换更复杂,又引进了新建态和终止态。
新建态
对应于进程刚刚被创建未被提交的状态,等待系统完成创建进程的所有必要信息。进程正在创建过程中,还不能运行。操作系统在创建状态要进行的工作包括分配和建立PCB、建立资源表格(如打开文件表)并分配资源、加载程序并建立地址空间表等。创建进程时分为两个阶段,第一个阶段为一个新进程创建必要的管理信息,第二个阶段让该进程进入就绪状态。由于有了新建态,操作系统往往可以根据系统的性能和主存容量的限制推迟新建态进程的提交。
终止态
进程已经结束,系统回收除PCB之外的其他资源,并让其他进程从PCB中提取某些信息。类似的,进程的终止也可分为两个阶段,第一个阶段等待操作系统进行善后处理,第二个阶段释放主存。
由于进程的不断创建,系统资源特别是主存资源已不能满足所有进程运行的要求。这时,就必须将某些进程挂起,放到磁盘对换区,暂时不参加调度,以平衡系统负载。
进程挂起的原因有:
- 终端用户的请求:当终端用户自己的程序在运行期间发现可疑问题时,希望将自己的程序静止下来。
- 父进程的请求:有时父进程希望挂起某个子进程,以便考核和修改该子进程,或者协调各子进程间的关系。
- 负荷调节的需要:当实时系统中的工作负荷较重,已可能影响到对实时任务的控制时,可由系统把一些不重要的进程挂起,以保证系统能正常运行。
- 操作系统的需要:操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或进行记账。
挂起状态又分为:
活跃就绪:是指进程在主存并且可被调度的状态。
静止就绪(挂起就绪):是指进程被对换到辅存时的就绪状态,是不能被直接调度的状态,只有当主存中没有活跃就绪态进程,或者是挂起就绪态进程具有更高的优先级,系统将把挂起就绪态进程调回主存并转换为活跃就绪。
活跃阻塞:是指进程已在主存,一旦等待的事件产生便进入活跃就绪状态。
静止阻塞:是指进程对换到辅存时的阻塞状态,一旦等待的事件产生便进入静止就绪状态。