- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
理解信号量的概念
掌握记录型信号量
掌握PV操作原语
应用PV操作解决进程互斥计算机操作系统6并发程序设计–6.3PV操作6.3.1PV操作与进程互斥
问题的提出TS或swap指令管理临界区,采用忙式轮询,效率低关开中断管理临界区,不便交给用户程序使用参考:操作系统访问硬件资源时采用“请求-等待-中断恢复”方式
信号量的构思一种可动态定义的软件资源:信号量核心数据结构:等待进程队列信号量声明:资源报到,建立队列申请资源的原语:若申请不得,调用进程入队等待归还资源的原语:若队列中有等待进程,需释放信号量撤销:资源注销,撤销队列
记录型信号量的定义记录型信号量:一种带数值的软资源typedefstructsemaphore{intvalue; //信号量值structpcb*list;//信号量等待进程队列指针}每个信号量建立一个等待进程队列每个信号量相关一个整数值正值表示资源可复用次数0值表示无资源且无进程等待负值表示等待队列中进程个数
P操作原语与V操作原语procedureP(semaphore:s){s=s–1; //信号量减去1if(s0)W(s); //若信号量小于0,则调用进程 被置成等待信号量s的状态}procedureV(semaphore:s){s:=s+1; //信号量加1if(s=0)R(s); //若信号量小于等于0,则释放一个等待信号量s的进程}
PV操作解决进程互斥问题框架semaphores;s=1;cobegin processPi{ …… P(s); 临界区; V(s); …… }coend;
PV操作解决机票问题IntA[m];Semaphores;s=1;cobeginprocessPi{ intXi; Li:按旅客定票要求找到A[j]; P(s); Xi=A[j]; If(Xi=1){Xi=Xi-1;A[j]=Xi;V(s);输出一张票; }else{V(s);输出票已售完;} gotoLi;}coend只有相同航班的票数才是相关的临界资源,所以用一个信号量处理全部机票会影响进程并发度P操作与V操作在执行路径上一一匹配
PV操作解决机票问题(改进)IntA[m];Semaphores[m];For(intj=0;jm;i++)s[j]=1;cobeginprocessPi{ intXi; L1:按旅客定票要求找到A[j]; P(s[j]); Xi=A[j]; If(Xi=1){Xi=Xi-1;A[j]=Xi;V(s[j]);输出一张票; }else{V(s[j]);输出票已售完;} gotoL1;}coend;
您可能关注的文档
- 操作系统教程(第6版)课件6.2 并发进程的制约关系.pptx
- 操作系统教程(第6版)课件6.3 临界区.pptx
- 操作系统教程(第6版)课件6.5 临界区管理实现的硬件方式.pptx
- 操作系统教程(第6版)课件6.7 PV操作与进程同步.pptx
- 操作系统教程(第6版)课件6.8 生产者消费者问题探究.pptx
- 操作系统教程(第6版)课件6.9 管程概述.pptx
- 操作系统教程(第6版)课件6.11 霍尔管程的例.pptx
- 操作系统教程(第6版)课件6.12 进程通信.pptx
- 操作系统教程(第6版)课件6.15 死锁的防止.pptx
- 操作系统教程(第6版)课件6.16 死锁的避免.pptx
文档评论(0)