计算机操作系统课件:第4章进程同步与通信-进程之间的关系01_第1页
计算机操作系统课件:第4章进程同步与通信-进程之间的关系01_第2页
计算机操作系统课件:第4章进程同步与通信-进程之间的关系01_第3页
计算机操作系统课件:第4章进程同步与通信-进程之间的关系01_第4页
计算机操作系统课件:第4章进程同步与通信-进程之间的关系01_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第四章 进程同步与通信2知识回顾与展开在本节课,我们学习第四章进程同步与互斥1 进程同步和互斥的思想2 进程同步与互斥的软件硬件解决方法3 信号量机制与P/V原语4 经典进程的同步问题3教学目的和要求了解同步互斥问题的原因掌握临界区和信号量概念掌握解决简单同步互斥问题的信号量方法重点临界区和信号量概念难点应用信号量解决同步互斥问题2.4 进程同步与互斥4进程的互斥与同步在多道程序系统中,由于资源共享或进程合作,使进程间形成间接相互制约和直接相互制约关系。这种相互依赖、相互合作又相互竞争的关系,意味着进程间需要用某种形式的通信来实现,主要表现为进程互斥与同步两方面。5进程同步(相互合作关系):

2、直接制约:“进程进程” 进行协作等待来自其他进程的信息,否则就进行不下去,“同步”。概念:指系统中多个进程中发生的事件存在某种时序关系,必须协同动作,相互配合,从而共同完成一项任务。一个进程运行到某一点时要求另一伙伴进程为它提供消息,在未获得消息之前,该进程处于等待(阻塞)状态,获得消息后被唤醒进入就绪状态。进程间的关系(一)6接收进程必须等待发送进程发送信件。电子邮件信箱发送进程 A接收进程 B12n例 1:7例 2:X = fun1(y)*fun2(Z)计算fun1(y)进程p2算完fun2(Z)?取用P2计算结果计算fun2(Z)设置计算完成标志终 止YN进程P1进程P2 两个协同工作进

3、程的同步8进程互斥:间接制约:“进程资源进程” 进行竞争独占分配到的部分或全部共享资源,等待释放后才能使用,“互斥”。概念:有些资源需要互斥使用,因此各进程间要相互竞争,以使用这些互斥资源,进程的这种关系为进程的互斥。 解决进程互斥有两种办法: 1.由竞争各方平等协商。 2.引入进程管理者,由管理者来协调竞争各方对互斥资源的使用。进程间的关系(二)9例 3:公共地段交通十字路口的控制:公共地段互斥10 系统中某些软件或者硬件资源在同一时刻只允许被一个进程访问,称这样的资源为临界资源 或互斥资源 或共享变量。 如:外设(打印机、磁带机、绘图仪等)、共享代码段、共享数据结构等。临界资源11共享变量

4、的修改冲突例如:有两个进程A和B,它们共享一个变量x,且两 个进程按以下方式对变量x进行访问和修改。 A:R1 = x; R1 = R1 + 1; x = R1; B:R2 = x; R2 = R2 + 1; x = R2; 两个进程各自对x作了加1操作,x增加2。12共享变量的修改冲突如果按照另一种顺序对变量x进行修改:A:R1 = x;B:R2 = x;A:R1 = R1 + 1; x = R1;B:R2 = R2 + 1; x = R2;虽然两个进程各自对x作了加1操作。但x却只增1。为了防止这种错误发生,应把变量x作为临界资源处理,即让两个进程顺序互斥地使用变量x。13互斥:指多个进程

5、不能同时使用同一个资源。 是正确使用资源的基本要求。死锁: 指多个进程互不相让,都得不到足够的 资源。饥饿: 指一些进程一直得不到资源或得到资源 的概率很小。 系统中资源的共享程度14临界区的访问过程(进程对临界资源的访问过程)进入区临界区退出区剩余区不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它进行访问。15进入区(entry section)检查当前进程可否进入临界区的一段代码。如果当前进程可以进入临界区,通常设置相应“正在访问临界区”标志,防止其他进程同时进入临界区。临界区(critical section)进程中访问临界资源的一段代码。退出区(exit section)用

6、于将“正在访问临界区”的进程的标志清除。剩余区(remainder section)代码中的其余部分。临界区的访问过程16进程同步机制应遵循的准则空闲让进: 当无进程处于临界区时,表明临界资源处于空闲状态,应允许一个请求进入临界区的进程立刻进入自己的临界区,以有效地利用资源。忙则等待: 当已有进程进入临界区时,表明临界资源正在被访问,因此其他试图进入临界区的进程必须等待,以保证对临界资源的互斥访问。有限等待: 等待进入临界区的进程不能无限期死等;让权等待: 在进入区等待而不能进入临界区的进程应释放处理机,给其它进程用,并将自己转换到阻塞状态,。17进程互斥和同步的解决方法软件方法硬件方法信号量

7、方法18进程互斥的软件方法通过平等协商方式实现进程互斥的最初方法是软件方法。软件方法基本思路: 在进入区先设置一些标志和循环,确定是否已有进程在临界区访问临界资源。 如果有,则该进程在进入区进行等待; 如果没有,则该进程进入临界区访问临界资源,最后还要在退出区修改该进程的标志。其中的主要问题: 设置什么标志和如何循环检查标志。19进程互斥的软件方法有两个进程Pi和Pj,实现互斥访问同一个临界资源设立一个公用整型变量 turn:描述允许进入临界区的进程编号(i或j)。算法1:单标志实现过程:在进入区循环检查是否允许本进程进入: 当turn为i时,进程Pi可进入临界区;在退出区修改允许下一次访问临

