操作系统学习笔记-7:进程通信

栏目: IT技术 · 发布时间: 5年前

内容简介:进程 A 无法直接访问进程 B 的地址空间,反之亦然,所以提供一块可以供 AB 访问的共享空间。这块共享空间属于互斥的临界资源。各个进程共用某些数据结构,借以实现进程间的信息交换。比如共用一个长度为 10 的数组。这种共享速度慢、限制多,属于低级通信方式。

操作系统学习笔记-7:进程通信

进程 A 无法直接访问进程 B 的地址空间,反之亦然,所以提供一块可以供 AB 访问的共享空间。这块共享空间属于互斥的临界资源。

1.1 基于数据结构

各个进程共用某些数据结构,借以实现进程间的信息交换。比如共用一个长度为 10 的数组。这种共享速度慢、限制多,属于低级通信方式。

1.2 基于存储区

在内存中划出一块共享存储区,各个进程通过对这个共享区的读写交换信息、实现通信。数据的形式、存放位置都由进程控制,而不是操作系统。相比之下,这种共享方式速度更快,属于高级通信方式。

2. 消息传递

进程通过操作系统提供的“发送消息/接受消息”两个原语进行数据交换,而数据交换的基本单位是一个格式化的消息,该消息包括消息头和消息体。消息头包括:发送进程 ID,接受进程 ID,消息类型,消息长度等格式化的信息。

2.1 直接通信方式

发送进程发送消息之前,首先申请一个缓冲区,之后把消息复制到缓冲区,再通过发送原语把缓冲区发送给接受进程,缓冲区首先到达接受进程的消息缓冲队列队尾。接受进程通过接受原语读取队列消息,并复制到本地变量。

2.2 间接通信方式

也叫做信箱通信。发送进程发送的消息首先到达一个消息容器,接受进程再从消息容器中接受消息。

3. 管道通信

管道又名 pipe 文件,其实就是在内存中开辟一个大小固定的缓冲区。它采用的是半双工通信,一个时间段内只能实现单向的传输。另外,管道也是互斥的临界资源。管道写满的时候,写进程会被阻塞,直到读进程把数据读走;而管道空的时候,读进程会被阻塞,直到写进程把数据读入。这里要注意,管道与我们之前说过的生产者、消费者使用的缓冲区不同。 写会一次性写完,读会一次性读完,不存在写一下、读一下的情况


以上所述就是小编给大家介绍的《操作系统学习笔记-7:进程通信》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

微信小程序

微信小程序

牛建兵 / 清华大学出版社 / 2017-9-1 / 49.00

微信小程序从满城风雨到掀起创业热潮,再到一直不断地迭代更新,其每一次更新都会增加新能力,让使用变得越来越方便,同时也增加一批进军小程序的队伍。微信小程序作为现在互联网中的热点,它给创业者、投资者、程序员带来了福音。对创业者来说,小程序能大大降低他们的创业成本,同时也降低了投资者的投资风险。 本书注重实战,通过具体的案例分析,讲解微信小程序的市场状况、人员分工、小程序需求设计、小程序体验设计、......一起来看看 《微信小程序》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具