操作系统课后复习题答案 联系客服

发布时间 : 星期三 文章操作系统课后复习题答案更新完毕开始阅读

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→

试求出系统运行过程中可能到达的死锁点,并画出死锁点的资源分配图(或称进程资源图)