第6章进程间的制约关系PPT课件_第1页
第6章进程间的制约关系PPT课件_第2页
第6章进程间的制约关系PPT课件_第3页
第6章进程间的制约关系PPT课件_第4页
第6章进程间的制约关系PPT课件_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、LOGO1第6章 进程间的制约关系学习要点:1.2.3.进程间的两种制约关系进程间的两种制约关系互斥与同步互斥与同步 ;正确处理互斥与同步的方法正确处理互斥与同步的方法信号量以及在信号量以及在信号量上的信号量上的P、V操作操作 ;死锁以及解决死锁的途径死锁以及解决死锁的途径 ;进程间的高级通信进程间的高级通信 。4.LOGO2进程间的制约关系第六章正文6.1 进程间的制约关系 在多道程序的环境中,系统中的多个进程可以并发执行,同时它们又要共享系统中的资源,这些资源有些是可共享使用的,如磁盘,有些是以独占方式使用的,如打印机。由此将会引起一系列的矛盾,产生错综复杂的相互制约的关系。 产生这种错综

2、复杂的相互制约关系的原因有二: 资源共享间接制约关系 进程合作直接制约关系LOGO3进程间的制约关系第六章正文6.1 进程间的制约关系 假定这样进行管理:为输出井设置一张 “输出井文件目录表”,它由若干目录项组成。每个目录项记录一个要打印输出的文件名以及该文件在磁盘的存放地址。为了管理该目录表,系统安排了两个指针:out和in。“缓输出程序”根据out的指点进行打印,out总是指向下一个被打印的文件;井管理写程序根据in的指点存放要求输出的文件目录信息,in总是指向下一个可用的目录项位置。 6.1.1与时间有关的错误与时间有关的错误与时间有关的错误与时间有关的错误1. 进程的并发,使一个进程何

3、时占有处理机、占有多长时间、执行速度的快慢、以及外界对进程产生作用等都带有随机性。因此,一个进程对其他进程的影响无法预测。在操作系统里,把这种由于时间因素的影响而产生的错误,称为“与时间有关的错误与时间有关的错误”。 对输入井文件目录的管理对输入井文件目录的管理2.读in的当前内容 ;根据指点,存入打印文件名 ;in的值加1 ;test . cgroup . probit . txt45674out7in输入井文件目录表“井管理写” 程序LOGO4进程间的制约关系第六章正文6.1 进程间的制约关系 进程进程A in=7 进程进程B读in的当前内容 ;根据指点,存入打印文件名 ;in的值加1 ;

4、“井管理写” 程序读in的当前内容 ;根据指点,存入打印文件名 ;in的值加1 ;“井管理写” 程序in=8in=9实例:实例:LOGO5进程间的制约关系第六章正文6.1 进程间的制约关系 在复制过程中,若COPY已把R里的记录拷贝到了T中,那么GET和PUT就可以并发执行了。即GET从F里读出下一个记录送到R中的操作,与PUT从T中取出里面的内容写入G的操作,谁先做谁后做都没有关系,不会影响到复制结果的正确性。由于利用了它们并发性,工作效率就会提高。 但是,如果不去顾及这三者之间执行顺序的这种关系,随意让GET、COPY、PUT去并发执行,那么就会产生“与时间有关的错误”。 COPY:把输入

5、缓冲区R里的记录拷贝到输出缓冲区T里; GET:从文件F按照顺序读出一个记录,然后送入输入缓冲区R;3. 通过双缓冲区复制文件通过双缓冲区复制文件 编写一个复制n个记录的程序,它把文件F中的每个记录依次读到输入缓冲区R,再从R拷贝到输出缓冲区T,最后写到文件G中。假定R和T正好存放一个记录。写3个子程序作为进程来完成整个工作: 记录1记录2记录nGETCOPYPUT文件F记录1记录2记录n文件G输入缓冲区R输出缓冲区T PUT:从输出缓冲区T里读出一个记录,然后依照顺序写入文件G。 .LOGO6进程间的制约关系第六章正文6.1 进程间的制约关系 若不管GET、COPY、PUT的执行关系,那么可

