操作系统 第7章 进程同步与进程通信.ppt
第第7章章 进程同步与进程通信进程同步与进程通信v本章考核知识点:本章考核知识点:1、进程的顺序性与并发性、进程的顺序性与并发性 2、与、与时间有关的错误时间有关的错误3、相关临界区、相关临界区 4、进程的互斥、进程的互斥 5、进程的同步进程的同步 6、进程通信、进程通信 7、线程的概念、线程的概念 v本章自学要求:理解本章自学要求:理解“进程进程”是操作系统中的基本是操作系统中的基本执行单位,在多道程序设计的系统中往往同时有许执行单位,在多道程序设计的系统中往往同时有许多进程存在,它们要轮流占用处理器。这些交叉执多进程存在,它们要轮流占用处理器。这些交叉执行的并发进程相互之间可能是无关,也可能是相关行的并发进程相互之间可能是无关,也可能是相关的。当并发进程竞争共享资源时会出现与时间有关的。当并发进程竞争共享资源时会出现与时间有关的错误,因此,应采用进程同步与互斥手段使其合的错误,因此,应采用进程同步与互斥手段使其合理使用共享资源,以保证系统安全。当进程间必须理使用共享资源,以保证系统安全。当进程间必须通过信息交换进行协作时,可用进程通信的方式达通过信息交换进行协作时,可用进程通信的方式达到目的。到目的。v重点是:分析与时间有关的错误;用重点是:分析与时间有关的错误;用PV操作实现进操作实现进程的同步与互斥;用信箱实现进程通信。程的同步与互斥;用信箱实现进程通信。v一、进程的顺序性与并发性(领会)一、进程的顺序性与并发性(领会)有人说,在程序中不是有跳转语句和重复语句,怎么就是顺序执行?注意,这里是指进程在处理器中的执行,因为处理器每次只能执行一个操作,因此每条指令必须按顺序进入CPU执行,假使有一条指令是跳转的,那么执行本指令后,会取出跳转目的地址的指令进入CPU运行,这个顺序是程序规定的。所以对CPU而言,进程总是按顺序执行。进程是一个程序在一个数据集合上的一次执行,同一个程序和同一个数据集的运行结果必然是相同的。这就是可再现性。同时执行并不是真的同时,因为任一时刻CPU中只能有一个进程运行。1、进程的顺序性:任何进程在顺序的处理器上的执行是严格按照顺序进行的,这就是进程的顺序性。当一个进程独占处理器顺序执行时,具有两个特性:一、封闭性二、可再现性。2、进程的同时执行:在多道程序设计系统中,一个进程的工作没有全部完成之前,另一个进程就可以开始工作,它们的执行在时间上重迭的,我们把它们称为是“可同时执行的”。3、进程的并发性:若系统中存在一组可同时执行的进程,则说该组进程具有并发性,并把可同时执行的进程称为“并发进程”。4、并发进程间的关系:并发进程相互之间可能是无关的,也可能是交往的。如果一个进程的执行不影响其他进程的执行,且与其他进程的进展情况无关,即它们是各自独立的,则这些并发进程相互之间是无关的。如果一个进程的执行依赖其他进程的执行,则这些并发进程之间是有交往的。v二、与时间有关的错误(简单应用)二、与时间有关的错误(简单应用)1、并发进程的执行速度取决于自身和进程调度策略。一个进程运行时会被中断,且断点是不固定的,一个进程被中断后,哪个进程可以运行,被中断的进程什么时候占用处理器,是与进程调度策略有关的。因此进程的执行速度不能由自己决定。2、并发进程交替使用共享资源时会出现与时间有关的错误。由于共享资源的原因,加上进程并发执行的随机性,一个进程对另一个进程的影响是不可预测的。造成不正确的因素与进程占用处理器的时间、执行的速度以及外界的影响有关。因此被称为与时间有关的错误。3、分析并发进程中与时间有关的错误,请理解教材上的例子。v三三.相关临界区(相关临界区(领会)1、临界区的定义:并发进程中与共享变量有关的程序段称为“临界区”2、什么是相关临界区:相关临界区是指并发进程中涉及到相同变量的那些程序段。3、对相关临界区的管理要求。1)一次最多让一个进程在临界区执行,当有进程在临界区时其他想进入临界区执行的进程必须等待。2)任何一个进入临界区执行的进程必须在有限的时间内退出临界区,即任何一个进程都不应该无限地逗留在自己的临界区。3)不能强迫一个进程无限地等待进入它的临界区,即有进程退出时应让一个等待进入临界区的进程进入它的临界区。v四、进程的互斥(综合应用)四、进程的互斥(综合应用)1、进程互斥的含义:进程的互斥是指当有若干进程都要使用某一共享资源时,任何时刻最多只允许一个进程去使用,其他要使用该资源的进程必须等待,直到占用资源者释放了该资源。PV操作是两个过程,由他们两个来控制一个信号S,假设S是红灯的个数。每个进程进入临界区前都要先执行P操作。退出临界区时执行V操作。用下面的比喻很容易理解:临界区门前有棵树(S)用来挂红灯进程想进CPU的门先得上树取盏灯(调用一次P操作)取下一个去敲门(S=S-1)如果树上没灯取(S0)树说欠你一盏灯(S为负时)没辙只好外边排队等(Wait(S)得灯进程续运行运行完了要出门(调用一次V操作)马上还回一盏灯(S=S+1)若有进程在催债(S0)放个进去事完成(Release(S)2、实现进程互斥的工具PV操作。PV操作是由两个操作,即P操作和V操作组成。P操作和V操作是两个在信号量上进行操作的过程。假定用S表示信号量则把这两个过程记作P(S)和V(S),它们的定义如下:ProcedueP(VarS:Semaphore);beginS:=S-1;ifS0thenW(S)end;PProcedueV(VarS:Semaphore);beginS:=S+1;ifS=0thenR(S)end;V为了确保PV操作自身的正确执行,因此P(S)和V(S)操作中不可中断,这种不可被中断的过程称为“原语”。3、用PV操作管理相关临界区的一般形式一个信号量与一组涉及共享变量的相关临界区联系起来,信号量的初值定为“1”任何一个进程要进入临界区前先调用P操作,执行临界区的操作后,退出临界区时调用V操作。由于信号量的初值为“1”,P操作起到了限制一次只有一个进程进入临界区的作用,其余进程欲进入临界区必须符合对临界区管理的第一个要求,即一次最多让一个进程在临界区执行。进程退出后执行V操作,若有进程在等待则释放一个进程,这样就达到了对临界区管理的第二个和第三个要求(即不能无限逗留也不能无限等待)。4、分析进程互斥问题并用PV操作实现进程互斥。仔细领会教材中的例子,关于PV操作,在考试中出现的可能性极大,但是难度基本不超过教材上例题.进程的互斥是指当有若干进程都要使用某一共享资源时,任何时刻最多只允许一个进程去使用,其他要使用该资源的进程必须等待,直到占用资源者释放了该资源。在写程序时要注意以下几点:PV操作中间只执行相关临界区内容,不能把临界区外的程序段放到PV操作中间,否则会降低系统并发执行能力或引起系统瘫痪。另外当有条件语句时要注意在临界区内每个条件分支出口均要调用V操作,否则会违反对临界区管理的第二、三两个要求。v五、进程的同步(综合应用)五、进程的同步(综合应用)1、进程同步的含义:进程的同步是指并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消息,当一个进程没有得到另一个进程的消息时应等待,直到消息到达才被唤醒。“生产者”与“消费者”是同步问题的典型例子。这里有两个消息量:一是“缓冲器里有物品”,二是“可把物品存入缓冲器”,这两个消息量对应需要两个信号量SPut和SGet。SP的初始值为1,如果初始时可用的缓冲器为n个,则SPn;SG的初始值为0。生产者进程调用P(SP)和V(SG),消费者进程调用P(SG)和V(SP),根据SG和SP的值来决定是否可以存或取物。2、正确使用PV操作实现进程同步。(1)用一个信号量与一个消息联系起来,当信号量的值为0时表示期望的消息尚未产生,当信号量值为非0时表示期望的消息已经存在。(2)在用PV操作实现同步时,一个信号量与一个消息量联系在一起,当有多个消息时必须定义多个信号量;测试不同的消息是否到达或发送不同消息时,应对不同的信号调用P操作或V操作。3、使用PV操作实现进程同步与互斥的混合问题。进程的同步与进程的互斥都涉及到并发进程访问共享资源的问题。可以看到进程的互斥实际上是进程同步的一种特殊情况。若干进程互斥使用资源时,一个等待使用资源的的进程在得到占用资源的进程发出“归还资源”的消息(调用了V操作)后,它就可去使用资源。因此,互斥使用资源的进程之间实际上也存在一个进程依赖另一个进程发出信息的制约关系。所以,也把进程的互斥与进程的同步称为进程的同步。4、PV操作实现进程同步与互斥时怎样定义信号量,信号量的物理含义及其作用利用PV操作实现进程互斥时,用一个信号量与一组相关临界区对应,这些进程在同一个信号量上调用P操作和V操作来实现互斥。利用PV操作实现进程同步时,每一个消息与一个信号量对应,进程在不同信号量上调用P操作以测试自己需要的消息是否到达,在不同信号量上调用V操作把不同的消息发送出去。信号量的物理含义:S0时表示可使用的资源数或表示可使用资源的进程数。S0时表示无资源可供使用或不允许进程进入临界区。S0时表示等待使用资源的进程个数或表示等待进入临界区的进程个数。根据PV操作的性质,任何进程在使用共享资源前应调用P操作。当有可以使用的资源或允许使用资源时(S0),调用P(S)后不会成为等待,进程可以使用资源。当无资源可使用或不允许使用资源时(S0)调用P(S)后必然等待。任何进程可调用V操作来归还共享资源的使用权,当S0时调用V(S)后使可用资源数加1或使可用资源的进程数加1(也就是树上多挂上一个红灯笼)。当S0时调用V(S)后将释放一个等待使用资源或者释放一个等待进入临界区者。v六、进程通信(领会)六、进程通信(领会)1、进程通信的含义:通过专门的通信机制实现进程间交换大量信息的通信方式称为“进程通信”2、实现进程通信的基本原语:有两条:“send(发送)”和“receive(接收)”原语。3、利用信箱通信时“发送”和“接收”原语的功能。send(N,M)功能:把信件M送到指定的信箱N中。receive(N,X)功能:从指定信箱N中取出一封信,存放到指定的地址X中。4、信箱的基本结构:一个信箱由“信箱说明”和“信箱体”两部分组成。v七、线程的概念(识记)七、线程的概念(识记)线程是进程中可独立执行的子任务,一个进程中可以有一个或多个线程,每个线程都有一个唯一的标识符。支持线程管理的操作系统有Mach,OS/2,WindowsNT,UNIX等。复习题v1、为了使A、B两个进程互斥地访问单个缓冲区,应为之设置一个互斥信号量S,初值为1,相应在的P(S),V(S)操作必须分别安排在()的两端。A、该单缓冲区B、两进程的临界区C、两进程的程序段D、两进程的控制块v2、一个进程可以包含多个线程,各线程()A、必须串行工作B、共享分配给进程的主存地址空间C、共享进程的PCBD、是独立的资源分配单位v3、PV操作所处理的变量是()A、锁变量B、整型信号量C、记录型信号量D、控制变量v4、为了使两个进程能同步运行,最少需要()个信号量。A、1B、2C、3D、4v5、共享变量是指()访问的变量。A、只能被系统进程B、只能被多个进程互斥访问的变量C、只能被用户进程D、可被多个进程v6、临界区是指并发进程中访问共享变量的()。A、管理信息B、数据C、信息存储D、程序v7、多项选择:线程是操作系统的概念,已具有线程管理的操作系统有()。A、WINDOWS32B、OS/2C、WindowsNTD、DOS6.22E、Machv8、多项选择:一个进程向其他进程发送消息时,应组织好一封信件,内容包括()。A、接收者名B、发送者名C、具体信息D、等不等回信标志E、回信存放地址v9、在具有n个进程的系统中,允许m个进程(nm1)同时进入它们的临界区,其信号量S的值的变化范围是_,处于等待状态的进程数最多_个。v10、线程与进程的根本区别是把进程作为_单位,而线程是_单位。1、B2、B3、B4、B5、B6、D7、BCE8、BCDE9、n-mSmn-m10、资源分配调度和执行