此图清楚的展现了Linux的IPC机制。

其中,最初Unix IPC包括:管道、FIFO、信号;

System V IPC包括:System V消息队列、System V信号灯、System V共享内存区;

Posix IPC包括: Posix消息队列、Posix信号灯、Posix共享内存区。

Posix为:由于Unix版本的多样性,电子电气工程协会(IEEE)开发了一个独立的Unix标准,这个新的ANSI Unix标准被称为计算机环境的可移植性操作系统界面(POSIX)。现有大部分Unix和流行版本都是遵循POSIX标准的,而Linux从一开始就遵循POSIX标准;

BSD并不是没有涉足单机内的进程间通信(socket本身就可以用于单机内的进程间通信)。事实上,很多Unix版本的单机IPC留有BSD的痕迹,如4.4BSD支持的匿名内存映射、4.3+BSD对可靠信号语义的实现等等。BSD与System V是敌对关系。System V是Unix操作系统最早的商业发行版之一。它最初由AT&T(American Telephone & Telegraph)开发,最早在1983年发布。System V主要发行了4个版本,其中SVR4(System V Release 4)是最成功的版本。

linux下进程间通信的几种主要手段简介:

  1. 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;
  2. 信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数);
  3. 报文(Message)队列(消息队列):消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。
  4. 共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。
  5. 信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。
  6. 套接口(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和System V的变种都支持套接字。

Linux内核 之 IPC概述相关推荐

  1. Linux内核启动过程概述

    Hi!大家好,我是CrazyCatJack.今天给大家带来的是Linux内核启动过程概述.希望能够帮助大家更好的理解Linux内核的启动,并且创造出自己的内核^_^ Linux的启动代码真的挺大,从汇 ...

  2. linux 内核模型,The Linux Kernel Device Model - Overview -- Linux 内核设备模型概述

    --------------------------------------------------------------------------------------------------- ...

  3. linux内核 RCU机制概述

    简介 RCU(Read-Copy Update)是数据同步的一种方式,在当前的Linux内核中发挥着重要的作用.RCU主要针对的数据对象是链表,目的是提高遍历读取数据的效率,为了达到目的使用RCU机制 ...

  4. Linux内核配置解析 - 概述(基于ARM64架构)

    1. 前言 对刚接触Linux kernel的同学来说,遇到的第一个问题就是:我该从哪里入手?. 话说Linux kernel的打开方式是多种多样的:从简单的设备驱动入手:从源代码的目录结构入手:从k ...

  5. Linux内核IPC命名空间 (一)(用户层信号量机制实现)

    Linux内核IPC机制 在Linux内核中IPC全名称之为进程间通信机制,共分为多种,如下: 信号量 共享内存 消息队列 管道 信号 套接字通信 每一种实现都有其独特特性,一下博客中我们会讲解其中的 ...

  6. Linux内核学习(七):linux kernel内核启动(一):概述篇

    Linux内核学习(七):linux kernel内核启动(一):概述篇 这一篇让我们来大致的了解一下Linux内核的启动过程 这篇文章不涉及源码,重在让你知道这个linux内核的启动过程,源码详细的 ...

  7. linux 内核移植和根文件系统的制作【转载】

    原文地址:http://www.cnblogs.com/hnrainll/archive/2011/06/09/2076214.html 1.1 Linux内核基础知识 在动手进行Linux内核移植之 ...

  8. 简述arm linux内核启动流程,Linux内核启动过程和Bootloader(总述)

    1.Linux内核启动过程概述 一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader),Linux 内核,文件系统,应用程序.其中 Bootloader是系统启 ...

  9. Linux内核启动过程和Bootloader(总述)

    1.Linux内核启动过程概述     一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader),Linux 内核,文件系统,应用程序.其中 Bootloader ...

最新文章

  1. 1.4.3 编写自己的模块和包
  2. shell sed 替代1
  3. 详解飞书新功能,如何让开发者“爽”起来?
  4. image.getSubimage(x, y, width, height)函数解析
  5. python查找excel中重复数据_python实现查找excel里某一列重复数据并且剔除后打印的方法...
  6. 电脑出现"该内存不能为read、written "的完全解决方案
  7. delphi编程实现免杀捆绑
  8. 小程序用户登录权限设置
  9. 解决docker删除镜像时image is referenced in multiple repositories
  10. JS小数取整以及保留小数点后两位
  11. 通过IP查找ip所对应网卡名
  12. Kafka组件connector使用详解
  13. 多表关联查询(Oracle)
  14. 信号的基本概念及分类
  15. android入门之broadcast
  16. 90后都会选择的购车模式“网上购车平台一成首付”
  17. mybatis 实体嵌套查询
  18. 必不可少的数学基础-单调有界定理
  19. Python实现SSA智能麻雀搜索算法优化支持向量机回归模型(SVR算法)项目实战
  20. 什么是PSAM卡、SAM卡、SIM卡

热门文章

  1. 华为云讲解:2. Istio Pilot 与服务发现
  2. itutorgroup:在线教育与传统线下教育的七大区别你知多少?
  3. Mac OS X 10.9.5系统下创建quick3.3final项目出现问题
  4. 多思计算机组成原理实验八:简单模型机实验
  5. android线上内存监控_如何在Android上监控(和减少)您的数据使用情况
  6. winrar解压缩中文文件夹乱码的最简单解决办法
  7. Hexo中添加音乐(列表)、视频的代码
  8. 网易游戏岗位大揭秘(在网易做游戏美术设计师是种什么体验?)
  9. RESTful和SOAP比较
  10. html判断是否节假日,C# 判断是否是节假日