第三章进程管理4_第1页
第三章进程管理4_第2页
第三章进程管理4_第3页
第三章进程管理4_第4页
第三章进程管理4_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

复习进程间的制约关系有哪两种?什么是临界区什么是互斥?信号量的含义?P原语用于何时?V原语用于何时?第三章进程管理*进程同步进程间的制约关系1)间接制约:进行竞争--独占分配到的部分或全部共享资源,“互斥”。进程间要通过某种中介发生联系,是无意识安排的,可发生在相关进程之间,也可发生在无关进程之间2)直接制约:进行协作--等待来自其他进程的信息,“同步”。进程间的相互联系是有意识的安排的,直接作用只发生在相关进程间进程同步指系统中一些进程需要相互合作,共同完成一项任务。具体说,一个进程运行到某一点时要求另一伙伴进程为它提供消息,在未获得消息之前,该进程处于等待状态,获得消息后被唤醒进入就绪态进程同步例1:计算进程Pc和打印进程Pp合作完成计算和打印任务。两个进程共同使用同一个缓冲区Buf,Pc反复把数据放入Buf,Pp反复将Buf中的数据打印输出。缓冲区BufPcPp计算打印放入数据条件:缓冲区空取出数据条件:缓冲区满进程同步不采取任何制约措施:Pc:

A:localcountRepeatcount

BufUntilcount=空计算

Buf

计算结果

GotoAPp:

B:localprintRepeatprint

BufUntilprint≠空打印

Buf

清除Buf

GotoB进程同步缺点:由于反复测试语句的存在,造成CPU时间的极大浪费,这是操作系统设计要求不允许的解决:直接制约的进程互相给对方进程发送信号,告之执行条件已具备进程同步例1:进程Pc和Pp合作完成计算和打印任务计算进程Pc将计算结果放入Buf后,给打印进程Pp发送“非空”信号打印进程Pp将Buf中数据清除后,给计算进程Pc发送“空”信号进程同步缓冲区bufPcPp计算打印非空空放了一个苹果盘子满了苹果吃了盘子空了进程同步同步:在异步环境(执行起始时间随机,速度独立)下的一组并发进程,因直接制约互相发送消息而进行合作、互相等待,使得各进程按一定的速度执行的过程合作进程:具有同步关系的一组并发进程消息(事件):合作进程间互相发送的信号用P、V原语实现进程同步可把各进程之前发送的消息作为信号量看待私用信号量:只与制约进程及被制约进程有关,用于同步公用信号量:与整组并发进程有关,用于互斥用P、V原语实现进程同步例1:进程Pc和Pp合作完成计算和打印任务解:1)设私用信号量Bufempty表示buf

空,Buffull表示buf满

2)设初始值Bufempty=1,Buffull=0,表示当前缓冲区空缓冲区bufPcPp计算打印放入数据条件:缓冲区空取出数据条件:缓冲区满用P、V原语实现进程同步3)描述:Pc:A:P(Bufempty);

计算

buf

计算结果

V(Buffull);

GotoA;Pp:B:P(Buffull);

打印

Buf

清除Buf

V(Bufempty);

GotoB;用P、V原语实现进程同步例2:设公共汽车上,司机和售票员的活动如下。在汽车不断到站停车、行驶过程中,这两个活动有什么同步关系?用P、V原语实现他们的同步。司机P1

P2售票员

启动关门

正常运行售票

到站停开门用P、V原语实现进程同步解:1)设私用信号量close表示售票员是否关门,stop表示车辆是否停止到站

2)设初始值close=1,stop=0,表示车在运行

3)描述:P1:A:P(close)

启动行车停车

V(stop)

GotoAP2:B:P(stop)

开门

关门

V(close)售票

GotoB用P、V原语实现进程同步例3:两个同步进程共同使用多个缓冲区的情况PaPbBuf1Buf2Bufn用P、V原语实现进程同步解:1)设私有信号量Bufempty表示空缓冲区的个数,Buffull表示满缓冲区的个数

2)设初始值Bufempty=n,Buffull=0用P、V原语实现进程同步

3)描述:Pa:deposit(data):Pb:remove(data)A:localxB:localx

P(Bufempty);P(Buffull);

选择一个空Buf(x);选择一个满Buf(x)

Buf(x)datadataBuf(x)

Buf(x)置满标记Buf(x)置空标记

V(Buffull);V(Bufempty);

GotoA;GotoB;用P、V原语实现进程同步注意:1)Bufempty初始值为n,表示初始时n个缓冲区均为空2)x是缓冲区号3)Pa中的Buf(x)置满标记是为了按FIFO方式选择缓冲区时可知Buf(x)是满的,Pb中的Buf(x)置空标记的作用类似。都是便于搜索和区别空缓冲区和非空缓冲区用P、V原语实现进程同步例4:两个进程PA和PB通过两个FIFO缓冲区队列连接(设缓冲区队列的缓冲区个数都为n个),每个缓冲区长度等于传送消息长度。进程PA和PB之间的通信满足如下条件:(1)至少有一个空缓冲区存在时,相应的发送进程才能发送一个消息。(2)当缓冲队列中至少存在一个非空缓冲区时,相应的接收进程才能接收一个消息。用P、V原语实现进程同步试描述进程PA调用的发送过程send(1,m)和接收过程receive(2,m)。这里1和2分别代表缓冲队列1和缓冲队列2,m代表消息。PAPB缓冲区队列1缓冲区队列2用P、V原语实现进程同步解:1)设私有信号量bufempty[1],buffull[1],bufempty[2],buffull[2]用于进程PA和PB之间进行同步2)设初始值bufempty[1]=n,buffull[1]=0,bufempty[2]=n,buffull[2]=0用P、V原语实现进程同步3)描述receive(2,m)BeginLocalxP(buffull[2])

按FIFO方式选择一个满缓冲区buf(x)

消息m

Buf(x)

buf(x)置空标记

V(bufempty[2])E

温馨提示

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

评论

0/150

提交评论