学习笔记------进程状态及转换
进程状态模型
1.1 两状态进程模型
最简单的模型就是基于一个事实,进程要么正在执行,要么没有执行。这样进程就有两种状态:运行(Running)和非运行(Not-running)。如下图,每隔一段时间,正在运行的进程就会中断运行,此时分派程序将选择一个新的进程投入运行。
1.2 进程的三态模型
因为非运行状态有多种情况,所以引进两种状态:就绪(Ready)和阻塞(Blocked)。三状态模型如下。
- 运行状态。进程获得了CPU和其他所需要的资源,目前在CPU上运行(单CPU系统而言,只有一个进程处于运行状态)。
- 阻塞状态。进程运行中发生了某种等待事件(如等待I/O操作)而暂时不能运行的状态(并不是缺少CPU资源)。
- 就绪状态。进程已经获得了除CPU以外的资源,当前只需等待CPU分配资源即可运行。
进程各个状态变迁需要注意以下5点。
(1)就绪状态→运行状态,是由进程调度程序(分派程序)完成的。也就是说,一旦CPU空闲下来,调度程序就立刻执行根据某种算法在就绪队列中选一个进程运行。
(2)运行状态→阻塞状态,通常是由运行进程自身提出的。当运行进程申请某种资源得不到满足时(发生等待事件),就主动放弃CPU而进入阻塞状态并插入到阻塞队列中。
(3)阻塞状态→就绪状态,总是由外界事件引起的。通常当阻塞状态被阻塞的原因得到解除时(等待事件已完成),由当前正在运行的进程来响应这个外界事件的请求,唤醒相应的阻塞状态进程。
(4)运行状态→就绪状态,通常出现在分时操作系统,即该进程的时间片用完,只能等待下一个时间片,故该进程直接插入就绪队列中。
(5)阻塞状态不能直接变迁到运行状态。由于阻塞进程阻塞原因被解除后,就满足就绪状态的条件,故只能先变迁到就绪状态中。
1.3进程的五态模型
1.进程的产生
当需要创建一个新进程时,系统为该进程分配一个进程控制块(PCB),并为该进程分配内存空间,且装入该进程对应的程序和有关数据。
当一个进程生成另一个进程时,生成进程称为父进程,而被生成的进程陈各位子进程。
2.进程的终止
当一个进程执行到自然结束点,或出现不可克服的错误而不得不取消时,或被拥有特权的进程取消时,该进程转换为终止状态。
五态模型如下。
1.4进程的挂起
1.挂起状态的引入
进程挂起(也称换出)是指在内存中的进程被暂时移出保存到外存中(如磁盘)的过程。当某个进程被挂起时,若被挂起的进程处于运行状态则停止执行;若被挂起的处于就绪状态则暂时不参加进程调度。引起进程挂起原因大致有以下三种。
(1)用户的请求。
(2)父进程的请求。
(3)操作系统的原因。
2.具有挂起状态的进程状态转换
由于被挂起的进程不能被调度运行,因此通常将挂起状态称为静止状态,而将非挂起状态称为活动状态。根据挂起前进程所处的状态,可以将挂起状态分为:静止就绪状态和静止阻塞状态。下图描述引入挂起状态进程转换关系。
6种关系转换说明。
(1)活动阻塞态挂起→静止阻塞态。主要有两种情况会发生这种挂起状态的变化:①若当前不存在活动就绪进程,则至少有一个活动阻塞进程使其变为静止阻塞进程,以腾出内存空间,从外存调入一个静止就绪进程使其变为活动就绪进程(保证内存中至少有一个活动就绪进程,避免CPU空闲);②操作系统根据当前资源状况和性能要求所导致挂起的变化。
(2)静止阻塞态激活→活动阻塞态。出现情况:①操作系统已经得知导致该进程阻塞的事件即将结束;②内存中已经有了一大块空闲的空间。
(3)静止阻塞态→静止就绪态。当在外存上的静止阻塞进程所需资源得到满足,或者等待事件已经完成时,会引起该状态变化(但进程仍然在外存)。
(4)静止就绪态激活→活动就绪态。出现情况:①外存上的静止就绪进程具有更高的优先级;②内存中已经有了一大块空闲的空间;③当前内存中没有活动就绪进程。
(5)活动就绪态挂起→静止就绪态。由于系统调节负荷(即内存紧张)的需要,或者是系统优化性能的需要,才将某些暂时不需要的运行的进程换出外存。
(6)运行态挂起→静止就绪态。主要是运行进程出现了错误或者异常,或者是对运行进程进行分析的需要。