第四章 处理机调度与死锁
目录
1.处理机三级调度
高级调度:作业为对象,从外存到内存,进程创建操作
中级调度:进程为对象,外存与内存互换,挂起与唤醒
低级调度:进程为对象,一直在内存,分配CPU执行程序
2.调度算法:在队列中选择最适合的目标,抢占和非抢占
3.调度评估标准
到达时间、开始时间、服务时间、完成时间、周转时间、带权周转时间
周转时间 = 完成时间-到达时间
平均周转时间 = n个周转时间之和 / n
带权周转时间 = 周转时间 / 运行时间
平均带权周转时间 = n个带权周转时间之和 / n
等待时间 = 开始时间-到达时间
平均等待时间 = n个等待时间之和 / n
4.调度算法:非抢占
先来先服务FCFS:到达时间为优先级,一次排序,静态
短作业优先SJF:运行时间为优先级,一次排序,静态
高响应比:响应比为优先级,动态,每次调度都重新计算
4.1先来先服务FCFS
4.2短作业优先SJF
4.3高响应比HRRN
4.4总结
5.最高优先权调度HPF
6.时间片轮转RR
特性:
RR用于进程调度,适合于分时系统
时间片越长,越有利于缩短周转时间
如果时间片太长,RR退化为FCFS
如果时间片太短,导致切换频繁
优点:
有利于交互性、事务性进程
有利于I/O繁忙型的进程
缺点:
调度开销较大,未考虑实时响应要求
课本错误的算法:没有考虑进程进入队列的顺序
正确的算法:
7.多级反馈队列调度
时刻 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
进程 | p1(进入2级) | p2(进入2级) | p1 | p1(进入3级) | p2(被抢占回到2级队尾) | p3(抢占、完成) | p2 | p2(完成) | p1 | p1 | p1 | p1(时间片用完回到3级) | p1 |
8.实时调度
最早开始截止时间优先(EDF):根据任务的开始截止时间确定任务的优先级,开始截止时间越早,优先级越高
最低松驰度优先(LLF):松驰度=完成时间-剩余处理时间-当前时间
任务1处理时间为10,任务2处理时间20,任务3处理时间30
9.死锁
9.1死锁概念、原因
概念:
1、指多个进程因竞争资源而造成的一种僵局
2、若无外力作用,这些进程都将永远不能再向前进
原因:
竞争资源:当两个或以上进程需要两个或以上资源
进程推进顺序非法:请求和释放资源的顺序不当
9.2死锁四个必要条件
1、互斥条件:请求的资源为临界资源
2、请求和保持条件:申请新资源,保持旧资源
3、不剥夺条件:已获得的资源,在使用完之前,不被外力剥夺
4、环路等待条件:互相等待资源
9.3解决死锁的四种方法:预防、避免、检测、解除
9.4预防死锁三种方法:破坏三个必要条件
⑴.一次将资源全部分配(摒弃“请求和保持”条件)
⑵.当请求的资源得不到满足时,释放已分配的资源(摒弃“不剥夺”条件)
⑶.对资源的申请必须按一定顺序进行(摒弃“环路等待”条件)
9.5避免死锁:银行家算法、安全状态、安全序列
银行家算法就是找到一个正确的执行顺序,可以令所有进程依次执行
MAX:进程Pn所需要的总的资源数
Allocation:已分配的资源
Need:Max-Allocation,表示还需要的资源
Available:总资源-总已分配的资源,表示目前可以分配的资源,当前进程结束后,回收已分配的资源,即Available+=Allocation;
Work:和Available一样
Request:某个进程申请资源,如果Request[j] > Need[i,j],出错;如果Request[j] > Available[j],资源数目不够分配,进入等待状态
例1:安全进程执行序列P1→ P3→ P4→ P2→ P0
1.初始资源为10 5 7,计算Work(即Available)
总Allocation=2 0 0 + 2 1 1 + 0 0 2 + 3 0 2 + 0 1 0=7 2 5
Work=10 5 7 - 7 2 5=3 3 2
2.观察Need<Work的进程,存在,说明该进程可以执行;否则说明不存在安全序列
例如,这里明显 3 3 2 > 1 2 2,那么P1执行,执行后,把已分配的资源回收,计算Work=Work+Allocation=3 2 2 + 2 0 0=5 3 2
3.重复过程2,直到所有进程执行完,得到的序列就是安全序列;如果中间出现资源不足的情况,则说明不存在安全序列
例2. 进程P1请求分配资源Request(1,0,2)
那么就判断 Request与Available的大小关系
Request<=Available:分配成功,计算Allocation+=Request,Need-=Request,Available-=Request
Request>Available:分配失败,等待
分配后如下:
安全性检查
安全进程执行序列P1→ P3→ P4→ P0→ P2
例3. 进程P1请求分配资源Request(1,0,2)后,P0再请求分配资源Request(0,2,0)
分配后如下:
安全性检查
不存在安全进程执行序列,预分配无效,P0等待
9.6死锁检测:资源分配图,死锁定理
资源分配图
1.进程:圆圈
2.资源:方框
3.请求边:由进程指向资源
4.分配边:由资源指向进程
死锁定理
⑴. 在资源分配图中,找到一个可获得所有资源的进程结点Pi,使之变成孤立点(释放资源)
⑵. 再找另一个可获得所有资源的进程结点Pj,使之变成孤立点
⑶. 重复⑵
⑷. 如果所有进程都变成孤立点,则没有死锁;否则,存在死锁
9.7死锁的解除
剥夺资源
撤消进程:全部撤消法、最小代价撤消法