8、界区的进程标识: 当进程Pi退出时,改turn为进程Pj的标识j;20进程互斥的软件方法有两个进程Pi, Pj,设立一个公用整型变量 turn:描述允许进入临界区的进程编号。算法1:单标志21缺点:强制进程轮流进入临界区,没有考虑进程的实际需要,容易造成资源利用不充分。(在Pi出让临界区之后,Pj使用临界区之前,Pi不能再次使用临界区。)算法1:单标志22算法2:双标志、先检查后修改设立两个标志flagi和flagj : 描述是否有进程在临界区,初值均为false(未 使用临界资源)。实现过程:先检查,后修改: 在进入区检查另一个进程是否在临界区,不在时修改本进程在临界区的标志为true;在退

9、出区修改本进程在临界区的标志为false;23算法2:双标志、先检查后修改设立两个标志flagi和flagj : 描述是否有进程在临界区,初值均为false(未使用临界资源)。24优点:不用强制进程交替进入临界区,进程可连续访问临界区。算法2:双标志、先检查后修改缺点:Pi和Pj可能同时进入临界区。 按下面序列执行时,会同时进入: “Pi, Pj, Pi, Pj”。即在检查对方flag之后和修改自己flag之前有一段时间,结果双方都检查通过。 问题出在:检查和修改操作不能连续进行25算法3:双标志、先修改后检查类似于算法2,与算法2的区别在于: 先修改后检查;flag 表示进程是否想进入临界区

10、。26缺点:Pi和Pj可能都进入不了临界区 按下面序列执行时,会都进不了临界区: “Pi,Pj,Pi,Pj” 即在切换自己flag之后和检查对方flag之前有一段时间,结果都切换flag,结果都检查不通过。优点:可防止两个进程同时进入临界区,保证对临界资源的互斥访问。算法3:双标志、先修改后检查27算法4:先修改、后检查、后修改者等待结合算法1和算法3,是实现互斥访问的正确算法。turn描述标志修改的先后,flag表示否想进入临界区。实现过程: 在进入区先修改后检查,并检查并发修改的先后。实现了:空闲则入、忙则等待。检查对方flag: 如果对方不想进入临界区,则自己进入“空闲则入”。否则再检查

11、turn: turn中保存的是较晚的一次赋值。则较晚的进程等待,较早的进程进入先到先入,后到等待。28算法4:先修改、后检查、后修改者等待turn描述标志修改的先后,flag表示否想进入临界区。29在进入区先修改后检查,并检查并发修改的先后。实现了:空闲则入、忙则等待。检查对方flag: 如果对方不想进入临界区,则自己进入 “空闲则入”。否则再检查turn: turn中保存的是较晚的一次赋值。则较晚的进程等待,较早的进程进入 先到先入,后到等待。算法4:先修改、后检查、后修改者等待30进程互斥的软件实现 软件实现方法中: 两个和三个以上进程间的互斥的进入区要区别对待。 不适合进程较多的进程间的

12、互斥。 现在已很少单独采用软件方法。在平等协商时利用某些硬件指令来实现进程互斥。 最主要的问题:修改和检查标志不能作为一个整体被执行。31进程互斥的硬件方法 硬件方法基本思路: 用一条指令完成读和写两种操作,因而保证读操作与写操作不被打断。 分类: 依据所采用的指令不同,分为两种: 1。TS 指令 2。Swap 指令32进程互斥的硬件方法Test-and-Set指令TS指令功能:读出指定标志后将其设为TRUE。boolean TS (boolean *lock) boolean old; old = *lock; *lock = TRUE; return old;公共布尔变量lock表示资源的

13、两种状态。(TRUE表示正被占用,FALSE表示空闲。)33利用TS实现进程互斥: - 每个临界资源设置一个公共布尔变量lock,初值为false。 lock=false,表示临界资源空闲; lock=true,表示临界资源正在被使用。 在进入区利用TS进行检查: - 有其它进程在临界区时,即lock=true,则重复循环检查; - 直到其它进程退出临界区时,即lock=false,循环检查通过,当前进程才可以访问临界区。互斥算法(TS指令)Test-and-Set指令34进程互斥的硬件方法Test-and-Set指令TS指令功能:读出指定标志后将其设为TRUE。boolean TS (boo

14、lean lock) boolean old; old = lock; lock = TRUE; return old;公共布尔变量lock表示资源的两种状态。(TRUE表示正被占用,FALSE表示空闲。)35互斥算法(TS指令)所有访问临界资源的进程的 进入区代码和退出区代码相同。36Swap指令(交换指令)利用Swap指令实现进程互斥: -每个临界资源设置一个公共布尔变量lock,初值为FALSE。 -每个进程设置一个私有布尔变量key,用于与lock 进行信息交换。在进入区交换lock和key的值,然后检查 key的状态; -有进程在临界区时,即lock=true重复交换和检查过程; -直到其他进程退出时,即lock=false通过检查。37void SWAP(int *a, int *b) int temp; temp = *a; *a = *b; *b = temp;Swap指令的功能:交换两个字(字节)的内容。Swap指令(交换指令)38互斥算法(Swap指令)39硬件方法的优点:适用范围广: 适用于任意数目的进程,在单处理器或多处理器上完全相同。简单: 标志设置简单,含义明确,容易验证其正确性。支持多个临界区: 一个进程在多个临界区时,只需为每个临界区设立一个布尔变量。40硬件方法的缺点:不能实现“让权等待”。 进程在进入区等待进入临界区时,要耗

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论