6、有六种执行可能: 1)COPYPUTGET;2)COPYGETPUT;3)PUTCOPYGET 4)PUTGETCOPY;5)GETCOPYPUT;6)GETPUTCOPY.记录3记录4记录n文件F记录2记录1文件GRT记录1GETPUT记录1记录1文件GRT记录3记录4记录n文件F记录1记录4记录n文件F记录3记录1文件GRT记录1COPY记录1记录4记录n文件F记录3记录3文件GRT记录1123.对第六种情况的分析(2)(3)(1)(4)LOGO7进程间的制约关系第六章正文6.1 进程间的制约关系6.1.2 竞争资源竞争资源互斥互斥1. 共享变量共享变量 在操作系统中,把那些可以被进程共享

7、的资源(如文件、队列、缓冲区、表格、变量等)统称为“共享变量共享变量”或“临界资源临界资源”。 2. 互斥互斥 与一个共享变量(或临界资源)交往的多个进程,为了保证它们各自运行结果的正确性,当其中的一个进程正在对该变量(或临界资源)进行操作时,就不允许其他进程同时对它进行操作。进程间的这种制约关系被称为“互斥互斥”。 对具有互斥关系的进程,要注意以下四点对具有互斥关系的进程,要注意以下四点:(1)只有涉及共享变量的那一部分程序,才真正需要保证互斥地执行。通常,把进程程序中“真正需要保证互斥执行”的那一段程序,称为该进程的“临界区(或临界段)”。 (2)具有互斥关系的进程,并不关心对方的存在性。

8、即使对方不存在,自己也能够正确的运行,不会受到它存在与否的影响。进程的互斥进程的互斥:两个或两个以上的进程不能同时进入共享同一临界资源的临界区。LOGO8进程间的制约关系第六章正文6.1 进程间的制约关系 一个进程在临界区内逗留有限时间后,就应该退出,以便给其他进程创造进入临界区的机会。 如果有若干个进程要求进入自己的临界区,那么它们不应互相排斥,致使谁也进不了临界区。 .3. 临界区临界区 在进程程序中,只有涉及到共享变量的那一部分程序,才真正需要保证互斥地执行。通常,把进程程序中“真正需要保证互斥执行”的那一段程序,称为该进程的“临界区(或临界段)临界区(或临界段)”。 4. 解决临界区互

9、斥必须遵循的准则解决临界区互斥必须遵循的准则.每次只允许一个进程进入临界区。 (3)具有互斥关系进程的临界区,虽然都是针对同一个共享变量的程序段,但在其上的操作可以相同也可以不相同。(4)进程的临界区是相对于某个共享变量而言的,不同共享变量的临界区之间,不存在互斥关系。LOGO9进程间的制约关系第六章正文6.1 进程间的制约关系一个进程需要等待另一个进程完成的操作或发送的信息,称为“同步条件同步条件”。 一个进程运行到某点时,除非合作进程已经完成了某种操作或发来了信息,否则就必须暂时等待那些操作的完成或信息的到来。进程间的这种关系被称为“同步同步”。 o6.1.3 协同工作协同工作同步同步从文

10、件F取出一个记录送至输入缓冲区R向COPY发送“可以拷贝” 的消息等待COPY发来的“拷贝结束”的消息等待GET发来“可以拷贝” 的消息将输入缓冲区R里的记录拷贝到输出缓冲区T里向GET发送“拷贝结束”的消息GETCOPY1.1.2.2.3.3.1. GET和和COPY间的协调一致间的协调一致 GET读记录到R后,给COPY发送消息,告诉它R中已有记录,然后暂停下来,等待COPY发来 “拷贝结束”的消息。只有接到这个消息,GET才能去做下一步工作。COPY一直处于等待。只有接到GET发送来 “可以拷贝”的消息才能工作,将R里的记录拷贝到T里,然后向GET发“拷贝结束”的消息,随之又等待GET发

11、消息。 .2. 同步、同步点、同步条件同步、同步点、同步条件.暂停等待以取得同步的那一点,称为“同步点同步点”.LOGO10进程间的制约关系第六章正文6.1 进程间的制约关系3.3.进程间的关系有如下特点进程间的关系有如下特点(1)具有这种关系的进程,需要在某些点上协调相互的动作,谁先到达谁后到达是有顺序要求的。(2)这些进程都应该了解对方的工作,对方不存在,或任何一方单独运行,就会出现差错。(3)一方或双方的运行会直接地依赖于对方所产生的信息或发出的消息。 一个进程运行到某一点时,除非合作进程已经完成了某种操作或发来了信息,否则就必须暂时等待那些操作的完成或信息的到来。 进程间的这种关系被称

