当前位置:文档之家› 操作系统之调度算法和死锁中的银行家算法习题参考答案

操作系统之调度算法和死锁中的银行家算法习题参考答案

操作系统之调度算法和死锁中的银行家算法习题参考答案
操作系统之调度算法和死锁中的银行家算法习题参考答案

操作系统之调度算法和死锁中的银行家算法习

题参考答案

SANY GROUP system office room 【SANYUA16H-

1.有三个批处理作业,第一个作业10:00到达,需要执行2小时;第二个作业在10:10到达,需要执行1小时;第三个作业在10:25到达,需要执行25分钟。分别采用先来先服

务,短作业优先和最高响应比优先三种调度算法,各自的平均周转时间是多少?

解:

先来先服务:

(结束时间=上一个作业的结束时间+执行时间

周转时间=结束时间-到达时间=等待时间+执行时间)

按到达先后,执行顺序:1->2->3

短作业优先:

1)初始只有作业1,所以先执行作业1,结束时间是12:00,此时有作业2和3;

2)作业3需要时间短,所以先执行;

3)最后执行作业2

最高响应比优先:

高响应比优先调度算法既考虑作业的执行时间也考虑作业的等待时间,综合了先来先服务和最短作业优先两种算法的特点。

1)10:00只有作业1到达,所以先执行作业1;

2)12:00时有作业2和3,

作业2:等待时间=12:00-10:10=110m;响应比=1+110/60=2.8;

作业3:等待时间=12:00-10:25=95m,响应比=1+95/25=4.8;

所以先执行作业3

3)执行作业2

2.在一单道批处理系统中,一组作业的提交时刻和运行时间如下表所示。试计算一下三种作业调度算法的平均周转时间T和平均带权周转时间W。

(1)先来先服务;(2)短作业优先(3)高响应比优先

解:

先来先服务:

作业顺序:1,2,3,4

短作业优先:

作业顺序:

1)8:00只有作业1,所以执行作业1;

2)9:00有作业2和3,作业3短,所以先执行3;

3)9:12有作业2和4,作业4短,所以先执行4;

4)执行作业2

高响应比优先:

作业顺序:

1)8:00只有作业1,所以执行作业1;

2)9:00有作业2和3

作业2等待时间=9:00-8:30=30m,响应比=1+30/30=2;

作业3等待时间=9:00-9:00=0m,响应比=1+0/12=1;

所以执行作业2;

3)9:30有作业3和4

作业3等待时间=9:30-9:00=30m,响应比=1+30/12=3.5;

作业4等待时间=9:30-9:06=24m,响应比=1+24/6=5;

所以执行作业4

4)执行作业3

设系统中有3种类型的资源(A,B,C)和5个进程(P1,P2,P3,P4,P5),A资源的数量为17,B资源的数量为5,C资源的数量为20。在T0时刻系统状态表如下表所示。

系统采用银行家算法试试死锁避免策略。

(1)T0时刻是否为安全状态?若是,请给出安全序列。

(2)在T0时刻若进程P2请求资源(0,3,4),是否能实施资源分配?为什么?

(3)在(2)的基础上,若进程P4请求资源(2,0,1),是否能实施资源分配?为什么?

(4)在(3)的基础上,若进程P1请求资源(0,2,0),是否能实施资源分配?为什么?

解:

现有资源:E(17,5,20)

可用资源:A(2,3,3)

(1)A满足P4,P4结束,A(4,3,7);

A满足P5,P5结束,A(7,4,11);

A满足P2,P2结束,A(11,4,13);

A满足P3,P3结束,A(15,4,18);

A满足P1,P1结束,A(17,5,20)

T0时刻是安全状态,存在安全序列P4,P5,P2,P3,P1.

(2)可用资源A(2,3,3)<(0,3,4)不能满足P2需求,所以不能实施分配。

(3)可用资源A(2,3,3)>(2,0,1),假设分配给P4,,A’(0,3,2),

存在安全序列:P4,P2,P3,P5,P1

所以可以分配资源。

(4)可用资源:A(0,3,2)>(0,2,0)能满足P1需求,假设分配,A’(0,1,2),

剩余资源不能满足任意进程需求,进程将会死锁。

4.

某系统有R1,R2,R3共3类资源,在T0时刻P1,P2,P3和P4这4个进程对资源的占用和需求情况见下表,此刻系统可用资源向量为(2,1,2)。

问题:

(1)将系统中各种资源总量和此刻各进程对各资源的需求数目用向量或矩阵表示出来

(2)如果此时P1,P2均发出资源请求向量Request(1,0,1),为了保持系统的安全性应该如

何分配资源?说明你所采用策略的原因。

(3)如果(2)中两个请求立刻得到满足后,系统此刻是否处于死锁状态?

解:

