linux IPC对象的持续性的说明

我们在做进程间通信开发时,要了解管道,FIFO,消息队列,信号量,共享内存等类型的对象在系统中存在多少时间,这个就是IPC对象的持续性(persistence)。
一般有三种持续性,按由低到高依次为随进程持续的IPC(进程维护),随内核持续的IPC(内核维护),随文件系统持续的IPC(文件系统维护)。

1.随进程持续的(process-persistent)IPC对象(进程维护)会一直存在到打开着该对象的最后一个进程关闭该对象为止,如管道和FIFO。
2.随内核持续的(kernel-persistent)IPC(内核维护)会一直存在到系统重启内核自举或显示删除该对象为止,如System V消息队列,信号量,共享内存;Posix消息队列,信号量,共享内存至少是随内核持续的,也可以随文件系统持续。
3.随文件系统持续的(filesystem-persistent)IPC(文件系统维护)即使系统重启内核自举也会一直存在,必须显示的删除该对象,如Posix消息队列,信号量,共享内存采用文件映射即是随文件系统持续的。


总结如下:

IPC 持续性
管道
FIFO
随进程
随进程
Posix互斥锁
Posix条件变量
Posix读写锁
fcntl 记录上锁
随进程
随进程
随进程
随进程
Posix消息队列
Posix有名信号量
Posix无名信号量(基于内存)
Posix共享内存区
随内核
随内核
随进程
随内核
System V消息队列
System V信号量
System V共享内存区
随内核
随内核
随内核
TCP套接字
UDP套接字
Unix域套接字
随进程
随进程
随进程


注:上述表格没有Posix IPC的随文件系统持续,是因为这种方式一般很少使用,意义不大。

猜你喜欢

转载自www.cnblogs.com/wudymand/p/9226493.html