欢迎来到天天文库
浏览记录
ID:50045014
大小:2.05 MB
页数:113页
时间:2020-03-08
《操作系统 第二版 教学课件 作者 宗大华 肖霞 宗涛 14681-第6章.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第6章进程间的制约关系6.1进程间的制约关系6.2信号量与P、V操作6.3死锁、高级进程通信本章将引入操作系统中的重要概念:信号量以及在信号量上的P、V操作。利用信号量以及在信号量上的P、V操作,可以很好地解决进程间的互斥与同步关系,保证进程程序的正确执行。本章着重讲述四个方面的内容:(1)进程间的两种制约关系——互斥与同步。(2)正确处理互斥与同步的方法——信号量以及在信号量上的P、V操作。(3)死锁以及解决死锁的途径。(4)进程间的高级通信。6.1进程间的制约关系6.1.1与时间有关的错误在相同的前提条件下,两次执行的结果有可能不相同。在操作系统里,把这种由于时间因素的影响而产生的
2、错误,称为“与时间有关的错误”。图6-1对输出井文件目录的管理图6-2通过双缓冲区复制文件图6-3GET→PUT→COPY导致错误6.1.2竞争资源—互斥在操作系统中,凡是牵扯到数据、队列、缓冲区、表格和变量等任何形式的共享资源时,都很容易出现类似的这种“与时间有关的错误”。为了避免错误的发生,关键是要找到一种途径,来阻止多于一个进程同时使用它们。也就是说,保证对它们的使用是互斥进行的。与一个共享变量(或临界资源)交往的多个进程,为了保证它们各自运行结果的正确性,当其中的一个进程正在对该变量(或临界资源)进行操作时,就不允许其他进程同时对它进行操作。进程间的这种制约关系被称为“互斥”。
3、对具有互斥关系的进程,要注意以下四点。(1)只有涉及共享变量的那一部分程序,才真正需要保证互斥地执行。通常,把进程程序中“真正需要保证互斥执行”的那一段程序,称为该进程的“临界区(或临界段)”。(2)具有互斥关系的进程,并不关心对方的存在性。即使对方不存在,自己也能够正确的运行,不会受到它存在与否的影响。(3)具有互斥关系进程的临界区,虽然都是针对同一个共享变量的程序段,但在其上的操作可以相同也可以不相同。(4)进程的临界区是相对于某个共享变量而言的,不同共享变量的临界区之间,不存在互斥关系。如何来保证进程在临界区执行的互斥性,要解决这个问题,必须遵循以下准则。(1)如果有若干个进程要
4、求进入自己的临界区,那么它们不应互相排斥,致使谁也进不了临界区。(2)每次只允许一个进程进入临界区。(3)一个进程在临界区内逗留有限时间后,就应该退出,以便给其他进程创造进入临界区的机会。6.1.3协同工作—同步这里所描述的进程间的关系有如下特点。(1)具有这种关系的进程,需要在某些点上协调相互的动作,谁先到达谁后到达是有顺序要求的。图6-4GET和COPY协调一致地工作(2)这些进程都应该了解对方的工作,对方不存在,或任何一方单独运行,就会出现差错。(3)一方或双方的运行会直接地依赖于对方所产生的信息或发出的消息。一个进程运行到某一点时,除非合作进程已经完成了某种操作或发来了信息,否
5、则就必须暂时等待那些操作的完成或信息的到来。进程间的这种关系被称为“同步”。暂停等待以取得同步的那一点,称为“同步点”,需要等待一个进程完成的操作或发送的信息,称为“同步条件”。6.2信号量与P、V操作通过信号量取不同的初值以及在其上做P、V操作,就能够实现进程间的互斥、同步,甚至用来管理资源的分配。6.2.1信号量与P、V操作的定义所谓“信号量”,是一个具有非负初值的整型变量,并且有一个队列与它关联。在一个信号量S上,只能做规定的两种操作:P操作,记为P(S);和V操作,记为V(S)。P、V操作的具体定义如下。(1)信号量S上的P操作定义。当一个进程调用P(S)时,应该顺序做下面不可
6、分割的两个动作。Vs=Vs−1,即把当前信号量S的取值减1。若Vs>=0,则调用进程继续运行;若Vs<0,则调用进程由运行状态变为阻塞状态,到与该信号量有关的队列Vq上排队等待,直到其他进程在S上执行V操作将其释放为止。(2)信号量S上的V操作定义。当一个进程调用V(S)时,应该顺序做下面不可分割的两个动作。Vs=Vs+1,即把当前信号量S的取值加1。若Vs>0,则调用进程继续运行;若Vs<=0,则先从与该信号量有关的队列Vq上摘下一个等待进程,让它从阻塞状态变为就绪状态,到就绪队列里排队,然后调用进程继续运行。6.2.2用P、V操作实现互斥图6-5P、V操作用于进程互斥设置一
7、个初值为1的信号量S,在进程A和B的进入点处安排关于信号量S的P操作,在进程A和B的退出点处安排关于信号量S的V操作。这样,就能够确保CSa和CSb互斥地执行。例6-1在第2章的图2-2中,给出了一个“观察者-报告者”的例子。试用信号量上的P、V操作来保证它们正确地配合工作。图6-6“观察者-报告者”问题的P、V操作解法6.2.3用P、V操作实现同步图6-7P、V操作用于进程同步为了保证做到这一点,设置一个初值为0的信号量S,在进程A的X点处(
此文档下载收益归作者所有