- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[计算机软件及应用]OS02-2 进程管理
第四章 进程的同步与通信 第二章 进程管理 2.5 进程互斥 2.6 信号量和P、V操作 2.7 进程同步 2.8 经典的进程同步问题 2.9 进程通信 2.5 进程互斥 2.5.1 基本概念 2.5.2 利用软件方法解决进程互斥问题 2.5.3 利用硬件方法解决进程互斥问题 2.5.4 用上锁开锁原语实现进程互斥 同步:对于进程操作的时间顺序所加的某种限制,如操作A应在B之前执行。 互斥:同步的特例,多个操作决不能同时执行, 如:操作A和操作B不能在同时执行。 (注意:理解不能同时执行的准确含义) 临界资源(critical resource):一次仅允许一个进程访问的资源。 如:进程AB共享一台打印机,若让它们交替使用则得到的结果肯定不是我们希望的。 临界资源可能是硬件,也可能是软件:变量,数据,表格,队列等。 并发进程对临界资源的访问必须作某种限制,否则就可能出与时间有关的错误,如:联网售票。 临界区(critical section):临界段,在每个程序中,访问临界资源的那段程序。 注意:临界区是对某一临界资源而言的,对于不同临界资源的临界区,它们之间不存在互斥。 如有程序段A、B是关于变量X的临界区,而C、D是关于变量Y的临界区,那么,A、B之间需要互斥执行,C、D之间也要互斥执行,而A与C、B与D之间不用互斥执行。 解决互斥的准则 为了禁止两个进程同时进入临界区内,可以采用软件办法或系统提供的同步机构来协调它们的关系。但是,不论用什么办法都要遵循下述准则: 1、当有若干进程欲进入它的临界区时,应在有限时间内使进程进入临界区。换言之,它们不应相互阻塞而致使彼此都不能进入临界区 2、每次至多有一个进程处于临界区。 3、进程在临界区内仅逗留有限的时间。 2.5.2 软件方法解决进程互斥 现在很少用软件方法解决互斥,但通过学习软件解法能使读者了解到,在早期进程互斥问题的解决并不是一件很简单的事。 假如有两个进程Pi和Pj,它们共享一个临界资源R。如何用软件方法使进程Pi和Pj能互斥地访问R。 下面介绍四个算法。 算法1 设整型变量turn,用于指示被允许进入临界区的进程的编号,即若turn=0,表示进程Pi可进入。turn =1表示进程Pj可进入。? 进程Pi : Repeat While turni do no_op; Critical section turn:=j; Other code Until false; 算法1的问题 该算法可确保每次只允许一个进程进入临界区。但它强制两个进程轮流进入。如当Pi退出时将turn置为1,以便?Pj能进入,但Pj暂不需要进入,而这时Pi又需要进入时,它无法进入。这不能保证准则1。 算法2 设var flag:array[0..1] of boolean,若flag[i]=true,表示进程Pi正在临界区内。flag[i]=false表示进程Pi不在临界区内。若flag[j]=true,表示进程Pj正在临界区内。flag[j]=false表示进程Pj不在临界区内。 Pi进程: Repeat While flag[ j ] do no_op; flag[i]:=true; Critical section flag[i]:=false; Other code Until false; 算法2的问题 该算法可确保准则1。但又出现新问题。当pi和pj都未进入时,它们各自的访问标志都为false。如果pi和pj几乎同时要求进入,它们都发现对方的标志为false,于是都进入了。 这不能保证准则2。 算法3 算法2 的问题在于:当进程Pi观察到进程Pj的标志为false后,便将自己的标志由false改为true,而正是在这两步之间,可能发生进程切换。当Pj运行时,它会观察到Pi的标志为false,从而可以将自己的标志设为true,并进入临界区。若在临界区的执行过程中发生了进程切换,Pi可能获得处理机而进入临界区。 在算法3 中,设var Flag:array[0..1] of boolean,若flag[i]=true,表示进程Pi希望进入临界区内。若flag[j]=true,表示进程Pj希望进入临界区。 Pi进程: Repeat flag[i]:=true; While flag[j] do no_op; Critical section flag[i]:=false; Other code Until false; 算法3的问题 该算法可确保准则2。但又出现新问题。它可能造成谁也不能进入。
您可能关注的文档
- [计算机软件及应用]Oracle存储过程.ppt
- [计算机软件及应用]ORACLE常用命令命令大全.doc
- [计算机软件及应用]Oracle安装.doc
- [计算机软件及应用]ORACLe数据库管理员教程.ppt
- [计算机软件及应用]Oracle数据库实用教程第五章__Oracle数据库备份与恢复-new.ppt
- [计算机软件及应用]ORACLe数据库管理员教程2.ppt
- [计算机软件及应用]oracle查询语句优化.pdf
- [计算机软件及应用]oracle用户&模式和表.pdf
- [计算机软件及应用]Oracle数据库云服务器命令参考.doc
- [计算机软件及应用]os操作系统02.ppt
- 实验室危废随意倾倒查处规范.ppt
- 实验室危废废液处理设施规范.ppt
- 实验室危废处置应急管理规范.ppt
- 初中地理中考总复习精品教学课件课堂讲本 基础梳理篇 主题10 中国的地理差异 第20课时 中国的地理差异.ppt
- 初中地理中考总复习精品教学课件课堂讲本 基础梳理篇 主题10 中国的地理差异 第21课时 北方地区.ppt
- 危险废物处置人员防护培训办法.ppt
- 危险废物处置隐患排查技术指南.ppt
- 2026部编版小学数学二年级下册期末综合学业能力测试试卷(3套含答案解析).docx
- 危险废物处置违法案例分析汇编.ppt
- 2026部编版小学数学一年级下册期末综合学业能力测试试卷3套精选(含答案解析).docx
最近下载
- 设计单位质量检查报告.pdf VIP
- 2022年暨南大学公共课《马克思主义基本原理概论》期末试卷A(有答案).docx VIP
- 止水螺杆专项方案.docx VIP
- 2022年暨南大学公共课《马克思主义基本原理概论》期末试卷B(有答案).docx VIP
- 固定局部义齿的设计(口腔修复学).pptx
- 最新国家开放大学《老年生活照护》形考任务答案.docx VIP
- 2023年暨南大学公共课《马克思主义基本原理概论》期末试卷B(有答案).docx VIP
- 英语专四练习sublist 7 exercise with keys.pdf VIP
- 不一样的卡梅拉绘本系列6《我能打败怪兽》PPT课件.ppt VIP
- 高考英语各单元专练14.doc VIP
原创力文档


文档评论(0)