《《互斥与同步》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《互斥与同步》PPT课件.ppt(60页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第五章第五章 并行性:互斥与同步并行性:互斥与同步n5.1 概论概论n5.2 临界段临界段n5.3 互斥互斥n5.4 信号量信号量n5.5 进程间的通信进程间的通信n5.6 案例:案例:UNIX的进程同步与通信的进程同步与通信 5.1 概述概述系统中诸进程之间的关系系统中诸进程之间的关系进程间互相协作的关系进程间互相协作的关系进程间的共享关系(软资源:文件和数据)进程间的共享关系(软资源:文件和数据)进程间的互斥关系(临界资源)进程间的互斥关系(临界资源)5.2 临界区临界区例:假设两个进程例:假设两个进程P1,P2分别在分别在C1和和C2两个处理机上运行,异步两个处理机上运行,异步地对公共变
2、量地对公共变量X进行加进行加1操作。假设两个进程的推进顺序如下:操作。假设两个进程的推进顺序如下:n(1)P1:,R1=X;R1=R1+1;X=R1;P2:.R2=X;R2=R2+1;X=R2;n(2)P1:,R1=X;R1=R1+1;X=R1;P2:,R2=X;R2=R2+1;X=R2;问:设问:设X的初值为的初值为V,求以上两种情况下,求以上两种情况下,X的最后值分别是多少?的最后值分别是多少?(1):):V+1;(;(2):):V+2;对对公共变量的读写操作必须公共变量的读写操作必须互斥互斥地进行。地进行。5.2 临界区临界区1.基本概念基本概念 进程同步的主要任务就是保证多个并发执行的
3、进进程同步的主要任务就是保证多个并发执行的进程之间能互相合作程之间能互相合作,有效地共享系统资源,使程序有效地共享系统资源,使程序的执行具有的执行具有可再现性可再现性。(1)临界资源临界资源 临界资源是指在一段时间内只允许一个进程访问临界资源是指在一段时间内只允许一个进程访问的资源。它可是某个变量或某种硬件资源(如:打的资源。它可是某个变量或某种硬件资源(如:打印机,公共变量等。)印机,公共变量等。)(2)临界区()临界区(critical section,也称临界段也称临界段)临界区:是指进程地址空间中访问临界资源的临界区:是指进程地址空间中访问临界资源的那段代码那段代码。进入区进入区:是指
4、临界区之前,检查临界资源闲忙是指临界区之前,检查临界资源闲忙标志的那段代码。标志的那段代码。退出区:在临界区后面,将临界资源释放的那退出区:在临界区后面,将临界资源释放的那段代码。段代码。5.2 临界区临界区如如:while true 进入区进入区 临界区临界区 (如例中(如例中P1,P2对对X的访问的:的访问的:R=X;R=R+1;X=R;);)退出区退出区 5.2 临界区临界区2.进程同步遵循的原则进程同步遵循的原则空闲让进:任何时候临界区内只能有一个进程。空闲让进:任何时候临界区内只能有一个进程。忙则等待。忙则等待。有限等待:等待有限时间,避免有限等待:等待有限时间,避免“死等死等”发生
5、。发生。让权等待:当正在执行的进程自己不能进入临让权等待:当正在执行的进程自己不能进入临界区时,应立即释放界区时,应立即释放CPU。5.2 临界区临界区系统中的进程之间的关系可概括为:系统中的进程之间的关系可概括为:同步同步与与互斥互斥。同步同步是指是指异步事件能按照要求的时序进行,以使各合作进程协调一异步事件能按照要求的时序进行,以使各合作进程协调一致地工作。互斥实际上也是一种同步。致地工作。互斥实际上也是一种同步。1.互斥的软件解决方法互斥的软件解决方法(1)用标志位用标志位flagi来标识进程来标识进程Pi是否在临界区中执行。是否在临界区中执行。Pi:while(true)while(f
6、lagj);/*执行空语句等待执行空语句等待*/flagi=true;执行执行csi /*进程进程Pi的临界区的临界区*/flagi=false;/*释放临界资源释放临界资源*/问:该方法是否遵循问:该方法是否遵循“忙则等待忙则等待”的原则?的原则?(2)用一个用一个turn来指示哪个进程应该进入临界来指示哪个进程应该进入临界区,区,turn=i表示表示pi可以进入临界区。可以进入临界区。Pi:While(true)while(turn!=i);/*执行空语句等待执行空语句等待*/执行执行csi;/*临界区临界区*/turn=j;/*(j!=i)释放临界资源释放临界资源*/强制在两个进程之间轮
7、换,不能满足空闲让进的原则!强制在两个进程之间轮换,不能满足空闲让进的原则!5.3 互斥互斥(3)Dekker的的软件解决方法(一种正确的方法)软件解决方法(一种正确的方法)初始化初始化:flag0=flag1=false;turn可以为可以为0或或1;nPi:nwhile(true)nflagi=true;/*标识想进入临界区的进程标识想进入临界区的进程*/n while(flagj)n if(turn=j)n flagi=false;n while(turn=j);n flagi=true;n n 执行执行csi /*执行临界区代码执行临界区代码*/nturn=j;flagi=false;
8、nn 2.互斥的硬件解决方法互斥的硬件解决方法(1)中断屏蔽方法(中断屏蔽方法(为什么?为什么?)当一个进程正在执行临界区代码时,屏蔽中断,当一个进程正在执行临界区代码时,屏蔽中断,当前进程离开临界区后,再开中断。当前进程离开临界区后,再开中断。优点:优点:简单有效简单有效缺点:缺点:限制了处理器交叉执行指令的能力限制了处理器交叉执行指令的能力只适应单处理机系统,只适应单处理机系统,why?中断是单处理机系统中当前运行进程释放中断是单处理机系统中当前运行进程释放对对CPU控制权的唯一原因。控制权的唯一原因。(2)硬件指令的方法硬件指令的方法TS(Test-and Set)指令指令bool fo
9、unction TS(bool flag)TS=flag;flag=true;/*关闭临界区关闭临界区*/2.互斥的硬件解决方法互斥的硬件解决方法例例:用:用TS硬件指令方法实现互斥硬件指令方法实现互斥nwhile(true)nwhile(TS(lock);n执行执行csinlock=false;n2.互斥的硬件解决方法互斥的硬件解决方法 硬件指令要求在一个指令周期内完成,因此,公共数据的完硬件指令要求在一个指令周期内完成,因此,公共数据的完整性和正确性不会受到中断的影响。但该类指令存在整性和正确性不会受到中断的影响。但该类指令存在“忙等待忙等待”的缺点。的缺点。Swap指令指令Void sw
10、ap(bool a,b)n bool temp;ntemp=a;na=b;nb=temp;n2.互斥的硬件解决方法互斥的硬件解决方法例例:用:用Swap指令方法实现互斥指令方法实现互斥nwhile(true)nnkey=true;ndonSwap(lock,key);nwhile(key=false)n 执行执行csinlock=false;n2.互斥的硬件解决方法互斥的硬件解决方法1.信号量概念信号量概念信号量是荷兰计算机科学家信号量是荷兰计算机科学家Dijkstra于于1965年年提出的一种有效的进程同步工具,从实现机制提出的一种有效的进程同步工具,从实现机制上可分为:整型信号量上可分为:
11、整型信号量、记录型信号量、记录型信号量、信、信号量集等。号量集等。2.二元信号量和一般信号量二元信号量和一般信号量二元信号量的取值仅为二元信号量的取值仅为“0”或或“1”,主要用作互,主要用作互斥变量;斥变量;一般信号量初值为一般信号量初值为物理资源物理资源的总数,用于进程间的的总数,用于进程间的同步问题。同步问题。5.4 信号量信号量3.整型信号量整型信号量整型信号量是通过定义一个整型变量,如整型信号量是通过定义一个整型变量,如s,和和两个标准的原子操作两个标准的原子操作wait(s)和和 signal(s)来对来对s进行减进行减1和增和增1操作,以实现对临界资源的访操作,以实现对临界资源的
12、访问控制。这两个原子操作习惯上分别被称为问控制。这两个原子操作习惯上分别被称为P操作和操作和V操作。操作。两种实现方式:两种实现方式:忙等待与阻塞等待。忙等待与阻塞等待。5.4 信号量信号量(1)一般整型信号量的一般整型信号量的忙等待忙等待同步原语同步原语Semaphore s=N;/*N为同类资源的总数为同类资源的总数*/Wait(s):while(s0);/忙等待忙等待 s=s-1;Signal(s):s=s+1;5.4 信号量信号量Semaphore s=1;Wait(s):while(s=0);/忙等待忙等待 s=s-1;Signal(s):s=s+1;(2)二元整型信号量的)二元整型
13、信号量的忙等待忙等待同步原语:同步原语:5.4 信号量信号量整型信号量的整型信号量的“忙等待忙等待”互斥实现机制,一般应用于多处理机互斥实现机制,一般应用于多处理机系统,在单处理机系统中,系统,在单处理机系统中,CPU浪费较大。浪费较大。4.记录型信号量(阻塞等待方式)记录型信号量(阻塞等待方式)在记录型信号量机制中定义了两个变量单元,一在记录型信号量机制中定义了两个变量单元,一是用于表示是用于表示临界资源数目临界资源数目的整型变量的整型变量value,另另一个是等待进入临界区的进程所组成的一个是等待进入临界区的进程所组成的阻塞队列阻塞队列的指针的指针L。(1)一般记录型信号量的数据结构一般记
14、录型信号量的数据结构:typedef Struct int value;/*Value的初值为的初值为 系统中该类临界资源的总数目系统中该类临界资源的总数目*/L;/*等待该临界资源的进程阻塞队列等待该临界资源的进程阻塞队列的指针的指针*/semaphore;5.4 信号量信号量Wait(semaphore s)Wait(semaphore s)s.value=s.value-1;s.value=s.value-1;if s.value0 if s.value0时,信号量的值表示可分配的某类资时,信号量的值表示可分配的某类资源总数。每执行一次源总数。每执行一次wait操作,表示分配一个单操作,
15、表示分配一个单位的该类资源给执行位的该类资源给执行wait操作的进程。操作的进程。当当S.value0时,表示没有此类资源供分配,时,表示没有此类资源供分配,S.value的绝对值表示等待该类资源的进程数。的绝对值表示等待该类资源的进程数。(注:(注:一般信号量一般信号量)5.同步原语同步原语5.4 信号量信号量用用原语原语实现信号量的同步操作实现信号量的同步操作同步原语在执行过程中具有整体性,同步原语在执行过程中具有整体性,不能够被分割或中不能够被分割或中断断同步原语必须同步原语必须互斥互斥使用(因为信号量是共享变量)使用(因为信号量是共享变量)同步原语的互斥方法:同步原语的互斥方法:单处理
16、机系统可以用关、开中断的硬件方法单处理机系统可以用关、开中断的硬件方法在多处理机可以使用硬件指令方法在多处理机可以使用硬件指令方法硬件和固件的方法硬件和固件的方法例:例:用硬件指令实现同步原语的互斥用硬件指令实现同步原语的互斥:Wait(s):nwhile(TS(lock);nwhile(s0);s=s-1;nlock=false;同步同步原语原语Signal(s):while(TS(lock);s=s+1;同步原语代码同步原语代码lock=false;5.4 信号量信号量信号量的典型应用信号量的典型应用:(1)生产者)生产者消费者问题消费者问题 假设,多个生产者和消费者共用一具有假设,多个生
17、产者和消费者共用一具有n 个缓冲区的缓个缓冲区的缓冲池,生产者向缓冲池中存放数据,消费者从缓冲池冲池,生产者向缓冲池中存放数据,消费者从缓冲池中取数据中取数据。分析分析:根据题意,可设:根据题意,可设4个信号量:个信号量:mutex1、mutex2、empty 和和full。其中,其中,mutex1和和mutex2是互斥信号量,是互斥信号量,empty 和和 full是资源信号量,分别表示缓冲池中空缓冲区的是资源信号量,分别表示缓冲池中空缓冲区的数目和满缓冲区的数目。算法描述如下:数目和满缓冲区的数目。算法描述如下:c1p1pmck12np2c2pici缓冲池缓冲池问题:应设置几个信号量,为什
18、么?问题:应设置几个信号量,为什么?Semaphore mutex1,mutex2,empty,full;mutex1,mutex2互斥信号量,互斥信号量,empty和和full为资源信号量为资源信号量mutex1=1;mutex2=1;empty=n;full=0;parbegin producer:do 生产一数据防入生产一数据防入nextp;wait(empty);wait(mutex1);buffer(in)=nextp;in=(in+1)%n;/*临界区,临界区,分配一空缓冲区分配一空缓冲区并调整空缓冲队列指针并调整空缓冲队列指针*/signal(mutex1);/*释放临界区释放临
19、界区*/向空缓冲区中装入数据;向空缓冲区中装入数据;signal(full);while(true)Consumer:do wait(full);wait(mutex2);nextc=buffer(out);out=(out+1)%n/*临界区临界区分配分配给满缓冲区并调整满缓冲队列指针给满缓冲区并调整满缓冲队列指针*/signal(mutex2);消费数据;消费数据;signal(empty);while(true)parend是否要考虑多是否要考虑多个个wait操作的操作的执行顺序?执行顺序?Wait和和signal若丢掉一个会若丢掉一个会出现什么情况出现什么情况?注意:应先考虑资源信号量
20、,后考虑互斥信号量。注意:应先考虑资源信号量,后考虑互斥信号量。Why?并考虑并考虑 一个生产者和一个生产者和 一个消费者的情况!一个消费者的情况!(2)读)读-写问题写问题请阅读教材请阅读教材P96的类代码的类代码一类进程可多次访问,不同类进程必须互斥访问的资源控制一类进程可多次访问,不同类进程必须互斥访问的资源控制问题,是用信号量实现同步与互斥的另一类典型问题。对于问题,是用信号量实现同步与互斥的另一类典型问题。对于这类问题,可以通过设置一个资源计数变量,把对资源的访这类问题,可以通过设置一个资源计数变量,把对资源的访问控制转变成对变量的控制,如本例中的问控制转变成对变量的控制,如本例中的
21、readcount。Readeri:wait(mutex);readcount=readcount+1;if(readcount=1)wait(wrt);signal(mutex);读数据;读数据;wait(mutex);readcount=readcount-1;if(readcount=0)signal(wrt);signal(mutex);writeri:wait(wrt);写数据;写数据;signal(wrt);设置两个信号量:设置两个信号量:mutex,wrt。mutex实现对读进程共享变量实现对读进程共享变量readcount的的互斥,互斥,wrt实现读写进程、以及写进程之间的互斥
22、。实现读写进程、以及写进程之间的互斥。int readcount=0,mutex=wrt=1;若若A、B两进程共享数据两进程共享数据D和和E,因此,因此,A、B同步过程中同步过程中的的P、V操作可描述为:操作可描述为:Process A:Wait(Dmutex);.Wait(Emutex);.Signal(Emutex);Signal(Dmutex);Process B:Wait(Emutex);.Wait(Dmutex);.Signal(Dmutex);Signal(Emutex);问题:若问题:若A、B按所标注的序号执行,结果如何?按所标注的序号执行,结果如何?6.信号量集机制信号量集机制
23、如果并发执行的进程在执行的过程中,需要互斥访问多如果并发执行的进程在执行的过程中,需要互斥访问多个不同类的临界资源,在这种情况下就需要设置多个信个不同类的临界资源,在这种情况下就需要设置多个信号量,从而产生了多个号量,从而产生了多个P、V操作的执行顺序问题,因操作的执行顺序问题,因此,为了解决多个临界资源的互斥问题,引入了此,为了解决多个临界资源的互斥问题,引入了信号信号量集量集机制。机制。(1)AND型信号量集机制型信号量集机制 原理原理:将进程在运行中所需要的临界资源将进程在运行中所需要的临界资源一次性一次性全部分全部分配给该进程,如果有一个资源不能到位,所有其它资配给该进程,如果有一个资
24、源不能到位,所有其它资源也都将不再分配给该进程,用完后所有的临界资源源也都将不再分配给该进程,用完后所有的临界资源同时释放。同时释放。5.4 信号量信号量Swait(S1,S2,Sn)if (S11 and S21andand Sn1)for(i=1;i n;i+)Si=Si-1;else 把该进程插入相应的等待队列;把该进程插入相应的等待队列;P、V操作的类代码如下:操作的类代码如下:Ssignal(S1,S2,Sn)for (i=1;i n;i+)Si=Si+1;把等待把等待Si的相关进程从阻塞队列移入就绪队列,等待调度;的相关进程从阻塞队列移入就绪队列,等待调度;(2)一般)一般“信号量
25、集信号量集”机制机制 一般信号量集机制是针对那些一次申请多个临一般信号量集机制是针对那些一次申请多个临界资源,而且对某类临界资源的需求可能不止界资源,而且对某类临界资源的需求可能不止一个的进程之间的互斥情况。一个的进程之间的互斥情况。P、V操作的类代码如下:操作的类代码如下:5.4 信号量信号量Ssignal(s1,d1;sn,dn)for(i=1;in;i+)si=si+di;把等待把等待si的的进程从等待队列移入就绪队列,等待调度;进程从等待队列移入就绪队列,等待调度;Swait(s1,t1,d1;sn,tn,dn)if (s1t1 and and sntn)for(i=1;in;i+)s
26、i=si-di;else 把该进程插入相应的等待队列;把该进程插入相应的等待队列;ti表示表示i类资源的下限值类资源的下限值,di表示某进程申请的表示某进程申请的第第i类资源的数目,类资源的数目,si的初值应设为系统中的初值应设为系统中i类资源的总数目。类资源的总数目。用用AND解决生产者解决生产者-消费者问题消费者问题parbegin producer:do 生产一数据放入生产一数据放入nextp Swait(empty,mutex);buffer(in)=nextp;in=(in+1)mod n;Ssignal(mutex,full);while(true)用用AND解决生产者解决生产者-
27、消费者问题消费者问题comuser:do Swait(full,mutex);nextc=buffer(out);out=(out+1)mod n;Ssignal(mutex,empty);while(true)parend课堂练习题:课堂练习题:(1)假设桌子上有一个盘子,可以放一个水果。)假设桌子上有一个盘子,可以放一个水果。父亲总是放苹果到盘子中,而母亲则总是放香父亲总是放苹果到盘子中,而母亲则总是放香蕉到盘子中;一个儿子专等吃盘中的香蕉,一蕉到盘子中;一个儿子专等吃盘中的香蕉,一个女儿专等吃盘中的苹果。请个女儿专等吃盘中的苹果。请P、V操作实现上操作实现上述问题。述问题。nMain()
28、n nint s=1;apple=0;banana=0;nParbeginnFather();nMother();nSon();nDaughter();nParendnnFather()n don wait(s);n 放苹果;放苹果;n signal(apple);nwhile(true);nndauthter()n don wait(banana);n 取苹果;取苹果;n signal(s);n 吃苹果吃苹果;nwhile(true);n课堂练习题:课堂练习题:nmother()n don wait(s);n 放香蕉;放香蕉;n signal(banana);nWhile(true);nns
29、on()n don wait(banana);n 取香蕉;取香蕉;n signal(s);n 吃香蕉;吃香蕉;nwhile(true);n课堂练习题:课堂练习题:(2)在)在南大南大和天大之间有一条弯曲的小路,其中从和天大之间有一条弯曲的小路,其中从S到到T的一段路每次只允许一辆自行车通过,但中间有一的一段路每次只允许一辆自行车通过,但中间有一个小的个小的“安全岛安全岛”M(同时允许两辆自行车停留),同时允许两辆自行车停留),可供两辆自行车已从两端进入小路情况下错车使用,可供两辆自行车已从两端进入小路情况下错车使用,如图所示。试用如图所示。试用P、V操作设计相应的过程使来往的自操作设计相应的过
30、程使来往的自行车均可顺利通过。行车均可顺利通过。MSKLT天津大学天津大学南开大学南开大学课堂练习题:课堂练习题:分析分析:nMain()nS=1;T=1;/S为南开方向的互斥信号量为南开方向的互斥信号量,T为天大方向为天大方向的互斥信号量的互斥信号量SK=1;LT=1;/两个路段都只允许一辆自行车两个路段都只允许一辆自行车通过通过ParbeginNanKai();TianDa();Parend nNanKai()n nP(S);P(SK);n通过通过SK;n进入进入M;nV(SK);nP(LT);n通过(通过(LT);nV(LT);nV(S);nnTianDa()n nP(T);P(LT);
31、n通过通过LT;n进入进入M;nV(LT);nP(SK);n通过(通过(SK);nV(SK);nV(T);n 进程之间的通信主要指进程之间信息的交换来实进程之间的通信主要指进程之间信息的交换来实现现,根据交换信息量的多少可分为两种:根据交换信息量的多少可分为两种:低级通信低级通信和和高级通信高级通信。低级通信主要指控制信息的传送,信。低级通信主要指控制信息的传送,信息量很少;而高级通信一般是指进程间大批量的数息量很少;而高级通信一般是指进程间大批量的数据交换。据交换。5.5 进程通信进程通信1.进程通信的类型进程通信的类型(1)共享存储器系统共享存储器系统分为两种形式:分为两种形式:共享数据结
32、构的通信方式:共享数据结构的通信方式:(共用某数据结构共用某数据结构,如变量、队列,如变量、队列,低级低级)共享存储区的通信方式(如公用的存储分区,共享存储区的通信方式(如公用的存储分区,高级高级)(2)消息传递系统(高级)消息传递系统(高级)直接通信方式(通过发送和接收原语来实现)直接通信方式(通过发送和接收原语来实现)间接通信方式间接通信方式 (常见的如:邮箱通信方式)(常见的如:邮箱通信方式)5.5 进程通信进程通信(3)管道(管道(pipe)通信方式通信方式 管道:是指在一个读进程和一个写进程之间用以实现管道:是指在一个读进程和一个写进程之间用以实现通信的共享文件,也称通信的共享文件,
33、也称pipe 文件文件 2.消息传递通信方式消息传递通信方式(1)直接通信方式直接通信方式 send(receiver,message);/直接发送一消息给接收直接发送一消息给接收进程进程如:如:send(P2,m1);Receiver(sender,message);/直接接收从直接接收从sender发发送来的消息送来的消息如:如:receive(P1,m1);5.5 进程通信进程通信(2)间接通信方式间接通信方式进程之间的通信需要通过共享数据结构,如信箱。进程之间的通信需要通过共享数据结构,如信箱。5.5 进程通信进程通信发送发送进程进程接收接收进程进程信箱信箱消息消息消息消息Send(m
34、ailbox,message);Receive(mailbox,message);信箱的创建,撤消和消息的发送、接收通过原语实现。信箱的创建,撤消和消息的发送、接收通过原语实现。(3)进程通信的同步方式)进程通信的同步方式(1)发送进程阻塞,接收进程阻塞。)发送进程阻塞,接收进程阻塞。(2)发送进程不阻塞,接收进程阻塞。)发送进程不阻塞,接收进程阻塞。(3)发送进程和接收进程均不阻塞。)发送进程和接收进程均不阻塞。5.5 进程通信进程通信在使用消息传递通信的系统中,通常采用的通信模式是:在使用消息传递通信的系统中,通常采用的通信模式是:发送进程不阻塞,接收进程使用阻塞等待发送进程不阻塞,接收进
35、程使用阻塞等待。3.消息缓冲通信机制消息缓冲通信机制 指发送进程和接收进程通过消息缓冲区进行通信。指发送进程和接收进程通过消息缓冲区进行通信。5.5 进程通信进程通信(1)消息缓冲队列中数据结构消息缓冲队列中数据结构消息缓冲区结构消息缓冲区结构消息缓冲区通常由消息缓冲区通常由发送发送本消息的本消息的进程标识符进程标识符、消消息长度息长度、消息正文消息正文和指向下一消息的和指向下一消息的指针指针组成,组成,描述如下:描述如下:消息缓冲区的结构定义:消息缓冲区的结构定义:nStruct buffernnint sender;nint size;nchar*text;nint*next;n(2)PC
36、B中与通信相关的数据项中与通信相关的数据项nStruct PCBnn n mq;/消息队列的队首指针消息队列的队首指针nmutex;/消息队列的互斥信号量消息队列的互斥信号量nsm;/消息队列的资源信号量消息队列的资源信号量nn(3)发送原语)发送原语 消息的发送由发送原语实现,算法如下:消息的发送由发送原语实现,算法如下:Send(receiver,m)getbuf(a.size,i);/a为发送区,为发送区,i为消息缓冲区为消息缓冲区 i.sender=a.sender;i.size=a.size;i.text=a.text;i.next=0;getid(PCB,receiver.j);/
37、获取接收进程的内获取接收进程的内部标识符部标识符 wait(j.mutex);insert(j.mq,i);signal(j.mutex);signal(j.sm);(4)接收原语)接收原语receive(b)/b为消息接收区为消息接收区 j=internal name;j为接收进程的内部标识符为接收进程的内部标识符 wait(j.sm);wait(j.mutex);remove(j.mq,i);signal(j.mutex);b.sender=i.sender;b.size=i.size;b.text=i.text;本章总结:本章总结:n掌握临界资源、临界段和原语等概念掌握临界资源、临界段和
38、原语等概念n掌握用硬件指令实现互斥的方法掌握用硬件指令实现互斥的方法n掌握一般信号量的物理意义,及其阻塞等待实掌握一般信号量的物理意义,及其阻塞等待实现方式下现方式下wait和和 signal操作的定义(会写其类操作的定义(会写其类C代码)代码)n读懂并掌握生产者读懂并掌握生产者-消费者和读、写问题中用信消费者和读、写问题中用信息号量进行同步与互斥的基本思想。息号量进行同步与互斥的基本思想。n掌握基于消息缓冲进程通信的基本原理。掌握基于消息缓冲进程通信的基本原理。5.6 案例:案例:UNIX的进程同步与通信的进程同步与通信自学问题:自学问题:1.了解了解UNIX系统的信号量机制;系统的信号量机制;2.了解了解UNIX系统中的信号和软中断的概念。系统中的信号和软中断的概念。作业作业5:P109:5.6,5.18,5.19附加:简述消息缓冲通信机制的基本思想。附加:简述消息缓冲通信机制的基本思想。