发布时间 : 星期五 文章操作系统原理课后习题答案更新完毕开始阅读6208a7d977232f60ddcca1ec
量mutex1和mutex2,用来实现汽车对共享变量counta和countb的互斥访问。
Main( ){
int mutexa, mutexb, mutex1, mutex2, counta, countb;
mutexa=1;
mutexb=1;
mutex1=mutex2=1;
counta=countb=0;
cobegin
bargei; //i=1,2,...,m
carj; //j=1,2,...,n
Coend }
bargei(){
.....
P(mutexb);
吊起 B 桥;
P(mutexa);
吊起 A 桥;
驳船通过 A 桥;
放下 A 桥;
V(mutexa);
驳船通过 B 桥;
放下 B 桥;
V(mutexb);
.... }
carj(){
....
P(mutex2);
countb++;
if(countb==1)
P(mutexb);
V(mutex2);
汽车通过 B 桥;
P(mutex2);
countb--;
if(countb==0)
V(mutexb);
V(mutex2);
汽车通过 AB 段公路;
P(mutex1);
counta++;
if(counta==1)
P(mutexa);
V(mutex1);
汽车通过 A 桥;
P(mutex1);
counta--;
if(counta==0)
V(mutexa);
V(mutex1);
..... }
5-7 讨论下图描述的交通死锁的例子(设个方向上的汽车是单线的,直线行驶):
(1)对于死锁的四个必要条件中的哪些条件在此例中是适用的? (2)提出一个简单的原则,它能避免死锁。
(3)若用计算机实现交通的自动管理,请用信号灯上的V,P操作来实现各方向上汽车行驶的同步。
答:(1)路口是共享资源。
c 互斥条件:路口必须互斥使用,即汽车对它所需要的路口是排他性控制的。
d 不剥夺条件:汽车一旦占用了路口,除非自己让出路口,别人无权剥夺。
e 部分分配条件:每个方向的车队都占有一个路口,同时因申请新路口而等待。
f 环路等待条件:占有路口的车都在等待其它车占有的路口,循环等待。
(2)可以在每个路口设置红绿灯进行控制:绿灯亮时,南北方向的车可以通行,东西方向的车禁止通行;当红灯亮时,东西方向的车可以通行,而南北方向的车禁止通行。
第6章
6-2 某系统的进程状态变迁图如图6.9所示(设该系统的进程调度方式为非剥夺式),请说明:
(1)一个进程发生变迁3的原因是什么?发生变迁2、变迁4的原因又是什么?
答:变迁3:请求I/O设备 ,变迁2:超时间片,变迁4:I/O完成。
(2)下述因果变迁是否会发生,如果有可能的话,在什么情况下发生?
(a)2->1;(b)3->2;(c)4->5;(d)4->2;(e)3->5
答:<1><5>不能发生,<2>在该进程位于就绪队列首部时<3>在I/O完成后<4>在某进程剥夺处理机时