专栏首页前端之旅操作系统学习笔记-7:进程通信

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

进程通信指的是进程之间的信息的传播和交换。

1. 共享存储

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

1.1 基于数据结构

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

1.2 基于存储区

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

2. 消息传递

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

2.1 直接通信方式

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

2.2 间接通信方式

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

3. 管道通信

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 操作系统学习笔记-3:初识进程和进程控制

    在 操作系统学习笔记-1:基础概念) 中,我们介绍了与操作系统相关的一些概念,在 操作系统学习笔记-2:体系结构设计和运行机制) 中,我们又介绍了操作系统的结构...

    Chor
  • hexo 中文文章渲染错误的bug解决

    这实际上是在很长一段时间内困扰我的一个 bug,在 hexo s 本地查看 markdown 文章后,会偶发性地出现部分文章渲染错误的情况,

    Chor
  • AJAX 与跨域通信(三):跨域解决方案

    承接上文,继续补充跨域方案:postMessage、location.hash、WebSocket、Nginx 反向代理、Nodejs 中间件代理。

    Chor
  • AP流程总结

    2. 多进程之间使用消息队列通信,把进程ID设置成消息类型可以保证进程只拿到属于本进程的回包;

    awk
  • 如何让Java应用成为杀不死的小强?(上篇)

    项庄舞剑意在沛公,而咱们上期主要借助应用服务器 Resin 的源码,体验了一次 JMX 的真实应用。鉴于 9012 年的很多攻城狮从未接触过 Resin 应用服...

    一猿小讲
  • 从CPU管理到进程的引入

    为什么要管理CPU,这是因为在“上古时代”,CPU是计算机硬件之中最昂贵的资源。因此提高CPU利用率是很有必要的。我们知道只要给CPU的PC一个地址,CPU就能...

    zy010101
  • C语言中%d,%p,%u,%lu等都有什么用处

    %d   有符号10进制整数(%ld 长整型,%hd短整型 ) %hu   无符号短整形(%u无符号整形,%lu无符号长整形) %i    有符号10进制整数 ...

    黑泽君
  • 13(守护进程)

    守护进程是一种纯粹的后台进程,与运行前环境完全隔离,包括未关闭的文件描述符、控制终端、会话、进程组、工作目录以及文件创建掩码等 很多守护进程是父进程 for...

    提莫队长
  • Linux进程关系

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! Linux的进程相互之间有一定的关系。比如...

    Vamei
  • Android跨进程通信IPC之1——Linux基础

    由于Android系统是基于Linux系统的,所以有必要简单的介绍下Linux的跨进程通信,对大家后续了解Android的跨进程通信是有帮助的,本篇的主要内容如...

    隔壁老李头

扫码关注云+社区

领取腾讯云代金券