进程间通信与同步

进程间通信与同步

ID:39414405

大小:606.81 KB

页数:40页

时间:2019-07-02

进程间通信与同步_第1页
进程间通信与同步_第2页
进程间通信与同步_第3页
进程间通信与同步_第4页
进程间通信与同步_第5页
资源描述:

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

1、第二章进程管理进程(Process)线程(Thread)进程间通信与同步经典的IPC问题进程调度2.3进程间通信与同步进程间通信(InterProcessCommuni- cation,IPC):进程之间的信息交流 与协调。并发进程之间的两种关系:相互独立:进程之间没有任何关联关系(直接的或间接的),仅有CPU竞争关系。无需通信,由进程调度器来协调(如Word、MP3);相互关联:进程之间存在着某种关联关系(直接或间接),需要相互通信。例如:共享内存变量、共享软硬件资源、数据传递、协同工作等。需要讨论的问题:进程间如何通信呢,如何来相互传递信息呢

2、?当两个或多个进程在访问共享资源时,如何确保它们不会相互妨碍——进程互斥问题;当进程之间存在着某种依存关系时,如何来调整它们运行的先后次序——进程同步问题。生活中的例子:教室座位、打饭窗口;一组同学做大作业。上述问题是否也适用于线程?2.3.1进程间通信方式低级通信:只能传递状态和整数值(控制信息)信号量(semaphore)信号(signal)高级通信:能够传送任意数量的数据共享内存(sharedmemory)消息传递(messagepassing)管道(pipe)能否共享内存单元(变量或缓冲区)?共享内存绝大多数现代的操作系统都提供了相应的方

3、法,来 让各个进程共享它们地址空间当中的某些部分,即共享内存。在共享内存中,可以任意读写和使用任 意的数据结构(缓冲区)。一组进程向共享内存中写,另一组进程从共享内存 中读,通过这种方式实现两组进程间的信息交换。消息传递消息:由若干数据位组成;消息传递:进程之间通过发送和接收消息来交换信息;消息机制由OS来维护,包括定义寻址方式、认证协议、消息的大小等。一般提供两个操作:send(),发送一条消息;receive(),接收一条消息。如果两个任务P和Q想要进行通信,它们需要在两者之间建立一个通信链路;使用send()和receive()交换信息。管

4、道(pipe)管道通信由UNIX首创,由于其有效性,后来的 一些系统相继引入了管道技术;管道通信以文件系统为基础,所谓管道即连接两 个进程之间的一个打开的共享文件,专用于进程 之间的数据通信;发送进程从管道的一端写入数据流,接收进程从 管道的另一端按先进先出的顺序读出数据流;管道的读写操作即为文件操作fwrite/fread,数据 流的长度和格式没有限制。2.3.2进程的互斥进程互斥的产生原因:进程宏观上并发执行,依靠时钟中断来实现微观上轮流执行;访问共享资源。【例子1】后台打印程序(两个进程同时想要访问共享数据)后台程序47share.txt4

5、7share.txt…next_free_slot=in;//7…第一步:进程A中断…next_free_slot=in;//7第二步:进程Bprog.n678file_bwrite“file_b”toitem7next_free_slot++;//8updatein;…8第三步:进程Awrite“file_a”toitem7next_free_slot++;//8updatein;…file_aoutin【例子2】两个进程,读-修改-写进程1进程2tmp1=count;tmp2=count; tmp1++;tmp2=tmp2+2; count=

6、tmp1;count=tmp2;请问:如果在这些进程执行之前,count变量的值为1,那么它最后的结果是多少?进程1进程2tmp1=count;(=1)interrupt...tmp2=count;(=1) tmp2=tmp2+2;(=3) count=tmp2;(=3) tmp1++;(=2) count=tmp1;(=2)情形1进程1进程2tmp2=count;(=1)interrupt...tmp1=count;(=1) tmp1++;(=2) count=tmp1;(=2) tmp2=tmp2+2;(=3) count=tmp2;(=3)

7、情形2进程1进程2tmp1=count;(=1) tmp1++;(=2) count=tmp1;(=2) tmp2=count;(=2) tmp2=tmp2+2;(=4) count=tmp2;(=4)情形3竞争状态(racecondition):两个或多个进程对同一共享数据同时进行读写操作,而最后的结果是不可预测的,它取决于各个进程具体运行情况。解决之道:在同一时刻,只允许一个进程访问该共享数据,即如果当前已有一个进程正在使用该数据,那么其他进程暂时不能访问。这就是互斥的概念。竞争状态问题的抽象描述把一个进程在运行过程中所做的事情分为两类:进程

8、内部的计算或其他的一些事情,肯定不会 导致竞争状态的出现;对共享内存或共享文件的访问,可能会导致竞 争状态的出现。我们把完成这类事情的那

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

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

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