(指出空闲分区大小和始址,每个1分) 分区 大小 起始地址 0 30K 400K 1 42K 470K 2
90K
210K
3.
(1)最短寻道时间优先算法(5分)
响应的次序为:132、190、205、61、40、29、23、19、18、4、376、398。((可以用图表示) 平均寻道长度:58.3 (2分)
(2)电梯调度算法(5分)
响应的次序为:132、190、205、376、398、61、40、29、23、19、18、4。(可以用图表示)
平均寻道长度:57.7 (2分)
十五、
综合分析题(每题 10分,共
20分)
1、(1)(5分)
系统中资源总量为(9,3,6) (1分)
各进程对资源的需求量为:
(每个1分,共4分)
2,2,2 2,0,2 1,0,3
3分) (3分)4,2,0
(2)(5分)
若此时P1发出资源请求request1(1,0,1),按银行家算法进行检查: request1(1,0,1)<= need1(2,2,2) request1(1,0,1)<= available(2,1,2) 试分配并修改相应数据结构,资源分配情况如下:
进程 allocation available need P1 2, 0, 1 1, 2, 1 1, 1, 1 P2 4, 1, 1 2, 0, 2 P3 2, 1, 1 1, 0, 3 P4
0, 0, 2
4, 2, 0
再利用安全性算法检查系统是否安全,可用资源Available(1,1,1)已不能满足任何进 程,故系统进入不安全状态,此时系统不能将资源分配给P1。
(2分)若此时P2发出资源请求request2(1,0,1),按银行家算法进行检查: Request2(1,0,1)<= need2(2,0,2) Request2(1,0,1)<= available(2,1,2) 试分配并修改相应数据结构,资源分配情况如下:
进程 allocation available need P1 1, 0, 0 2, 2, 2 1, 1, 1 P2
5, 1, 2 1, 0, 1 P3 2, 1, 1 1, 0, 3 P4
0, 0, 2
4, 2, 0
再利用安全性算法检查系统是否安全,可得此时刻的安全性分析情况:
进程 Need Allocation Work+Allocation Finish
Work
P2 P3 P4 P1
1, 1, 1 1, 0, 1 5, 1, 2 6, 2, 3 1, 0, 3 2, 1, 1 8, 3, 4 4, 2, 0 0, 0, 2 8, 3, 6 2, 2, 2 1, 0, 0
6, 2, 3 8, 3, 4 8, 3, 6 9, 3, 6
True True True true
While(1) {
P(full1);
从缓冲区1中取出记录; V(empty1); P(empty2);
从上述分析中可以看出,此时存在一个安全序列(P2,P3,P4,P1),故该状态是安全的, 可以立即将P2所申请的资源分配给它。 2、
Empty1,empty2,full1,full2:semaphore; Empty1=empty2=1; Full1=full2=0; Main() { Cobegin PA(); PB(); PC(); coend; } PA() {
While(1) {
从磁盘读一个记录; P(empty1);
将记录存入缓冲区1; V(full1); } } PB() {
(3分)
1分) 1分) (1分) (1分)
(2分)
2分) 将记录存入缓冲区2; V(full2); }
} PC() {
While(1) {
P(full2);
从缓冲区2中取出记录; V(empty2); 打印记录; }
}
2分)((((