当前位置:文档之家› 操作系统原理 第5章 资源分配与调度

操作系统原理 第5章 资源分配与调度


1) 解决资源分配问题; 2) 资源分配中防止出现死锁; 3) 解决资源的存取、使用方法问题; 4 )提供资源的存取的控制和实施安全保护 措施。
5.1.2 资源的分类方法


1. 2. 3. 4.
物理和程序资源 单入口和多入口资源 等同资源 虚拟资源

5.1.3 资源管理的的机构和策略

5.4 死锁(deadlock )
5.4.1死锁的概念 死锁是两个或多个进程无止境地等候着 永远不会成立的条件的一种系统状态。 也可以说,死锁是两个或两个以上的进 程中的每一个都在等待其中另一个进程 释放资源而被封锁,它们都无法向前推 进,这种现象称为死锁。
死锁的表示

死锁可以用有向图来表示,有向图形成 环路则形成死锁。例如,有 P1 , P2 两个 进程,共享一台打印机资源 R1 和一台输 入机 R2 ,在工作使用时,共享资源被独 占。死锁的有向示意图
p2
p3
5.4.2 死锁的起因

1、死锁的起因



死锁的起因是并发进程的资源竞争。产生死 锁的根本原因, 系统提供的资源个数少于并发进程所需要的 该类资源数和进程推进顺序非法。 我们可以采用适当的资源分配算法,以达到 消除死锁的目的。
死锁的图解
进程p1、p2运行线路
说明:R1、 R2各只有1 个。且两进 程只有同时 拥有R1和 R2才可以完 成任务!
打印机R1 P1 输入机R2 P2

例1 进程推进顺序不当产生死锁。

设系统有打印机、读卡机各一台,它 们被进程P和Q共享。两个进程并发 执行,它们按下列次序请求和释放资 源:
请求 读卡机 请求 打印机 释放 读卡机 释放 打印机
进程P
进程Q
请求 打印机
请求 读卡机
释放 读卡机
释放 打印机

说明:
2. 资源描述器 rd 的内 容(见左):
描述器rd的链接信息
存取权限 密级
5.2.2 资源信息块rid (resource information block)
rib 等待队列头指针
pcb1
pcb2

pcbn
可利用资源队列头指针
资源分配程序入口地址
rd1
rd2

rdm
5.3 资源分配策略


3、关于死锁的进一步说明

( 1 )死锁是进程之间的一种特殊关系, 是由资源竞争引起的僵局关系,因此, 当我们提到死锁时,至少涉及到两个进 程。

虽然单个进程也可能锁住自己,但那是程 序设计错误而不是死锁;

( 2 )当出现死锁时,首先要弄清楚被 锁的是哪些进程因竞争哪些资源被锁;

( 3 )在多数情况下,一系统出现死锁,是 指系统内的一些而不是全部进程被锁,它们 是因竞争某些而不是全部资源而进入死锁。
5.3.1 概述 对计算机资源进行分配,我们一般考虑三方面 的情况:


1. 如何管理请求资源的队列; 2. 如何对等同资源的选择; 3. 如何确定实施资源分配时机

(1) 处理机空闲; (2) 存储区释放为空闲区; (3)外部设备发生中断;
5.3.2 先请求先服务FIFO(First In First Out)
缺1个 m
n
例4 对临时性资源使用不加限制引起死锁 进程通信时使用的信件可以看作是一种 临时性资源。如果对信件的发送和接收 不加限制的话,则可能引起死锁。



比如,进程P1 等待进程P3 的 信件S3 ,之后再向进程P2 发 送信件S1; P2 又要等待P1 的信件S1 ,之 p1 后再向P3 发送信件S2; 而P3 也要等待P2 的信件S2 , 之后才能发出信件S3。 在这种情况下就形成了循环等 待,永远结束不了,产生死锁。
进程Q2 ……… P(s2); 使用r2 P(s1); 使用r1 … V(s2); 释放r2; V(s1); 释放r1; …

(分析)由于Q1 和Q2 并发执行,于是可能产生 这样的情况:



进程Q1 执行了P(s1)后,在执行P(s2)之前,进程Q2 执行了P(s2),当进程Q1 再执行P(s2)时将等待,此 时,Q2再继续执行P(s1),也处于等待。 这种等待都必须由对方来释放,显然,这不可能的, 产生了死锁。 注意这里发生死锁未涉及到资源,而是P 操作安排不 当,所以,死锁也可能在不包括资源的情况下产生。
旋转调度
顺序 顺序 柱面号 柱面号 盘面号 盘面号 块号 块号
改进2:由于5 号 柱面要进行3次 访问,所以可以 调整访问顺序, 减少旋转圈数。
11
22 3 4 5 3 4 5
22
55 5 5 5
77
22 3 3 6 3 3 6
77
11 8 5 3 5 8 3
5 40 40
旋转调度:在满足一个磁盘请求时,总是选 取与当前读写磁头旋转方向上最近的那个请 求,使旋转圈数最少。

