- 1、本文档共97页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章进程的描述与控制1剖析
* Ssignal(S1,S2,…,Sn)原语 Ssignal(S1,S2,…,Sn) 释放资源 for i = 1 to n do Si = Si + 1; Remove all the process waiting in the queue associated with Si into the ready queue. endfor * 信号量集机制 记录型信号量机制中,wait(S)或signal(S)操作仅能对信号量施以加1或减1操作,意味着每次只能获得或释放一个单位的临界资源。 当一次需要N个某类临界资源时,便要进行N次wait(S)操作,显然是低效的。 在有些情况下,当资源数量低于某一下限值时,便不予以分配。因而,每次分配之前,都必须测试该资源的数量,看其是否大于其下限值。 基于上述两点,可以对AND信号量机制加以扩充,形成一般化的“信号量集”机制。 * ? S为信号量,d为需求量,t为下限值 Swait(S1,t1,d1,…,Sn,tn,dn) if Si=t1 and … and Sn=tn then for i = 1 to n do Si = Si - di; endfor else ① Place the process in the waiting queue associated with the first Si found with Siti ② set the program count of this process to the beginning of Swait operation. endif * Ssignal(S1, d1S2,d2,…,Sn,dn) for i:=1 to n do Si:=Si+di ; Remove all the process waiting in the queue associated with Si into the ready queue. endfor * 2.3.3 信号量的应用 1. 利用信号量实现互斥 2. 利用信号量来描述前趋关系 * 1. 利用信号量实现互斥 为实现多进程能互斥访问临界资源,只须为该资源设置一互斥信号量mutex,并设初始值为1,然后将各进程访问该资源的临界区置于wait(mutex)和signal(mutex)操作之间。 访问临界资源的进程在进入临界区之前,都要先对mutex执行wait操作: wait操作成功,资源未被访问,进程进入临界区; wait操作失败,有其他进程使用临界资源,该进程阻塞。 访问临界资源的进程退出临界区后,应对mutex执行signal操作,以便释放该临界资源。 * 利用信号量实现互斥的描述 Var mutex: semaphore:=1;互斥信号量mutex begin parbegin process 1: begin repeat wait(mutex); critical section signal(mutex); remainder section until false; end * parbegin和parend间为可并发执行的进程 process 2: begin repeat wait(mutex); critical section signal(mutex); remainder section until false; end parend * 2. 利用信号量来描述前趋关系 前趋关系描述: 并发执行的进程P1和P2。P1中有语句S1; P2中有语句S2。要求:S1执行后再执行S2。 实现:进程P1和P2共享一个公用信号量S,并赋其初 值为0,将signal(S)操作放在语句S1后面; 而在S2语句前面插入wait(S)操作: 在进程P1中,用 S1;signal(S); 在进程P2中,用 wait(S);S2 ; * 下图给出了一个前趋图,其中S1,S2,S3,…,S6是最简单的程序段。为使各程序段
文档评论(0)