linux进程间通信

ipc对象的持续性:

1.随进程持续:ipc对象一直存在到打开该对象的最后一个进程关闭该对象为止。例如管道和FIFO

2.随内核持续:ipc对象一直存在到内核重新自举或者显示删除该对象为止。例如system v的消息队列、信号量和共享内存。Posix的消息队列、信号量和共享内存必须至少是随内核持续的,但也可以是随文件系统持续的。

3.随文件系统持续:ipc对象一直存在到显式删除该对象为止,即使内核重新自举,该对象还是保持其值。Posix的消息队列、信号量和共享内存如果是使用映射文件实现的,那么它们就是随文件系统持续的。

 

system v和posix区别:

历史:UNIX两大贡献者贝尔实验室和BSD,在进程之间通信侧重不同,前者基于内核对进程之间的通信手段进行了改进,形成了“System V IPC”,而后者则是基于网络形成了套接字。而POSIX则是IEEE制定的标准,目的是为运行在不同操作系统上的软件提供统一的接口,实现者则是不同的操作系统内核开发人员。

效率:在信号量这种常用的同步互斥手段方面,POSIX在无竞争条件下是不会陷入内核的,而SYSTEM V则是无论何时都要陷入内核,因此性能稍差。

其它:POSIX的sem_wait函数成功获取信号量后,进程如果意外终止,将无法释放信号量,而System V则提供了SEM_UNDO选项来解决这个问题。因此,相比而言,后者更加可靠。多线程中使用的基本是POSIX标准提供的接口函数,而多进程则是基于System V

posted @ 2017-10-16 10:50  哈利波波特  阅读(18)  评论(0)    收藏  举报