第2单元进程与进程管理.ppt_第1页
第2单元进程与进程管理.ppt_第2页
第2单元进程与进程管理.ppt_第3页
第2单元进程与进程管理.ppt_第4页
第2单元进程与进程管理.ppt_第5页
免费预览已结束,剩余24页可下载查看

下载本文档

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

文档简介

1、第2单元 进程与进程管理,第4节 进程之间的同步与互斥,并发进程之间关系: 同步与互斥 互发消息,互斥与同步,资源共享,在操作系统中,当多个并发进程使用同一个资源。而这个资源又不能同时使用,进程间的这种相互制约关系称为互斥,合作,并发进程在一些关键点上可能需要互相等待与互通消息, 这种关系称为进程同步,进程互斥举例,例1:两个进程A、B共享一台打印机 例2:两个进程共享一个变量x 设:x代表某航班机座号,p1和p2两个售票进程,售票 工作是对变量x加1。这两个进程在一个处理机C上并发执行,r1 := x;r1:= r1+1; x := r1 ;,P1与P2并发执行,两种可能的执行次序: A情形

2、(希望这样) p1: r1 := x;r1:= r1+1; x := r1 ; p2: r2:= x;r2 := r2+1; x := r2 ;,设x的初值为10,两种情况下的执行结果: 情况A: x = 10+2 情况B: x = 10+1,B情形 p1: r1 := x; r1:= r1+1; x := r1 ; p2: r2:= x;r2 := r2+1; x := r2 ;,与时间有关的错误:不同的时间执行结果不同,互斥,临界区是进程中对临界资源使用的程序段,称为相对于该临界资源的临界区。,临界资源 一次仅允许一个进程使用的资源称为临界资源。 硬件:如输入机、打印机、磁带机等 软件:如

3、公用变量、数据、表格、队列等,临界区,只要p1和p2不同时进入各自的临界区,就可以互斥使用同一临界资源,例题,在下面的叙述中,正确的是( )。 A.临界资源是非共享资源 B.临界资源是任意共享资源 C.临界资源是互斥共享资源 D.临界资源是同时共享资源 对进程间互斥地使用临界资源,进程可以( ) A.互斥地进入临界区 B.互斥地进入各自的临界区 C.互斥地进入同一临界区 D.互斥地进入各自的同类资源的临界区,互斥使用资源办法,锁 信号量,1. 锁和上锁、开锁操作 什么是锁 用变量w代表某种资源的状态(0表示可用,1表示不可用),w称为“锁” 。 锁变量由内核维护,只能用内核提供的上锁操作和开锁

4、操作修改,锁,42,上锁原语 算法 lock 输入:锁变量w 输出:无 test: if (w为1) goto test; else w=1; *上锁* ,开锁原语 算法 unlock 输入:锁变量w 输出:无 w=0;*开锁* ,50,用锁改写卖票程序 x代表某航班机座号,pa和pb两个售票进程,售票工作是对变量x加1。 设:mutex为锁,pa( ) pb( ) lock(mutex); lock(mutex); x:=x+1 ; x:=x+1 ; unlock(mutex); unlock(mutex); ,利用锁实现互斥程序描述 程序 task1 main( ) p1( ) p2( )

5、 int w=0; * 互斥锁 * cobegin lock(w); lock(w); p1( ); csa ; csb ; p2( ); unlock(w); unlock(w); coend ,代表并发执行,上锁,开锁,临界区,临界区,46,用上锁原语和开锁原语实现进程互斥一般程序结构 框图描述,一个临界资源可以对应多个临界区。,互斥地使用临界资源是通过互斥地进入临界区实现的。,对不?,进程A、B共享变量x,需要互斥执行;进程B、C共享变量y,B、C也需要互斥执行,因此,进程A、C必须互斥执行。,上锁原语的问题:没有让权等待!,进程得不到锁,应该由运行状态转为等待状态,进程进入临界区的准则

