原因

每个进程有自己独立地地址空间。在操作系统和硬件的地址保护机制下,进程无法访问其他进程的地址空间,所以必须借助于操作系统的系统调用函数实现进程之间的通信。

进程通信的主要方式

(1)共享内存区。通过系统调用创建共享内存区。多个进程可以(通过系统调用)连接同一个共享内存区,通过访问共享内存区实现进程之间的数据交换。使用共享内存区时需要利用信息量解决同步互斥问题。
(2)消息传递。通过发送/接收消息(两个系统调用)来实现进程之间的通信。当进程发送时,系统将消息从用户缓冲区复制到内核中的消息缓冲区,然后将消息缓冲区挂入消息队列。进程发送的消息保持在消息队列中,直到被另一进程接收。当进程接收消息时,系统从消息队列中解挂消息缓冲区,将消息从内核的消息缓冲区中恢复到用户缓冲区,然后释放消息缓冲区。
(3)管道系统。管道是先进先出的信息流,允许多个进程向管道写入数据,允许多个进程从管道读出数据。在读/写过程中,操作系统保证数据的写入顺序和顺序是一致的。(即发送数据和受到的数据在组织上是一致的,如:发送asd,收到asd,不会收到乱序的das等)进程通过读/写管道文件或者管道设备实现彼此的通信。
(4)共享文件。利用操作系统提供的文件共享功能实现进程之间的通信。这个时候,也需要信号量来解决文件共享操作中的同步和互斥问题。

操作系统-为什么进程之间的通信必须借助操作系统内核功能?相关推荐

  1. Linux 进程及进程之间的通信机制——管道

    参考: LInux C编程从初学到精通 电子工业出版社 Linux 进程 Linux 进程简介 Linux是一个多用户多任务的操作系统,多用户是指多个用户可以在同一时间使用同一台计算机系统:多用户是指 ...

  2. 同一主机的多个子进程使用同一个套接字_在操作系统中进程是如何通信的

    这是我在毕业时校招阿里系公司时,终面的面试官问我印象最深的一道题,别问,问就是挂了.要是过了早就忘了 首先了解进程是什么 狭义定义就是,进程是一段程序进行的过程. 广义定义:进程是一个具有一定独立功能 ...

  3. linux:进程之间的通信

    ipc :进程间通信(InterProcess Communication) 1.管道 同一时间是单向的:父读子写,或父写子读  管道中的数据 ,读走就没了  参数是一个整型数的数组,数组的大小是两个 ...

  4. electron 主进程与渲染进程 渲染进程与渲染进程 之间的通信

    主进程与渲染进程之间的通信 这是渲染进程 // 渲染进程执行主进程里面的方法,主进程给渲染进程反馈处理结果 . var sendreplayDom=document.querySelector('#s ...

  5. python之并发编程-进程之间的通信

    进程之间的通信 互斥锁 进程之间数据不共享,但共享同一套文件系统,或同一个打印终端是没有问题的.但共享导致了竞争,若不加以控制就会造成错乱.如下: from multiprocessing impor ...

  6. Python 中的多进程(进程之间的通信)

    文章目录 在进程之间共享数据 共享内存 服务器进程 进程之间的通信 队列 管道 这篇文章将会讲解在 Python 中使用 多进程模块时在进程之间共享数据和消息传递的概念. 在多处理中,任何新创建的进程 ...

  7. linux进程间的通信实验,linux实验进程之间的通信.doc

    院 系: 计算机学院 实验课程:linux内核设计与实现 实验项目:进程之间的通信 指导老师:冯刚 开课时间: 2010 - 2011 年度第 2 学期 专 业:计算机科学与技术(师范) 班 级:2班 ...

  8. python 与别的程序通信_《Python》进程之间的通信(IPC)、进程之间的数据共享、进程池...

    一.进程间通信---队列和管道(multiprocess.Queue.multiprocess.Pipe) 进程间通信:IPC(inter-Process Communication) 1.队列 概念 ...

  9. 【操作系统】进程间的通信——管道

    进程间的通信-管道 管道 进程间的通信(IPC-Inter-Process Communication)有多种方式,管道是其中最基本的方式. 管道是半双工的,即是单向的. 管道是FIFO(先进先出)的 ...

最新文章

  1. RDKit | 基于随机森林(RF)的机器学习模型预测hERG阻断剂活性
  2. Hbase2.1.0-CDH6.3.2 Region in Transition (永久RIT) 异常解决
  3. 2台电脑一根网线传文件_Iphone 和PC如何共享文件
  4. 计算机翻译辅助工具安卓版,计算机辅助翻译软件
  5. ECLIPSE配置OSGI服务器
  6. linux+分离线程+退出,Linux下线程终止操作.pdf
  7. 有一天我突然接到他的电话
  8. AI在中国,还没到抢切蛋糕的时候
  9. 5.1(统计正数和负数的个数然后计算这些数的平均值)
  10. 汇编语言编写Hello World
  11. unity序列帧动画
  12. IoTP2PGate 两台物联网设备点对点通信快速实现方案
  13. 从URL启动程序:也谈谈旺旺的页面启动
  14. Android进阶(九)APP编程感想
  15. CF1428F-Fruit Sequences
  16. MySQL语句性能优化
  17. 注意力经济当前,如何实现高效阅读?
  18. 你听过最美的网名是什么?
  19. AAPT: error: resource android:attr/lStar not found.
  20. Java Swing 利用 JToggleButton 实现 UI 常见的按钮的特效

热门文章

  1. 常用二极管介绍和整流二极管1N4007参数解读
  2. 常用二极管IN4148和单片机驱动的一些关系
  3. 【转】如何用Word编辑参考文献
  4. 使用rpc(thrift或protobuf)进行前后端交互的若干种方式
  5. 英语拼读规则,不错的英语教学网站
  6. 微型计算机从外观上看可以分为,冯.诺依曼计算机 1.3 计算机系统的组成 计算机系统概述 EDVAC的3个特点:...
  7. 2018 ICPC焦作站 F题 Honeycomb【bfs】
  8. fifa15服务器位置,FIFA15球队战术位置技巧
  9. 工作疑问之windows EFS加密后重装系统
  10. 两台Ubuntu18.04局域网共享文件夹,互相访问