有关进程的练习题 联系客服

发布时间 : 星期六 文章有关进程的练习题更新完毕开始阅读

P1: 1 0 0 0 1 7 5 0 P2: 1 3 5 4 2 3 5 6 P3: 0 3 3 2 0 6 5 2 P4: 0 0 1 4 0 6 5 6

试问:(1) 当前状态是否安全?若是安全状态,请给出进程安全序列。 (2) 如果进程P2提出请求Request2=(1,2,2,2),系统能否将资源分配给它?说明原因. 解答:(1)当前状态是安全的。找出进程安全序列的分析过程如下: Pi Needi Available P0 A B C D 0 0 1 2 1 6 2 3 P3 A B C D 0 6 5 2 1 6 5 5 P1 A B C D 1 7 5 0 1 9 8 7 P4 A B C D 0 6 5 6 2 9 8 7 P2 A B C D 2 3 5 6 2 9 9 11 从分析过程,可得出进程安全序列是:{ P0,P3,P1,P4,P2}。

(2)按照银行家算法, 因Request2(1, 2,2,2)≤ Need2(2,3,5,6), 且Request2(1, 2,2,2)≤ Available(1,6,3,2),

试探性地将请求的资源分给进程P2,并修改有关数据结构的数值:

Available= Available(1,6,3,2)- Request2(1, 2,2,2) = Available(0,4,1,0)

Need2= Need2(2,3,5,6)-Request2(1, 2,2,2)=Need2(1,1,3,4) Allocation2= Allocation2(1,3,5,4)+ Request2(1, 2,2,2) = Allocation2(2,5,7,6)

此时系统可用资源Available(0,4,1,0)均不能满足这五个进程还需要的资源数量,分别是(0,0,1,2)、(1,7,5,0)、(1,1,3,4)、(0,6,5,2)和(0,6,5,6)。系统将进入不安全状态,恢复Need2、Allocation2及Available原来的值。结论是:对进程P2的请求不予分配,进程P2阻塞等待。 .

(见习题15)关于读者/写者问题,有人给出如下改进解法: semaphore r_w_w, mutex, s; (初值均为1) int count; (初值为0)

读者活动: P(s); P(mutex); count++;

if (count= =1) P(r_w_w); V(mutex); V(s); {读操作} P(mutex); count--;

If (count= =0) V(r_w_w); V(mutex);

写者活动: P(s); P(r_w_w); {写操作} V(r_w_w); V(s);

分析上述改进算法的调度效果。

答:由于s以及读者和写者对s的操作,读者和写者都不会无限等待,因而算法不会出现饿死现象,是一个公平的解法

考研题库: http://oa.gdut.edu.cn/os/exercises/index-exe.htm