(1)可用资源A(2,1,2);资源总量E(

需求资源R:

(2)假设资源分配给P1则,A’=(2,1,2)-(1,0,1)=(1,1,1)

需求资源R’:

A’不能满足任何进程的需求,所以进程死锁,所以拒绝P1的请求。

假设资源分配给P2则,A’=(2,1,2)-(1,0,1)=(1,1,1)

需求资源R’:

A’满足P2要求,,P2完成,A’(6,2,3);

存在安全序列:P2,P1,P3,P4.所以答应P2的请求。

(3)假设资源分配给P1则,A’=(2,1,2)-(1,0,1)-(1,0,1)=(0,1,0)

需求资源R’:

系统此刻并没有立即进入死锁状态,因为这时所有进程没有提出新的资源申请,全部进程均没有因资源请求没得到满足而进入阻塞状态。只有当进程提出资源申请且全部进程都进入阻塞状态时,系统才处于死锁状态

5.设有3个进程P、Q、R,它们共享10个同类资源,P、Q、R进程的资源最大需求量依次为

4、7和8。现假定它们对资源的请示序列如下表所示:

为了避免死锁,系统分配资源时采用银行家算法。如果申请资源得不到满足,进程就转入阻塞态。根据上述信息,试描述各步骤结束时,申请资源的进程是得到满足,还是转入阻塞状态,为什么?(起始状态:各进程均不拥有资源,无进程处于阻塞态)

(如果剩余资源即可用资源大于当前状态任何进程的需求,则进程不会死锁,且安全序列任意,因为一旦满足某个进程的需求使其结束后,进程返还占用资源,剩余资源不变(返还资源为0)或增多,以此类推即可)

需求资源R(4,7,8)

资源总数E=10,也是可用资源

步骤1:满足P,剩余资源可使各进程运行结束,所以P得到2个资源,E’=8,R’(2,7,8)

步骤2:满足Q,剩余资源可使各进程运行结束,所以Q得到4个资源,E’=4,R’(2,3,8)

步骤3,满足R,剩余资源可使各进程运行结束,所以R得到2个资源,E’=2,R’(2,3,6)

步骤4:阻塞Q,若答应请求,则剩余资源为0,不能满足任何进程要求,进程死锁;

步骤5:阻塞R,若答应请求,则剩余资源为0,不能满足任何进程要求,进程死锁;

步骤6:满足P,所以P得到2个资源,运行完成,返还占用资源2个,E’=4,R’(0,3,6),剩余资源可使各进程运行结束.

最后:

操作系统之调度算法和死锁中的银行家算法习题答案

操作系统之调度算法和死锁中的银行家算法习 题答案 集团文件发布号:(9816-UATWW-MWUB-WUNN-INNUL-DQQTY-

1. 有三个批处理作业,第一个作业 10:00 到达,需要执行 2 小时;第二个作业在10:10到达,需要执行 1 小时;第三个作业在 10:25 到达,需要执行 25 分钟。分别采用先来先服 务,短作业优先和最高响应比优先三种调度算法,各自的平均周转时间是多少?解: 先来先服务: (结束时间=上一个作业的结束时间+执行时间 周转时间=结束时间-到达时间=等待时间+执行时间) 按到达先后,执行顺序:1->2->3 短作业优先: 1)初始只有作业1,所以先执行作业1,结束时间是12:00,此时有作业2和3; 2)作业3需要时间短,所以先执行; 3)最后执行作业2 最高响应比优先:

高响应比优先调度算法既考虑作业的执行时间也考虑作业的等待时间,综合了先来先服务和最短作业优先两种算法的特点。 1)10:00只有作业1到达,所以先执行作业1; 2)12:00时有作业2和3, 作业2:等待时间=12:00-10:10=110m;响应比=1+110/60=2.8; 作业3:等待时间=12:00-10:25=95m,响应比=1+95/25=4.8; 所以先执行作业3 3)执行作业2 2. 在一单道批处理系统中,一组作业的提交时刻和运行时间如下表所示。试计算一下三种 作业调度算法的平均周转时间 T 和平均带权周转时间 W。 ( 1)先来先服务;( 2)短作业优先( 3)高响应比优先 解: 先来先服务: 作业顺序:1,2,3,4 短作业优先: 作业顺序:

操作系统经典习题+解释

●假定一个阅览室最多可容纳100人,读者进入和离开阅览室时都必须在阅览室门口的 一个登记表上进行登记,而且每次只允许一人进行登记操作,请用记录型信号量机制实现上述问题的同步。 定义信号量sum,mutex,初值分别为100,1。(3分)则第i个读者的活动描述为:procedure P i(i=1,2,3……) begin wait(sum); wait(mutex); 登记; signal(mutex); 进入阅览室; 阅读; wait(mutex); 登记; signal(mutex); 离开阅览室; signal(sum); end ●请用信号量解决以下的“过独木桥”问题:同一方向的行人可连续过桥,当某一方向 有人过桥时,另一方向的行人必须等待;当某一方向无人过桥时,另一方向的行人可以过桥。 将独木桥的两个方向分别标记为A和B;并用整形变量countA和countB分别表示A、B 方向上已在独木桥上的行人数,初值为0;再设置三个初值都1的互斥信号量:SA用来实现对countA的互斥访问,SB用来实现对countB的互斥访问,mutex用来实现两个方向的行人对独木桥的互斥使用。则具体描述如下: Var SA,SB,mutex:semaphore:=1,1,1; CountA,countB:integer:=0,0: begin parbegin process A: begin wait(SA); if(countA=0) then wait(mutex); countA:=countA+1; signal(SA); 过独木桥; wait(SA); countA:=countA-1; if (countA=0) then signal(mutex); signa(SA); end process B: begin wait(SB);

操作系统实验报告利用银行家算法避免死锁

计算机操作系统实验报告 题目利用银行家算法避免死锁 一、实验目的: 1、加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。 2、要求编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用银行家算法,有效的防止和避免死锁的发生。 二、实验内容: 用银行家算法实现资源分配: 设计五个进程{p0,p1,p2,p3,p4}共享三类资源{A,B,C}的系统,例如,{A,B,C}的资源数量分别为10,5,7。进程可动态地申请资源和释放资源,系统按进程的申请动态地分配资源,要求程序具有显示和打印各进程的某一个时刻的资源分配表和安全序列;显示和打印各进程依次要求申请的资源号以及为某进程分配资源后的有关资源数据。 三、问题分析与设计: 1、算法思路: 先对用户提出的请求进行合法性检查,即检查请求是否大于需要的,是否大于可利用的。若请求合法,则进行预分配,对分配后的状态调用安全性算法进行检查。若安全,则分配;若不安全,则拒绝申请,恢复到原来的状态,拒绝申请。 2、银行家算法步骤: (1)如果Requesti<or =Need,则转向步骤(2);否则,认为出错,因

