您的位置  > 互联网

Linux内核源码/内存调优/文件系统/进程管理/设备驱动

流程执行过程中根据不同情况至少需要定义三种状态:

进程状态转换的具体原因如下:

出现更高优先级的进程。 就绪状态—→运行状态:选择CPU空闲时的就绪进程。

1.2 过程五态模型

五态模型在三态模型的基础上增加了新的状态和退出状态:

内核学习网站:

Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈

进程状态转换的具体原因如下:

1.3 过程的七态模型

三态模型和五态模型都假设所有进程都在内存中,并且实际上是有序地创建进程的。 当系统资源特别是内存资源不再满足进程运行的要求时,必须将某些进程挂起( ),将其交换到磁盘交换区,释放其占用的部分资源,暂时不参与低级进程调度。 它的目的是平滑系统运行负载。

进程暂停的原因有多种,主要有: 1. 最终用户的请求。 当最终用户在自己的程序运行过程中发现可疑问题时,他们希望暂停自己的程序来阻止这些问题。 即暂停正在执行的进程的执行; 如果用户进程处于就绪状态但此时没有执行,则该进程暂时不接受调度,以便用户研究其执行情况或修改程序。 我们将这种静态称为“暂停状态”。 2.来自父进程的请求。 有时,父进程想要​​挂起其子进程之一,以便检查和修改子进程,或者协调子进程之间的活动。 3.负载调节的需要。 当实时系统中工作量较大,可能影响实时任务的控制时,系统可以暂停一些不重要的进程,以保证系统能够正常运行。 4.操作系统需求。 操作系统有时想要挂起某些进程,以检查正在运行的资源使用情况或出于记账目的。 5、交换的需要。 为了缓解内存不足的情况,将内存中的阻塞进程移至外部内存。

七状态模型在五状态模型的基础上增加了待决就绪状态(ready)和待决等待状态( )。

进程状态转换的具体原因如下:

等待状态→挂起等待状态:操作系统可以根据当前的资源状态和性能需求,决定换出等待进程,使其成为挂起等待状态。

挂起等待状态→挂起就绪状态:导致进程等待的事件发生后,相应的挂起等待状态进程将转为挂起就绪状态。 挂起的就绪状态→就绪状态:当内存中没有就绪状态进程,或者进程被挂起时,就绪进程的优先级高于就绪进程,系统会将挂起的就绪进程转换为就绪状态。

就绪状态→挂起就绪状态:根据当前的资源状态和性能需求,操作系统也可能决定换出就绪进程,使其成为挂起就绪状态。

挂起等待状态→等待状态:进程在等待事件时,原则上不需要将其转移到内存中。 但在以下情况下,这种状态改变是可能的。 当进程退出时,主存已经拥有大量空闲空间,挂起等待的进程具有较高的优先级,并且操作系统已获知导致其阻塞的事件即将结束。 此状态发生变化。

运行状态→挂起就绪状态:当优先级较高的挂起等待状态进程的等待事件结束时,需要抢占CPU。 此时主存空间不足,可能会导致正在运行的进程挂起。 就绪状态。 另外,处于运行状态的进程也可以自行挂起。

新状态→挂起就绪状态:考虑到系统当前的资源状况和性能需求,可以决定将新创建的进程换出,成为挂起就绪状态。

挂起的进程相当于不在内存中的进程,因此挂起的进程在被交换到内存之前不会参与低级调度。

挂起的进程具有以下特点: