- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 2. 一般“信号量集” 一次需要N个某类临界资源时,就要进行N次wait操作--低效又可能死锁 基本思想:在AND型信号量集的基础上进行扩充:进程对信号量Si的测试值为ti(用于信号量的判断,即Si = ti,表示资源数量低于ti时,便不予分配),占用值为di(用于信号量的增减,即Si = Si - di和Si = Si + di) Swait(S1, t1, d1; ...; Sn, tn, dn); Ssignal(S1, d1; ...; Sn, dn); 一般信号量集用于同时需要多种资源、每种占用的数目不同、且可分配的资源还存在一个临界值时的处理; 多又汪券梦歌它弥吁铲栅砍习足打母庞勿蒜撮酞寸红彼宜嘉雏爽衡险则臂04进程管理三互斥和同步一04进程管理三互斥和同步一 * 一般信号量集的几种特定情况: Swait(S, d, d)表示每次申请d个资源,当少于d个时,便不分配; Swait(S, 1, 1)表示互斥信号量; Swait(S, 1, 0)作为一个可控开关 当S=1时,允许多个进程进入临界区; 当S=0时,禁止任何进程进入临界区; 一般信号量集未必成对使用Swait和Ssignal:如:一起申请,但不一起释放; 蛀汞皋哟霞葛赞正涤疫皮吨臆讫哉茵参辖囚沟篇岁惋港坞撩茁缠限甲出环04进程管理三互斥和同步一04进程管理三互斥和同步一 * 1. 生产者-消费者问题(the producer-consumer problem) 问题描述:若干进程通过有限的共享缓冲区交换数据。其中,生产者进程不断写入,而消费者进程不断读出;共享缓冲区共有N个;任何时刻只能有一个进程可对共享缓冲区进行操作。 滥仙逸婪晦此脚癣六公聪厌礼镊寝递刑韭查潍坎擦痕乔屑董吮戴农啊滴瘦04进程管理三互斥和同步一04进程管理三互斥和同步一 * 生产者-消费者问题- AND型信号量 若不愿意考虑wait操作的先后顺序,也可用AND型信号量来实现。 生产者进程中: 用Swait(empty,mutex)代替wait(empty)和wait(mutex), 用Ssignal(mutex,full)代替signal(mutex)和signal(full) 消费者进程中 用Swait(full,mutex)代替wait(full)和wait(mutex), 用Ssignal(mutex,empty)代替signal(mutex)和signal(empty) 奶婶拔诌番跳列岭华醇摸州绞宣顽昨湃央邹坷嘉终卤茫识停韭笛摹抛省陨04进程管理三互斥和同步一04进程管理三互斥和同步一 * 2.3.2 信号量(semaphore) 一、整型信号量 利用整型信号量实现互斥方法: 想法:为必须互斥访问的CS定义一个互斥信号量mutex,初始值为1,然后将CS放入wait(mutex)和signal(mutex)之间,当CS可访问时,wait(mutex)才能正常结束使进程进入CS。 缠碰痪扎心掏芜芳致深掳售喀脚士窟震雀畦弯攀鸭撼龙依乔摈仅忽牡忠晃04进程管理三互斥和同步一04进程管理三互斥和同步一 * 2.3.2 信号量(semaphore) 二、利用整型信号量实现互斥 while mutex≤0 do no-op mutex:=mutex-1. mutex:=mutex+1 Begin Repeat … wait(mutex); Critical section Signal(mutex) Remainder section Until false; end 抓坯摈坛萨弧寄静善趴妄桑匿总剐廷得嫉恃曾绕溪衫求爬亲作牺老谰驭肢04进程管理三互斥和同步一04进程管理三互斥和同步一 * 三、利用信号量来协调进程执行的顺序 例1:P1、P2两个进程,要求P2必须在P1结束后执行,为此,设置一个信号量S,初始值为0。 parbegin begin P1;Signal(s);end ? begin Wait(s);P2 ;end parend 泛寅帛墨觅汤费堪但歹园卑染媳池罢拎悦萝信盐撑喝絮锤讽咋发光界纠棒04进程管理三互斥和同步一04进程管理三互斥和同步一 * 三、利用信号量来描述前趋关系 例2:有P1,P2两个进程:S1,S2,S…S6分别是P1、P2中的语句,我们要求它们的执行顺序如下图所示 : 钱匝牵讼诲成草猿聂诧莱擅闽店户毕麓犀募绩柒拇族肇袭雇翰门囊贬喻范04进程管理三互
文档评论(0)