为它所需要的资源数已超过它所宣布的最大值。 (2)如果Request<or=Available,则转向步骤(3);否则,表示系统中尚无足够的资源,进程必须等待。 (3)系统试探把要求的资源分配给进程Pi,并修改下面数据结构中的数值: Available=Available-Request[i]; Allocation=Allocation+Request; Need=Need-Request; (4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。 3、安全性算法步骤: (1)设置两个向量 ①工作向量Work。它表示系统可提供进程继续运行所需要的各类资源数目,执行安全算法开始时,Work=Allocation; ②布尔向量Finish。它表示系统是否有足够的资源分配给进程,使之运行完成,开始时先做Finish[i]=false,当有足够资源分配给进程时,令Finish[i]=true。 (2)从进程集合中找到一个能满足下述条件的进程: ①Finish[i]=false ②Need

银行家算法例题——四步走解题

银行家算法例题 系统中原有三类资源A、B、C和五个进程P1、P2、P3、P4、P5,A资源17,B资源5,C资源20。当前(T0时刻)系统资源分配和进程最大需求如下表。 1、现在系统T0时刻是否处于安全状态? 2、是否可以允许以下请求? (1)T1时刻:P2 Request2=(0,3,4) (2)T2时刻:P4 Request4=(2,0,1) (3)T3时刻:P1 Request1=(0,2,0) 注:T0 T1 T2 T3时刻是前后顺序,后一时刻是建立在前一时刻的基础上。

解:由题设可知Need=Max-Allocation AvailableA=17-(2+4+4+2+3)=2(原有-分配) 同理AvailableB=3,AvailableC=3 可得T0时刻资源分配表如下所示(表中数据顺序均为A B C): 1、判断T0时刻是否安全,需要执行安全算法找安全序列,过程如下表: T0时刻能找到一个安全序列{P4,P3,P2,P5,P1},故T0时刻系统处于安全状态。

2、判断T1 T2 T3时刻是否满足进程请求进行资源分配。 (1)T1时刻,P2 Request2=(0,3,4) //第一步判断条件 ①满足Request2=(0,3,4)<=Need2(1,3,4) ②不满足Request2=(0,3,4)<=Available(2,3,3) 故系统不能将资源分配给它,此时P2必须等待。 (2)T2时刻,P4 Request4=(2,0,1) //第一步判断条件①满足Request4=(2,0,1)<=Need4(2,2,1) ②满足Request4=(2,0,1)<=Available(2,3,3) //第二步修改Need、Available、Allocation的值 Available=Available-Request4= (0,3,2) Allocation4=Allocation4+Request4=(4,0,5) Need4=Need4-Request4=(0,2,0) //第三步执行安全算法,找安全序列 (注解:先写上work,其初值是系统当前进行试分配后的Available(0,3,2) ,找五个进程中Need小于work的进程,比如Need4<=Work满足,则将P4写在第一行的最前面,同时写出P4的Need和Allocation,以此类推)

操作系统课程设计----模拟银行家算法避免死锁

模拟通过银行家算法避免死锁 一、银行家算法产生的背景及目的 1:在多道程序系统中,虽然借助于多个进程的并发执行来改善系统的利用率,提高系统的吞吐量,但可能发生一种危险—死锁。死锁就是多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵局状态时,如无外力作用,他们将无法再向前进行,如再把信号量作为同步工具时,多个Wait和Signal 操作顺序不当,会产生进程死锁。 然而产生死锁的必要条件有互斥条件,请求和保持条件,不剥夺条件和环路等待条件。在预防死锁的几种方法中,都施加了较强的限制条件,在避免死锁的方法中,所施加的条件较弱,有可能获得令人满意的系统性能。在该方法中把系统的状态分为安全状态和不安全状态,只要能使系统都处于安全状态,便可避免死锁。2:实验目的:让学生独立的使用编程语言编写和调试一个系统分配资源的简单模拟程序,了解死锁产生的原因及条件。采用银行家算法及时避免死锁的产生,进一步理解课堂上老师讲的相关知识点。银行家算法是从当前状态出发,逐个按安全序列检查各客户中谁能完成其工作,然后假定其完成工作且归还全部贷款,再进而检查下一个能完成工作的客户。如果所有客户都能完成工作,则找到一个安全序列,银行家才是安全的。 二:银行家算法中的数据结构 1:可利用资源向量Available。这是一个含有m个元素的数组,其中的每个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态的改变。如果Available[j]=k,z 则表示系统中现有Rj类资源K 个。 2:最大需求矩阵Max。这是一个n*m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i,j]=k,表示第i个进程需要第Rj 类资源的最大数目k个. 3: 分配矩阵Allocation,也是n*m的矩阵,若Allocation[i,j]=k,表示第i 个进程已分配Rj类资源的数目为k个。 4:需求矩阵Need。也是一个n*m的矩阵,Need[i,j]=k,表示第i个进程还需Rj类资源k个。 三、银行家算法及安全性算法 1:银行家算法 设Request[i]是进程Pi的请求向量,若Request[i][j]=k;表示进程需要j类资源k个。当Pi发出资源请求时,系统按下属步骤进行检查; (1)如果Request[i][j]<=Need[i][j];便转向步骤(2),否则认为出错,因为它 所需要的资源数已超过他所宣布的最大值。 (2)如果Request[i][j]<=Available[i][j],便转向步骤(3),否则认为尚无足 够资源,进程需等待。

计算机操作系统算法题(最全)

