- 1、本文档共59页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统(第三版) 第4章 进程 同步与通信 本章主要内容: 4-1 进程间的相互作用 4-2 进程通信 4-3 死锁 4-4 Linux进程间通信 4.1 进程间的相互作用 4-1-1 进程间的联系 -资源共享关系 -相互合作关系 临界资源 是一种多个进程访问的资源。其属性是:访问临界资源的进程必须互斥得访问它,也就是说,同一时刻只允许一个进程访问的资源叫临界资源 临界区 不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它进行访问。我们把在每个进程中访问临界资源的那段代码称为临界区(critical section) 4.1 进程间的相互作用 同步机制应遵循的准则 空闲让进、忙则等待、有限等待、让权等待 4-1-2 利用软件方法解决进程互斥问题 算法1 设置一个公用整型变量turn,用于指示被允许进入临界区的进程的编号 算法描述如下: while (1) { … while (turn!=1) no-op; critical section turn=2; … } 4.1 进程间的相互作用 算法2 设置一个数组,使其中每个元素的初值为0,表示所有进程都未进入临界区,在每一个进程访问临界资源之前,先去查看一下临界资源是否正被访问。若正被访问,该进程需等待;否则进入自己的临界区 算法描述如下: int flag[2]={0,0}; … P1: while (1) { … while (flag[1]) no-op; flag[0]=1; critical section flag[0]=0; … } 4.1 进程间的相互作用 算法3 使要进入临界区的进程先设置其要求进入的标志,然后,再去查看其他进程的标志 算法描述如下: int flag[2]={0,0}; … P1: while (1) { … flag[0]=1; while (flag[1]) no-op; critical section flag[0]=0; … } 4.1 进程间的相互作用 算法4(正确算法) 为每个进程设置了相应的标志为flag[];还设置了一个turn变量,用于指示允许进入临界区的进程编号 算法描述如下: int flag[2]={0,0}; … P1: while (1) { … flag[0]=1; turn=2; while (flag[1]turn==2) no-op; critical section flag[0]=0; … } 保证了“忙则等待”,又实现了“空闲让进” 4.1 进程间的相互作用 4-1-3 利用硬件方法解决进程互斥问题 利用Test-and-Set指令实现互斥 Test-and-Set指令为: int TS(static int lock) { int TS=lock; lock=1; return(TS); } 用TS指令实现进程互斥的循环描述为: while (1) { … while (TS(lock)) do no-op; critical section lock=0; … } 4.1 进程间的相互作用 利用Swap指令实现进程互斥 Swap指令称为交换指令,描述为: void Swap(static int a,b) { int temp; temp=a; a=b; b=temp; } 利用Swap指令实现进程互斥的循环可描述为: while (1) { … key=1; do{ Swap(lock,key); }while(key); critical section lock=0; … } 4.1 进程间的相互作用 4-4-4 信号量机制 信号量机制是一种卓有成效的进程同步工具 记录型信号量机制 在信号量机制中,除了需要一个用于代表资源数目的整型变量value外,还有一个进程链表L,用于链接所有等待该信号量代表资源的进程 记录型数据结构描述 typedef struct { int
您可能关注的文档
- 操作系统 第二版 教学课件 作者 宗大华 肖霞 宗涛 14681 第9章.ppt
- 城市轨道交通车辆检修 教学课件 作者 阳东 卢桂云 项目一 任务二教案.doc
- 仓储管理 第2版 教学课件 作者 孙明贺 综合知识模块六.ppt
- 城市轨道交通车辆检修 教学课件 作者 阳东 卢桂云 项目一 任务一教案.doc
- 操作系统 第二版 教学课件 作者 宗大华 肖霞 宗涛1 14681 第2章.ppt
- 城市轨道交通车辆制动系统维护与检修 教学课件 作者 李益民 单元八 NABTESCO型制动控制系统.ppt
- 常用工具软件 第2版 教学课件 作者 袁云华 04.ppt
- 仓储管理 第2版 教学课件 作者 孙明贺 综合知识模块三.ppt
- 操作系统 第二版 教学课件 作者 宗大华 肖霞 宗涛1 14681 第3章.ppt
- 仓储管理 第2版 教学课件 作者 孙明贺 综合知识模块四.ppt
文档评论(0)