当前位置:首页 > 操作系统课后复习题答案
25.试述产生死锁的必要条件。 (1) 互斥条件;
(2) 占有和等待条件; (3) 不剥夺条件; (4) 循环等待条件。 /*tips*/
产生死锁的四个必要条件:
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 (3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 (4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 死锁产生的原因及预防死锁的方法
进程推进顺序不当、PV操作使用不妥、同类资源分配不均或对某些资源的使用未加限制等,不仅与系统拥有的资源数量有关,而且与资源分配策略、进程对资源的使用要求以及并发进程的推进顺序有关。
(1) 破坏条件1(互斥条件);
(2) 破坏条件2(占有和等待条件); (3) 破坏条件3(不剥夺条件); (4) 破坏条件4(循环等待条件)。
32.一台计算机有8台磁带机.他们有N个进程竞争使用,每个进程可能需要3台磁带机.请问N为多少时,系统没有死锁的危险? N=1或2或3.
当N=3时,磁带机的分配为:2个进程是3个,1个进程是2个,所以前面的两个进程用完就可以释放出来,如果N=4时,可能出现每个进程都分配2个磁带机,这样,每一个进程都要等待一个磁带机,可是磁带机已经分配光了,所以每个进程都在等待,就造成了死锁了。 二、应用题 2、
答:不同
(1):初值为1,范围为[-n+1,1];(2):初值为m,范围为[-n+m,m]。 23.
31.
答案1:
(1) 将独木桥的两个方向分别标记为A和B。用整型变量countA和countB分别
表示A、B方向上已在独木桥上的行人数。初值为0。需要设置三个初值都为1的互斥信号量:SA用来实现对countA的互斥访问,SB用来实现对countB的互斥访问,mutex用来实现对独木桥的互斥使用。 (2)
A方向行人过桥: Begin
P(SA);
countA=countA+1;
if(countA==1) P(mutex); V(SA); 过桥; P(SA);
countA=countA-1; if(countA==0) V(mutex); V(SA); End
B方向行人过桥: Begin P(SB);
countB=countB+1; if(countB==1) P(mutex); V(SB);
过桥; P(SB);
countB=countB-1; if(countB==0) V(mutex); V(SB); End
解答2:
semaphore wait,mutex1,mutex2; mutex1=mutex2=1;wait=1;
int counter1,counter2; counter1=0;counter2=0;
process P左() { while(true) {
P(mutex1); count1++;
if (count1==1) P(wait); V(mutex1); 过独木桥; P(mutex1); count1--;
if(count1==0) V(wait); V(mutex1); }
}
process P右() { while(true) {
P(mutex2); count2++;
if (count2==1) P(wait); V(mutex2); 过独木桥; P(mutex1);
count2--;
if(count2==0) V(wait); V(mutex2); } }
34.
stop用于当另一方提出过桥时,应阻止对方未上桥的后继车辆。
semaphore stop,wait,mutex1,mutex2; stop=mutex1=mutex2=1;wait=1;
int counter1,counter2; counter1=0;counter2=0; cobegin
process P东( ) { process P西( ) { P(stop); P(stop);
P(mutex1); P(mutex2); count1++; count2++;
if (count1==1) P(wait); if (count2==1) P(wait); V(mutex1); V(mutex2); V(stop); V(stop); {过桥}; {过桥};
P(mutex1); P(mutex2);
Count1--; count2--; if (count1==0) V(wait); if (count2==0) V(wait); V(mutex1); V(mutex2); } } coend 36.
假定某计算机系统有R1和R2两类可使用资源(其中R1有两个单位,R2有一个单位),它们被进程P1和P2所共享,且已知两个进程均以下列顺序使用两类资源: →申请R1→申请R2→申请R1→释放R1→释放R2→释放R1→
试求出系统运行过程中可能到达的死锁点,并画出死锁点的资源分配图(或称进程资源图)
共分享92篇相关文档