Just enjoy programming

linux 进程间通信综述

linux进程间通信主要分为以下4个领域
(1)消息传递(管道,FIFO,消息队列)
(2)同步(互斥锁,条件变量,读写锁,信号量)
(3)共享内存区(匿名共享内存区,有名共享内存区)
(4)过程调用(Solaris门,Sun RPC)


linux进程间的信息共享可以分为
(1) 基于文件系统的共享
(2) 基于内核的共享
(3) 基于共享内存区的共享


IPC对象的持续性
(1)随进程间持续的IPC对象一直存在到打开着该对象的最后一个进程关闭该对象的最后一个进程关闭该对象为止。
(2)随内核持续的IPC对象一直存在到内核重新自举或显式删除该对象为止。
(3)随文件系统持续的IPC对象一直存在到显示删除该对象为止。即使系统自举了,该对象还是存在的。


IPC类型                                       持续性
管道                                           随进程
FIFO                                          随进程

Posix互斥锁                                 随进程
Posix条件变量                              随进程
Posix读写锁                                 随进程
fcntl记录上锁                                随进程

Posix消息队列                              随内核
Posix有名信号量                           随内核
Posix基于内存的信号量                   随进程
Posix共享内存区                           随内核

System V消息队列                        随内核
System V信号量                           随内核
System V共享内存区                     随内核

TCP套接字                                  随进程
UDP套接字                                  随进程
Unix域套接字                               随进程






名字空间:
当两个或多个无亲缘关系的进程使用某种类型的IPC对象来彼此交换信息时,该IPC对象必须有一个某种形式的名字或者标识符,这样其中一个进程(往往是服务器)可以创建该IPC对象,其余进程则可以指定同一个IPC对象。

IPC类型                        用于打开或创建IPC的名字空间                IPC打开后的标识
管道                                     没有名字                                      描述符
FIFO                                    路径名                                         描述符

Posix互斥锁                          没有名字                                      pthread_mutex_t指针
Posix条件变量                       没有名字                                      pthread_cond_t指针
Posix读写锁                          没有名字                                      pthread_rwlock_t指针
fcntl记录上锁                        路径名                                         描述符

Posix消息队列                       Posix IPC名字                              mqd_t值
Posix有名信号量                    Posix IPC名字                              sem_t指针
Posix基于内存的信号量            没有名字                                     sem_t指针
Posix共享内存区                    Posix IPC名字                              描述符


System V消息队列                key_t键                                       System V IPC标识符
System V 信号量                  key_t键                                       System V IPC标识符
System V共享内存区              key_t键                                      System V IPC 标识符

门                                      路径名                                         描述符
sun RPC                             程序/版本                                     RPC句柄

TCP套接字                            IP地址与TCP 端口                         描述符
UDP套接字                           IP地址与UDP端口                          描述符
Unix域套接字                        路径名                                        描述符  

posted on 2011-07-04 09:58 周强 阅读(10725) 评论(3)  编辑 收藏 引用 所属分类: linux

评论

# re: linux 进程间通信综述 2011-07-06 20:59 十三

这篇文章的阅读率好高啊~~七千多~~~  回复  更多评论   

# re: linux 进程间通信综述 2011-07-06 21:35 周强

@十三
呵呵  回复  更多评论   

# re: linux 进程间通信综述 2011-07-24 01:17 大姐

真的点击率很高啊。。。。什么情况,我也顶一个,周末愉快哈~~~  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理