《操作系统》第四章 处理机调度与死锁

本文详细探讨了处理机调度的三级结构、各种调度算法如FCFS、SJF、HRRN和RR,以及实时调度和死锁的原理、条件、预防方法和银行家算法。通过实例解析,讲解了死锁检测与解除技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第四章 处理机调度与死锁

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.多级反馈队列调度

在这里插入图片描述
在这里插入图片描述

时刻0123456789101112
进程p1(进入2级)p2(进入2级)p1p1(进入3级)p2(被抢占回到2级队尾)p3(抢占、完成)p2p2(完成)p1p1p1p1(时间片用完回到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死锁的解除

剥夺资源
撤消进程:全部撤消法、最小代价撤消法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值