计算机系统基础知识-进程管理
进程管理是计算机系统基础知识的核心考点,也是架构设计中进程调度、资源分配的基础,重点覆盖进程资源管理、信号量与PV操作三大模块,内容参考系统架构设计师教材第2章计算机系统基础知识。
一、进程管理基础概述
进程(Process)是操作系统进行资源分配的基本单位,是程序在计算机中的一次执行过程。
(一)进程与线程的核心概念
-
进程:进程是操作系统分配资源的基本单位。每个进程都有自己独立的内存空间和系统资源(文件句柄、网络连接等)。进程之间的切换开销较大,独立性强,一个进程崩溃通常不会影响其他进程。 -
进程的组成:进程控制块PCB(唯一标志)、程序(描述进程要做什么)、数据(存放进程执行时所需数据)。 -
线程:线程是进程中的一个执行单元,一个进程可以包含多个线程。线程共享进程的地址空间和大部分资源,线程共享所属进程的地址空间和资源,仅拥有独立的程序计数器、寄存器集合和栈空间,线程之间的切换开销远小于进程,并发效率更高。
(二)进程三态图
进程的生命周期包含三种核心状态(就绪、运行、阻塞),各状态之间可根据系统事件相互转换,构成进程三态图,具体状态及转换逻辑如下:

-
就绪状态:进程已具备所有执行条件,等待CPU调度(分配执行时间),此时进程不占用CPU,仅等待调度机会。当进程被创建、从阻塞状态唤醒,或时间片用完后,会进入就绪状态。 -
运行状态:进程获得CPU资源,正在执行指令,是进程的实际执行状态。当进程时间片用完,或进程主动请求资源(未获得时),会退出运行状态。 -
阻塞状态:进程因等待某类事件(如资源分配、I/O完成、信号量触发)而无法继续执行,此时即使有CPU资源,也无法执行。当进程等待的事件发生(如获得资源、I/O完成),会被唤醒,进入就绪状态。
核心转换关系:
就绪状态 → 运行状态(CPU调度);
运行状态 → 就绪状态(时间片用完、高优先级进程抢占);
运行状态 → 阻塞状态(请求资源未获得、等待I/O等);
阻塞状态 → 就绪状态(等待事件完成、被唤醒)。
进程不能直接从就绪态转换到阻塞态
进程与程序的核心区别:程序是静态的指令集合(如.exe文件),不具备运行状态;进程是动态的执行过程,拥有自己的生命周期(创建→就绪→运行→阻塞→终止),且会占用CPU、内存等系统资源。
二、前驱图
(一)核心定义
前驱图(Precedence Graph),是一种有向无环图(DAG),用于描述进程之间的依赖关系和执行顺序。即哪些任务可以并行执行,哪些任务之间有顺序关系。
图中表示ABC可以并行执行,但是必须ABC都执行完后,才能执行D,这就确定了两点:任务间的并行、任务间的先后顺序。
三、进程资源管理
(一)进程资源
进程运行过程中需占用各类资源,按资源特性可分为两类:可剥夺资源,不可剥夺资源
-
可剥夺资源:系统可强制收回该资源,重新分配给其他进程,不会导致进程故障,如CPU、内存(分页/分段存储中的内存块); -
不可剥夺资源:一旦分配给某进程,需该进程主动释放,系统无法强制收回,否则会导致进程执行失败,如打印机、磁带机、独占文件等。

如图所示:P代表进程,R代表资源,R方框中有几个圆球就表示有几个这种资源,在上图中,R1指向P1,表示R1有一个资源已经分配给了P1,P2指向R2,表示P2还需要请求两个R2资源才能执行。
阻塞节点:某进程所请求的资源已经全部分配完毕,无法获取所需资源,该进程被阻塞了无法继续。如上图中P2。
非阻塞节点:某进程所请求的资源还有剩余,可以分配给该进程继续运行。如上图中P1。
当一个进程资源图中所有进程都是阻塞节点时,即陷入死锁状态。
(三)进程的同步互斥
互斥表示一个资源在同一时间内只能由一个任务单独使用,需要加锁,使用完后解锁才能被其他任务使用:
同步表示两个任务可以同时执行,只不过有速度上的差异,需要速度上匹配,不存在资源是否单独或共享的问题。

(三)进程资源竞争与死锁预防
进程资源竞争是导致死锁的核心原因,死锁是指多个进程因相互等待对方占用的资源,而陷入无法继续执行的僵局。死锁产生必要条件(四大条件,缺一不可):

-
互斥条件:资源只能被一个进程占用,不可共享; -
请求与等待条件:进程持有部分资源,同时请求其他资源,且不释放已持有的资源; -
不可剥夺条件:不可剥夺资源被占用后,无法被系统强制收回; -
循环等待条件:多个进程形成循环依赖,每个进程都在等待下一个进程占用的资源。
死锁预防核心策略:破坏四大条件中的任意一个即可,常用策略包括:
-
破坏互斥条件:对可共享资源采用共享分配方式(如内存、磁盘文件); -
破坏请求与保持条件:采用“预先分配”策略,进程启动前一次性申请所有所需资源,申请不到则不启动; -
破坏不可剥夺条件:对可剥夺资源(如CPU)采用强制收回机制; -
破坏循环等待条件:对资源进行编号,进程必须按编号递增顺序申请资源,禁止逆序申请。
四、信号量与PV操作
(一)信号量核心定义
信号量是操作系统中用于实现进程同步与互斥的核心机制,本质是一个整型变量S,可取值为正、负或零,结合PV操作实现进程间的协调,信号量的核心分类的两类:
-
互斥信号量:用于实现进程间对临界资源的互斥访问,初始值为1(表示临界资源空闲),取值范围为[-n,1](n为等待该资源的进程数); -
同步信号量:对共享资源进行访问,初始值是共享资源的个数。
(二)PV操作定义与执行逻辑
PV操作是信号量的两个核心操作,均为原子操作(不可中断,执行过程中不会被其他进程打断),具体定义与执行逻辑如下:

1. P操作(Passeren 申请资源)
操作逻辑:将信号量S的值减1(S = S - 1),然后判断S的值:
-
若S ≥ 0:表示当前进程可继续执行,成功获取资源或满足同步条件; -
若S < 0:表示当前进程无法获取资源或未满足同步条件,将该进程阻塞,放入信号量S的等待队列中。
核心作用:申请资源、检测同步条件,若无法满足则阻塞进程。
2. V操作(Verhoog 释放资源)
操作逻辑:将信号量S的值加1(S = S + 1),然后判断S的值:
-
若S > 0:表示当前没有等待该信号量的进程,释放资源后无需唤醒其他进程,进程继续执行; -
若S ≤ 0:表示有进程在等待该信号量,从等待队列中唤醒一个进程,使其进入就绪状态,当前进程继续执行。
核心作用:释放资源、通知同步条件满足,唤醒阻塞进程。


评论