进程互斥详解.ppt_第1页
进程互斥详解.ppt_第2页
进程互斥详解.ppt_第3页
进程互斥详解.ppt_第4页
进程互斥详解.ppt_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、3.5 进程互斥,互斥:两个或两个以上的进程,由于不能同时使用同一临界资源,只能是一个进程使用完,另一个进程才能使用。这种现象称为进程互斥。,返回,3.5.1 资源共享所引起的制约 3.5.2 互斥的加锁实现 3.5.3 信号量(semaphore)与 PV原语 3.5.4 用PV原语实现进程互 斥,3.5.1 资源共享引起的制约,3.5.1.1临界资源 3.5.1.2临界区的访问过程 3.5.1.3进程互斥的软件方法 4.5.1.4进程互斥的硬件方法,3.5.1.1临界资源,多道程序环境进程之间存在资源共享,进程的运行时间受影响 临界资源:把一次仅允许一个进程使用的资源称为临界资源。,进程间

2、资源访问冲突 共享变量的修改冲突 操作顺序冲突 进程间的制约关系 间接制约:进行竞争独占分配到的部分或全部共享资源,“互斥” 直接制约:进行协作等待来自其他进程的信息,“同步”,共享变量的修改冲突,举例:共享变量x,3.5.1.2临界区的访问过程,临界区,各进程对于临界区资源的操作必须互斥, 互斥执行的程序段为临界区(critical section),临界区(critical section):进程中访问临界资源的一段代码。 进入区(entry section):在进入临界区之前,检查可否进入临界区的一段代码。如果可以进入临界区,通常设置相应正在访问临界区标志 退出区(exit sectio

3、n):用于将正在访问临界区标志清除。 剩余区(remainder section):代码中的其余部分。,3.5.1.3进程互斥的软件方法,有两个进程Pi, Pj,其中的Pi , Pj,算法1:单标志,设立一个公用整型变量 s:描述允许进入临界区的进程标识 在进入区循环检查是否允许本进程进入:turn为i时,进程Pi可进入; 在退出区修改允许进入进程标识:进程Pi退出时,改turn为进程Pj的标识j;,缺点:强制轮流进入临界区,没有考虑进程的实际需要。容易造成资源利用不充分:在Pi出让临界区之后,Pj使用临界区之前,Pi不可能再次使用临界区;,3.5.2互斥的加锁实现,当某个进程进入临界区后,它

4、将锁上临界区,直到它退出临界区为止。 Lock(keys) /keys=0 加锁 临界区 Unlock(keys) /keys=1解锁,3.5.3 信号量(semaphore),4.4.2.1 信号量和P、V原语 4.4.2.2 信号量集,前面的互斥算法都存在问题,它们是平等进程间的一种协商机制,需要一个地位高于进程的管理者来解决公有资源的使用问题。OS可从进程管理者的角度来处理互斥的问题,信号量就是OS提供的管理公有资源的有效手段。 信号量代表可用资源实体的数量。,信号量和P、V原语,1965年,由荷兰学者Dijkstra提出(所以P、V分别是荷兰语的test(proberen)increm

5、ent(verhogen)),是一种卓有成效的进程同步机制。,每个信号量s除一个整数值s.count(计数)外,还有一个进程等待队列s.queue,其中的s是阻塞在该信号量的各个进程的标识 信号量只能通过初始化和两个标准的原语来访问作为OS核心代码执行,不受进程调度的打断 初始化指定一个非负整数值,表示空闲资源总数(又称为资源信号量)若为非负值表示当前的空闲资源数,若为负值其绝对值表示当前等待临界区的进程数 二进制信号量(binary semaphore):只允许信号量取0或1值,1. P原语wait(s),-s.count;/-1表示申请一个资源; if (s.count 0)/表示没有空闲

6、资源; 调用进程进入等待队列s.queue; 阻塞调用进程; ,用消息wait(消息名)等待合作进程发来消息,2. V原语signal(s),+s.count;/+1表示释放一个资源; if (s.count = 0)/表示有进程处于阻塞状态; 从等待队列s.queue中取出一个进程P; 进程P进入就绪队列; ,V原语通常唤醒进程等待队列中的头一个进程 用消息signal(消息名)表示向合作进程发去消息,3.5.4 利用信号量实现互斥,为临界资源设置一个互斥信号量mutex(MUTual Exclusion),其初值为1;在每个进程中将临界区代码置于P(mutex)和V(mutex)原语之间 必须成对使用P和V原语:遗漏P原语则不能保证互斥访问,遗漏V原语则不能在使用临界资源之后将其释放(给其他等待的进程);P、V原语不能次序错误、重复或遗漏,互斥模型: 进程P1 进程P2 P(S) P(S) S1 S2 V(S) V(S) 其中信号量初值:S=1;S1、S2为两个互斥程序段。,并发进程之间存在相互制约关系 “同步“ 进程P1 : 进程P2: L1:P(S) L2:V(S) 信号量初值:S=0,进程P1 Y:=1; Y:=y+2; V(s1); Z:=y+1; P(s2); Y:=z+y;,进程P2 x:=1; x:=x+1; p(s1);

温馨提示

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

评论

0/150

提交评论