进程间通信笔记(1)—简介
2016-08-02 11:33
309 查看
进程间通信—简介
UNP卷1讲了网络通信,套接字编程的东西。卷2则是进程间通信IPC的内容,也要开始看了!1.概述
IPC即进程间通信,全称(Interprocess Communication)的简称。浏览了一下书的目录结构,首先分为了Posix和System V两大阵营,然后分别介绍了一些通信方式和同步方式,这些以前或多或少都听说过,但没有细究:
1.管道和FIFO
2.Posix消息队列
3.System V消息队列
4.互斥锁、条件变量和读写锁
5.Posix和System V信号量
6.共享内存mmap
7.Posix共享内存区
8.System V共享内存区
这些都是多线程和多进程学习的基础,UNP2这本书也要开始好好学习了。
2.进程、线程与信息共享
进程间共享信息的三种方式,与内核相关,书中给出一个示意图:左边共享文件系统中某个文件的内容,通信的进程需要穿过内核(例如read、write等);中间共享内核中的信息,典型的例子有管道、System V消息队列和信号量,访问共享信息是对内核的一次系统调用;最右就是共享内存区的访问,通信双方设定好了共享内存区就不涉及内核而访问其中数据。
3.持续性问题
分为三种类型:1.进程持续型:例如管道、FIFO,IPC对象一直存在到最后一个进程关闭它。
2.内核持续型:例如消息队列,IPC对象存在到内核自举或显示删除。
3.文件系统持续型:一直存在到显示删除为止。
书中总结了各种IPC对象的持续性,这也是书中要讲的IPC类型,这里先预热一蛤:
IPC类型 | 持续性 |
---|---|
管道 | 随进程 |
FIFO | 随进程 |
Posix互斥量 | 随进程 |
Posix条件变量 | 随进程 |
Posix读写锁 | 随进程 |
fcntl记录上锁 | 随进程 |
Posix消息队列 | 随内核 |
Posix有名信号量 | 随内核 |
Posix基于内存的信号量 | 随进程 |
Posix共享内存区 | 随内核 |
System V消息队列 | 随内核 |
System V 信号量 | 随内核 |
System V 共享内存区 | 随内核 |
TCP 套接字 | 随进程 |
UDP 套接字 | 随进程 |
UNIX 域套接字 | 随进程 |
4.名字空间
跟两个进程间是否有亲缘关系有关,没有亲缘关系的两个进程要进行通讯,两者之间需要标志符或某种形式的名字。这个很好理解,不同的IPC有不同的标识,例如网络套接字就是描述符,Posix消息队列就是mqd_t值,而管道没有名字(匿名管道),因此它只能用于有亲缘关系的进程,例如父子进程间进行通信。5.总结
第一章讲了很多概述性的东西,有些东西还是去具体的章节学习会比较深刻,比如fork函数对IPC的影响等,书中的表格不足以完全说明问题,只能作为参考的手册。书中最后说了本书的四个领域:
1.消息传递
2.同步
3.共享内存
4.过程调用
准备花一些时间着重将前三个好好看看,其实之间的项目中也或多或少的接触过,例如mmap,这一次就系统的看一看吧。
相关文章推荐
- JAVA动态代理用法与实现过程
- jsp标准标签库
- linux 用户和组管理相关的命令
- PHP关于二叉树的前序中序后序遍历操作
- iOS内存错误EXC_BAD_ACCESS的解决方法
- R 速学之篇二
- activity从底部弹出动画
- 极其蛋疼的if else 中的break用法
- 【2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest D】---暑假三校训练
- .net4.6版本前设置window子窗口位置主窗口闪烁
- 大型网站技术架构:核心原理与案例分析—第三章:大型网站核心架构要素
- NoSuchMethodError: redis.clients.jedis.JedisShardInfo.setTimeout(I)V
- 单例模式内存分析
- poj 1258
- 掘金量化回测平台 - 1
- 当效率至关重要时map::operator[]与map.insert之间的选择
- 【LeetCode】 066. Plus One
- Android Storage Access Framework(存储访问框架)
- java网络编程(一)使用TCP协议完成客户端与服务端的数据传递
- 守护进程编程惯例