12、为“同步”。暂停等待以取得同步的那一点,称为“同步点”,需要等待一个进程完成的操作或发送的信息,称为“同步条件”。LOGO11进程间的制约关系第六章正文6.2 信号量与P、V操作 6.2.1 信号量与信号量与P、V操作的定义操作的定义1. 信号量的定义信号量的定义 所谓“信号量信号量”,是一个具有非负初值的整型变量,并有一个队列与它关联。因此,定义一个信号量S时,要给出它的初值Vs,给出与它相关的队列指针Vq。在一个信号量S上,只能做规定的两种操作:P操作,记为P(S);和V操作,记为V(S)。 2. 信号量信号量S上的上的P操作定义操作定义 3. 信号量信号量S上的上的V操作定义操作定义 当

13、一个进程调用P(S)时,应该顺序做下面两个不可分割的动作两个不可分割的动作: Vs=Vs-1,即把当前信号量S的取值减1; 若Vs=0,则调用进程继续运行;若Vs0,则调用进程继续运行;若Vs=0,则表示可给该进程分一个资源;若Vs0,表示现在已没有资源可分配,进程只能阻塞,到队列Vq上去等待,这时Vs的绝对值恰是提出资源请求、但没有分配到资源的进程个数。某进程在S上做一次V操作后,若Vs0,表示原资源等待队列上没有进程等待,只是收回了一个资源。 2. 简单的简单的“生产者生产者-消费者消费者”问问题题生产者:生产一个产品P(M)(申请一个缓冲区)按in指点将物品存入缓冲区in=(in+1)

14、mod 10(调整存入指针in)V(N)(向消费者发消息,缓冲区里已有物品)消费者:消费物品P(N)(等待生产者发来消息)按out指点从缓冲区取出物品out=(out+1) mod 10(调整取出指针out)V(N)(向生产者发消息,已有空缓冲区)Vm=10Vn=0(M,N初值初值) 若有一个生产者和一个消费者,他们共享10个缓冲区。生产者不断地生产物品,并依次放入缓冲区中。消费者依次从缓冲区里取出物品进行消费。只有在缓冲区有空位时,生产者生产出来的物品才能往里存放;只有在缓冲区有物品时,消费者才能从里面取出物品消费。试用 P、V 操作来协调生产者和消费者间的工作。 LOGO18进程间的制约关

15、系第六章正文6.2 信号量与P、V操作 设置4个信号量:m表示空闲缓冲区的数目;n表示已放物品缓冲区的数目;S1控制互斥进入in临界区;S2控制互斥进入out临界区。6.2.5 互斥互斥/同步样例分析同步样例分析1. “生产者生产者-消费者消费者”问问题题 若有 i 个生产者和j 个消费者,共享 k个缓冲区。生产者不断生产物品,并依次放入缓冲区中。消费者依次从缓冲区里取出物品进行消费。只有在缓冲区里有空位时,生产者生产出来的物品才能往里面放;只有在缓冲区里有物品时,消费者才能从里面取出物品进行消费。试用P、V操作协调生产者和消费者之间的工作。生产者:生产一个产品P(M)(申请一个缓冲区)按in

16、指点将物品存入缓冲区in=(in+1) mod k(调整存入指针in)V(N)(向消费者发消息,缓冲区里已有物品)消费者:消费物品P(N)(等待生产者发来消息)按out指点从缓冲区取出物品out=(out+1) mod k(调整取出指针out)V(N)(向生产者发消息,已有空缓冲区)Vm=k,Vn=0Vs1=1,Vs2=1(信号量初值信号量初值)P(S1)(要求进入in 临界区)V(S1)(退出in 临界区)P(S2)(要求进入out 临界区)V(S2)(退出out 临界区).LOGO19进程间的制约关系第六章正文6.2 信号量与P、V操作 设置两个信号量:MUTEX控制读者互斥进入reade

