操作系统-课后自测
一、设有5个进程P1、P2、P3、P4和P5,它们到达时间和要求服务时间如下表(单位为ms),请按时间片轮转调度算法完成,时间片大小为3。
Process: P1 P2 P3 P4 P5 到达相对时刻: 0 3 5 9 13 执行或服务时间: 7 6 10 8 2 |
(1)写出进程的实际调度序列:____,____,____,____,____,____,____,____,____,____,____,____,____。
(2)计算平均带权周转时间(保留两位小数)____________。
解答:
甘特图为
0 | 3 | 6 | 9 | 12 | 15 | 18 | 19 | 22 | 24 | 27 | 30 | 32 | 33 |
P1 | P2 | P1 | P3 | P2 | P4 | P1 | P3 | P5 | P4 | P3 | P4 | P3 |
(1)进程的实际调度序列为: P1 P2 P1 P3 P2 P4 P1 P3 P5 P4 P3 P4 P3 。
(2)平均带权周转时间 = [ ( 19 - 0 )/7 + ( 15 - 3 )/6 + ( 33 - 5 )/10 + ( 32 - 9 )/8 + ( 24 - 13 )/2 ]/5
= ( 19/7 + 12/6 + 28/10 + 23/8 + 11/2 )/5
= 15.88 / 5
= 3.176
≈ 3.18
注:周转时间 = 进程完成时间 - 进程相对到达时间
带权周转时间 = 周转时间 / 服务时间
平均带权周转时间 = 所有进程周转时间之和 / 进程数
二、设有两个进程P、Q,P的优先级高于Q,同时进入就绪队列。各自运行的程序段如下所示:
进程P 进程Q
P1 Y=12 Q1 X=18
P2 Y=A+Y Q2 A=X+A
P3 P(S1) Q3 V(S1)
P4 A=Y+X Q4 X=A+Y
P5 V(S2) Q5 P(S2)
P6 X=Y+A Q6 A=X-Y
其中S1、S2为信号量,初值为0;已知X、Y、A为共享变量,X的初值为83,Y初值为35,A初值为38;若调度程序执行的策略为抢占式优先权原则,试问:
(1)执行序列(用编码Pi、Qi表示,每空填写一个编码)_____、_____、_____、_____、_____、_____、_____、_____、_____、_____、_____、_____。
(2)变量X、Y、A的运行结果依次是_______、______、_______。
解答:
初值: X = 83 Y = 35 A = 38 S1 = 0 S2 = 0
执行序列:
P1 Y = 12
P2 Y = A + Y = 38 + 12 = 50
P3 P(S1) S1 → -1
Q1 X = 18
Q2 A = X + A = 18 + 38 = 56
Q3 V(S1) S1 → 0
P4 A= Y + X = 50 + 18 = 68
P5 V(S2) S2 → 1
P6 X = Y + A = 50 + 68 = 118
Q4 X = A + Y = 68 + 50 = 118
Q5 P(S2) S2 → 0
Q6 A = X - Y = 118 - 50 = 68
(1)P1 P2 P3 Q1 Q2 Q3 P4 P5 P6 Q4 Q5 Q6
(2)X = 118 Y = 50 A = 68
Process |
Max |
Allocation |
||||||
A |
B |
C |
D |
A |
B |
C |
D |
|
P0 |
0 |
0 |
4 |
4 |
0 |
0 |
3 |
2 |
P1 |
2 |
7 |
5 |
0 |
1 |
0 |
0 |
0 |
P2 |
3 |
5 |
9 |
8 |
1 |
3 |
4 |
4 |
P3 |
0 |
8 |
8 |
4 |
0 |
3 |
3 |
2 |
P4 |
0 |
6 |
6 |
11 |
0 |
0 |
1 |
4 |
(1)此时系统中的可利用资源向量ABCD为__________。(所有数字之间不留空格)
(2)用银行家算法判断T0时刻系统状态是否安全?______(填A或B: A安全 B不安全)如为安全状态给出按P0-P4循环的安全序列__________。(安全序列中不留空格,如不安全填B)
(3)若进程P2提出请求Request(0,1,1,0),系统能否将资源分配给它?__________(填A或B:A能 B不能)
解答:
Process | Max | Allocation | Need | Available | ||||||||||||
A | B | C | D | A | B | C | D | A | B | C | D | A | B | C | D | |
P0 | 0 | 0 | 4 | 4 | 0 | 0 | 3 | 2 | 0 | 0 | 1 | 2 | 1 | 6 | 3 | 2 |
P1 | 2 | 7 | 5 | 0 | 1 | 0 | 0 | 0 | 1 | 7 | 5 | 0 | ||||
P2 | 3 | 5 | 9 | 8 | 1 | 3 | 4 | 4 | 2 | 2 | 5 | 4 | ||||
P3 | 0 | 8 | 8 | 4 | 0 | 3 | 3 | 2 | 0 | 5 | 5 | 2 | ||||
P4 | 0 | 6 | 6 | 11 | 0 | 0 | 1 | 4 | 0 | 6 | 5 | 7 |
已分配资源(A, B, C, D) = (2, 6, 11, 12)
(1)
当前可用资源 = 资源总数(3, 12, 14, 14) - 当前已分配(2, 6, 11, 12)
= (1, 6, 3, 2)
(2)
安全序列: P0 P3 P1 P2 P4
当前可用资源(1, 6, 3, 2) 能满足P0 Need(0, 0, 1, 2),P0完成后当前可用资源为(1, 6, 6, 4)
当前可用资源(1, 6, 6, 4)不能满足P1 Need(1, 7, 5, 0),继续向下进行判断
当前可用资源(1, 6, 6, 4)不能满足P2 Need(2, 2, 5, 4),继续向下进行判断
当前可用资源(1, 6, 6, 4) 能满足P3 Need(0, 5, 5, 2),P3完成后当前可用资源为(1, 9, 9, 6)
当前可用资源(1, 9, 9, 6)不能满足P4 Need(0, 6, 5, 7),继续向下进行判断,返回P1
当前可用资源(1, 9, 9, 6) 能满足P1 Need(1, 7, 5, 0),P1完成后当前可用资源为(2, 9, 9, 6)
当前可用资源(2, 9, 9, 6) 能满足P2 Need(2, 2, 5, 4),P2完成后当前可用资源为(3, 12, 13, 10)
当前可用资源(3, 12, 13, 10)能满足P4 Need(0, 6, 5, 7),P4完成后当前可用资源为(3, 12, 14, 14)
(3)
进程P2提出请求Request(0,1,1,0),系统执行银行家算法进行检查。
Request(0,1,1,0)<= P2 Need(2, 2, 5, 4);
Request(0,1,1,0)<= Available(1, 6, 3, 2);
系统进行假分配,
修改当前可用资源Available(1, 5, 2, 2)
修改P2 Allocation(1, 4, 5, 4)