操作系统原理与实践教程04.ppt
《操作系统原理与实践教程04.ppt》由会员分享,可在线阅读,更多相关《操作系统原理与实践教程04.ppt(99页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 4 章进程的同步和死锁三两草上传4.1 4.1 进程的同步和互斥进程的同步和互斥4.1.1 4.1.1 进程的同步进程的同步1.1.进程同步举例进程同步举例例例.公共汽车中的司机和售票员。公共汽车中的司机和售票员。司机司机 P1 P1 售票员售票员 P2P2 while(true)while(true)while(true)while(true)启动车辆;启动车辆;关门;关门;正常运行;正常运行;售票;售票;到站停车;到站停车;开门;开门;4.1 4.1 进程的同步和互斥进程的同步和互斥2.2.进程同步的概念进程同步的概念n进程的同步是指系统中多个进程中发生的事件存在某种进程的同步是指系统
2、中多个进程中发生的事件存在某种时序关系,需要相互合作,共同完成一项任务。具体说,时序关系,需要相互合作,共同完成一项任务。具体说,一个进程运行到某一点时要求另一伙伴进程为它提供消一个进程运行到某一点时要求另一伙伴进程为它提供消息,在未获得消息之前,该进程处于等待状态,获得消息,在未获得消息之前,该进程处于等待状态,获得消息后被唤醒进入就绪态。息后被唤醒进入就绪态。n通常,把共同完成一个任务的若干进程称为通常,把共同完成一个任务的若干进程称为合作进程。合作进程。合作进程在并发执行时必须同步推进才能得到正确的执合作进程在并发执行时必须同步推进才能得到正确的执行结果。行结果。4.1 4.1 进程的同
3、步和互斥进程的同步和互斥4.1.2 4.1.2 进程互斥进程互斥1.1.进程互斥举例进程互斥举例n假定系统中只有一台打印机,进程假定系统中只有一台打印机,进程p1p1,p2p2都需要使用打印机,如果让都需要使用打印机,如果让它们同时使用,则两个进程的输出交织在一起,打印出的结果无法使它们同时使用,则两个进程的输出交织在一起,打印出的结果无法使用。用。n为了解决这一问题,进程使用之前先要提出申请,一旦系统将打印机为了解决这一问题,进程使用之前先要提出申请,一旦系统将打印机分配给它,就一直由它独占使用,其它申请使用打印机的进程则必须分配给它,就一直由它独占使用,其它申请使用打印机的进程则必须等待。
4、等待。n进程进程p1p1和和p2p2在逻辑上完全独立,毫无关系,只是由于竞争同一个物理在逻辑上完全独立,毫无关系,只是由于竞争同一个物理资源而相互制约。这种进程之间的间接制约关系不具有时间次序的特资源而相互制约。这种进程之间的间接制约关系不具有时间次序的特征,谁先向系统提出申请,谁就先执行。这种对共享资源的排他性的征,谁先向系统提出申请,谁就先执行。这种对共享资源的排他性的使用关系就是进程的互斥关系。使用关系就是进程的互斥关系。4.1 4.1 进程的同步和互斥进程的同步和互斥2.2.临界资源临界资源n在计算机的资源中,有些资源,如上面提到的打印机资源,在计算机的资源中,有些资源,如上面提到的打
5、印机资源,一次能被一个进程使用,这类资源称为临界资源(一次能被一个进程使用,这类资源称为临界资源(Critical Critical ResourceResource)。)。n临界资源可能是硬件,也可能是软件:变量,数据,表格,临界资源可能是硬件,也可能是软件:变量,数据,表格,队列等。它们虽然可以被若干个进程所共享,但一次能为一队列等。它们虽然可以被若干个进程所共享,但一次能为一个进程所利用。个进程所利用。n为了保证共享临界资源的各个进程能正确运行,当临界资源为了保证共享临界资源的各个进程能正确运行,当临界资源由一个进程占用后,其它进程如果要使用它,必须等待占用由一个进程占用后,其它进程如果
6、要使用它,必须等待占用进程使用完毕并把它释放后,才能由另一个进程使用。多个进程使用完毕并把它释放后,才能由另一个进程使用。多个进程在共享临界资源时的这种制约关系称为进程的互斥。进程在共享临界资源时的这种制约关系称为进程的互斥。4.1 4.1 进程的同步和互斥进程的同步和互斥3.3.临界区的概念临界区的概念n一个程序片段的集合,这些程序片段分散在不同的进程中,一个程序片段的集合,这些程序片段分散在不同的进程中,对某个共享的数据结构(共享资源)进行操作。在进程中对某个共享的数据结构(共享资源)进行操作。在进程中涉及到临界资源的程序段叫涉及到临界资源的程序段叫临界区或临界段临界区或临界段。n 对临界
7、区操作的诸进程必须互斥地进入临界区。对临界区操作的诸进程必须互斥地进入临界区。4.1 4.1 进程的同步和互斥进程的同步和互斥n临界区是对某一临界资源而言的,对于不同临界资源的临临界区是对某一临界资源而言的,对于不同临界资源的临界区,它们之间不相交,所以不必互斥地执行,而相对于界区,它们之间不相交,所以不必互斥地执行,而相对于同一临界资源的若干个临界区,则必须互斥的进入,即对同一临界资源的若干个临界区,则必须互斥的进入,即对临界资源的操作必须互斥地执行。临界资源的操作必须互斥地执行。n例如有程序段例如有程序段A、B是关于变量是关于变量X的临界区,而的临界区,而C、D是关是关于变量于变量Y的临界
8、区,那么,的临界区,那么,A、B之间需要互斥执行,之间需要互斥执行,C、D之间也要互斥执行,而之间也要互斥执行,而A与与C、B与与D之间不用互斥执行。之间不用互斥执行。4.1 4.1 进程的同步和互斥进程的同步和互斥n临界区进入准则:临界区进入准则:u 空闲让进空闲让进。当无进程处于临界区时,表明临界资源处于空闲。当无进程处于临界区时,表明临界资源处于空闲状态,应允许一个请求进入临界区的进程立即进入自己的临状态,应允许一个请求进入临界区的进程立即进入自己的临界区。界区。u忙则等待。忙则等待。当已有进程进入临界区时,表明临界资源正在被当已有进程进入临界区时,表明临界资源正在被访问,因而其他试图进
9、入临界区的进程必须等待。访问,因而其他试图进入临界区的进程必须等待。u有限等待有限等待。对任何要求访问临界资源的进程,应保证在有限。对任何要求访问临界资源的进程,应保证在有限的时间内能进入自己的临界区,以免陷入的时间内能进入自己的临界区,以免陷入“死等死等”状态。状态。u让权等待让权等待。当进程不能进入自己的临界区,应立即放弃占用。当进程不能进入自己的临界区,应立即放弃占用CPUCPU,以使其他进程有机会得到,以使其他进程有机会得到CPUCPU的使用权,以免陷入的使用权,以免陷入“忙忙等等”。4.1 4.1 进程的同步和互斥进程的同步和互斥4.4.进程同步和互斥的区别进程同步和互斥的区别互斥的
10、各个进程在各自单独执行时都可以得到正确的运行互斥的各个进程在各自单独执行时都可以得到正确的运行结果,但是当它们在临界区内交叉执行时就可能出现问题。结果,但是当它们在临界区内交叉执行时就可能出现问题。而同步的各个进程,如果各自单独执行将不会完成作业的特而同步的各个进程,如果各自单独执行将不会完成作业的特定任务,只要当它们互相配合、共同协调推进时才能得到正定任务,只要当它们互相配合、共同协调推进时才能得到正确的运行结果。确的运行结果。互斥的进程只要求它们不能同时进入临界区,而至于哪个进互斥的进程只要求它们不能同时进入临界区,而至于哪个进程先进入则不会产生运行的错误。但同步的进程的协调关系程先进入则
11、不会产生运行的错误。但同步的进程的协调关系是建立在它们之间执行时序的基础上,所以,各个进程必须是建立在它们之间执行时序的基础上,所以,各个进程必须按照严格的先后次序执行。按照严格的先后次序执行。一般情况下,互斥的进程并不知道对方的存在,而同步的进一般情况下,互斥的进程并不知道对方的存在,而同步的进程不仅知道其它进程的存在,还要通过与其它进程的通信来程不仅知道其它进程的存在,还要通过与其它进程的通信来达到相互的协调。达到相互的协调。4.1 4.1 进程的同步和互斥进程的同步和互斥4.1.3 4.1.3 信号量机制信号量机制n信号量(信号量(SemaphoreSemaphore)机制是荷兰学者)机
12、制是荷兰学者E.W.DijkstraE.W.Dijkstra在在19651965年提出的一种解决进程同步、互斥问题的更通用工具,并年提出的一种解决进程同步、互斥问题的更通用工具,并在在THETHE操作系统中得到实现。操作系统中得到实现。n信号量信号量S S是个整数变量,除了初始化外,它只能通过两个标是个整数变量,除了初始化外,它只能通过两个标准的原子操作准的原子操作waitwait和和signalsignal来访问。这两个操作原来被称来访问。这两个操作原来被称为为P(P(用于用于waitwait,表测试,表测试)和和V(V(用于用于signalsignal,表增加,表增加)操作。操作。4.1
13、4.1 进程的同步和互斥进程的同步和互斥nwaitwait的经典定义可用伪代码表示为:的经典定义可用伪代码表示为:wait(s)while(s=0);/no.ops-.;nsignalsignal的经典定义可用伪代码表示为:的经典定义可用伪代码表示为:signal(s)s+;4.1 4.1 进程的同步和互斥进程的同步和互斥1.1.信号量的使用信号量的使用n可使用信号量来解决可使用信号量来解决n个进程的临界区问题。这个进程的临界区问题。这n个进程共个进程共享一个信号量享一个信号量mutex,并初始化为并初始化为1。每个进程。每个进程Pi的组织结构的组织结构如下:如下:wait(mutex)临界区
14、(临界区(CS)signal(mutex)4.1 4.1 进程的同步和互斥进程的同步和互斥n也可以使用信号量来解决各种同步问题。例如,考虑两个也可以使用信号量来解决各种同步问题。例如,考虑两个正在执行的并发进程:正在执行的并发进程:p1p1有语句有语句s1s1,而,而p2p2有语句有语句s2s2。假设。假设要求只有在要求只有在s1s1执行完之后才执行执行完之后才执行s2s2,可以很容易地实现这,可以很容易地实现这一要求:让一要求:让p1p1和和p2p2共享一个共同信号量共享一个共同信号量synchsynch,且初始化为,且初始化为0 0。在进程在进程p1p1中插入语句中插入语句:s1;sign
15、al(synch);在进程在进程p2中插入语句:中插入语句:wait(synch);s2;4.1 4.1 进程的同步和互斥进程的同步和互斥2.2.信号量的实现信号量的实现n上面定义的信号量虽然能够用来解决进程的同步和互斥问上面定义的信号量虽然能够用来解决进程的同步和互斥问题,但存在一个明显的缺陷,即该机制没有遵循题,但存在一个明显的缺陷,即该机制没有遵循“让权等让权等待待”的原则,而是使进程处于的原则,而是使进程处于“忙等忙等”状态。状态。n为了克服这个缺点,可定义一个结构体信号量:为了克服这个缺点,可定义一个结构体信号量:typedefstructintvalue;structprocess
16、*L;/进程链表进程链表semaphore;4.1 4.1 进程的同步和互斥进程的同步和互斥n信号量操作信号量操作waitwait现在可按如下来定义:现在可按如下来定义:voidwait(semaphoreS)S.value-;if(S.value0)addthisprocesstoS.L;block();n信号量操作信号量操作signalsignal现在可按如下来定义:现在可按如下来定义:voidsignal(semaphoreS)S.value+;if(S.value=0)removeaprocessPfromS.L;wakeup(P);4.1 4.1 进程的同步和互斥进程的同步和互斥n信
17、号量的说明:信号量的说明:在信号量的实现中,在信号量的实现中,S.value的初值表示系统某类资源的数目,因而又的初值表示系统某类资源的数目,因而又称为资源信号量,对它的每次称为资源信号量,对它的每次wait操作,意味着进程请求一个单位的该操作,意味着进程请求一个单位的该类资源。类资源。当当S.value=1&S2=1&Sn=1)/满足资源要求时的处理;满足资源要求时的处理;for(i=1;i=n;+i).-Si;else/某些资源不够时的处理;某些资源不够时的处理;调用进程进入第一个小于调用进程进入第一个小于1信号量的等待队列信号量的等待队列Sj.queue;阻塞调用进程阻塞调用进程;4.1
18、 4.1 进程的同步和互斥进程的同步和互斥nAND型信号量集型信号量集signal原语为原语为Ssignal,其定义如下:其定义如下:Ssignal(S1,S2,Sn)for(i=1;i=n;+i)+Si;/释放占用的资源;释放占用的资源;for(在在Si.queue中等待的每一个进程中等待的每一个进程P)从等待队列从等待队列Si.queue中取出进程中取出进程P;if(判断进程判断进程P是否通过是否通过Swait中的测试中的测试)/重新判断重新判断进程进程P进入就绪队列进入就绪队列;break;else进程进程P进入某等待队列;进入某等待队列;4.1 4.1 进程的同步和互斥进程的同步和互斥
19、n引入引入AND信号量后,上面的例子就可以简单改写为:信号量后,上面的例子就可以简单改写为:processA:processB:Swait(Dmutex,Emutex);Swait(Emutex,Dmetux);Ssignal(Dmutex,Emutex);Ssignal(Emutex,Dmutex);这样也就不会出现死锁问题。这样也就不会出现死锁问题。4.1 4.1 进程的同步和互斥进程的同步和互斥4.4.信号量的应用信号量的应用利用信号量可以很好的解决进程之间的同步问题。一般利用信号量可以很好的解决进程之间的同步问题。一般同步问题可分为两类:一类是保证一组合作进程按逻辑需同步问题可分为两类
20、:一类是保证一组合作进程按逻辑需要所确定的次序执行;另一类是保证共享缓冲区(或共享要所确定的次序执行;另一类是保证共享缓冲区(或共享数据)的合作进程的同步。数据)的合作进程的同步。(1 1)合作进程的执行次序)合作进程的执行次序n若干个进程为了完成一个共同任务而并发执行,然而,这若干个进程为了完成一个共同任务而并发执行,然而,这些并发进程之间根据逻辑上的需要,有的操作可以没有时些并发进程之间根据逻辑上的需要,有的操作可以没有时间上的先后次序,即不论谁先做,最后的计算结果都是正间上的先后次序,即不论谁先做,最后的计算结果都是正确的。但有的操作有一定的先后次序,也就是说它们必须确的。但有的操作有一
21、定的先后次序,也就是说它们必须遵循一定的同步规则,只有这样,并发执行的最后结果才遵循一定的同步规则,只有这样,并发执行的最后结果才是正确的。是正确的。4.1 4.1 进程的同步和互斥进程的同步和互斥n为了描述方便,可以用一个图来表示进程集合的执行次序。为了描述方便,可以用一个图来表示进程集合的执行次序。图的连接描述了进程开始和结束的次序约束。此图称为图的连接描述了进程开始和结束的次序约束。此图称为进进程流图程流图。如果用。如果用s s表示系统中某一任务启动,表示系统中某一任务启动,f f表示完成,表示完成,则可以下列的进程流图来表示这一组合作进程执行的先后则可以下列的进程流图来表示这一组合作进
22、程执行的先后顺序顺序。4.1 4.1 进程的同步和互斥进程的同步和互斥n例题:假设某个程序段包含例题:假设某个程序段包含如下语句:如下语句:inta,b,c,d,e,f;intt1,t2,t3,t4,t5;t1=a+b;t2=c+d;t3=e/f;t4=t1*t2;t5=t4-t3;t2=t2=c+dc+dS SF Ft1=t1=a+ba+bt3=t3=e/fe/ft4=t1t4=t1t2t2t5=t4-t3t5=t4-t34.1 4.1 进程的同步和互斥进程的同步和互斥n例题例题4-1:进程:进程pa,pb,pc为一组为一组合作进程,其进程流图如右图合作进程,其进程流图如右图所示,使用信号量
23、机制来实现所示,使用信号量机制来实现这三个进程的同步。这三个进程的同步。分析:分析:n从图可以看出,进程从图可以看出,进程pbpb、pcpc只有在进程只有在进程papa执行完成以后才执行完成以后才能执行,进程能执行,进程pbpb、pcpc可以并发执行。可以并发执行。n为确保这三个进程的执行顺序,设两个同步信号量为确保这三个进程的执行顺序,设两个同步信号量SBSB、SCSC分别表示进程分别表示进程pbpb和和pcpc能否开始执行,其初值均为。能否开始执行,其初值均为。4.1 4.1 进程的同步和互斥进程的同步和互斥voidpa()signal(SB);signal(SC);main()semap
24、horeSB=SC=0;cobeginpa();pb();pc();coend;voidpb()wait(SB);voidpc()wait(SC);4.1 4.1 进程的同步和互斥进程的同步和互斥(2 2)共享缓冲区的进程的同步共享缓冲区的进程的同步 例题例题4-24-2:设某计算进程:设某计算进程cpcp和打印进程和打印进程iopiop共用一个单缓冲区(如右图所示)。共用一个单缓冲区(如右图所示)。其中,其中,cpcp进程负责不断地计算数据并送进程负责不断地计算数据并送入缓冲区入缓冲区bufferbuffer中,中,iopiop进程负责不断进程负责不断地从缓冲区地从缓冲区bufferbuff
25、er中取出数据去打印。中取出数据去打印。cpiop缓冲区缓冲区buffer 分析:分析:cpcp、iopiop必须遵守以下同步规则:必须遵守以下同步规则:(1)当)当cp进程把计算结果送入缓冲区进程把计算结果送入缓冲区buffer时,时,iop进程才能从缓冲区进程才能从缓冲区buffer中取出结果去打印中取出结果去打印。(2 2)当)当iopiop进程把缓冲区进程把缓冲区bufferbuffer中的数据取出打印后,中的数据取出打印后,cpcp进程才能把下进程才能把下一个计算结果送入缓冲区一个计算结果送入缓冲区bufferbuffer中。中。4.1 4.1 进程的同步和互斥进程的同步和互斥voi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 原理 实践 教程 04
限制150内