计算机操作系统——进程管理(考研复试终极整理版)
一、进程的定义与组成
1. 进程定义
进程是程序在某个数据集合上的动态执行过程,是操作系统进行资源分配和调度的基本单位。
- 核心公式:
进程 = 程序段 + 数据段 + PCB
- 关键特性:
- 动态性:进程由创建到撤销具有生命周期
- 并发性:多个进程可交替执行
- 独立性:进程是资源分配的基本单位
2. 进程组成
- 程序段:存储执行代码(如
main() 函数)
- 数据段:存储程序运行期间处理的数据
- PCB(进程控制块):操作系统管理进程的核心数据结构
- PCB内容:
- 标识信息:进程ID(PID)、父进程ID(PPID)
- 处理机状态:程序计数器、寄存器值、栈指针
- 控制信息:进程状态、调度优先级、资源分配表
二、进程的状态与转换
1. 基本状态模型
- 三态模型:
- 运行态:占用CPU执行
- 就绪态:具备运行条件,等待CPU调度
- 阻塞态:等待资源或事件(如I/O完成)
- 五态模型(扩展):
- 创建态:进程正在被创建(分配资源、初始化PCB)
- 终止态:进程资源被回收,PCB被撤销
2. 状态转换
graph LR
创建态 --> 就绪态
就绪态 --> 运行态 --> 就绪态(时间片用完)
运行态 --> 阻塞态(等待资源)
阻塞态 --> 就绪态(资源就绪)
运行态 --> 终止态
3. 挂起状态
- 定义:进程被换出到外存,释放内存资源
- 触发条件:内存不足或用户主动挂起
三、进程控制与调度
1. 进程控制原语
- 创建原语:分配PCB、加载程序到内存(如
fork())
- 终止原语:回收资源、撤销PCB
- 阻塞原语:主动进入阻塞态(如
wait())
- 唤醒原语:由其他进程或系统触发(如
signal())
2. 进程调度算法
| 算法 |
核心思想 |
优缺点 |
| FCFS |
先来先服务 |
简单但长作业等待时间长 |
| SJF/SPF |
最短作业/进程优先 |
平均周转时间最短,但可能导致饥饿 |
| 时间片轮转 |
按时间片轮流执行 |
公平但上下文切换开销大 |
| 多级反馈队列 |
优先级队列动态调整 |
兼顾长短作业,实际系统常用 |
四、进程同步与通信
1. 进程同步机制
- 互斥:同一资源仅允许一个进程访问(如打印机)
- 同步:协调进程执行顺序(如生产者-消费者问题)
- 实现工具:
- 信号量:
P()(等待)和 V()(释放)操作
- 管程:封装共享数据和操作的高级同步机制
2. 进程通信方式
- 共享存储:基于内存的共享(如共享内存区)
- 管道通信:单向字节流(如
pipe())
- 消息传递:通过发送/接收原语交换数据(如消息队列)
五、死锁与处理
1. 死锁必要条件
- 互斥条件:资源独占使用
- 不可剥夺条件:资源只能主动释放
- 请求与保持条件:持有资源时请求新资源
- 循环等待条件:进程间形成环形等待链
2. 死锁处理策略
| 策略 |
方法 |
示例 |
| 预防 |
破坏必要条件(如资源一次性分配) |
破坏请求与保持条件 |
| 避免 |
银行家算法动态检测安全性 |
安全序列判断资源分配是否安全 |
| 检测与解除 |
资源分配图检测,强制终止进程 |
撤销循环等待链中的进程 |
六、高频考点与答题要点
1. 进程 vs 线程
- 资源分配:进程是资源分配的基本单位,线程是CPU调度的基本单位
- 开销:线程切换开销小,共享进程资源
2. 系统调用 vs 库函数
- 系统调用:需陷入内核态(如
read())
- 库函数:在用户态执行(如
printf())
3. 进程调度方式
- 抢占式:优先级高的进程可抢占CPU(如实时系统)
- 非抢占式:进程主动释放CPU(如FCFS)