进程是程序在某个数据集合上的动态执行过程,是操作系统进行资源分配和调度的基本单位。
进程 = 程序段 + 数据段 + PCBmain() 函数)graph LR
创建态 --> 就绪态
就绪态 --> 运行态 --> 就绪态(时间片用完)
运行态 --> 阻塞态(等待资源)
阻塞态 --> 就绪态(资源就绪)
运行态 --> 终止态
fork())wait())signal())| 算法 | 核心思想 | 优缺点 |
|-------------------|---------------------------------------|-----------------------------------------|
| FCFS | 先来先服务 | 简单但长作业等待时间长 |
| SJF/SPF | 最短作业/进程优先 | 平均周转时间最短,但可能导致饥饿 |
| 时间片轮转 | 按时间片轮流执行 | 公平但上下文切换开销大 |
| 多级反馈队列 | 优先级队列动态调整 | 兼顾长短作业,实际系统常用 |
P()(等待)和 V()(释放)操作pipe())| 策略 | 方法 | 示例 |
|-------------------|---------------------------------------|-------------------------------|
| 预防 | 破坏必要条件(如资源一次性分配) | 破坏请求与保持条件 |
| 避免 | 银行家算法动态检测安全性 | 安全序列判断资源分配是否安全 |
| 检测与解除 | 资源分配图检测,强制终止进程 | 撤销循环等待链中的进程 |
read())printf())