6. 算法题(共32个题目) 200348. 在信号量机制中,若P(S)操作是可中断的,则会有什么问题? 此题答案为:答: P(S)的操作如下: Begin S.Value:= S.Value-1; ① If S.Value<0 Then ② Begin Insert(*,S.L); Block(*) ③ End End. 若P(S)可中断的,例如进程A在执行了语句①之后从CPU上退 下了,假定此时S.Value=0;这时换另一进程B,B又将S.Value 的值减1使之为-1,在执行语句③时,B被阻塞;然后又换回A执行,由于A的"断点"是语句①之后,当它执行语句②时,由于这时S.Value已经是-1,故进程继续执行而被阻塞。这就出现了错误: 本来A操作P(S)操作后,S.Value=0,是不应该被阻塞的,现在却被阻塞了。 200350. 何谓临界区?下面给出的两个进程互斥的算法是安全的吗?为什么?

#define true; # define false; Int flag[2]; flag[1]=flag[2]=false; enter-crtsec(i) int i; { While(flag[1-i]) flag[i]=true; } feave-crtsec(i) Int i; { flag[i]=false; } process I; … Enter-crtsec(i); In critical section; Leave-crtsec(i);

此题答案为:答:一次仅允许一个进程使用的资源称为临界资源,在进程中对临界资源访问的程序段称为临界区。 从概念上讲,系统中各进程在逻辑上是独立的,它们可以按各自的速度向前推进。但由于它们共享某些临界资源,因而产生了临界区问题。对于具有临界区问题的并发进程,它们之间必须互斥,以保证不会同时进入临界区。 这种算法不是安全的。因为,在进入临界区的enter-crtsec()不是一个原语操作,如果两个进程同时执行完其循环(此前两个flag均为false),则这两个进程可同时进入临界区。 200353. 某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票少于20名购票者时,则厅外的购票者可立即进入,否则需在外面等待。若把一个购票者看作一个进程,请回答下列问题: (1)用P、V操作管理这些并发进程时,应怎样定义信号量?写出信号量的初值以及信号量各种取值的含义。 (2)根据所定义的信号量,把应执行的P、V操作填入下述程序中,以保证进程能够正确地并发执行。 Cobegin PROCESS Pi(i=1,2,…) Begin 进入售票厅; 购票; 退出; End;

银行家算法例题

银行家算法例题 假定系统中有五个进程{P0,P1,P2,P3,P4} 和三类资源{A ,B,C},各种资源的数量分别为10、5、7,在T0 时刻的资源分配情况 (1)T0时刻的安全性 利用安全性算法对T0时刻的资源分配情况进行分析 (2)P1请求资源:P1发出请求向量Request1(1,0,2),系统按银行家算法进行检查 ①Request1(1,0,2)≤Need1(1,2,2) ②Request1(1,0,2)≤Available1(3,3,2) ③系统先假定可为P1分配资源,并修改Available ,Allocation1和Need1向量,由此形成 资源情况 进程 Max Allocation Need Available A B C A B C A B C A B C P0 7 5 3 0 1 0 7 4 3 3 3 2 P1 3 2 2 2 0 0 1 2 2 P2 9 0 2 3 0 2 6 0 0 P3 2 2 2 2 1 1 0 1 1 P4 4 3 3 0 0 2 4 3 1 资源情况 进程 Work A B C Need A B C Allocation A B C Work+Allocatio n A B C Finish P1 3 3 2 1 2 2 2 0 0 5 3 2 TRUE P3 5 3 2 0 1 1 2 1 1 7 4 3 TRUE P4 7 4 3 4 3 1 0 0 2 7 4 5 TRUE P2 7 4 5 6 0 0 3 0 2 10 4 7 TRUE P0 10 4 7 7 4 3 0 1 0 10 5 7 TRUE

实验6 银行家算法避免死锁

实验六银行家算法避免死锁 一.实验目的 1、加深对死锁概念的理解 2、能够利用银行家算法有效地避免死锁的发生、或检测死锁的存在 二.实验内容及步骤 本实验在winTC环境下实现,winTC安装程序在ftp上,请自行安装。 1.利用银行家算法写一个程序,判定系统的安全性。 已知某系统有5个进程P0,P1,P2,P3,P4,三类资源A、B、C。死锁检测程序工作时 0)。 #define m 3 #define n 5 main(){ int test(int av[],int ned[],all[]); int available[m]={0,0,0},need[n][m]; int allocation[n][m]={{0,1,0},{2,0,0},{3,0,3},{2,1,1},{0,0,2}};//已占有资源 int i,j,g=1; int finish[n]={0,0,0,0,0};//已完成的进程 clrscr();//清屏 printf(“please input the need resource data\n”); for(i=0;i

scanf(“%d”,&need[i][j]);//输入各个进程需要的资源 j=0; do{ for(i=0;i #define m 3 #define n 5 main() { int test(int av[],int ned[],int all[]); int available[m]={0,0,0},need[n][m]; int allocation[n][m]={{0,1,0},{2,0,0},{3,0,3},{2,1,1},{0,0,2}}; int i,j,g=1; int finish[n]={0,0,0,0,0}; //clrscr(); printf("please input the need resource data\n"); for(i=0;i

操作系统精彩试题及问题详解

