欢迎来到天天文库
浏览记录
ID:48523384
大小:52.00 KB
页数:7页
时间:2020-02-07
《操作系统同步例题.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、. 13.对于生产者—消费者问题,假设缓冲区是无界的,试用信号灯与PV操作给出解法。答:由于是无界缓冲区,所以生产者不会因得不到缓冲区而被阻塞,不需要对空缓冲区进行管理,可以去掉在有界缓冲区中用来管理空缓冲区的信号量及其PV操作。semaphoremutex_in=1;semaphoremutex_out=1;semaphoreempty=0;intin=0,out=0; 生产者活动:while(1){producenextproduct;P(mutex_in);addtheproducttobuffer[in];in++;v(mutex_in
2、);V(empty);}消费者活动:while(1){P(empty);P(mutex_out);taketheproductfrombuffer[out];out++;V(mutex_out);} 14.设有一个可以装A、B两种物品的仓库,其容量无限大,但要求仓库中A、B两种物品的数量满足下述不等式:-M≤A物品数量-B物品数量≤N其中M和N为正整数。试用信号灯和PV操作描述A、B两种物品的入库过程。答:已知条件-M≤A物品数量-B物品数量≤N可以拆成两个不等式,即A物品数量-B物品数量≤N,B物品数量-A物品数量≤M。这两个不等式的含义是:
3、仓库中A物品可以比B物品多,但不能超过N个;B物品可以比A物品多,但不能超过M个。 semaphorea=n;semaphoreb=m;voidmain(){createprocess(A,…);createprocess(B,…);}A物品入库:voidA(){while(1){B物品入库:voidB(){while(1){..P(a);A物品入库;V(b);}}P(b);B物品入库;V(a);}} 15.试用信号灯与PV操作实现司机与售票员之间的同步问题。设公共汽车上有一个司机和一个售票员,其活动如下图所示。 为了安全起见,显然要求:(1)
4、关车门后方能启动车辆;(2)到站停车后方能开车门。亦即“启动车辆”这一活动应当在“关车门”这一活动之后,“开车门”这一活动应当在“到站停车”这一活动之后。解:如果进程P2尚未推进到②处时,进程P1已经推进到①处,则P1应等待直到P2推进到②处为止;同样,如果进程P1尚未推进到③处时,进程P2已经推进到④处,则P2应等待直到P1推进到③处为止。如果进程P1在①处发生了等待,则当进程P2执行到②处时应将P1唤醒;同样,如果进程P2在④处发生了等待,则当进程P2执行到③处时应将P1唤醒。用信号量和P、V操作解决这一问题,需要定义两个信号量,一个信号量
5、start表示是否允许司机启动车辆,另一个信号量open表示是否允许售票员开车门。初始状态是车停在始发站,车门开着,等待乘客上车。因此,两个信号量的初值都是0。 semaphorestart=0;semaphoreopen=0; 司机的活动:P1:do{P(start);启动车辆;正常行车;到站停车;V(open);}while(1);售票员的活动:P2:do{关车门;V(start);售票;P(open);开车门;}while(1);.. 16.设有A、B、C三组进程,它们互斥地使用某一独占型资源R,使用前申请,使用后释放。资源分配原则如下
6、:(1)当只有一组申请进程时,该组申请进程依次获得R;(2)当有两组申请进程时,各组申请进程交替获得R,组内申请进程依次获得R;(3)当有三组申请进程时,各组申请进程轮流获得R,组内申请进程依次获得R。试用信号灯和PV操作分别给出各组进程的申请活动程序段和释放活动程序段。解:intfree=1;//设备状态标志semaphoremutex=1;semaphoreqa=qb=qc=0;//各组等待队列intcounta=countb=countc=0;//等待队列长度 A组申请:P(mutex);if(free==1){free=0;V(mute
7、x);}else{counta++;V(mutex);P(qa);}A组释放:P(mutex);if(countb>0){countb--;V(qb);}else{if(countc>0){countc--;V(qc);}else{if(counta>0){counta--V(qa);}else{free=1;}}}}A组进程活动可以给出B组和C组进程活动。 17.设自行车生产线上有一只箱子,其中有N个位置(N≥3),每个位置可存放一个车架或一个车轮;又设有三个工人,其活动分别为:工人1活动:do{加工一个车架;车架放入箱中;}while(1)
8、工人2活动:do{加工一个车轮;车轮放入箱中;}while(1)工人3活动:do{箱中取一车架;箱中取二车轮;组装为一台车;}while(1)..试分
此文档下载收益归作者所有