第三章 进程
3.1 概念
进程是活动实体,包括当前活动,通过程序计数器的值和处理器寄存器的内容来表示
3.2 进程状态
- 新的:进程正在被创建
- 运行:指令正在被执行
- 等待:进程等待某个事件的发生
- 就绪:进程等待分配处理器
- 终止:进程完成执行
第五章 CPU调度
5.1 先到先服务调度
先到先服务算法(first-come,first-served(FCFS) Scheduling algorithm),先请求CPU的进程先分配到CPU
缺点:平均等待时间过长
5.2 最短作业优先调度
最短作业优先调度算法(shortest-job-first (SJF) scheduling algorithm)
当CPU为空闲时,它会赋给具有最短CPU区间的进程。如果两个进程具有同样长度,那么可以使用FCFS调度来处理
平均等待时间最少
考虑到达时间,存在抢占和非抢占两种情况
5.3 优先级调度
优先级调度算法(priority scheduling algorithm)
每个进程都有一个优先级与其关联,具有最高优先级的进程会分配到CPU。具有相同优先级的进程按FCFS顺序调度。SJF算法可作为通用优先级调度算法的一个特例
5.4 轮转法调度
轮转法(round-robin,RR)调度算法是专门为分时系统设计的。它类似于FCFS调度,但是增加了抢占以切换进程。定义一个较小时间单元,称为时间片(time slice)
将就绪队列作为循环队列。CPU调度程序循环就绪队列,为每个进程分配不超过一个时间片的CPU
第七章 死锁
7.1 死锁的必要条件
互斥:至少有一个资源必须处于非共享模式,即一次只有一个进程使用。如果另一个进程申请该资源,那么申请进程必须等到该资源释放为止
占有并等待:一个进程必须占有至少一个资源。并等待另一个资源,而该资源为其他进程所占有
非抢占:资源不能被强占,即资源只能在进程完成任务后自动释放
循环等待:有一组等待进程{P0,P1,···,Pn},P0等待的资源为P1所占有,P1等待的资源为P2所占有,······,Pn-1等待的资源为Pn所占有,Pn等待的资源为P0所占有
4个条件必须同时满足才会出现死锁
图7.3 存在环,且R2的两个实例都被分配,存在死锁
图7.4 存在环,但是R2的一个实例分配给了P4,P4可能会释放掉R2的实例,这个资源可以再分配给P3,以打破环,故不存在死锁
7.2 死锁预防
从死锁的4个必要条件入手
互斥:为了确保这一条件不成立,需要确保:进程绝不需要等待共享资源
占有并等待:为了确保这一条件不成立,必须保证:当一个进程申请一个资源时,它不能占有其他资源
非抢占:为了确保这一条件不成立,可以使用如下协议:如果一个进程占有资源并申请另一个不能被立即释放的资源,那么其现已分配的资源都可被抢占
循环等待:为了确保这一条件不成立,对所有资源类型进行完全排序,且要求每个进程按递增顺序来申请资源
7.3 死锁避免
7.3.1 资源分配图算法:
消除环
7.3.2 银行家算法:
7.3.2.1 安全性算法
7.3.2.2 资源请求算法
7.3.2.3 举例
7.4 死锁恢复
- 终止所有进程
- 一次只终止一个进程直到取消死循环为止
第九章 虚拟内存
9.1 FIFO页面置换
当必须置换一页时,将选择最旧的页
9.2 最优置换
最优页置换算法(optimal page-replacement algorithm)
9.3 LRU页面置换
最近最少使用算法(least-recently-used algorithm)