操作系统 五状态进程模型

操作系统 五状态进程模型

五状态进程模型 是从 二状态模型 发展而来的。如果所有处于”未运行”状态的进程都准备好运行,那么二状态模型是高效的;然而,这并不总是正确的。一些处于”未运行”状态的进程可能正在等待事件或执行输入/输出活动。为了运行程序,必须创建一个进程。进程可以运行也可以不运行,但是如果进程正在运行,它必须得到操作系统的支持才能正确进行进程的进展。

修复这个问题的最好方法是将”未运行”状态分为两个状态: 就绪 状态和 阻塞 状态。

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 **

此转换只允许在一些特殊情况下进行,因为在某些系统中,父进程可以随时终止子进程。

五状态进程模型的优缺点

五状态进程模型具有各种优点和缺点。五状态进程模型的一些优点和缺点如下所示:

优点

  1. 新状态和退出状态是进程管理的非常有用的组成部分。
  2. 它是前述两状态进程概念的更高效实现。

缺点

  1. 操作系统不会保存已终止或已退出操作系统的进程的数据。
  2. 当每个进程进入阻塞状态时,处理器保持空闲,直到至少有一个进程退出等待状态,这可能会导致性能问题。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程