深刻理解Linux进程间通信(IPC)
来源:互联网 发布:自学书法 知乎 编辑:程序博客网 时间:2024/05/01 07:54
深刻理解Linux进程间通信(IPC) | ||||
郑彦兴 (mlinux@163.com) 一个大型的应用系统,往往需要众多进程协作,进程(Linux进程概念见附1)间通信的重要性显而易见。本系列文章阐述了Linux环境下的几种主要进程间通信手段,并针对每个通信手段关键技术环节给出详细实例。为达到阐明问题的目的,本文还对某些通信手段的内部实现机制进行了分析。 linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基于套接口(socket)的进程间通信机制。Linux则把两者继承了下来,如图示: 其中,最初Unix IPC包括:管道、FIFO、信号;System V IPC包括:System V消息队列、System V信号灯、System V共享内存区;Posix IPC包括: Posix消息队列、Posix信号灯、Posix共享内存区。有两点需要简单说明一下:1)由于Unix版本的多样性,电子电气工程协会(IEEE)开发了一个独立的Unix标准,这个新的ANSI Unix标准被称为计算机环境的可移植性操作系统界面(PSOIX)。现有大部分Unix和流行版本都是遵循POSIX标准的,而Linux从一开始就遵循POSIX标准;2)BSD并不是没有涉足单机内的进程间通信(socket本身就可以用于单机内的进程间通信)。事实上,很多Unix版本的单机IPC留有BSD的痕迹,如4.4BSD支持的匿名内存映射、4.3+BSD对可靠信号语义的实现等等。 图一给出了linux 所支持的各种IPC手段,在本文接下来的讨论中,为了避免概念上的混淆,在尽可能少提及Unix的各个版本的情况下,所有问题的讨论最终都会归结到Linux环境下的进程间通信上来。并且,对于Linux所支持通信手段的不同实现版本(如对于共享内存来说,有Posix共享内存区以及System V共享内存区两个实现版本),将主要介绍Posix API。 linux下进程间通信的几种主要手段简介:
下面将对上述通信机制做具体阐述。 附1:参考文献[2]中对linux环境下的进程进行了概括说明: 一般来说,linux下的进程包含以下几个关键要素:
进程和线程有时候并不完全区分,而往往根据上下文理解其含义。
郑彦兴,男,现攻读国防科大计算机学院网络方向博士学位。您可以通过电子邮件 mlinux@163.com和他联系。 |
- 深刻理解Linux进程间通信(IPC)
- 深刻理解Linux进程间通信(IPC)
- 深刻理解Linux进程间通信(IPC)
- 深刻理解Linux进程间通信(IPC)
- 深刻理解Linux进程间通信(IPC)
- 深刻理解Linux进程间通信(IPC)
- 深刻理解Linux进程间通信(IPC)
- 深刻理解Linux进程间通信(IPC)
- 深刻理解Linux进程间通信(IPC)
- 深刻理解Linux进程间通信(IPC)
- 深刻理解Linux进程间通信(IPC)
- 深刻理解Linux进程间通信(IPC)
- 深刻理解Linux进程间通信(IPC)
- 深刻理解Linux进程间通信(IPC)
- 深刻理解Linux系统进程间通信(IPC)
- 深刻理解Linux进程间通信(IPC)
- 深刻理解Linux进程间通信(IPC)
- 深刻理解Linux进程间通信(IPC)
- 五种提高 SQL 性能的方法
- theserverside cartoons :) ---
- DBMS_Job包的用法
- Visual Studio .NET中的Web项目和源代码管理集成
- 应用程序设计指南:从 N 层到 .NET
- 深刻理解Linux进程间通信(IPC)
- 漫谈.Net PetShop和Duwamish ADO.NET数据库编程
- 合并排序算法(非递归)
- 麦当劳可以免费添加可乐的!
- session request page
- 汉字转化为拼音
- 用ASP.NET开发Web服务的五则技巧
- Microsoft .NET Pet Shop 3.x: .NET Pet Shop 的设计模式与体系结构
- 探讨嵌入式系统开放源代码的可能性