操作系统同步例题.doc

操作系统同步例题.doc

ID:48523384

大小:52.00 KB

页数:7页

时间:2020-02-07

操作系统同步例题.doc_第1页
操作系统同步例题.doc_第2页
操作系统同步例题.doc_第3页
操作系统同步例题.doc_第4页
操作系统同步例题.doc_第5页
资源描述:

《操作系统同步例题.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)..试分

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。