操作系统期末考试(A) 一、单项选择题(在每小题的四个备选答案中,只有一个是正确的,将其写在题干的括号中。每小题2分,共20分) 1、文件系统的主要组成部分是() A、文件控制块及文件 B、I/O文件及块设备文件 C、系统文件及用户文件 D、文件及管理文件的软件 2、实现进程互斥可采用的方法() A、中断 B、查询 C、开锁和关锁 D、按键处理 3、某页式管理系统中,地址寄存器的低9位表示页地址,则页面大小为() A、1024字节 B、512字节 C、1024K D、512K 4、串联文件适合于()存取 A、直接 B、顺序 C、索引 D、随机 5、进程的同步与互斥是由于程序的()引起的 A、顺序执行 B、长短不同 C、信号量 D、并发执行 6、信号量的值() A、总是为正 B、总是为负 C、总是为0 D、可以为负整数 7、多道程序的实质是() A、程序的顺序执行 B、程序的并发执行 C、多个处理机同时执行 D、用户程序和系统程序交叉执行 8、虚拟存储器最基本的特征是() A、从逻辑上扩充存容量 B、提高存利用率 C、驻留性 D、固定性 9、飞机定票系统是一个() A、实时系统 B、批处理系统 C、通用系统 D、分时系统 10、操作系统中,被调度和分派资源的基本单位,并可独立执行的实体是() A、线程 B、程序 C、进程 D、指令 二、名词解释(每小题3分,共15分) 1.死锁: 2.原子操作:

3.临界区: 4.虚拟存储器: 5.文件系统: 三、判断改错题(判断正误,并改正错误,每小题2分,共20分) 1、通道是通过通道程序来对I/O设备进行控制的。() 2、请求页式管理系统中,既可以减少外零头,又可以减少零头。() 3、操作系统中系统调用越多,系统功能就越强,用户使用越复杂。() 4、一个进程可以挂起自已,也可以激活自已。() 5、虚拟存储器的最大容量是由磁盘空间决定的。() 6、单级文件目录可以解决文件的重名问题。() 7、进程调度只有一种方式:剥夺方式。() 8、程序的顺度执行具有顺序性,封闭性和不可再现性。() 9、并行是指两个或多个事件在同一时间间隔发生,而并发性是指两个或多个事件在同 一时刻发生。() 10、进程控制一般都由操作系统核来实现。() 四、简答题(每小题5分,共25分) 1、简述死锁产生的原因及必要条件。 2、什么是多道程序技术,它带来了什么好处?

银行家算法习题1

银行家算法流程

安全性算法流程图

银行家算法例题 1.假定系统中有4个进程1P ,2P ,3P ,4P , 3种类型的资源1R ,2R ,3R ,数量分别为9,3,6, 0T 时刻的资源分配情况如表2-1所示。 表2-1 T 0时刻的资源分配情况 试问: (1) T 0时刻是否安全? (2) T 0时刻以后,若进程P 2发出资源请求Request 2(1,0,1), 系统能否将资源分配给它? (3) 在进程P 2申请资源后,若P1发出资源请求Request 1(1,0,1), 系统能否将资源分配 给它? (4) 在进程P 1申请资源后,若P3发出资源请求Request 3(0,0,1), 系统能否将资源分配 给它? 2. 在银行家算法中,出现以下资源分配情况(见表2-2) 系统剩余资源数量=(3,3,2) (1) 该状态是否安全(给出详细的检查过程) (2) 如果进程依次有如下资源请求: P1:资源请求request (1,0,2) P2:资源请求request (3,3,0) P3:资源请求request (0,1,0) 则系统该如何进行资源分配才能避免死锁?

3.设系统中有3种类型的资源(A、B、C)和5个进程P1、P2、P3、P4、P5,A资源的数量为17,B资源的数量为5,C资源的数量为20。在T0时刻,系统状态见表2-3。系统采用银行家算法实现死锁避免。 (1)T0时刻是否为安全状态?若是,请给出安全序列 (2)在T0时刻,若进程P2请求资源(0,3,4),是否能实施资源分配?为什么? (3)在(2)的基础上,若进程P4请求资源(2,0,1),是否能实施资源分配? (4)在(3)的基础上,若进程P1请求资源(0,2,0),是否能实施资源分配? 4.某系统有R1、R2、R3共三种资源,在T0时刻P1、P2、P3、P4这四个进程对资源的占用和需求情况见表2-24,此时系统的可用资源矢量为(2,1,2)。试问: 1)将系统中各种资源总数和此刻各进程对各资源的需求数目用矢量或矩阵表示出来。2)如果此时进程P1和进程P2均发出资源请求矢量Request(1,0,1),为了保证系统的安全性,应如何分配资源给这两个进程?说明所采用策略的原因。 3)如果2)中两个请求立即得到满足后,系统此刻是否处于死锁状态? 5.考虑某个系统在表2-25时刻的状态

操作系统实验报告利用银行家算法避免死锁完整版

操作系统实验报告利用 银行家算法避免死锁 Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】

计算机操作系统实验报告题目利用银行家算法避免死锁 一、实验目的: 1、加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。 2、要求编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用银行家算法,有效的防止和避免死锁的发生。 二、实验内容: 用银行家算法实现资源分配: 设计五个进程{p0,p1,p2,p3,p4}共享三类资源{A,B,C}的系统,例如,{A,B,C}的资源数量分别为10,5,7。进程可动态地申请资源和释放资源,系统按进程的申请动态地分配资源,要求程序具有显示和打印各进程的某一个时刻的资源分配表和安全序列;显示和打印各进程依次要求申请的资源号以及为某进程分配资源后的有关资源数据。 三、问题分析与设计: 1、算法思路: 先对用户提出的请求进行合法性检查,即检查请求是否大于需要的,是否大于可利用的。若请求合法,则进行预分配,对分配后

