操作系统第三章作业讲解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章 作业讲解
1、有5个作业进入就绪队列等待运行,预计它们的运行时间分别为9、6、3、5与X ,它们以什么样的调度顺序运行时会取得最小的响应时间?(答案与X 值有关) 答:短作业优先调度算法是使响应时间最小的调度算法: 0 < X ≤ 3时,调度顺序为: X 、3、5、6、9 3 < X ≤ 5时,调度顺序为: 3、X 、5、6、9 5 < X ≤ 6时,调度顺序为: 3、5、X 、6、9 6 < X ≤ 9时,调度顺序为: 3、5、6、X 、9 X > 9时,调度顺序为: 3、5、6、9、X
2、假设一个系统中有4个进程,它们的到达时间和服务时间如表所示,忽略I/O 以及其他开销时间,若分别按先来先服务(FCFS )、非抢占及抢占的短进程优先(SPF )、高响应比优先(HRRN )、时间片轮转(RR ,时间片=1)、多级反馈队列调度算法(FB ,第i 级队列的时间片=2i-1)进行CPU 调度,请给出各进程的完成时间、周转时间、带权周转时间、平均周转时间和平均带权周转时间。
算法
时间 进程
平均时间
A B C
D
FCFS
完成时间 周转时间 带权周转时间
5 5 1 7
6 3 16 13 1.44 23 1
7 2.43 10.25 1.97 SPF (非抢占) 完成时间
周转时间
带权周转时间 5 5 1 7 6 3 23 20 2.22 14 8 1.14 9.75 1.835 SPF (抢占)
完成时间 周转时间 带权周转时间 7 7 1.4 3 2 1 23 20 2.22 14 8 1.14 9.25 1.435 HRRN
完成时间 周转时间 带权周转时间 5 5 1 7 6 3 16 13 1.44 23 17 2.43 10.25 1.97 RR (q=1)
完成时间 周转时间 带权周转时间 12 12 2.4 4 3 1.5 23 20 2.22 22 16 2.29 12.75 2.1 FB (q=2i-1)
完成时间 周转时间 带权周转时间
13 13 2.6
6 5 2.5
23 20 2.22 21 15 2.14
13.25 2.365
3、若有4个周期性任务,任务A 要求每30ms 执行一次,执行时间为15ms ;任务B 要求每50ms 执行一次,执行时间为5ms ;任务C 要求每50ms 执行一次,执行时间为15ms ;任务D 要求每100ms 执行一次,执行时间为10ms ,应如何按最低松弛度优先算法对它们进行CPU 调试? (要求画出0-150ms 时段的调度时序图,并列出每次切换时每个任务的松弛度)
进程 到达时间 服务时间 A 0 5
B 1 2
C 3 9
D 6 7
答:对于上面的4个周期性任务,利用最低松弛度优先算法进行调度的情况如图所示:
4、3个进程共享4个同类型的资源,每个进程最大需要2个资源,请问该系统是否会因为竞争该资源而死锁?
答:该系统不会因为竞争该类资源而死锁。
因为,必有一个进程可获得2个资源故能顺利完成,并释放出其所占用的2个资源给其他进程使用,使它们也顺利完成。
5、不安全状态是否必然导致系统进入死锁状态?举例说明。
答:不安全状态不一定导致进入死锁状态。
因为,安全性检查中使用的向量Max 是进程执行前提供的,而在实际运行过程中,一进程需要的最大资源量可能小于Max ,如一进程对应的程序中有一段进行错误处理的代码,其中需要n 个A 种资源,若该进程在运行过程中没有碰到相应的错误,而不需要调用该段错误处理代码,则它实际上将完全不会请求这n 个A 种资源。
6、在银行家算法中,若出现下面的资源分配情况:
Process Allocation Need Available P0 0 0 3 2 0 0 1 2 1 5 2 2
P1 1 0 0 0 1 6 5 0 P2 1 3 5 4 2 3 5 6 P3 0 1 3 2 0 5 5 2 P4
0 0 1 4
0 6 5 8
试问:1)该状态是否安全(要求列出安全性算法检查表)?
2)若进程P2提出请求Request(1,2,2,2)后,系统能否将资源分配给它(要求根据分配算法列出检查过程)?
3)如果系统立即满足P2的上述请求,请问,系统是否立即进入死锁状态,请说明原因?
答:1)利用安全性算法对上面的状态进行分析,找到了一个安全序列{P0、P3、P1、P2、P4},故系统是安全的。
资源情况 进程
Work A B C D
Need A B C D
Allocation A B C D
Work+Allocation A B C D
Finish
0 50 100 10 20 30 40 60 70 80 90 到达时间
必须完成时间 松弛度 任务执行 A1 0 65 95 15 30 35 50 80 95 90 C1 D1 A2 A3 0 65 125 15 30 50
35 80 90 110 A1=15 B1=45 C1=35 D1=90 B1=30 C1=20 D1=75 A2=15 B1=15 D1=60 B3=35 C3=25 D2=80 D1=10 B2=15 A3=10 B2=30 D1=25 A4=10 B2=45 C2=35 D1=40 A2=10 D1=50 A4=15 B2=5 A1 A2 A3 A4 B2,C2
D1 B1,C1 A2 A3 A4 A5 B2,C2 B3,C3 D2 A1,B1 C1,D1 120 110 130 150 140 A5,B3 C3
A6,B4
C4 B1 B2 C2 C3
A4 A5=10 B3=20D2=65 A5 140 125 110 140 B3=5D2=60 B3 145 155 145 D2=55 D2
P0 P3 P1 P2 P4
1 5
2 2
1 5 5 4
1 6 8 6
2 6 8 6
3 9 13 10
0 0 1 2
0 5 5 2
1 6 5 0
2 3 5 6
0 6 5 8
0 0 3 2
0 1 3 2
1 0 0 0
1 3 5 4
0 0 1 4
1 5 5 4
1 6 8 6
2 6 8 6
3 9 13 10
3 9 1
4 14
True
True
True
True
True
2)P2发出请求向量Request(1,2,2,2)后,系统按银行家算法进行检查:
①Request2(1,2,2,2)<=Need2(2,3,5,6)
②Request2(1,2,2,2)<=Available(1,5,2,2)
③系统先假定可为P2分配资源,并修改Available,Allocation2和Need2向量:
Available=(0,3,0,0)
Allocation2=(2,5,7,6)
Need2=(1,1,3,4)
④进行安全性检查:此时对所有的进程,条件Needi<=Available(0,3,0,0)都不成立,即Available
不能满足任何进程的请求,故系统进入不安全状态。
此时当进程P2提出请求Request(1,2,2,2)后,系统不能将资源分配给它。
3)系统立即满足进程P2的请求(1,2,2,2)后,并没有马上进入死锁状态。
因为,此时上述进程并没有申请新的资源,并因得不到资源而进入阻塞状态。
只有当上述进程提出新的请求,并导致所有没有执行完的多个进程因得不到资源而阻塞时,系统才进入死锁状态。
7、进程资源的使用情况和可用情况如表所示,请画出资源分配图,并对资源图进行简化,这种情况下系
统会发生死锁吗?
进程
当前分配数待分配的请求可用资源
R1 R2 R3 R1 R2 R3 R1 R2 R3
P1 P2 P3 P4 2
3
1
1
3
1
1
1
1
1
1
0 0 0
P1P2P3P4 R1R2R3
P1P2P3P4
R1R2R3P2只有分配边,没有请求边,所以首先可以将P2所有的边化简
P1P2P3P4
R1R2R3P2释放资源后,P1与P4都可以获得资源,运行结束。
所以选择P1化简
P1P2P3P4
R1R2R3
P4可以获得资源,运行结束。
P1P2P3P4
R1R2R3所有结点都成为孤立结点,所以图是可以完全化简的,不会发生死锁
存在两种化简序列1)p2-p1-p4-p3;2)p2-p4-p1-p3
8、要使下表中描述的状态安全,可用资源的最小数目应为多少?(注意,问题问的是可用资源的数目,
而不是存在的资源数)。
进程当前分配数最大分配数R1 R1
P1 P2 1
1
3
2
P3 P4 3
2
9
7
答:如果R1有一个资源可用,能保证P2运行完。
然后P2释放它现在使用的资源,使得R1类型的资源2个可用,这将允许P1执行完。
P1释放它使用的资源后,R1类型的资源数增加为3个可用。
只有3个R1类型的资源,如果P3、P4请求分配最大数目的资源,P3与P4就仍然处于死锁状态。
如果一开始就有3个R1类型资源,而不是1个,P4就可以获得5个R1的可用资源并运行完。
再加上P4原来占用的2个R1资源,就可以让P3运行。
所以使该状态安全的所需可用资源的最小个数为3。
9、在时间片轮转法中,应如何确定时间片的大小?
答:时间片长度可按如下方法确定:1)系统对相应时间的要求;2)就绪进程的数目:数目越多,时间片越小(当响应时间一定时);3)系统的处理能力:应当使用户输入通常在一个时间片内能处理完,否则使响应时间,平均周转时间和平均带权周转时间延长;
10、在解决死锁问题的几个方法中,哪种方法最易于实现?哪种方法能使资源利用率最高?
答:解决死锁问题可归纳为三种方法:预防死锁、避免死锁、检测死锁和解除死锁。
其中预防死锁最容易实现的;避免死锁使资源的利用率最高。
课本上习题
8、在批处理系统、分时系统和实时系统中,各采用哪几种进程(作业)调度算法?
答:批处理系统可采用的进程调度算法有:高优先权优先调度算法、多级反馈队列调度算法、FCFS、SJF 分时系统可采用的进程调度算法有:基于时间片的轮转算法、抢占式优先权调度算法、多级反馈队列调度算法
实时系统可采用的进程调度算法有:非抢占式优先权调度算法、抢占式优先权调度算法、最早截止时间优先算法、最低松弛度优先算法(后两种都属于高优先权优先的实时调度算法)
5、在银行家算法中,若出现下面的资源分配情况:
Process Allocation Need Available
P0 0 0 3 2 0 0 1 2 1 6 2 2
P1 1 0 0 0 1 6 5 0
P2 1 3 5 4 2 3 5 6
P3 0 0 3 2 0 6 5 2
P4 0 0 1 4 0 6 5 6
试问:1)该状态是否安全?
2)若进程P2提出请求Request(1,2,2,2)后,系统能否将资源分配给它?
3)如果系统立即满足P2的上述请求,请问,系统是否立即进入死锁状态?
答:1)利用安全性算法对上面的状态进行分析,找到了一个安全序列{P0、P3、P4、P1、P2},故系统是安全的。
资源情况进程
Work
A B C D
Need
A B C D
Allocation
A B C D
Work+Allocation
A B C D
Finish
P0 P3 P4 P1 P2 1 6 2 2
1 6 5 4
1 6 8 6
1 6 9 10
2 6 9 10
0 0 1 2
0 6 5 2
0 6 5 6
1 6 5 0
2 3 5 6
0 0 3 2
0 0 3 2
0 0 1 4
1 0 0 0
1 3 5 4
1 6 5 4
1 6 8 6
1 6 9 10
2 6 9 10
3 9 1
4 14
True
True
True
True
True
2)P2发出请求向量Request(1,2,2,2)后,系统按银行家算法进行检查:
①Request2(1,2,2,2)<=Need2(2,3,5,6)
②Request2(1,2,2,2)<=Available(1,6,2,2)
③系统先假定可为P2分配资源,并修改Available,Allocation2和Need2向量:
Available=(0,4,0,0)
Allocation2=(2,5,7,6)
Need2=(1,1,3,4)
④进行安全性检查:此时对所有的进程,条件Needi<=Available(0,4,0,0)都不成立,即Available
不能满足任何进程的请求,故系统进入不安全状态。
此时当进程P2提出请求Request(1,2,2,2)后,系统不能将资源分配给它。
3)系统立即满足进程P2的请求(1,2,2,2)后,并没有马上进入死锁状态。
因为,此时上述进程并没有申请新的资源,并因得不到资源而进入阻塞状态。
只有当上述进程提出新的请求,并导致所有没有执行完的多个进程因得不到资源而阻塞时,系统才进入死锁状态。