(通信企业管理)进程的同步与通信

上传人:管****问 文档编号:128095598 上传时间:2020-04-08 格式:DOC 页数:41 大小:286.57KB
返回 下载 相关 举报
(通信企业管理)进程的同步与通信_第1页
第1页 / 共41页
(通信企业管理)进程的同步与通信_第2页
第2页 / 共41页
(通信企业管理)进程的同步与通信_第3页
第3页 / 共41页
(通信企业管理)进程的同步与通信_第4页
第4页 / 共41页
(通信企业管理)进程的同步与通信_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《(通信企业管理)进程的同步与通信》由会员分享,可在线阅读,更多相关《(通信企业管理)进程的同步与通信(41页珍藏版)》请在金锄头文库上搜索。

1、第3章 进程的同步与通信第3章 进程的同步与通信3.1 基本点、重点和难点在多道程序系统中,程序的执行失去了封闭性和再现性,程序的运行具有不确定性,这是我们所不希望看到的。如果多道程序系统中程序的执行不加控制,程序的每次执行就可能得到不同的结果。如何使多道程序的执行的结果具有再现性和确定性?这就需要通过进程间的同步和互斥来实现,将原来无序的、不确定的程序的执行转换为有序的、确定的执行。解决同步和互斥问题最常用的方法就是信号量的方法,通过在程序中使用P、V操作达到同步和互斥的目的。在使用信号量和P、V操作时,很多学生觉得无从下手,感到困惑。这主要是因为他们对进程的本质理解还不够深入、对多道程序设

2、计的原理还不够清楚、对信号量的含义还不够明白造成的。但这部分内容又是各类考试的必考点。本章有很多经典问题,其解题的方法和答案在很多资料上都可以见到。但这些解题的结果是专家们长期精炼而成的,初学者在开始时不可能得到这样的结果。对于初学者而言,迫切想知道的已不单是解题的结果,而是问题解决的思考和分析过程。为此,本章中对一些问题的解答给出了详细的分析过程。3.1.1 进程的同步和互斥的概念1. 同步(Synchronization)相互合作的进程需要在某些点上协调,先到达某点的进程需要等待后到达的进程,进程间的这种协调关系叫同步。2. 互斥(Mutex)互斥是一种特殊的同步方式。当多个进程需要使用相

3、同的资源,而此资源在任一时刻却只能供一个进程使用,获得资源的进程可以继续执行,没有获得资源的进程必须等待。进程间的这种相互排斥关系叫互斥。3. 临界资源与临界区(Critical Resource and Critical Section)临界资源是一次只允许一个进程使用的资源。临界区是在进程中操作临界资源的程序段。3.1.2锁操作法实现互斥1 基本思想实现互斥的基本思想是使多个进程不能同时进入临界区。给每个临界资源分配一个锁:锁打开时,进程进入临界区,将锁关闭,开始操作临界资源,离开临界区时,将锁打开;锁关闭时,需要进入临界区的进程要等待。2 操作锁的步骤(1) 确定临界资源;(2) 确定临

4、界区;(3) 确定锁个数;(4) 设置锁操作。3.1.3 信号量与P、V操作1. 信号量的引入1965年,荷兰学者Dijkstra提出的信号量机制是一种卓有成效的进程同步工具。在长期且广泛的应用中,信号量机制得到了很大的发展:它从整型信号量经记录型信号量,进而发展为“信号量集”机制。现在的信号量机制已被广泛的应用于单处理机、多处理机系统和计算机网络中。2. 信号量(Semaphore)设S为信号量,可以将S看成一个信号灯,但S能比信号灯表达更丰富的含义。(1) 当S0时,是绿灯,进程看到绿灯可以通过。S值越大,通过进程的能力越大,供进程使用的相关资源越多。S值反映了可供进程使用的相关资源的数量

5、。(2) 当S=0时,是红灯,进程看到红灯需要等待。此时|S|表示等待S信号的进程的个数。3 信号量的操作最初由Dijkstra把整型信号量定义为一个整型量,除初始化外,仅能通过两个标准的原子操作Wait(S)和Signal(S)来访问,其它方法都不能操作信号量。这两个操作很长时间以来,一直被分别称为P、V操作,因为希腊语的Wait词头为P,Signal的词头为V。对信号量的操作定义如下:(1) P(S)或Wait(S):是等待信号的操作,是查看信号的操作,是看灯操作。若为绿灯,进程继续前进;若为红灯,进程必须等待。在该操作中,进行S=S-1,操作使S的值向负方向转化,即操作使信号灯S向红的方