6、,空闲让进 忙则等待 有限等待 让权等待,43,信号灯和P、V操作 什么是信号灯 信号灯是一个确定的二元组(s,q),s是一个具有非负初值的整型变量,q是一个初始状态为空的队列。操作系统利用信号灯的状态对并发进程和共享资源进行控制和管理。,信号灯的整型变量s。 变量值 0 时,表示绿灯,代表有资源可用; 变量值 = 0 时,表示红灯,代表没资源可用 注意:创建信号灯时,应准确说明信号灯 s 的意义和初值 (这个初值 绝不能为负值)。,变量S和队列q的改变必须由操作系统内核提供的原语操作,44,P 操作,P 操作的定义 对信号灯s的 p操作记为 p(s)。p(s)是一个不可分割的原语操作,。,(

7、 )操作不是P操作可完成的。 A.为进程分配处理机 B.使信号量的值变小 C.可用于进程的同步 D.使进程进入阻塞状态,45,V 操作,V 操作的定义 对信号灯s的 v操作记为 v(s)。v(s)是一个不可分割的原语操作,当一进程因在记录型信号量S上执行V(S)操作而导致唤醒另一进程后,S的值为( )。 A.0 B.0 C.0 D.0,main( ) int mutex=1; * 互斥信号灯 * cobegin pa( ); pb( ); coend pa( ) pb( ) p(mutex); p(mutex); csa ; csb ; v(mutex); v(mutex); ,信号灯可能的取

8、值 两个并发进程,互斥信号灯的值仅取1、0和1三个值。 mutex=1 表示没有进程进入临界区; mutex=0 表示有一个进程进入临界区; mutex=1 表示一个进程进入临界区, 另一个进程等待进入。,用信号灯的P、V操作实现互斥的程序描述,用信号量改写卖票程序 x代表某航班机座号,pa和pb两个售票进程,售票工作是对变量x加1。 设:mutex为互斥信号灯,初值为1。,pa( ) pb( ) p(mutex); p(mutex); x:=x+1 ; x:=x+1 ; v(mutex); v(mutex); ,同步,生产者消费者问题 合作进程,54,单缓冲区的生产者与消费者问题 计算进程

9、cp和打印进程 iop公用一个单缓冲,为了完成正确的计算与打印,试用信号灯的p、v操作实现这两个进程的同步。,两个进程的任务 计算进程cp经过计算,将计算结果送入buf; 打印进程iop把buf中的数据取出打印。,57,main( ) int sa=0; *表示buf中有无信息 * int sb=1; *表示buf中有无空位置* cobegin cp( );iop( ); coend cp( ) iop( ) while(计算未完成) while(打印工作未完成) 得到一个计算结果; p(sa); p(sb); 从缓冲区中取一数; 将数送到缓冲区中; v(sb); v(sa); 从打印机上输出

10、; ,59,生产者消费者问题的一般解答,生产者与消费者的同步关系 生产者:当有界缓冲区中无空位置时,要等待; 向有界缓冲区放入物品后,要发消息。 消费者:当有界缓冲区中无物品时,要等待; 从有界缓冲区取出物品后,要发消息。,62,程序描述 main( ) int sa=0; *满缓冲区的数目* int sb=n; *空缓冲区的数目* int mutex=1; *对有界缓冲区进行操作的互斥信号灯* cobegin p1 ( ); p2 ( ); pm ( ); c1 ( ); c2 ( ); ck ( ); coend ,pi( ) cj( ) while(生产未完成) while(还要继续消费

11、) p(sa); 生产一个产品; p(mutex); p(sb); 从有界缓冲区中取产品; p(mutex); v(empty); 送一个产品到有界缓冲 v(sb); v(mutex); 消费一个产品; v(sa); ,生产者消费者问题是一个既有同步又有互斥的问题。,例子,若信号量S初值为2,当前值为1,则表示有 ( )个进程在与S相关的队列上等待。 A0 B1C2D3 一种资源的数量是8,这个资源对应的信号量的当前值是2,说明:( ) A. 有2个进程等待这个资源 B. 有2个资源可以使用 C. 有6个进程等待这个资源 D. 有6个资源可以使用,信号量的物理意义是当信号量值大于零时表示 可分配资源的个数 ;当信号量值小于零时,其绝对值为 等待使用该资源的进程的个数 。,51,合作进程的执行次序表示

温馨提示

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

评论

0/150

提交评论