操作系统 五状态进程模型
五状态进程模型 是从 二状态模型 发展而来的。如果所有处于”未运行”状态的进程都准备好运行,那么二状态模型是高效的;然而,这并不总是正确的。一些处于”未运行”状态的进程可能正在等待事件或执行输入/输出活动。为了运行程序,必须创建一个进程。进程可以运行也可以不运行,但是如果进程正在运行,它必须得到操作系统的支持才能正确进行进程的进展。
修复这个问题的最好方法是将”未运行”状态分为两个状态: 就绪 状态和 阻塞 状态。
New状态的原因
在以前的模型中,主存储器被认为足够大,可以容纳所有程序,但事实并非如此。今天的程序大小非常大。无法将所有进程加载到主存储器中。
当创建一个新进程时,程序不会加载到主存储器中。在主存储器中,操作系统仅保存有关进程的少量信息。当有足够的空间时,长期调度程序将程序发送到主存储器中。这样的进程被称为”新”状态。
终止状态的原因
在以前的模型中,当一个进程完成执行时,它的资源将立即释放。然而,将来可能会有另一个进程需要这些数据。
子进程被认为是处于生命周期的末尾。子进程仍然存在于内存中,但无法执行。例如,当一个子进程完成执行时,操作系统会保存其数据,直到父进程调用wait()函数。
五状态进程模型的状态
在这个进程模型中使用的五个状态如下:
1. 新状态
指的是已经创建但尚未被操作系统批准执行的新进程。虽然新进程尚未加载到主存储器中,但其进程控制块已经创建。
2. 就绪状态
在新状态的进程之后,进程从新状态转移到就绪状态。当一个进程处于就绪状态时,表示它已经被加载到主存储器中并且准备好运行。在就绪状态中,进程必须等待处理器响应;一旦处理器响应,进程就会前往处理器进行执行。值得注意的是,在多道程序环境中,可能会有多个进程处于就绪状态。
3. 运行状态
所有在CPU上执行的进程都处于运行状态。
运行状态表示进程从新状态和就绪状态开始执行。如果进程位于其临界区,其他进程必须在就绪状态中等待。
4. 阻塞/等待状态
阻塞状态适用于所有退出CPU并进入等待状态的进程。当CPU可用时,阻塞状态中的进程将转移到就绪状态,然后进入运行状态。
5. 退出/终止
退出状态指的是已从CPU和主存储器中终止的进程。
在二态模型中执行五态进程
该模型有五个状态:新建、就绪、运行、阻塞和退出。当一个新的作业/进程到达队列时,首先接受到队列中,然后转移到就绪状态。进程在就绪状态时处于运行状态。运行状态的进程有两个条件:要么进入事件等待状态,要么超时。
如果进程超时,它会从运行状态转移到就绪状态,因为该进程尚未完成执行。如果进程具有事件等待条件,它会进入阻塞状态和就绪状态。如果同时满足这两个条件,进程在调度后进入运行状态,然后被释放,最后终止。
五状态进程模型的状态转换
各种事件导致进程状态的变化。5状态进程模型的可能状态转换如下:
**1. Null – > New **
为实现一个进程创建一个新的进程。
**2. New – > Ready **
系统将进程从新状态转移到就绪状态,该进程已准备好运行。在这种情况下,系统可以设置限制以防止过多的进程同时运行,否则可能会影响性能。
**3. Ready – > Running **
操作系统现在选择一个进程来运行,系统选择一个就绪状态的单个进程来运行。
**4. Running – > Exit **
如果一个进程表示已经完成或已被中止,系统会终止该进程。
**5. Running – > Ready **
当运行进程已经达到连续执行的最大运行时间时,会发生这种转换。
**6. Running – > Blocked **
如果进程请求正在等待的某些资源,它会被置于阻塞状态。例如,一个进程可以需要当前不可用的资源,或者它可能在等待输入/输出操作或其他进程完成之后再继续执行。
**7. Blocked – > Ready **
当进程等待的事件发生时,进程从阻塞状态切换到就绪状态。
**8. Ready – > Exit **
此转换只允许在一些特殊情况下进行,因为在某些系统中,父进程可以随时终止子进程。
五状态进程模型的优缺点
五状态进程模型具有各种优点和缺点。五状态进程模型的一些优点和缺点如下所示:
优点
- 新状态和退出状态是进程管理的非常有用的组成部分。
- 它是前述两状态进程概念的更高效实现。
缺点
- 操作系统不会保存已终止或已退出操作系统的进程的数据。
- 当每个进程进入阻塞状态时,处理器保持空闲,直到至少有一个进程退出等待状态,这可能会导致性能问题。