17、r临界区,WRT控制读者及写者互斥进入读/写临界区,初值都是1。reader=reader-1(读者计数器减1)2. “读者读者-写者写者”问题问题读者:reader=1?(是第1个读者?)P(MUTEX)(进入reader临界区)读者读取所需信息reader=reader+1(读者计数器加1)V(MUTEX)(退出reader临界区)P(WRT)(进入读/写临界区)P(MUTEX)(进入reader临界区)reader=0?(是最后一个读者?)V(MUTEX)(退出reader临界区)V(WRT)(退出读/写临界区)NNYYP(WRT)(进入读/写临界区)写者对数据进行修改V(WRT)(退出

18、读/写临界区)写者: 若一批数据被多个并发进程共享,其中一些进程只要求读数据,称为“读者”;另一些会对数据进行修改,称为 “写者”。多个读者同时工作时,访问不会有问题。但是如果读者和写者或写者和写者同时工作时,就有可能导致错误访问结果。假定在有读者访问时,到来写者要求访问,那么写者只能等待,但到来的后续读者仍可以进行访问,这表示读者比写者有更高的访问权。试用P、V操作来协调读者和写者之间的工作。 . 设一个初值为0的变量reader,它不是信号量,而是用来随时记录当前有多少个读者在同时使用数据。正因为允许多个读者同时使用数据,reader成为各读者共享的变量,所以要设置信号量MUTEX来控制读

19、者互斥地使用它。.LOGO20进程间的制约关系第六章正文6.2 信号量与P、V操作 5个哲学家须互斥使用5只筷子,若其中一个拿到他右边的那只筷子,那么坐在他右边的哲学家的左手就暂时不能拿那只筷子。为此,可以将筷子编号为04(如图所示),对应设置5个初值为1的互斥信号量:chopsticki (0i4)第i个哲学家的“思考-就餐-思考”过程可描述为: 3. “哲学家进餐哲学家进餐”问题问题. 5个哲学家围坐在圆桌旁,中央放一钵米饭。每人面前有一只盘子,盘子两边各放一只筷子,如图所示。 哲学家的生活是:思考,就餐,再思考,循环往复。要求哲学家只有在拿到他左右的两只筷子后,才能就餐;哲学家只能一只只

20、拿筷子,不能同时抓他旁边的两只筷子,也不能从其他人手中抢筷子;哲学家就餐后必须放下手中的筷子思考,不能强占筷子不放。试用信号量上的P、V操作,模拟“思考-就餐-思考”过程,保证他们正常生活。0432143210哲学家编号筷子编号philosopher(i) while(TRUE) think(); P(chopsticki); P(chopstick(i+1) mod 5); eat(); V(chopsticki); V(chopstick(i+1) mod 5); .方案1 (1)LOGO21进程间的制约关系第六章正文6.2 信号量与P、V操作 为防止出现死锁危险,可考虑只允许4位哲学家进

21、入餐厅,第5位只有在已进入就餐的一位哲学家退席后,才能去就餐。这时最多只有4位哲学家就座,因此至少可保证有一位哲学家能拿到他左右的两只筷子,从而完成就餐。. 该过程可保证哲学家只有拿到了左右两只筷子才能进餐,那是通过算法中的操作P(chopsticki)和P(chopstick(i+1) mod 5)实现的。该过程可保证两个相邻哲学家不会同时进餐,因如果第i位哲学家已在信号量chopsticki上做了P操作,那么坐在他旁边的那位哲学家再对该信号量做P操作时,就只能在该信号量上等待了。该过程可保证一位哲学家就餐完毕后,立即顺序地归还他所使用的左右两只筷子,那是通过算法中的操作V(chopstic

22、ki)和V(chopstick(i+1) mod 5)实现的。. 但该算法忽略一个问题,它无法防止5位哲学家同时拿起各自左(右)边的筷子、又试图去拿右(左)边的筷子。这样,每个哲学家都拿到了一只筷子,而无休止地等待旁边的哲学家放下另一只筷子,结果他们都不能进餐,一个个先后被饿死。 .方案2 (2). 为此,5只筷子仍需互斥使用,所以仍将筷子编号为04,对应设置5个初值为1的互斥信息量:chopsticki (0i4). 由于整个餐厅只提供4个座位,因此要设置一个初值为4的同步信息量seat来管理4个座位(即是拥有的资源数)。某个哲学家进入餐厅时,必须先通过做P(seat)申请到一个座位,然后才

