1.IPC 工具的分类1.通信1.数据传输工具区分这些工具的关键因素是写入和读取的概念。为了进行通信,一个进程将数据写入IPC工具中,另外一个进程从中读取数据。这些工具要求在用户内存和内核内存之间进行2次数据传输。一次传输是在写入的时候从用户内存到内核内存,另外一次传输是在读取的时候从内核内存到用户内存。1.字节流 : 管道,FIFO, 以及流 socket2.消息 : System V 消息队列,Posix 消息队列,以及数据报 socket3.伪终端 数据传输工具和共享内存之间的差别:1.尽管一个数据传输工具可能会存在多个读取者,但读取操作是具有破坏性的。读取消耗数据,其他进程将无法获取所消耗的数据。2.读取者和写者进程之间的同步是原子的。如果一个读取者试图从一个当前不包含数据的数据传输工具中读取数据,那么在默认情况下读取操作会阻塞直至一些进程向该工具写入了数据。2.共享内存共享内存允许进程通过将数据放到由进程间共享的一块内存中以完成信息的交换。(内核通过将每个进程中的页表条目指向同一个RAM分页来实现这一功能)。一个进程可以通过将数据放到共享内存块中使得其他进程读取这些数据。由于通信无需系统调用以及用户内存和内核内存之间的数据传输,因此共享内存非常快。共享内存包括:System V 共享内存,Posix 共享内存,以及内存映射。注意点:1.尽管共享内存的通信速度更快,但速度上的优势是用来弥补需要对共享内存上发生的操作进行同步的不足的。当一个进程正在更新共享内存中的一个数据结构时,另一个进程就不应该试图修改这个数据结构。在共享内存中,通常使用信号量作为同步方法。2.放入共享内存的数据对所有共享这块内存的进程可见。2.同步1.信号量一个信号量是由内核维护的整数,其值永远不会小于0.2.文件锁文件锁是设计用来协调操作同一文件的多个进程的动作的一种同步方法。它也可以用来协调对其他资源的访问。文件锁分为2类:读锁和写锁。3.互斥体和条件变量3.信号2.IPC 工具比较1.功能:数据传输工具提供了读取和写入操作。其他应用程序设计更适合采用共享内存方式。2.网络通信1.Unix domain 同一主机2.Internet domain 不同系统3.可移植性System V 比 Posix 移植性更好4.可访问性5.持久性持久性指的是,一个 IPC 工具的生命周期。1.进程持久性管道,FIFO以及 socket 是进程持久的 IPC 工具2.内核持久性System V IPC 和 Posix IPC3.文件系统持久性具备文件持久性的 IPC 对象会在系统重启时保持其中的信息,唯一具备文件持久的是内存映射文件的共享内存6.性能

