- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8课进程间制约关系(信号量来解决同步互斥问题)new
P、V操作的优缺点 优点: 简单,而且表达能力强(用P.V操作可解决任何同步互斥问题) 缺点: 不够安全;P.V操作使用不当会出现死锁;遇到复杂同步互斥问题时实现复杂 爸爸: 放苹果到盘子里 妈妈: 放梨到盘子里 儿子: 从盘子取苹果 吃苹果 女儿: 从盘子取梨 吃梨 一张桌子, 一个盘子. 每次只能往盘子放一样东西 用信号量来解决上诉同步问题 课堂练习: 爸爸: 放苹果到盘子里 妈妈: 放梨到盘子里 儿子: 从盘子取苹果 吃苹果 女儿: 从盘子取梨 吃梨 一张桌子, 一个盘子. 每次只能往盘子放一样东西 用信号量来解决上诉同步问题 设置信号量 s=1, a=0 ,b=0 爸爸: P(s); 放苹果到盘子里; V(a); 妈妈: P(s); 放梨到盘子里; V(b); 儿子: P(a); 从盘子取苹果; V(s); 吃苹果; 女儿: P(b); 从盘子取梨; V(s); 吃梨; 设置信号量 s=1, a=0 ,b=0 课堂练习 P168 四、2 练习 P168 四、3 【作业】用P.V操作解决下图之同步问题 P137: get copy put F R T G GET:从文件F取记录 放入缓冲区R中; COPY: 将缓冲区R中记录拷贝到缓冲区T中 PUT: 从T中取出记录 放入文件G中 信号量S1,S2 初始值S1=0;S2=0 GET: P(S2);从文件F取记录 放入缓冲区R中; V(S1); COPY: P(S1); 将缓冲区R中记录拷贝到缓冲区T中; V(S2); PUT: 从T中取出记录 放入文件G中; P145 信号量S1,S2 初始值S1=1;S2=0; S3=0 GET: P(S1);从文件F取记录 放入缓冲区R中; V(S2); COPY: P(S2); 将缓冲区R中记录拷贝到缓冲区T中; V(S3); PUT: P(S3); 从T中取出记录 放入文件G中; V(S1); 此种解法是否正确: GET: 从文件F取记录 放入缓冲区R中; COPY: 将缓冲区R中记录拷贝到缓冲区T中; PUT: 从T中取出记录 放入文件G中; 正确解法: * 操作系统第8课 进程间的同步互斥问题 内容回顾 进程间的制约关系 间接制约 直接制约 进程的互斥和进程的同步 临界区 内容回顾:信号量 信号量s, S.value是一整数 S.value=0:代表可供并发进程使用的资源实体数; S.value0:小于0时则表示正在等待使用临界区的进程数。 内容回顾:P、V操作 P操作:申请资源 V操作:释放资源 内容回顾:用信号量来解决进程互斥问题 a := a -1 print (a) a := a +1 print (a) P1 互斥 P2 互斥 If a 0 then a := a +1 else a:= a-1 P3 互斥 设置信号量mutex 初始值为1 用信号量来解决进程互斥问题 P(mutex) a := a -1 print (a) V(mutex) P(mutex) a := a +1 print (a) V(mutex) P1 临界区 P2 临界区 P(mutex) If a 0 then a := a +1 else a:= a-1 V(mutex) P3 临界区 设置信号量mutex 初始值为1 今日内容 用信号量来解决进程同步问题 同步、同步点、同步条件 一组并发进程因直接制约而互相发送消息,进行互相合作,互相等待,使得各进程按一定的速度执行的过程称为进程间的同步。 进程暂停等待以取得同步的那一点,称为“同步点”。 一个进程需要等待另一个进程完成的操作或发送的信息,称为“同步条件”。 进程同步 例: 司机 P1 售票员 P2 while (true) while (true) { { 启动车辆; 关门; 正常运行; 售票; 到站停车; 开门; } } 用信号量来解决进程同步问题 例: Pb 、Pa 两个进程,Pb中语句B 必须在Pa中语句A执行后才可执行 Code: Pa Pb ? ? A B 设置信号量flag, 初始值为0. 谁申请资源? 谁释放资源? 用信号量来解决进程同步问题 设置信号量 flag (for Pa), 初始值为0. Code: Pa Pb ? ? A P(flag) V(f
文档评论(0)