23、能够去拿筷子;退出餐厅时,必须先归还筷子,然后做V(seat)退席。 LOGO22进程间的制约关系第六章正文6.2 信号量与P、V操作 为方便哲学家判定其左右相邻者当前所处状态,方案中设置两个变量: LEFT=(i+4) mod 5,RIGHT=(i+1) mod 5(0i4)由哲学家的编号,计算LEFT和RIGHT的值,就得到其左右相邻哲学家的编号。 设置有5个元素的信号量数组si (0i4),初值都为0,每个元素对应一个哲学家。在拿不到筷子就餐时,用它来与占用筷子的哲学家取得同步,以期归还筷子时,能唤醒受阻塞的哲学家。. 第i(0i4)个哲学家的“思考-就餐-思考”过程可以描述为: phi

24、losopher(i) while(TRUE) think(); P(seat); P(chopsticki); P(chopstick(i+1) mod 5); eat(); V(chopsticki); V(chopstick(i+1) mod 5); V(seat); 方案3 (3).为哲学家定义三种状态 THINKING 思考状态:哲学家就餐后,就由就餐状态EATING转变成思考状态。 EATING 就餐状态:处于该状态的哲学家已拿到自己左右的两只筷子,由饥饿状态转变成为就餐状态。 HUNGRY 饥饿状态:当某哲学家在思考中想吃饭时,就由思考状态转变成为饥饿状态。. 设置数组state

25、i (0i4),每个元素对应一个哲学家,随时记录他们生活过程中的不同状态。 . 为保证各哲学家在测试他左右相邻者的状态和设置新状态时,能互斥地进行,算法里用到互斥信号量mutex,初值为1。 LOGO23进程间的制约关系第六章正文6.2 信号量与P、V操作.哲学家程序 philosopher(i) while(TRUE) think(); take_chopstick(i); eat(); put_chopstick(i); .获取筷子子程序take_chopstick(i) P(mutex); statei=HUNGRY; test(i); V(mutex); *P(si);.归还筷子子程序

26、 put_chopstick(i) P(mutex); statei=THINKING; test(LEFT); test(RIGHT); V(mutex);.测试状态子程序 test(i) if(statei=HUNGRY & stateLEFT!=EATING & stateRIGHT!=EATING) statei=EATING; *V(si); . 对于test(i),通过if的测试会有两种结果。一是i有要就餐的愿望,左右邻居都不处于EATING状态。这样,i的状态就为EATING,然后在si上做V操作。由于这个V操作先于take_chopstick(i)里的P操作,因

27、此它使信号量si的值由0变为1。这样,在take_chopstick(i)里退出mutex临界区后,P(si)使si的值由1变为0,不会阻止哲学家i的前进,从而去调用eat()。 . 若if语句条件不成立,这 可能是哲学家i没有想就餐,或哲学家i的左右邻居之一正在就餐。这时test(i)不会对信号量si做V操作。这样,在通过V(mutex)退出临界区后,就做take_chopstick(i)中的P(si)。这时因为事先没有对信号量si做V操作,这个P操作使si的取值由0变为-1,导致哲学家i在这个信号量上阻塞,等待他旁边的哲学家就餐完毕后唤醒他。LOGO24进程间的制约关系第六章正文6.2 信

28、号量与P、V操作 若没有顾客,理发师就坐在理发椅上打盹;当顾客来时,就唤醒打盹的理发师进行理发;若理发师全在工作,又来新顾客,则就坐在空座椅上等待理发,没有空座椅就离去。试用信号量上的P、V操作描述理发师和顾客的行为,保证该过程的正确实现。4. “理发店理发店”问题问题. 理发店中有k张理发椅和n张等待理发的顾客坐的座椅,如图所示。座椅座椅座椅座椅座椅理发椅n张入口理发椅理发椅k张出口.设立三个信号量custs:记录等待理发的顾客数(不包括正在理发的顾客),初值为0;barbs:正在等待为顾客理发的理发师数,初值为k;mutex:保证互斥使用变量waiting的互斥信号量,初值为1。 . 为随