6、向转化。(2) V(S)或Signal(S):是发送信号的操作。在该操作中,进行S=S+1, 操作使S的值向正方向转化,即操作使信号灯S向绿的方向转化。4 P(S)、V(S)的实现(1) 整型信号量P(S):while s=0 do no-opS:=S-1;V(S):S:=S+1;(2) 记录型信号量在整型信号量机制中的wait操作,只要是信号量S=0,就会不断地测试。因此,该机制并未遵循“让权等待”的准则,而是该进程处于“忙等”的状态。记录型信号量机制则是一种不存在“忙等”问题的进程同步机制。但在采取了“让权等待”的策略后,又会出现多个进程等待访问同一临界资源的问题。为此,在信号量机制中,除

7、了需要一个用于代表资源数目的整型变量value外,还应增加一个进程链表L,用于链接或记录上述的所有因此信号量而等待的进程。记录型信号量是由于它采用了纪录型的数据结构而得名的。它所包含的上述两个数据项可描述为:type semaphore=recordvalue:integer;L:list of process;End相应地,wait(s)和singal(s)操作可描述为:Procedure wait(s) var s:semaphore; Begin S.value:=S.value-1; If S.value0 then Begin Insert(*, S.L);Block(*); End

8、EndProcedure signal (s)var S:semaphore;BeginS.value:=S.value+1;If S.value=0 thenBegin N=remove(S.L) ;Wakeup(N); EndEnd每次的wait操作,意味着进程请求一个单位的资源,因此描述为S.value:=S.value-1;当S.value0时,表示资源已分配完毕,进程需要等待而进入阻塞状态。为了便于唤醒,在当前进程需要进入阻塞状态前,将当前进程号插入到信号量链表S.L中,进程调用block原语,进行自我阻塞,放弃处理机。因为只有在S.value0时进程才进入阻塞状态,所以当S.val

9、ue0时,S.value的绝对值表示在该信号量阻塞进程链表中进程的数目。每次signal操作,表示执行进程释放一个单位资源,故S.value:=S.value+1操作表示资源数目加1。若加1后仍是S.value0时,进程可以操作临界资源,可以进入临界区,否则mutex0;,S1没有执行时,信号量S=0。初始状态S1语句没有执行,因此S=0。因为S1执行后S应变成大于0的值,所以S应被初始化为0。这样,若P2先执行必定阻塞自己,只有在进程P1执行完S1;signal(s)后,使S增为1时,P2进程才能执行语句S2。同样,可以利用信号量,按下图语句间的前趋关系,写出一个可并发执行的程序。详细描述如

10、下:var a,b,c,d,e,f,g:semaphore:=0,0,0,0,0,0,0;beginparbeginbegin S1; signal(a);signal(b);end;begin wait(a);S2;signal(c);signal(d);end;begin wait(b);S3;signal(e);end;begin wait(c);S4;signal(f);end;begin wait(d);S5;signal(g);end;begin wait(e);wait(f);wait(g);S6;end;parendendS1S3S5S6S2S4图4.1 进程前趋关系图3. 解

11、决同步和互斥问题的步骤(1) 确定并发和顺序操作哪些操作是并发的?哪些操作是顺序的?这是解决同步和互斥问题时首先要确定的。并发操作可以用多个进程实现,同步和互斥就发生在这多个进程之间。多个进程操作同一临界资源就是进程间的互斥问题,多个进程要按一定的顺序进行操作就是进程间的同步问题。(2) 确定互斥和同步的规则分析具体问题,确定同步和互斥的基本方式,确定能够进行正确操作的条件,在这些条件中隐含着同步和互斥的规则。(3) 确定同步、互斥的操作流程 按操作的步骤,写出每个进程操作的流程(4) 确定信号量的个数和含义根据同步和互斥规则以及操作流程确定信号量的个数,确定信号量代表的含义,只有确切地知道信

12、号量所代表的含义,设置这个信号量才有意义。(5) 确定信号量的初值同步信号量的初值则要根据进程的初始状态确定,具体问题要具体分析,没有统一的方法。(6) 确定P、V操作的位置根据同步和互斥规则和每个进程的操作流程就可以确定P、V操作的位置。需要说明的是无论是互斥问题还是同步问题,只要是需要进程进入阻塞状态,就必须想到在什么时候将进程唤醒。初学者开始时可以按上述步骤解决同步和互斥问题,熟练后,就可以不局限于这些规则,灵活应用。这好象学骑自行车一样,开始时需要左看右看,掌握了基本要领,熟练操作以后就可以随心所欲。以上讲述的只是一般的求解规则,虽然有一定的可操作性,但在实际应用中还是要针对具体情况,多做多想,领悟出其中的原理和窍门。4. 同步和互斥的经典问题(1) 生产者和消费者问题(PCP:Producer-Consumer Problem)。例如,消息缓冲通信的管理。(2) 读者和写者问题(RWP:Reader-Writer Problem)。例如,共享文件的读写问题。(3) 哲学家进餐问题(DPP:Dining Philosopher Problem)。例

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 经营企划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号