收藏 分销(赏)

操作系统PV操作经典例题与答案.doc

上传人:仙人****88 文档编号:8784302 上传时间:2025-03-02 格式:DOC 页数:4 大小:42.04KB 下载积分:10 金币
下载 相关 举报
操作系统PV操作经典例题与答案.doc_第1页
第1页 / 共4页
操作系统PV操作经典例题与答案.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
1. 推广例子中的消息缓冲问题。 消息缓冲区为k个,有1个发送进程, n个接收进程,每个接收进程对发送来的消息都必须取一次 若有m个发送进程呢? Send: SB=k; //信号量,标记当前空余缓冲区资源。 i = 0; //标记存放消息的缓冲区位置 while (true) { P(SB); 往Buffer [i]放消息; V(SM); i = (i+1) % k; }; Receive: j = 0; //标记取产品的缓存区位置 SM=0;//信号量,标记初始没有消息 ReadCount=0;//读进程计数器 Mutex =1; //读进程互斥信号量 SW=0; //信号量,读进程在此信号量等待 while (true) { P(SM); 从Buffer[j]取消息; ReadCount++ If(ReadCount<n){ V(SM); P(SW) }else{ V(SB); j = (j+1) % k; for(int g=1; g< ReadCount;g++) V(SW); ReadCount=0; } }; 2.第二类读者写者问题: 写者优先 条件: 1)多个读者可以同时进行读 2)写者必须互斥(只允许一个写者写,也不能读者写者同时进行) 3)写者优先于读者(一旦有写者,则后续读者必须等待,唤醒时优先考虑写者) rc=0, //正在读者计数器 wc, //写计数器 rw, //读等计数器 R //等待读信号量 W //等待写信号量 读者: while (true) { P(mutex); if (wc >0){ rw++ P (R); } rc++; If(rw>0&&wc=0){ V(R) rw-- } V(mutex); 读 P(mutex); rc --; if (rc==0){ If(wc>0) V(w) } V(mutex); }; 写者: while (true) { P(mutex); wc ++; if((wc >1)||(rc>0)){ P(W) } V(mutex); 写 P(mutex); Wc --; if(wc>0) V(W); Else if(rw>0) V(R) rw-- V(mutex); }; 3.理发师睡觉问题 理发店里有一位理发师,一把理发椅和N把供等候理发的顾客坐的椅子 如果没有顾客,则理发师便在理发椅上睡觉。当一个顾客到来时,他必须先唤醒理发师 如果顾客到来时理发师正在理发,则如果有空椅子,可坐下来等;否则离开 Wait =0; 表示等待顾客资源; Barber=1;表示可以理发 custNum 关键资源,表示当前顾客数量 顾客进程: Coming//顾客来到 P(mutex) If(custNum>0){ If(custNum<=N){ V(mutex) P(wait); }else{ V(mutex) 离开; } }else{ V(mutex) V(Barber); 理发; 离开; P(mutex) custNum--; V(mutex) V(wait) } 理发师进程: While{ P(mutex) If(custNum ==0){ V(mutex) P (Barber) }else{ V(mutex) 理发 } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服