43.Linux/Unix 系统编程手册(下) -- 进程间通信简介相关推荐

  1. linux/unix系统编程手册11-15

    title: linux/unix编程手册-11_15 date: 2018-05-27 11:53:07 categories: programming tags: tips linux/unix编 ...

  2. Linux/Unix系统编程手册 第三章:系统编程概念

    本章介绍系统编程的基础概念和一些后续章节用到的函数及头文件,并说明了可移植性问题. 系统调用是受控的内核入口,通过系统调用,进程可以请求内核以自己的名义去执行某些动作,比如创建子进程,执行I/O操作, ...

  3. Linux/UNIX系统编程手册gg

    Linux系统: "所见皆文件" 一个比较好的博客 一.Linux基础操作 Linux系统目录: bin:存放二进制可执行文件 boot:存放开机启动程序 dev:存放设备文件: ...

  4. Linux/Unix系统编程 五:进程

    进程是一个可执行程序的实例. 一.linux系统进程管理 1.进程管理的作用 判断机器健康状态 查看系统中所有进程 杀手进程 2.查看系统进程 1.ps -aux BSD操作系统格式: TTY说明: ...

  5. Unix系统编程()信号处理器简介

    信号处理器简介 信号处理器程序(也称为信号捕捉器)是当指定信号传递给进程时将会调用的一个函数.这里会学习信号处理器的基本原理,后面将继续学习. 调用信号处理器程序,可能会随时打断主程序流程:内核代表进 ...

  6. Linux系统编程手册-源码的使用

    Linux系统编程手册-源码的使用 转自:http://www.cnblogs.com/pluse/p/6296992.html 第三章后续部分重点介绍了后面章节所要使用的头文件及其实现,主要如下: ...

  7. Linux/Unix系统下nginx+php安装简明教程

    本文转载自Linux/Unix系统下nginx+php安装简明教程,请保留转载信息~ 一.安装nginx: 1. 安装pcre库,nginx的rewrite模板需用到pcre库: mkdir -p / ...

  8. 在Linux/Unix系统下用iconv命令处理文本文件中文乱码问题

    iconv命令是运行于linux/unix平台的文件编码装换工具.当我们在linux/unix系统shell查看文本文件时,常常会发现文件的中文是乱码的,这是由于文本文件的编码与当前操作系统设置的编码 ...

  9. 5w字总结 Unix系统编程学习笔记(面试向)(Unix环境高级编程/Unix环境程序设计)

    文章目录 一.计算 C语言的数据表示与处理 计算 C语言的基本运算操作 内存表和符号表 类型转换 函数类型的分析 指令 复合指令 句法 函数 函数激活(Activation Record) 函数激活定 ...

  10. ①Linux简明系统编程(嵌入式公众号的课)---总课时12h

    10.09 注意:这个是Linux高级编程的简明教程,是Linux应用程序的开发,而不是底层程序的开发. 内容是关于操作系统和网络编程的吗? Linux简明系统编程 〇.课程思维导图 〇.会用到的头文 ...

最新文章

  1. mysql多实例(多个配置文件方式)
  2. CEO 赠书 | 决策是一个技术活,如何做「对」的事?
  3. mxGraph实现按住ctrl键盘拖动图形实现复制图形功能
  4. Requests获取连接的IP地址
  5. netbeans 9_NetBeans 9抢先体验
  6. TP5:验证器的封装——5
  7. python期望输出隐藏_【归纳综述】马尔可夫、隐马尔可夫 HMM 、条件随机场 CRF 全解析及其python实现...
  8. MVC的Controller-Action布局:单独的创建/编辑页面还是创建/编辑/查看一体的页面?...
  9. PHP三级联动视频教程,PHP教程:thinkPHP实现的省市区三级联动功能示例
  10. wxpython日期控件_使用wxpython控件在面板中的位置
  11. 在西安参加Java培训该怎么学习?
  12. 使用计算机软件签什么合同,软件使用许可有哪些种类,签软件使用许可合同注意事项...
  13. 创业感悟:对未来越有信心,对现在就越有耐心
  14. 【bzoj1050】 旅行comf
  15. 踩坑日志:go并发读取文件
  16. 一顿操作猛如虎,3000 行代码重构成 15 !
  17. activeMQ基础学习和SpringBoot整合activeMQ案例
  18. 怎样在iPhone、iPad上的Safari浏览器中快速关闭所有标签页?
  19. ant Design 表单以及表单验证
  20. 微博为何做绿洲?社交化、生活化和垂直化

热门文章

  1. iRecognizer号码扫描开发实录
  2. 从源码角度深入理解LayoutInflater
  3. caffe源代码分析--math_functions.cu代码研究
  4. R语言实现常用的5种分析方法(主成分+因子+多维标度+判别+聚类
  5. 如何使用 ggplot2 ?
  6. 送书《数据库系统概念》,送课,SQL必备!!
  7. 精选| 2017年12月R新包推荐
  8. c#类 对象 构造函数 析构函数——面向对象
  9. php之$_SESSION的理解
  10. Insert Delete GetRandom O(1)