OS2013UNIT3进程通信.ppt

  1. 1、本文档共66页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Unit 3 进程通信    在多进程并发系统中有许多进程和线程并发运行着,它们之间既有竞争,又有合作,呈现出非常复杂的关系,管理上稍有缺陷或漏洞,就会出现错误和混乱,导致系统效率的下降,严重的会导致系统局部死锁,甚至全系统崩溃。进程管理的主要任务就是制定出一定的规则,提供有效的通信机制和同步机制,使得进程的并发运行和线程的并发执行都是有序的、可靠的及可控的。进程通信解决的是进程及线程之间的相互沟通问题,进程同步解决的是进程及线程执行时序的协调和控制问题。进程的通信和同步管理通常被认为是操作系统中最复杂的管理工作。    本章论述进程通信问题,进程同步问题在下一章论述。 内容  ●进程通信概述  ●管道  ●信号  ●共享内存  ●消息队列  ●套接字       §1 进程通信概述 ◆什么是进程通信 ◆POSIX PIC 通信标准    通信就是交互,就是相互之间传递信息,这是人的基本需求。在现代社会里,一个人如果不与他人交互就无法生存。进程作为人的发明,自然脱离不了人的习性,也有通信需求。如果进程之间不进行任何通信,那么进程所能完成的任务就要大打折扣。合作进程之间需要通信,父子进程之间也需要通信。而线程间的通信则需要更多。由于一个进程通常包括多个线程,这多个线程之间因资源共享自然地就存在一种合作关系。这种合作关系虽然可以表现为相互独立,但更多的时候是互相交互,这就是通信。就像舞台上的多个演员(线程),他们之间是一种合作关系,共同将戏演好。虽然这些演员在舞台上的时候可以各演各的,没有交互,但他们更多的时候会进行话语对白和肢体接触等交互活动。    从多线程模式角度,由于进程的执行实体是线程,而每个进程至少有一个线程,进程通信不仅包括不同进程的线程之间的通信,更多的是同一进程内的多个线程之间的通信。所以,进程通信的实质乃是线程通信。    进程通信的规范化首先是由UNIX引出的,UNIX将其称之为IPC(Inter-Process Communication进程间通信)。对UNIX发展作出重大贡献的两大主力——ATT的贝尔实验室和加州大学伯克利分校,在IPC方面的研究侧重点有所不同,前者形成的System V IPC标准重点在本地通信;而后者形成的BSD IPC标准则侧重于远程通信。此后,由于UNIX版本的多样性,为了统一标准,IEEE(电子电气工程师协会)开发了一个独立的UNIX标准——   ANSI UNIX,并称为POSIX(计算机环境可移植性操作系统界面)。现有的大部分UNIX流行版本都遵循了POSIX标准。    POSIX IPC主要包括以下几种通信机制:    ■管道(pipe)。这是利用共享文件实现进程间通信的机制,包括匿名管道和命名管道。前者可用于具有亲缘关系的线程间的通信;后者除了具有匿名管道的功能外,则还允许无亲缘关系的线程间的通信。    ■信号(signal)。信号是一种通知性的通信方式。当某种事件发生时用于向接收者发出通知,接收者可根据需要做出某种响应,也可以不予理睬。    ■信号量(semaphore)。信号量较之信号更为可靠和有效,但其主要是作为任意线程之间的同步工具。    ■共享内存。共享内存是多个线程可以共同访问的一块内存空间,是最快的通信方式。但它不具备同步机制,所以往往需要编程人员使用信号量或锁与它配合。    ■套接字(socket)。主要用来实现网络上不同节点上的进程之间的通信。    ■消息队列。消息(message)是一种有结构的数据,消息队列是由多个消息组成的链表。与信号相比,消息队列能承载更大的信息量;与管道相比,消息队列克服了管道只能承载无格式字节流以及缓冲区大小受限的缺点。所以消息队列是一种比较完备的通信机制。 §2 管 道 ◆匿名管道 ◆命名管道    管道(pipe)是UNIX早期的一个重要通信机制。其思想是在内存中创建一个共享文件,使通信双方利用这个共享文件来传递信息。由于这种通信方式具有数据只能从写入端写入且只能从读出端读出的单向传送数据的特点,所以这个作为传递信息的共享文件就称之为“管道”。    管道有匿名管道和命名管道之分。 2.1 匿名管道    匿名管道具有以下特点:    ①匿名管道是半双工的,数据只能向一个方向流动;要求双向通信时,需要建立两个匿名管道。    ②匿名管道只能用于具有亲缘关系的线程之间的通信,如同一进程内的线程之间、父进程内的线程与子进程内的线程之间、兄弟进程内的线程之间。    ③匿名管道对于管道两端的通信者而言,就是一个文件,但它不是普通文件,而是一个只存在于内存中的特殊文件,实际上是一片共享的内存缓冲区。    ④一个写者向管道中写入的数据被管道另一端的读者读出。写入的数据每次都添加在管道的末尾,并且

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档