的状态调用安全性算法进行检查。若安全,则分配;若不安全,则拒绝申请,恢复到原来的状态,拒绝申请。 2、银行家算法步骤: (1)如果Requesti<or =Need,则转向步骤(2);否则,认为出错,因为它所需要的资源数已超过它所宣布的最大值。 (2)如果Request<or=Available,则转向步骤(3);否则,表示系统中尚无足够的资源,进程必须等待。 (3)系统试探把要求的资源分配给进程Pi,并修改下面数据结构中的数值: Available=Available-Request[i]; Allocation=Allocation+Request; Need=Need-Request; (4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。 3、安全性算法步骤: (1)设置两个向量 ①工作向量Work。它表示系统可提供进程继续运行所需要的各类资源数目,执行安全算法开始时,Work=Allocation; ②布尔向量Finish。它表示系统是否有足够的资源分配给进程,使之运行完成,开始时先做Finish[i]=false,当有足够资源分配给进程时,令Finish[i]=true。 (2)从进程集合中找到一个能满足下述条件的进程:

《银行家算法的模拟实现》—实验报告

《银行家算法的模拟实现》 --实验报告 题目: 银行家算法的模拟实现 专业: 班级: 组员: 指导老师:

一、实验目的 死锁会引起计算机工作僵死,因此操作系统中必须防止。本实验的目的在于让学生独立的使用高级语言编写和调试一个系统动态分配资源的简单模拟程序,了解死锁产生的条件和原因,并采用银行家算法有效地防止死锁的发生,以加深对课堂上所讲授的知识的理解。 二、实验内容 模拟实现银行家算法实现死锁避免。要求:初始数据(如系统在T0时刻的资源分配情况、每一种资源的总数量)从文本文件读入,文件中给出最大需求矩阵Max、分配矩阵Allocation,在程序中求得需求矩阵Need和可利用资源向量Available。 三、实验分析过程 1、整个银行家算法的思路。 先对用户提出的请求进行合法性检查,再进行预分配,利用安全性检查算法进行安全性检查。 1)进程一开始向系统提出最大需求量. 2)进程每次提出新的需求(分期贷款)都统计是否超出它事先提出的最大需求量. 3)若正常,则判断该进程所需剩余剩余量(包括本次申请)是否超出系统所掌握的 剩余资源量,若不超出,则分配,否则等待 2、算法用到的主要数据结构和C语言说明。 (1)、可利用资源向量INT A V AILABLE[M] M为资源的类型。 (2)、最大需求矩阵INT MAX[N][M] N为进程的数量。 (3)、已分配矩阵INT ALLOCA TION[N][M] (4)、还需求矩阵INT NEED[N][N] (5)、申请各类资源数量int Request[x]; // (6)、工作向量int Work[x]; (7)、int Finish[y]; //表示系统是否有足够的资源分配给进程,0为否,非0为是 3、银行家算法(主程序) (1)、系统初始化。输入进程数量,资源种类,各进程已分配、还需求各资源数量,各资源可用数量等 (2)、输入用户的请求三元组(I,J,K),为进程I申请K个J类资源。 (3)、检查用户的请求是否小于还需求的数量,条件是K<=NEED[I,J]。如果条件不符则提示重新输入,即不允许索取大于需求量 (4)、检查用户的请求是否小于系统中的可利用资源数量,条件是K<=A V ALIABLE[I,J]。 如果条件不符则申请失败,阻塞该进程,重新进行进程动态资源申请(使用goto语句) (5)、进行资源的预分配,语句如下: A V ALIBLE[I][J]= A V ALIBLE[I][J]-K; ALLOCATION[I][J]= ALLOCATION[I][J]+K; NEED[I][J]=NEED[I][J]-K;

软考-操作系统死锁与银行家算法

1、设系统中有3种类型的资源(A B C)和5个进程P1 P2 P3 P4 P5.已知A、B、C的总数量为[17,5,20],在T0时刻的状态如表所示。问: (1)T0时刻是否为安全状态?若是,则给出安全序列 解:是。安全序列为p4 p2 p3 p5 p1 进程工作需要已分配系统状态(2)T0时刻若P2请求【0,3,4】,能否实施分配?为什么?

解:不能实施分配,可用资源为负数

(3)在(2)的基础上P4又请求【2,0,1】,能否实施分配?为什么? 解:不能实施分配,可用资源为负数

(4)在(3)基础上P1又请求【0,2,0】,能否实施分配?为什么?解:不能实施分配,可用资源为负数 2、考虑一个有150个存储器单元的系统,如下分配给三个进程: 进程最大占有 1 70 45 2 60 40 3 60 15 使用银行家算法,以确定下面的任何一个请求是否安全: (1)第4个进程到达,最多需要60个存储单元,最初需要25个单

元; 解:安全序列:p1 p2 p3 p4 (2)第4个进程到达,最多需要60个存储单元,最初需要35个单元; 如果安全,请给出任一安全序列;若不安全给出结果分配简表。解:安全序列:p2 p1 p3 p4

?3.操作系统分配资源时的一个主要考虑是避免死锁的发生。 ?若系统中有同类资源16个,有4个进程p1、p2、p3、p4共享该资源。 ?已知p1、p2、p3、p4所需的资源总数分别为8、5、9、6。?各进程请求资源的次序如表所示,若系统采用银行家算法为他们分配资源,那么____次申请分配会使系统进入不安全状态下表为进程申请资源的情况 ?序号进程申请量 ? 1 P1 6 ? 2 P2 4 ? 3 P3 5

操作系统实验四-银行家算法

银行家算法 xxx 711103xx 2012年5月21日一、实验目的 通过实验,加深对多实例资源分配系统中死锁避免方法——银行家算法的理解,掌握Windows环境下银行家算法的实现方法,同时巩固利用Windows API进行共享数据互斥访问和多线程编程的方法。 二、实验内容 1. 在Windows操作系统上,利用Win32 API编写多线程应用程序实现银行家算法。 2. 创建n个线程来申请或释放资源,只有保证系统安全,才会批准资源申请。 3. 通过Win32 API提供的信号量机制,实现共享数据的并发访问。 三、实验步骤(设计思路和流程图) 最主要的用以实现系统功能的应该有两个部分,一是用银行家算法来判断,二是用安全性算法来检测系统的安全性。 1、银行家算法 设Requesti是进程Pi的请求向量,如果Requesti[j]=K,表示进程Pi 需要K个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查:

