操作系统课件进程同步与通信.ppt

操作系统课件进程同步与通信.ppt

ID:58783210

大小:227.50 KB

页数:57页

时间:2020-10-03

操作系统课件进程同步与通信.ppt_第1页
操作系统课件进程同步与通信.ppt_第2页
操作系统课件进程同步与通信.ppt_第3页
操作系统课件进程同步与通信.ppt_第4页
操作系统课件进程同步与通信.ppt_第5页
资源描述:

《操作系统课件进程同步与通信.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、本章主要内容:4-1进程间的相互作用4-2进程通信4-3死锁4-4Linux进程间通信4.1进程间的相互作用4-1-1进程间的联系-资源共享关系-相互合作关系临界资源是一种多个进程访问的资源。其属性是:访问临界资源的进程必须互斥得访问它,也就是说,同一时刻只允许一个进程访问的资源叫临界资源临界区不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它进行访问。我们把在每个进程中访问临界资源的那段代码称为临界区(criticalsection)4.1进程间的相互作用同步机制应遵循的准则空闲让进、忙则等待、有限等待、让权等待4-1-2利用软件方法解决进程互

2、斥问题算法1设置一个公用整型变量turn,用于指示被允许进入临界区的进程的编号算法描述如下:while(1){…while(turn!=1)no-op;criticalsectionturn=2;…}算法不能保证实现“空闲让进”的准则算法2设置一个数组,使其中每个元素的初值为0,表示所有进程都未进入临界区,在每一个进程访问临界资源之前,先去查看一下临界资源是否正被访问。若正被访问,该进程需等待;否则进入自己的临界区算法描述如下:intflag[2]={0,0};…P1:while(1){…while(flag[1])no-op;flag[0]=1;crit

3、icalsectionflag[0]=0;…}4.1进程间的相互作用违背了“忙则等待”的准则算法3使要进入临界区的进程先设置其要求进入的标志,然后,再去查看其他进程的标志算法描述如下:intflag[2]={0,0};…P1:while(1){…flag[0]=1;while(flag[1])no-op;criticalsectionflag[0]=0;…}4.1进程间的相互作用违背了“空闲让进”和“有限等待”准则算法4(正确算法)为每个进程设置了相应的标志为flag[];还设置了一个turn变量,用于指示允许进入临界区的进程编号算法描述如下:intfla

4、g[2]={0,0};…P1:while(1){…flag[0]=1;turn=2;while(flag[1]&&turn==2)no-op;criticalsectionflag[0]=0;…}保证了“忙则等待”,又实现了“空闲让进”4.1进程间的相互作用4.1进程间的相互作用4-1-3利用硬件方法解决进程互斥问题利用Test-and-Set指令实现互斥Test-and-Set指令为:intTS(staticintlock){intTS=lock;lock=1;return(TS);}用TS指令实现进程互斥的循环描述为:while(1){…while(T

5、S(lock))dono-op;criticalsectionlock=0;…}4.1进程间的相互作用利用Swap指令实现进程互斥Swap指令称为交换指令,描述为:voidSwap(staticinta,b){inttemp;temp=a;a=b;b=temp;}利用Swap指令实现进程互斥的循环可描述为:while(1){…key=1;do{Swap(lock,key);}while(key);criticalsectionlock=0;…}4.1进程间的相互作用4-4-4信号量机制信号量机制是一种卓有成效的进程同步工具记录型信号量机制在信号量机制中,除

6、了需要一个用于代表资源数目的整型变量value外,还有一个进程链表L,用于链接所有等待该信号量代表资源的进程记录型数据结构描述typedefstruct{intvalue;listofprocess*L;}semaphore;4.1进程间的相互作用对信号量的操作信号量除初始化外,仅能通过两个标准的原子操作wait(s)和signal(s)来访问。这两个操作很长时间以来被称为P、V操作。当一个进程在修改某信号量时,没有其他进程可以同时对该信号量进行修改。wait操作voidwait(staticsemaphores){s.value--;if(s.value

7、<0)block(s.L);}singal操作voidsignal(staticsemaphores){s.value++;if(s.value≤0)wackup(s.L);}4.1进程间的相互作用利用信号量实现进程互斥的过程描述为使多个进程互斥地访问某个临界资源,只需为该资源设置一个信号量,并设其初始值为1,此时的信号量可以称为“互斥信号量”。semaphoremutex=1;voidprocedure1(){while(1){…wait(mutex);criticalsectionsignal(mutex);…}}voidprocedure2(){wh

8、ile(1){…wait(mutex);criticalsecti

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。