《操作系统 - 清华大学》 8 -5:进程管理:进程生命周期管理
进程的动态特性——生命周期管理详解
在前面的内容中,大致把进程相关知识的第一部分给大家做了介绍,主要围绕进程的静态部分,包括进程到底有哪些组成、具有什么样的特点,以及它是如何表示不同信息的。
接下来,将深入探讨进程的动态特点,也就是进程的状态。进程状态代表着进程生命周期的变化过程。基于此,会从三个方面展开讲解,分别是进程的生命周期管理、进程的状态变化模型,以及进程的挂起模型 。
一、进程的生命周期管理概述
什么是进程生命周期呢?很显然,进程从开始产生到最后结束的整个过程,就是它的生命周期。在这个过程中,主要涉及进程创建、运行、等待、唤醒和结束这几个关键环节,将其统称为进程的生命周期管理。
二、进程创建
进程的创建就如同人类的诞生,总得有个起始点。当操作系统初始启动时,会创建第一个进程,我们称之为 init
进程,这个进程承担着创建其他新进程的重任。
除此之外,还有两种常见的进程创建场景。一是用户发出创建进程的请求,之后操作系统会响应并完成创建操作;二是正在运行的进程,由于自身特殊需求,也会向操作系统发出创建新进程的请求。
当决定创建新进程时,系统会在内存中构建一个 PCB
(进程控制块) ,它代表了进程最初始的状态。接着,系统会为其完成一系列初始化工作,填充进程控制块中的相关数据,至此,一个新进程就形成了。不过,新创建的进程并不会立即执行,它需要等待操作系统从众多可以执行的进程(即就绪进程)中选择它,这里就涉及到后续要讲的调度算法,包括何时选择、如何选择等问题。一旦某个就绪进程被选中,它就会从就绪态转变为运行态,占用 CPU
开始执行。
三、进程等待
进程在执行过程中,可能会出现需要等待的情况。例如,当进程要读取硬盘上的文件时,由于硬盘读取数据的速度相较于 CPU
的执行速度非常慢,如果让 CPU
一直等待文件读取完成,会造成资源的极大浪费。此时,进程就需要进入等待状态,让其他就绪进程得以占用 CPU
执行,而该进程自身则等待操作系统将文件读入内存。
另外,如果进程需要与其他进程协同工作,但其他进程尚未执行,导致它无法继续推进,或者进程需要其他数据、资源而暂时无法获取时,同样需要等待。进程进入等待状态,是由自身发起的,因为只有进程自身清楚何时需要等待以及等待的具体事件。当进程进入等待状态后,它便不再占用 CPU
资源。
四、进程唤醒
有等待就会有唤醒。当进程等待的资源得到满足,或者等待的事件发生时,进程就可以继续执行了。此时,进程会从等待状态转变为就绪态,这意味着它又可以被操作系统调度,占用 CPU
执行任务。需要注意的是,处于等待状态的进程自身无法唤醒自己,只能由操作系统或者其他进程来唤醒。
五、进程结束
在进程的整个执行过程中,执行、等待、唤醒这些环节可能会多次重复。当进程完成了所有功能后,就会走向结束。进程结束主要有以下几种情况:
- 正常退出:进程顺利完成所有预定功能后正常结束运行。
- 自身错误退出:进程在执行过程中出现错误,但自身判断无法继续执行,于是主动选择退出。
- 致命错误被强制退出:进程出现严重错误,比如访问其他进程的地址空间,这是操作系统所不允许的,此时操作系统会强制杀死该进程。
- 被其他进程杀死:例如,一些管理进程发现某个进程占用内存过多,影响了整个系统的安全和可靠性,就会将其杀死。
总结
本文详细介绍了进程生命周期管理的各个阶段,包括进程的创建、运行、等待、唤醒和结束。进程的创建有多种触发方式,新进程创建后需经调度才能执行;执行过程中可能因各种原因等待,等待由进程自身发起;等待的进程需被其他进程或操作系统唤醒;进程结束则分为正常退出、自身错误退出、因致命错误被强制退出以及被其他进程杀死这几种情况。理解进程的生命周期管理,有助于深入掌握操作系统中进程的运行机制,为后续学习进程的状态变化模型和挂起模型奠定基础。