(1) 如果Requesti[j]≤Need[i,j],便转向步骤2;否则认为出错,因为它所需要的资源数已超过它所宣布的最大值。 (2) 如果Requesti[j]≤Available[j],便转向步骤(3);否则,表示尚无足够资源,Pi须等待。 (3) 系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值:Available[j]∶=Available[j]-Requesti[j]; Allocation[i,j]∶=Allocation[i,j]+Requesti[j]; Need[i,j]∶=Need[i,j]-Requesti[j]; (4) 系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则,将本次的试探分配作废,恢复原来的资源分配状态,让进程Pi等待。 2、安全性算法 (1) 设置两个向量:①Work∶=Available; ②Finish (2) 从进程集合中找到一个能满足下述条件的进程:①Finish[i]=false; ②Need[i,j]≤Work[j];若找到,执行步骤(3),否则,执行步骤(4)。(3) 当进程Pi获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行:Work[j]∶=Work[i]+Allocation[i,j]; Finish[i]∶=true; go to step 2; (4) 如果所有进程的Finish[i]=true都满足,则表示系统处于安全状态;否则,系统处于不安全状态。

银行家算法-实验报告

淮海工学院计算机工程学院实验报告书 课程名:《操作系统原理》 题目:银行家算法 班级: 学号: 姓名:

一、实验目的 银行家算法是操作系统中避免死锁的典型算法,本实验可以加深对银行家算法的步骤和相关数据结构用法的更好理解。 实验环境 Turbo C 2.0/3.0或VC++6.0 实验学时 4学时,必做实验。 二、实验内容 用C语言编写一个简单的银行家算法模拟程序,用银行家算法实现资源分配。程序能模拟多个进程共享多种资源的情形。进程可动态地申请资源,系统按各进程的申请动态地分配资源。要求程序具有显示和打印各进程的某一时刻的资源分配表和安全序列;显示和打印各进程依次要求申请的资源数量以及为某进程分配资源后的有关资源数据的情况。 三、实验说明 实验中进程的数量、资源的种类以及每种资源的总量Total[j]最好允许动态指定。初始时每个进程运行过程中的最大资源需求量Max[i,j]和系统已分配给该进程的资源量Allocation[i,j]均为已知(这些数值可以在程序运行时动态输入),而算法中其他数据结构的值(包括Need[i,j]、Available[j])则需要由程序根据已知量的值计算产生。 四、实验步骤 1、理解本实验中关于两种调度算法的说明。 2、根据调度算法的说明,画出相应的程序流程图。 3、按照程序流程图,用C语言编程并实现。 五、分析与思考 1.要找出某一状态下所有可能的安全序列,程序该如何实现? 答:要找出这个状态下的所有可能的安全序列,前提是要是使这个系统先处于安全状态,而系统的状态可通过以下来描述: 进程剩余申请数=最大申请数-占有数;可分配资源数=总数-占有数之和; 通过这个描述来算出系统是否安全,从而找出所有的安全序列。 2.银行家算法的局限性有哪些?

计算机操作系统经典题库及答案

计算机操作系统经典题库及答案 一填空: 1.操作系统为用户提供三种类型的使用接口,它们是(命令方式)和(系统调用)和图形用户界面。 2.主存储器与外围设备之间的数据传送控制方式有程序直接控制、(中断驱动方式)、(DMA方式)和通道控制方式。 3.在响应比最高者优先的作业调度算法中,当各个作业等待时间相同时,(运行时间短)的作业将得到优先调度;当各个作业要求运行的时间相同时,(等待时间长)的作业得到优先调度。 4.当一个进程独占处理器顺序执行时,具有两个特性:(封闭性)和可再现性。5.程序经编译或汇编以后形成目标程序,其指令的顺序都是以零作为参考地址,这些地址称为(逻辑地址)。 6.文件的逻辑结构分(流式文件)和记录式文件二种。 7.进程由程度、数据和(FCB)组成。 8.对信号量S的操作只能通过(原语)操作进行,对应每一个信号量设置了一个等待队列。 9.操作系统是运行在计算机(裸机)系统上的最基本的系统软件。 10.虚拟设备是指采用(SPOOLING)技术,将某个独享设备改进为供多个用户使用的的共享设备。 11.文件系统中,用于文件的描述和控制并与文件一一对应的是(文件控制块)。12.段式管理中,以段为单位,每段分配一个(连续区)。由于各段长度(不同),所以这些存储区的大小不一,而且同一进程的各段之间不要求连续。 13.逻辑设备表(LUT)的主要功能是实现(设备独立性)。 14在采用请求分页式存储管理的系统中,地址变换过程可能会因为(缺页)和(越界)等原因而产生中断。 16. 段的共享是通过(共享段)表实现的。 17.文件的物理结构分为顺序文件、(索引文件)和(索引顺序文件)。 18.所谓(设备控制器),是一块能控制一台或多台外围设备与CPU并行工作的

操作系统实验报告记录利用银行家算法避免死锁

操作系统实验报告记录利用银行家算法避免死锁

————————————————————————————————作者:————————————————————————————————日期:

计算机操作系统实验报告题目利用银行家算法避免死锁 一、实验目的: 1、加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。 2、要求编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用银行家算法,有效的防止和避免死锁的发生。

