4进程的同步与通信,进程死锁.ppt
《4进程的同步与通信,进程死锁.ppt》由会员分享,可在线阅读,更多相关《4进程的同步与通信,进程死锁.ppt(73页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1第第4章章 进程的同步与通信、进程死锁进程的同步与通信、进程死锁 主要内容:主要内容:并发执行,临界段,信号量,经并发执行,临界段,信号量,经典进程同步问题,消息传递原理,死锁。典进程同步问题,消息传递原理,死锁。重点:重点:临界段、同步、互斥的概念;信号量临界段、同步、互斥的概念;信号量的概念和物理意义;消息传递的原理,死锁的概念和物理意义;消息传递的原理,死锁的概念。的概念。难点:难点:信号量解决进程同步与互斥的方法,信号量解决进程同步与互斥的方法,死锁防止、避免。死锁防止、避免。计算机操作系统前趋图:前趋图:用于描述一个程序的各部分用于描述一个程序的各部分(程序段或语句)间的执行顺序关
2、系,(程序段或语句)间的执行顺序关系,或者是一个大的计算各子任务间的因果或者是一个大的计算各子任务间的因果关系。关系。1)是一个有向无循环图;)是一个有向无循环图;2)图的结点对应程序中的一条语句、)图的结点对应程序中的一条语句、一个程序段或一个进程;一个程序段或一个进程;3)结点间的有向边:表示两个结点之)结点间的有向边:表示两个结点之 间存在的偏序或前趋关系间存在的偏序或前趋关系“”;s1s3s2s5s4s7s61.程序的顺序执行程序的顺序执行计算机操作系统指各程序段按照某种先后次序执行,仅当前指各程序段按照某种先后次序执行,仅当前一个操作执行完后才能执行后继操作。一个操作执行完后才能执行
3、后继操作。1.程序的顺序执行程序的顺序执行I1C1P1I2C2P2其中其中I、C、P分别表示输入分别表示输入、计算和打印操作计算和打印操作图图3-2 程序顺序执行时的前趋图程序顺序执行时的前趋图顺序执行的特点:顺序执行的特点:顺序性,封闭性,可再现性顺序性,封闭性,可再现性计算机操作系统概念:概念:若干个程序(或程序段)同时在系统中运行,这若干个程序(或程序段)同时在系统中运行,这些程序(或程序段)的执行在时间上是重叠的,一个程些程序(或程序段)的执行在时间上是重叠的,一个程序(或程序段)的执行尚未结束,另一个程序(或程序序(或程序段)的执行尚未结束,另一个程序(或程序段)的执行已经开始。段)
4、的执行已经开始。2.程序的并发执行程序的并发执行I1I2I3C1C2C3P1P2P3n 若顺序执行三个作若顺序执行三个作业共需要业共需要9(3*3)分钟)分钟n 并行执行三个作业并行执行三个作业只需要只需要5(5/3*3)分钟)分钟 计算机操作系统l 间断性:间断性:并发程序由于共享资源或为完成同一项任务而相并发程序由于共享资源或为完成同一项任务而相互合作,形成相互制约关系。互合作,形成相互制约关系。程序并发执行的特点:程序并发执行的特点:l 失去封闭性:失去封闭性:多个程序共享系统中的各种资源,资源的多个程序共享系统中的各种资源,资源的状态将由多个程序改变,失去封闭性。一个程序执行时,会受状
5、态将由多个程序改变,失去封闭性。一个程序执行时,会受到其他程序的影响。到其他程序的影响。l 不可再现性(待续)不可再现性(待续)并发与共享的问题并发与共享的问题:并行程序访问共享数据:并行程序访问共享数据问题举例问题举例:(:(countcount为共享变量为共享变量初值初值=300)=300)Program A:N=count N=N+100 count=N Program B:M=count M=M-200 count=M 如果按以下次序占处理机运行如果按以下次序占处理机运行:N=count,N=N+100;N=count,N=N+100;M=count,M=M-200,count=M;M
6、=count,M=M-200,count=M;count=N.count=N.结果结果count=400(count=400(应为应为200)*200)*7并发的需要并发的需要n操作系统应尽量支持用户态程序最大限度地并发执行。操作系统应尽量支持用户态程序最大限度地并发执行。n程序设计要利用程序设计要利用OSOS对并发运行的支持,安排事务并发对并发运行的支持,安排事务并发执行。执行。n操作系统核心程序也要尽可能地并发运行操作系统核心程序也要尽可能地并发运行4.1 4.1 并发执行实现并发执行实现 S1S2S3图图4.1 任务中子任务关系示意图任务中子任务关系示意图84.1.1 4.1.1 并发编
7、程方法并发编程方法n传统的串行程序存在着并行成分:传统的串行程序存在着并行成分:Read(a)Read(a);Read(b)Read(b);c=a+bc=a+b;Write(c)Write(c)ReadRead(a a)和)和ReadRead(b b)两个语句可并行)两个语句可并行执行执行。9n识别程序中的并发成分有两种方法:识别程序中的并发成分有两种方法:u程序员写顺序程序,用识别工具识别程序员写顺序程序,用识别工具识别并发成分。再组织使用操作系统的并发并发成分。再组织使用操作系统的并发机制。机制。u由程序员识别并发成分由程序员识别并发成分:用并发程序设计语言设计并发程序,用并发程序设计语言
8、设计并发程序,由编译系统安排并发;由编译系统安排并发;直接利用操作系统的系统调用。直接利用操作系统的系统调用。10n 并发程序设计语言并发程序设计语言 -并发语句并发语句n它是一种高级语言;它是一种高级语言;n语法形式:语法形式:Parbegin Parbegin S1S1;S2S2;SnSn;ParendParend;1 1)并发语句示例)并发语句示例 1 1ParbeginParbegin read read(a a););readread(b b););ParendParend;c=a+bc=a+b;writewrite(c c););112)并发语句示例)并发语句示例2Var F,G:
9、file of T;r,s:T;reset(F);read(F,r);while not eof(F)dos=r;Parbegin write(G,s);read(F,r);Parend;write(G,r);优点优点:并发语句的结构化特征非常好。并发语句的结构化特征非常好。缺点:缺点:存在着描述能力不强的缺点,即存在着描述能力不强的缺点,即存在着用存在着用Parbegin/ParendParbegin/Parend语句无语句无法描述的并发优先关系。法描述的并发优先关系。改进手段:改进手段:辅以其他手段,则并发语句可以辅以其他手段,则并发语句可以大大增加其描述并发的能力。大大增加其描述并发的能
10、力。124.1.2并发执行的实现并发执行的实现n前面是对并发的高级语言描述,要真正实现并前面是对并发的高级语言描述,要真正实现并发执行,需要通过发执行,需要通过OSOS支持的进程机制。支持的进程机制。n实现的两种方法:实现的两种方法:1)OS1)OS提供进程创建,结束和同步的系统调用;提供进程创建,结束和同步的系统调用;2)2)由并行语言编译器将并发语言的语句转化由并行语言编译器将并发语言的语句转化为对为对OSOS的系统调用。的系统调用。13与进程相关的系统调用与进程相关的系统调用nUNIXUNIX操作系统利用进程支持并发执行;操作系统利用进程支持并发执行;n它提供了如下系统调用:它提供了如下
11、系统调用:nforkfork():创建一个新进程。():创建一个新进程。(1)(1)该子进程继承了父进程的程序空间,复该子进程继承了父进程的程序空间,复制了父进程的数据段和栈段。制了父进程的数据段和栈段。也就是说不管也就是说不管是父进程还是子进程,在占有处理机后,都是父进程还是子进程,在占有处理机后,都从从forkfork()调用的返回点开始运行()调用的返回点开始运行;(2)(2)父进程父进程forkfork()调用的返回值是子进程()调用的返回值是子进程的进程标识的进程标识pidpid;(3)(3)子进程子进程forkfork()调用的返回值是()调用的返回值是0 0。14nexitexi
12、t(statusstatus):进程结束。该系统调用发):进程结束。该系统调用发出后,操作系统将从系统中删除调用出后,操作系统将从系统中删除调用exitexit的的进程,并将进程,并将statusstatus值传给等待它结束的父进值传给等待它结束的父进程。程。nwaitwait(&status&status):等待子进程结束。):等待子进程结束。(1)(1)当有多个子进程时,任一个子进程结束即当有多个子进程时,任一个子进程结束即将控制返回调用者,并将子进程调用将控制返回调用者,并将子进程调用exitexit(statusstatus)时的)时的statusstatus值送到值送到&status
13、&status指针所指单元中。指针所指单元中。(2)(2)在控制返回调用者时,同时将所等到的子在控制返回调用者时,同时将所等到的子进程进程pidpid作为作为waitwait()系统调用函数的返回()系统调用函数的返回值。值。nwaitpidwaitpid(pidpid,):等待):等待pidpid所指定的进所指定的进程结束。程结束。15多进程实现前述的读写并发程序多进程实现前述的读写并发程序pid=fork(););if pid=0 then read(b););exit(0););else read(a););wait(&status););c=a+b;write(c););16n同步关系
14、(直接制约):同步关系(直接制约):为了完成一个共同任务,相为了完成一个共同任务,相互协作的几个进程需要在某些确定点上协调他们的工互协作的几个进程需要在某些确定点上协调他们的工作,等待来自其它进程的信息,以调整它们的推进速作,等待来自其它进程的信息,以调整它们的推进速度,方可顺利执行完毕。度,方可顺利执行完毕。输入进程输入进程缓冲区缓冲区计算进程计算进程4.2 4.2 进程的进程的同步与互斥同步与互斥n n互斥关系(间接制约):互斥关系(间接制约):互斥关系(间接制约):互斥关系(间接制约):把并发进程间存在的因相互把并发进程间存在的因相互竞争使用独占资源(共享资源)而产生的制约关系。竞争使用
15、独占资源(共享资源)而产生的制约关系。例如:例如:打印机,共享内存;打印机,共享内存;17例例1同步关系同步关系 S1S2S4S5S7S3S6进程进程P1依次运行依次运行S1,S2,S4,S5,S7;进程进程P2依次运行依次运行S3,S618n 临界资源临界资源临界资源:临界资源:一次仅允许一个进程使用的硬件或软一次仅允许一个进程使用的硬件或软件资源。件资源。一般包括:慢速设备,共享的变量、数据结构、一般包括:慢速设备,共享的变量、数据结构、缓冲区、表格、队列、栈、文件等。缓冲区、表格、队列、栈、文件等。注意:注意:对于临界资源,必须互斥访问,否则会导致执对于临界资源,必须互斥访问,否则会导致
16、执行结果的不确定性。行结果的不确定性。4.2.1 4.2.1 同步与临界段问题同步与临界段问题19例:例:2个进程个进程P1,P2分别对共享变量分别对共享变量account执行加执行加1和加和加2的操作,的操作,account 初始值为初始值为 0,account的结果的结果为多少?为多少?P1,P2的执行顺序如下:的执行顺序如下:P1 M=account;M=M+1;account=M;P2 N=account;N=N+2;account=N;P1 M=account;M=M+1;account=M;P2 N=account;N=N+2;account=N;进程推进顺序进程推进顺序 按此顺序
17、执行按此顺序执行account=2按此顺序执行按此顺序执行account=1两点说明:两点说明:两点说明:两点说明:u产生与时间有关的错误。产生与时间有关的错误。u对临界资源的互斥使用,应先申请、判断。对临界资源的互斥使用,应先申请、判断。20n 临界段临界段n定义:定义:指在进程中访问临界资源的那段代码。指在进程中访问临界资源的那段代码。n访问过程:访问过程:1)在进入临界段之前,写一段代码以检查可否进入临)在进入临界段之前,写一段代码以检查可否进入临界段,通常把这段代码称为界段,通常把这段代码称为进入区进入区(申请,判断申请,判断)。2)在退出临界段后,必须有一段代码来清除)在退出临界段后
18、,必须有一段代码来清除“正在访正在访问临界段问临界段”标志,或发出本进程已经退出临界段的标志,或发出本进程已经退出临界段的信息,把这段代码称为信息,把这段代码称为退出区退出区(释放)。(释放)。21 一个访问临界资源的进程描述如下:一个访问临界资源的进程描述如下:While(1)entry code;/进入区进入区 critical code;/临界段临界段 exit code;/退出区退出区 remainder code;/剩余区剩余区;22例例2 2:P1,P2P1,P2两进程使用同一打印机。如果两进程使用同一打印机。如果不互斥使用会交叉输出。不互斥使用会交叉输出。Entry codeex
19、it code使用打印机使用打印机P1Entry codeexit code使用打印机使用打印机P223例例3:3:对共享变量对共享变量countcount的互斥访问。的互斥访问。Parbegin P1:M:=count;M:=M+1;count:=M;P2:N:=count;N:=N+2;count:=N;Parend;Entry codeexit codeEntry codeexit code24如何实现进入区、退出区代码如何实现进入区、退出区代码同步机构同步机构n 同步机构:同步机构:指能实现进程同步的机制,该机制指能实现进程同步的机制,该机制能把其它进程需要的信息发送出去,也能测试自能
20、把其它进程需要的信息发送出去,也能测试自己需要的信息是否到达。己需要的信息是否到达。n 同步机构应遵循同步机构应遵循4个准则:个准则:1、空闲让进;、空闲让进;2、忙则等待;、忙则等待;3、有限等待;、有限等待;4、让权等待;、让权等待;n实现方法实现方法软件方法软件方法硬件方法硬件方法254.2.2 4.2.2 实现临界段的硬件方法实现临界段的硬件方法与计算机体系结构有关与计算机体系结构有关1、屏蔽中断法、屏蔽中断法中断引起的并发会导致错误的结果中断引起的并发会导致错误的结果 进程进程1的程序的程序disableInterrupt();Balance=balance+amount;enabl
21、eInterrupt();进程进程2的程序的程序disableInterrupt();Balance=balance-amount;enableInterrupt();两条命令:两条命令:enableInterrupt,disableInterrupt缺点:缺点:1)可能影响到)可能影响到I/O行为行为2)只能用于单处理机系)只能用于单处理机系统统262 2、“Test_and_SetTest_and_Set”指令指令该指令功能描述为:该指令功能描述为:boolean Test_and_Set(boolean&target)Boolean rv=target;Target=true;Retur
22、n rv如果机器支持如果机器支持Test_and_Set,可用下列方法解决,可用下列方法解决:(Lock=false)do while(Test_and_Set(&lock));/进入区进入区 critical section;/临界区临界区 lock=false;/退出区退出区 non critical section;/其它部分其它部分while(1);27二、二、“Swap”指令指令该指令功能描述为:该指令功能描述为:void Swap(boolean&a,boolean&b)boolean temp=a;a=b;b=temp;28设设LockLock为全局布尔变量(初值为为全局布尔变量
23、(初值为falsefalse),),每个进程设一个局部布尔变量每个进程设一个局部布尔变量KeyKey。利用。利用SwapSwap指令,可实现对临界区的加锁与解锁。指令,可实现对临界区的加锁与解锁。do key=true;while(key=ture)Swap(Lock,key);critical section Lock=false;non-critical sectionwhile(1)294.2.3 4.2.3 信号量信号量(1965(1965年,年,DijkstraDijkstra提出提出)信号量机构:信号量机构:“信号量信号量”、“P P,V V操作操作”。信号量信号量S S为一整型变
24、量:为一整型变量:P(S):While S0P(S):While S0;S=S-1S=S-1;V V(S S):):S=SS=S1 1;P,VP,V操作是两条原语,即保证操作是两条原语,即保证P P,V V操作对变量操作对变量S S的访问是互斥操作。的访问是互斥操作。301.1.原语概念与实现原语概念与实现 原语原语:指完成某种功能且不被分割或不被中断:指完成某种功能且不被分割或不被中断执行的操作序列执行的操作序列(又称原子操作又称原子操作)。实现临界段的元方法实现临界段的元方法:屏蔽中断屏蔽中断(只用于单机只用于单机);加硬锁加硬锁,如如“Test_and_SetTest_and_Set”,
25、“SwapSwap”硬指令。硬指令。P,VP,V操作的实现操作的实现31P(s),V(s)的实现的实现P(s)disableIntrrupt();While(s0)enableIntrrupt();disableIntrrupt();s=s-1;enableIntrrupt();V(s)disableIntrrupt();s=s+1;enableIntrrupt();32实现信号量时与进程调度相结合,消除忙等待现实现信号量时与进程调度相结合,消除忙等待现象。象。基本思想是:基本思想是:在在P P操作循环等待的地方加入放弃处理机,进入操作循环等待的地方加入放弃处理机,进入等待队列动作;等待队列动
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 进程 同步 通信 死锁
限制150内