操作系统原理与实践教程(第二版)习题答案

v(full); end coend

解二:

semaphore well=1; // 保证互斥地访问水井的信号量 semaphore vat=1; // 保证互斥地访问水缸的信号量

semaphore empty=10; // 表示水缸中剩余的空间能容纳的水的桶数 semaphore full=0; // 表示水缸中水的桶数

semaphore pail=3; // 保证互斥地访问临界资源水桶的信号量 // 大和尚进程 big_monk(){ while(1){

wait(full); wait(pail); wait(vat);

use pail to get water from vat signal(vat); signal(empty);

drink water in the pail signal(pail); } }

// 小和尚进程 little_monk(){ while(1){

wait(empty);\\ wait(pail); wait(well);

use pail to get water from well signal(well); wait(vat);

pour water to the vat signal(vat); signal(full); signal(pail); } }

(21) 在银行家算法中,若出现下述资源分配情况:

Process Allocation Need Available P0 0 0 3 2 0 0 1 2 1 6 2 2 P1 1 0 0 0 1 7 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

试问:

① 该状态是否安全?

② 若进程 P2 提出请求 Request( 1, 2, 2, 2 )后,系统能否将资源分配给它? 解:

现在对该时刻的状态进行安全分析: 由于Available向量为(1,6,2,2),所以Work向量初始化为(1,6,2,2)该时刻的安全性检查表如下: Work A P0 1 P3 1 P4 1 P2 1 P1 2 B 6 6 6 6 9 C 2 5 8 9 D 2 4 6 Need A 0 0 0 B 0 6 6 3 7 C 1 5 5 5 5 D 2 2 6 6 0 Allocation A 0 0 0 1 1 B 0 0 0 3 0 C 3 3 1 5 0 D 2 2 4 4 0 Work+Allocation A 1 1 1 2 3 B 6 6 6 9 9 C 5 8 9 D 4 6 True True Finish 10 True 10 2 14 14 True 14 14 True 14 14 1 如表所示,存在安全序列,所以该时刻处于安全状态。 由于Request2(1,2,2,2)

>>闂佽绻掗崑鐐裁洪弽顐n潟闁硅揪绠戠粈鍌炴煏婵犲繘妾柣搴嫹<<
12@gma联系客服:779662525#qq.com(#替换为@)