29、时记录等待理发的顾客数,设置变量waiting,它的初值为0。注意,它是一个变量,不是信号量,不过它的值总是和信号量customers相同。 .n :来到理发店等待理发的顾客数的上限值。 LOGO25进程间的制约关系第六章正文6.2 信号量与P、V操作.理发师程序 barber() while(TRUE) *P(custs); P(mutex); waiting=waiting-1; V(mutex); cut_hair(); *V(barbs); .顾客程序 customer() P(mutex); if(waitingj,A就不允许再申请资源j;如果ij,B就不允许再申请资源 i 。这样就

30、形成不了资源申请的循环等待环路 。AiABijBj1.输入机2.打印机3.绘图仪4.磁带机5.CD-ROMLOGO31进程间的制约关系第六章正文6.3 死锁、高级进行通信.6.3.3 死锁的避免死锁的避免1. 死锁避免的含义死锁避免的含义 指允许系统存在产生死锁的条件,但在接到一个进程的资源请求时,总是根据当时资源的使用情况,按照一定的算法去模拟分配,探测分配的结果。只有在探测结果表明绝对不会出现死锁时,才真正接受进程的这次资源请求。 2. 安全状态和不安全状态安全状态和不安全状态. 若能在有限时间内,保证所有进程得到自己需要的全部资源,那么称系统此时处于“安全状态安全状态”;否则称系统处于“

31、不安全状态不安全状态”。很明显,在系统处于安全状态时,绝对不会发生死锁;在系统处于不安全状态时,系统有可能发生死锁。 3. 银行家算法对进程的要求银行家算法对进程的要求.必须预先说明自己对资源的最大需求量; 只能一次一个地申请所需要的资源; . 若已获得了资源的最大需求量,那么应在有限时间内使用完毕,并归还系统。 4. 实施银行家算法时系统的承诺实施银行家算法时系统的承诺. 若进程对资源的最大需求量没超过该资源的总量,应保证接纳这个进程,不得拒绝它; 在接到一个进程对资源的请求时,有权根据当前资源的使用情况暂时加以拒绝(即阻塞该进程)。但应保证在有限的时间内让它得到所需要的资源。 LOGO32

32、进程间的制约关系第六章正文6.3 死锁、高级进行通信 如果所有进程的“能执行完”均为1,表示接受这次请求是安全的;否则暂时不能接受进程的这次资源请求。 如果找到了,就假设它获得了最大资源数,并运行结束。于是把它的“能执行完”标志置为1。这样就能假定收回它使用的所有资源,使系统剩余资源数增加。 在这一假设下,检查每个进程对资源的还需要数。看能否找到一个进程,其还需数目小于系统剩余资源数。如果找不到,那么系统就有可能死锁,因为任何进程都无法运行结束。 在安全状态下,系统接到进程的资源请求后,先假定接受这一请求,把需要的资源分配给这个进程。 5. 单种资源银行家算法的基本思想单种资源银行家算法的基本

33、思想单种资源银行家算法:将所有进程的“能执行完”标志清0假定接受该请求,把资源分配给进程将系统当前所有剩余资源与”能执行完”标志为0的进程还需资源数比较,找出一个能满足其所有需求的进程找到了吗?将该进程的”能执行完”标志置为1,系统收回它所要求的全部资源数YN检查所有进程的“能执行完”标志还有” 能执行完 ”标志为0的进程吗?这一请求不安全,暂时不予接受YN这一请求是安全的,可以分配. 在“能执行完”标志为0的进程中重复以上两步,直到找不到资源还需数小于系统剩余资源数的进程时为止。 LOGO33进程间的制约关系第六章正文6.3 死锁、高级进行通信 如果存在这种进程,那么假定它已获得需要的所有资

34、源,并完成工作,把它的“能执行完”标志设置成1。收回它占用的资源,更新向量A。 检查还需资源表中是否有一个进程的行向量小于或等于向量A。如果没有,那么系统就可能会死锁,因为现在任何进程都无法完成了。 6. 多种资源银行家算法的执行步骤多种资源银行家算法的执行步骤 系统设两张表:“分配资源表分配资源表”,记录已分配给各进程的资源数;“还需还需资源表资源表” ,记录各进程还需要的资源数。设3个向量:E记录各种资源的总数,P记录各种资源已分配数,A记录各种资源的剩余数。 进程 磁带机 绘图仪 打印机 CD-ROMA3011B0100C1110D1101E0000进程 磁带机 绘图仪 打印机 CD-R

35、OMA1100B0112C3100D0010E2110已分配资源表还需资源表E 6 3 4 2 (资源总数)P 5 3 2 2 (已分配数)A 1 0 2 0 (剩余数).假定接受一个进程提出的资源请求,修改向量P和A。 .重复以上两步,直至再也找不到行向量小于或等于向量A的进程。 检查所有进程的 “能执行完” 标志。若这个标志都是1,则表示都能顺利地完成。因此,接受资源分配后导致的新状态是安全的;如果仍存在“能执行完”标志为0的进程,则说明这一请求所导致的状态是不安全的,应暂时拒绝该请求。 LOGO34进程间的制约关系第六章正文6.3 死锁、高级进行通信. 系统中有AG共7个进程,6个同类资

36、源rw,当前的资源所属关系如下: 6.3.4 死锁的检测并恢复死锁的检测并恢复1. 利用资源分配图检测死锁利用资源分配图检测死锁rAsCDFwuGtBEv.A得到资源r,需要资源s;.B不占有资源,需要资源t;.C不占有资源,需要资源s;D得到资源u和s,需要资源t;.E得到资源t,需要资源v;F得到资源w,需要资源s;G得到资源v,需要资源u。2. 利用表格检测死锁利用表格检测死锁环路资源 占用的进程进程 等待的资源rAsCtBuBvAAt进程 等待的资源AtBCsv 通过建立“资源分配表”和“进程等待表”,随时检测资源的分配是否构成环路。假定现有3个进程AC,有5个同类型资源rv。 资源分

37、配表进程等待表进程等待表3. 死锁的恢复死锁的恢复 一是删除环中的若干进程,释放占用的资源,使其他进程能继续运行;二是临时把某个资源从占用者手中剥夺,给另一个进程使用;三是周期地记录各进执行情况。一旦检测到死锁,就按记录的文件进行回退,让损失减到最小。 LOGO35进程间的制约关系第六章正文6.3 死锁、高级进行通信 6.3.5 高级进程通信高级进程通信1. 进程间的低级与高级通信进程间的低级与高级通信.进程间的低级通信 信号量上的P、V操作是进程间的一种通信方式,它告诉对方缓冲区里是否可存数据,是否可取数据,是否可读文件,是否可写文件,等等。但通信双方不交换信息,只是事先的一种约定。因此,用

38、P、V操作实现的通信,是进程间的“低级通信低级通信”。 进程间的高级通信 为使进程间能交换数据,系统提供通信命令给用户在程序中使用。用户只要准备好参数,调用这些命令就能在进程间传递数据,这就是进程间的“高级通信高级通信”。 2. 直接通信直接通信.进程间直接通信的基本思想 发送者在自己的消息发送区里形成消息,然后申请一个消息缓冲区,把数据从消息发送区移入消息缓冲区中。通过发送命令,把这个消息缓冲区直接发送到接收者的消息队列里。接收者从自己的消息队列上摘下消息缓冲区,把里面的数据读到自己的消息接收区里,然后释放缓冲区。 LOGO36进程间的制约关系第六章正文6.3 死锁、高级进行通信 提供发送消息和接收消息的系统调用命令,比如发送命令为Send,接收命令为Receive。 系统中开辟消息缓冲区,构成是: name发送消息的进程名或标识; size发送消息的长度; text发送消息的正文内容; nPtr下一个消息缓冲区的指针。.进程间直接通信示意图Send (消息发送区地址)接收进程名:B消息长度:size消息正文:text进程A的消息发送区Receive (消息接收区地址)发送进程名:A消息长度:size消息正文:text进程B的消息接收区进程A的程序进程B的程序进程B的PCBMUTEX (1)SM (0)hPtr发送进程名:A消息长度:size消息正文:t

温馨提示

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

评论

0/150

提交评论