4、采用剥夺式调度方法可以破坏第三个条件 (不剥夺条件),但剥夺调度方法目前只适用 于对主存资源和处理器资源的分配,当进程在 申请资源未获准许的情况下,如能主动释放资 源(一种剥夺式),然后才去等待,以后再一 起向系统提出申请,也能防止死锁,但这些办 法不适用于所有资源。
解决死锁问题的三个策略(1)
例3 同类资源分配不当引起死锁

若系统中有m个资源被n个进程共享,当每 个进程都要求k个资源,而m < n*k时(即资 源数小于进程所要求的总数时),如果分配 不得当就可能引起死锁。

例如,m=3,n=3,k=2,采用的分配策略 是为每个进程轮流分配。首先,为每个进程 轮流分配一个资源,这时,系统中的资源都 已分配完了;于是第二轮分配时,各进程都 处于等待状态,导致了死锁。




由于进程P 和Q 执行时,相对速度无法预知,当出 现进程P占用了读卡机,进程Q占用了打印机后, 进程P又请求打印机,但因打印机被进程Q占用, 故进程P处于等待资源状态; 这时,进程Q执行,它又请求读卡机,但因读卡机 被进程P占用而也只好处于等待资源状态。 它们分别等待对方占用的资源,致使无法结束这种 等待,产生了死锁。 但是如果它们速度有快有慢,避免了上述僵局是可 以不产生死锁的。
第5章 资源分配与调度
主要内容:



1.资源管理概述 2.资源分配机构 3. 资源分配策略 4. 死锁
5.1 概述
如何满足? 有限资源

众多的请求分配资源
实际上,操作系统进行资源管理时,可 以采用某种技术,使一些相互竞争的进 程共享有的限资源。
5.1.1 资源管理的目的和任务

1. 资源管理的目的

为计算机用户提供一种简单而有效地使用资 源的方法,充分发挥各种资源的作用。其应 达到的目的是:


1) 保证资源的高利用率; 2) 在“合理”的时间内使所有用户有获得所需 资源的机会; 3) 对不可共享的资源实行互斥; 4) 防止由资源分配不当而引起的死锁。

2. 资源管理的任务


这些条件并不完全独立。但单独考虑每个条件 是有用的,只要能破坏这四个必要条件之一, 死锁就可防止。
说明: 1、以上前三个条件是死锁存在的必要条件, 但不是充分条件。 2、第四个条件是前三个条件同时存在时产生 的结果。
3、破坏第一个条件(互斥条件),使资源可同 时访问而不是互斥使用,是个简单的办法,磁盘 可用这种办法管理,但有许多资源往往是不能同 时访问的,所以,这种做法许多场合行不通。
就绪队列表指针
pcb1 pcb2
。。。
pcbn

按请求的先后次序

5.3.3 优先调度1(优先级高为先)
就绪队列表指针
pcb1 pcb2
。。。
pcbn
按优先级的高低
高 低
单就绪队列
5.3.3 优先调度2(优先级高为先)
高 就绪队列表指针
。。。
优 先 级
。。。
。。。

按请求的先后次序 先 后
多就绪队列
1.静态分配资源


静态分配是指一个进程必须在执行前就申请它 所要的全部资源,并且直到它所要的资源都得 到满足后才开始执行。 无疑的,所有并发执行的进程要求的资源总和 不超过系统拥有的资源数。

采用静态分配后,进程在执行中不再申请资源, 因而,不会出现占有了某些资源再等待另一些资 源的情况,即破坏了第二个条件(占有和等待条 件)的出现。静态分配策略实现简单,被许多操 作系统采用。但这种策略严重地降低了资源利用 率。
5.3.4 针对设备特性的调度
扇区
第0道
硬盘图示
5.3.4 针对设备特性的调度(实例) 例如,对 磁盘同时 有5个访 问请求如 左表示。
顺序 1 2 3 4 5 柱面号 5 5 5 40 2 盘面号 2 3 3 6 7 块号 1 8 5 3 7
分析:如果当前移动臂位于1号柱面, 按上述顺序访问移动臂移动如下:
机构
包括描述资源的数据结构、资源共享和互斥的技术等。

பைடு நூலகம்
策略
给出资源管理的的机构的使用方法,即给出资源的使用 方法。
5.2 资源分配机制
5.2.1资源描述器 1 .描述各类资源的 最小分配单位的数据 结构称为资源描述器
rd(resource descriptor

资源名 资源类型 最小分配单位的大小 最小分配单位的地址 分配标志
解决死锁问题的三个策略(2)
2.动态分配资源 既进行分配资源时,阻止第四个条件(循 环等待条件)的出现。 如:有序资源分配策略。
相关主题