二、实验内容: 用银行家算法实现资源分配: 设计五个进程{p0,p1,p2,p3,p4}共享三类资源{A,B,C}的系统,例如,{A,B,C}的资源数量分别为10,5,7。进程可动态地申请资源和释放资源,系统按进程的申请动态地分配资源,要求程序具有显示和打印各进程的某一个时刻的资源分配表和安全序列;显示和打印各进程依次要求申请的资源号以及为某进程分配资源后的有关资源数据。 三、问题分析与设计: 1、算法思路: 先对用户提出的请求进行合法性检查,即检查请求是否大于需要的,是否大于可利用的。若请求合法,则进行预分配,对分配后的状态调用安全性算法进行检查。若安全,则分配;若不安全,则拒绝申请,恢复到原来的状态,拒绝申请。 2、银行家算法步骤: (1)如果Requesti<or =Need,则转向步骤(2);否则,认为出错,因为它所需要的资源数已超过它所宣布的最大值。 (2)如果Request<or=Available,则转向步骤(3);否则,表示系统中尚无足够的资源,进程必须等待。 (3)系统试探把要求的资源分配给进程Pi,并修改下面数据结构中的数值: Available=Available-Request[i];

银行家算法例子+答案

1、设系统中有3种类型的资源(A , B , C )和5个进程P1、P 2、P3 P4 P5, A 资源的数量为 17, B 资源的数量为5, C 资源的数量为20。在T o 时刻系统状 态见下表(T o 时刻系统状态表)所示。系统米用银行家算法实施死锁避免策 略。(12分) T o 时刻系统状态表 T0时刻系统状态表 (1) T o 时刻是否为安全状态?若是,请给出安全序列。 (2) 在T o 时刻若进程P2请求资源(0, 3, 4),是否能实施资源分配?为 什么? 满足P5的运行,在P5运行后,系统的状态为: 2 1 2 3 4 7 4 o 2 1 3 4 A 4 o 5 C A o o 6 V' 5 4 7 2 o 4 2 2 1 o o o o o o 同样的, 在 P5运行后,V ' (5, 4, 7)也大于等于 C-A 中P4所在的行(2, 2, 1),则能满 足P4的运行。P4运行后,系统的状态为: ⑷ 在(3) 的基; 础上, 若进程 P1 请求资源(o , 2, o ),是否能实施资源 分配?为什么 ,? 答: 当前 的系 统状态描述为: 5 5 9 2 1 2 3 4 7 5 3 6 4 o 2 1 3 4 C 4 o 11 A 4 o 5 C A o o 6 4 2 5 2 o 4 2 2 1 4 2 4 3 1 4 1 1 o R 17 5 2o V 2 3 3 (3)在(2)的基础上,若进程 分配?为什么? P4请求资源(2, o , 1),是否能实施资源 (1) 在To 时刻,由于V (2, 3, 3)大于等于(C-A )中P5所在行的向量(1 , 1 ,。),因此V 能

银行家算法问题

银行家算法问题 1、银行家算法中的数据结构 (1)可利用资源向量Available : []Availabel j k = 式中:j 01j m ≤≤- 一个含有m 个(类)元素的数组,每个元素代表一类可利用的资源数目。上式表示系统中现有的第j 类资源可用数目为k 个。 (2)最大需求矩阵Max : [,]Max i j k = 式中: i 01i n ≤≤- j 01j m ≤≤- n 个进程中的每一个进程对m 类资源的最大需求量,上式表示进程i 需求第j 类资源的最大数目为k 。 (3)分配矩阵Allocation : [,]Allocation i j k = 式中: i 01i n ≤≤- j 01j m ≤≤- n 个进程中的每一个进程对m 类资源的分配量,上式表示进程i 已分配到第j 类资源的数目为k 。 (4)需求矩阵Need :[,]Need i j k = 式中: i 01i n ≤≤- j 01j m ≤≤- n 个进程中的每一个进程对m 类资源的需求量,上式表示进程i 对第j 类资源的需求量为k 个。 (5)三个矩阵间的关系 [,][,][,]Need i j Max i j Allocation i j =-

2、银行家算法 设Re i quest 是进程i P 的请求向量,如果Re []i quest j k =,当i P 发出资源请求后,系统按下述步骤进行检查。 (1)如果Re [][,]i quest j Need i j ≤,便转向步骤(2),否则认为出错,因为它所需要的资源数已超过它所宣布的最大值。 (2)如果Re [][]i quest j Available j ≤便转向步骤(3),否则表示尚无足够资源, i P 须等待。 (3)系统试探着把资源分配给进程i P ,并修改下面的数据结构中的值: [][]Re []i Availabel j Availabel j quest j =- [,][,]R e [ i A l l o c a t i o n i j A l l o c a t i o n i j q u e s t j =+ [,][,]Re []i Need i j Need i j quest j =- (4)系统执行安全性算法,检查此次资源分配后系统是否处于安全状态。 若安全,则分配给进程i P 资源,完成本次分配;若不安全,试探分配作废,恢复原来的资源分配状态,让进程i P 等待。 3、安全性算法 (1)设置两个向量: 工作向量Work ,它表示系统可提供给进程继续运行所需的各类资源数目,它含有m 个元素,在执行安全算法开始时,Work Available =。 Finish ,它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做 []:Finish i false =;当有足够资源分配给进程时,再令[]:Finish i true =。 (2)从进程集合中找一个能满足下述条件的进程: [ ]:F i n i s h i f a l s e = [,][]Need i j Work j ≤,若找到,执行步骤(3),否则,执行步骤(4)。 (3)当进程i P 获得资源后,可顺利执行直至完成,并释放出分配给它的资源,

相关主题
文本预览
相关文档 最新文档