- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
从实践中学嵌入式LINUX操作系统-华清远见
《从实践中学嵌入式 LINUX 操作系统》》
作者:华清远见
第 6 章 进程间通信
Linux
专业始于专注 卓识源于远见
在单任务系统中,任务被线性执行时,不可能被抢占,所以不需要同步机制保护共享资源和临界资源,
而且单任务也不存在数据交换的问题。但对于多任务操作系统来说,上述问题都是存在的。如何保护临界
资源和进行数据交换,都是操作系统需要解决的问题。进程间通信(IPC )就是为了解决这些问题而提出
的特有机制,它们为多任务系统提供了不同进程的通信机制,同时也提供了对于临界资源和共享资源的保
护。
进程间通信的主要目的是实现同一计算机系统内部的相互协作的进程之间的数据共享与信息交换,由
于这些进程处于同一软件和硬件环境下,利用操作系统提供的编程接口,用户可以方便地在程序中实现这
种通信;应用程序间通信的主要目的是实现不同计算机系统中的相互协作的应用程序之间的数据共享与信
息交换,由于应用程序分别运行在不同计算机系统中,它们之间要通过网络之间的协议才能实现数据共享
与信息交换。
Linux 系统的进程通信方式基本上是从 UNIX 平台上的进程通信手段继承而来的。而对 UNIX 发展做
出重大贡献的贝尔实验室及 BSD 在进程间通信方面的侧重点有所不同。前者对 UNIX 早期的进程间通信
手段进行了系统的改进和扩充,形成了“System V IPC”,通信进程局限在单个计算机内;后者则跳过了该
限制,形成了基于套接口(Socket )的进程间通信机制。Linux 则把两者都继承了下来,如图 6.1 所示。
6.1 Linux
其中,最初 UNIX IPC 包括管道、FIFO 、信号;System V IPC 包括 System V 消息队列、System V 信
号灯、System V 共享内存区;Posix IPC 包括 Posix 消息队列、Posix 信号灯、Posix 共享内存区。
对于不同的嵌入式系统,进程间通信的实现方式有所不同,但是基本原理都差不多。对于进程间通信,
主要有两种方式:虚拟内存系统中的进程间通信和 Falt 内存系统中的进程间通信。
μC/OS 是比较典型的 Falt 内存系统,它不支持虚拟内存机制,也没有用户空间和内核空间的区别,实
际上它类似于 Linux 的内核空间,不同任务间可以相互访问,没有不同进程间内存保护机制。所以可以完
全利用 Linux 系统中的同一进程中不同线程的通信机制。由于所有的任务与中断都共享同一地址空间,所
以同步机制也与任务间通信在同一空间中实现,使这两种机制的相互替换成为可能。
Windows 作为一种复杂的多任务系统,也提供了多种进程间通信方式,包括文件映射、共享内存、匿
名管道、命名管道、邮件槽、剪贴板、动态数据交换(DDE )、对象链接与嵌入(OLE )、动态链接库(DLL )、
远程过程调用(RPC )、NetBios 函数、Sockets、 WM_COPYDATA 消息。
本章将阐述 Linux 系统是如何实现进程间通信的。
文档评论(0)