5 操作系统中的状态过程模型
先决条件:
- 操作系统中进程的状态
- 操作系统中的两态进程模型
进程是正在执行的程序,它由许多元素组成,包括程序代码和一组数据。要执行一个程序,必须为该程序创建一个进程。在这里,该过程可能会或可能不会运行,但如果它处于运行状态,则必须由操作系统维护以获得该过程的适当进展。
需要五态过程模型
在五状态模型中,状态被分为两种非运行状态:就绪和阻塞, 除此之外,还为此添加了另外两个状态: New和Exit/Terminate 。使用这两种状态是因为在以前的模型中,主存储器能够存储所有程序,但事实并非如此,因为程序现在非常大,并且将这些进程加载到主存储器中非常困难/甚至不可能并且如果需要使用进程释放的先前资源,那么这里是不可能的。
此流程模型中使用的五种状态是:
- Running:表示当前正在执行的进程。假设在下面的执行过程中只有一个处理器,那么一次最多有一个处理器可以在该状态下运行。
- 就绪:意味着当操作系统有机会时准备执行的进程。
- 阻塞/等待:这意味着进程无法继续执行,直到某些事件发生,例如输入输出操作的完成。
- 新:表示已创建但尚未被操作系统允许执行的新进程。新进程没有加载到主存中,但它的进程控制块 (PCB) 已创建。
- 退出/终止:操作系统已释放的进程或作业,因为它已完成或因某些问题而中止。
两态模型中进程的执行
该模型由五个状态组成,即运行、就绪、阻塞、新建和退出。该模型在队列中出现任何新作业/进程时起作用,它首先被允许进入队列,然后进入就绪状态。现在处于就绪状态,进程进入运行状态。在运行状态下,进程有两个条件,即进程进入事件等待或进程超时。
如果该进程已超时,则该进程再次进入就绪状态,因为该进程尚未完成其执行。如果进程具有事件等待条件,则该进程进入阻塞状态,然后进入就绪状态。如果这两个条件都为真,那么进程在调度后进入运行状态,之后进程被释放并最终终止。
可能的状态转换
可能存在导致进程状态转换的各种事件。可能的状态转换如下所示:
- Null -> New:为执行一个进程创建一个新进程。
- 新 -> 就绪:系统会将进程从新状态移动到就绪状态,现在它已准备好执行。在这里,系统可能会设置一个限制,以便多个进程不能发生,否则可能会出现性能问题。
- Ready -> Running:操作系统现在选择一个进程进行运行,系统只选择一个处于就绪状态的进程进行执行。
- Running -> Exit:如果进程指示现在已完成或已中止,则系统终止进程。
- Running -> Ready:发生这种转变的原因是当正在运行的进程已经达到了它的最大运行时间,可以不间断地执行。这方面的一个例子可以是在后台运行的进程,它定期执行一些维护或其他功能。
- Running -> Blocked:如果一个进程请求它正在等待的东西,它就会进入阻塞状态。例如,一个进程可能会请求一些当时可能不可用的资源,或者它可能正在等待 I/O 操作或等待某个其他进程完成,然后才能继续该进程。
- 阻塞 -> 就绪:当它一直在等待的事件发生时,进程从阻塞状态移动到就绪状态。
- Ready -> Exit:这种转换只能在某些情况下存在,因为在某些系统中,父进程可以随时终止子进程。
好处:
- New 和 Exit 状态对于管理流程是非常有用的结构。
- 它是先前两态过程模型的一种有效方式。
缺点:
- 如果进程终止或退出操作系统,则操作系统不会保留其数据。
- 可能存在性能问题,因为在每个进程进入阻塞状态的情况下,CPU 保持空闲,直到至少一个进程离开等待状态。