进程间通信与同步.ppt
《进程间通信与同步.ppt》由会员分享,可在线阅读,更多相关《进程间通信与同步.ppt(40页珍藏版)》请在三一办公上搜索。
1、第二章 进程管理,进程(Process)线程(Thread)进程间通信与同步经典的IPC问题进程调度,2.3 进程间通信与同步,进程间通信(InterProcess Communi-cation,IPC):进程之间的信息交流与协调。,并发进程之间的两种关系:相互独立:进程之间没有任何关联关系(直接的或间接的),仅有CPU竞争关系。无需通信,由进程调度器来协调(如Word、MP3);相互关联:进程之间存在着某种关联关系(直接或间接),需要相互通信。例如:共享内存变量、共享软硬件资源、数据传递、协同工作等。,需要讨论的问题:,进程间如何通信呢,如何来相互传递信息呢?当两个或多个进程在访问共享资源时
2、,如何确保它们不会相互妨碍 进程互斥问题;当进程之间存在着某种依存关系时,如何来调整它们运行的先后次序 进程同步问题。生活中的例子:教室座位、打饭窗口;一组同学做大作业。,上述问题是否也适用于线程?,2.3.1 进程间通信方式,低级通信:只能传递状态和整数值(控制信息)信号量(semaphore)信号(signal)高级通信:能够传送任意数量的数据共享内存(shared memory)消息传递(message passing)管道(pipe),能否共享内存单元(变量或缓冲区)?,共享内存,绝大多数现代的操作系统都提供了相应的方法,来让各个进程共享它们地址空间当中的某些部分,即共享内存。在共享内
3、存中,可以任意读写和使用任意的数据结构(缓冲区)。一组进程向共享内存中写,另一组进程从共享内存中读,通过这种方式实现两组进程间的信息交换。,消息传递,消息:由若干数据位组成;消息传递:进程之间通过发送和接收消息来交换信息;消息机制由OS来维护,包括定义寻址方式、认证协议、消息的大小等。一般提供两个操作:send(),发送一条消息;receive(),接收一条消息。如果两个任务P和Q想要进行通信,它们需要在两者之间建立一个通信链路;使用send()和receive()交换信息。,管道(pipe),管道通信由UNIX首创,由于其有效性,后来的一些系统相继引入了管道技术;管道通信以文件系统为基础,所
4、谓管道即连接两个进程之间的一个打开的共享文件,专用于进程之间的数据通信;发送进程从管道的一端写入数据流,接收进程从管道的另一端按先进先出的顺序读出数据流;管道的读写操作即为文件操作fwrite/fread,数据流的长度和格式没有限制。,2.3.2 进程的互斥,进程互斥的产生原因:进程宏观上并发执行,依靠时钟中断来实现微观上轮流执行;访问共享资源。,【例子1】后台打印程序,(两个进程同时想要访问共享数据),后台程序,4 7,share.txt,next_free_slot=in;/7,第一步:进程A,中断,6,7,8,file_b,write“file_b”to item 7,next_free
5、_slot+;/8,update in;,8,write“file_a”to item 7,next_free_slot+;/8,update in;,file_a,out,in,【例子2】两个进程,读修改写进程1 进程2tmp1=count;tmp2=count;tmp1+;tmp2=tmp2+2;count=tmp1;count=tmp2;请问:如果在这些进程执行之前,count变量的值为1,那么它最后的结果是多少?,进程1 进程2tmp1=count;(=1)interrupt.tmp2=count;(=1)tmp2=tmp2+2;(=3)count=tmp2;(=3)tmp1+;(=2
6、)count=tmp1;(=2),情形1,进程1 进程2 tmp2=count;(=1)interrupt.tmp1=count;(=1)tmp1+;(=2)count=tmp1;(=2)tmp2=tmp2+2;(=3)count=tmp2;(=3),情形2,进程1 进程2tmp1=count;(=1)tmp1+;(=2)count=tmp1;(=2)tmp2=count;(=2)tmp2=tmp2+2;(=4)count=tmp2;(=4),情形3,竞争状态(race condition):,两个或多个进程对同一共享数据同时进行读写操作,而最后的结果是不可预测的,它取决于各个进程具体运行情况
7、。,解决之道:,在同一时刻,只允许一个进程访问该共享数据,即如果当前已有一个进程正在使用该数据,那么其他进程暂时不能访问。这就是互斥的概念。,竞争状态问题的抽象描述,把一个进程在运行过程中所做的事情分为两类:进程内部的计算或其他的一些事情,肯定不会 导致竞争状态的出现;对共享内存或共享文件的访问,可能会导致竞 争状态的出现。我们把完成这类事情的那段程 序称为“临界区”,把需要互斥访问的共享资源 称为“临界资源”。如果我们能设计出某种方法,使得任何两个进程都不会同时出现在临界区中,就可以避免竞争状态的出现。,实现互斥访问的四个条件,任何两个进程都不能同时进入临界区;不能事先假定CPU的个数和运行
8、速度;当一个进程运行在它的临界区外面时,不能妨碍其他的进程进入临界区;任何一个进程进入临界区的要求应该在有限时间内得到满足。,基于临界区的互斥访问,(本图摘自Andrew S.Tanenbaum:“Modern Operating Systems”,下同),如何实现进程之间的互斥访问?问题描述:两个进程,在各自临界区中需要对某个共享资源进行访问。,2.3.3 基于关闭中断的互斥实现,进程的切换是由中断引发的,关闭中断后,CPU不会被分配给其他进程,其他进程无法执行;操作系统内核经常使用这种方法来更新内部的数据结构(变量、链表等)。,当一个进程进入临界区后,关闭所有的中断;当它退出临界区时,再打
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 进程 通信 同步
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6351079.html