【2】2-5 信号量习题.ppt

【2】2-5 信号量习题.ppt

ID:48162350

大小:353.00 KB

页数:26页

时间:2020-01-17

【2】2-5 信号量习题.ppt_第1页
【2】2-5 信号量习题.ppt_第2页
【2】2-5 信号量习题.ppt_第3页
【2】2-5 信号量习题.ppt_第4页
【2】2-5 信号量习题.ppt_第5页
资源描述:

《【2】2-5 信号量习题.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、阶段自省什么是进程?理解进程的状态控制;理解PCB的作用及PCB的组织;什么是同步?熟练使用记录型信号量的P、V原语,能解决各种进程同步问题。7/16/20211山东农业大学计算机系经典的三个信号量问题回顾生产者—消费者问题互斥、同步哲学家就餐问题互斥、死锁读者——写者问题有条件的互斥7/16/20212山东农业大学计算机系信号量机制控制同步练习题读者与写者(写者优先方式)黑白棋问题嗜睡的理发师问题生产与销售问题7/16/20213山东农业大学计算机系读者与写者问题(写者优先方式)7/16/20214山东农业大学计算机系读者优先的关键:若读者先占有互斥信号量,只有最后一个读者离开,计

2、数降为0时才释放信号量,导致写者弱势。写者优先同上述方法:写者先占有某信号后,直到最后一个写者走完才释放该信号,读者才能进入。增加一个互斥信号量S,读者和写者都争抢该信号;对写者也进行计数,第1个写者申请S,其他写者不需要申请S;最后一个写者离开时才释放信号量S.一旦写者先申请到了S,则所有的读者只能等待写者都走完才可进入共享读。而多个写者通过S后,仍要争抢wmutex信号以完成互斥的写入。7/16/20215山东农业大学计算机系Wait(s)ifReadcount=0thenwait(wmutex);//signal(s)亦可Readcount+1;signal(s)读操作Read

3、count-1;ifReadcount=0thensignal(wmutex);ifwritecount=0thenwait(s);writecount+1wait(wmutex);写入文件;signal(wmutex);writecount-1ifwritecount=0thensignal(s);读者写者申请rmutex释放rmutex申请mutex释放mutex7/16/20216山东农业大学计算机系用到的变量读者间起作用:Readcount变量,rmutex信号量写者间起作用:writecount变量,mutex信号量读者与写者间起作用:wmutexS7/16/20217山东

4、农业大学计算机系黑白棋子问题7/16/20218山东农业大学计算机系问题描述两个人下棋,一方执黑棋,一方执白棋。要求双方轮流下子。给出两种情况的解决办法:1)执黑子一方先下2)双方都可以先下,谁先抢到棋盘谁先下。然后开始轮流下子。7/16/20219山东农业大学计算机系1)执黑子一方先下信号量:b=1,w=0黑:while(没结束){wait(b);下一黑棋;signal(w);}白:while(没结束){wait(w);下一白棋;signal(b);}7/16/202110山东农业大学计算机系2)先抢到棋盘者先下,然后轮流下子问题分析:无法用单纯的信号量操作完成,因为初始值无法设置

5、固定值。争抢棋盘需要一个互斥信号m;加入if控制与标志判断。利用互斥信号量与特殊标志变量的结合使用实现有序控制。7/16/202111山东农业大学计算机系Semaphore  m=1;turn=0;黑while(没结束){p(m);if(turn<>2)下一黑子;turn=2;v(m)}白:while(没结束){p(m);if(turn<>1)下一白子;turn=1;v(m)}7/16/202112山东农业大学计算机系嗜睡的理发师问题7/16/202113山东农业大学计算机系问题描述一个理发店有N个沙发,1个理发椅;理发师:持续睡觉,理发,收钱的动作顾客:若有沙发,进入等待;否则离开

6、。理发椅空,一顾客放弃沙发,去唤醒它理发;理发后付费,付费完毕离开理发椅,离店。7/16/202114山东农业大学计算机系repeatwait(full)(阻塞就是在睡觉)理发signal(cutok)wait(payment)收费找零Signal(receipt)Untilfalse同步关系分析顾客Repeat…顾客坐上椅子singal(full)(叫理发师)wait(cutok)(享受理发中)付费signal(payment)wait(receipt)离开椅子离开店Untilfalse从简单的入手:理发师与椅子上的顾客间的同步,简单而典型7/16/202115山东农业大学计算机系

7、顾客间对椅子、沙发使用导致的相互关系顾客Repeatifcount>Nthen离开店elsecount=count+1ifcount=1thenwait(empty)等椅子elsewait(sofa)坐入沙发wait(empty)等椅子离开沙发signal(sofa)endifendifUntilfalse顾客坐上椅子…(与理发师的关系)离开椅子离开店Wait(N)Wait(empty)用户关心沙发是否有空:N用户关心椅子是否空empty理发师关心椅子是否

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

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

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