System V 和 POSIX

下表列出了System V IPC和POSIX IPC之间的差异.

SYSTEM VPOSIX
AT& T介绍(1983)IPC设施的三种新形式,即消息队列,共享内存和信号量.IEEE规定的便携式操作系统接口标准,用于定义应用程序编程接口(API). POSIX涵盖IPC的所有三种形式
SYSTEM V IPC涵盖所有IPC机制,即管道,命名管道,消息队列,信号,信号量和共享内存.它还包括套接字和Unix域套接字.几乎所有的基本概念都与System V相同.它只与接口不同
共享内存接口调用shmget(),shmat(),shmdt(),shmctl()共享内存接口调用shm_open(),mmap(),shm_unlink()
消息队列接口调用msgget (),msgsnd(),msgrcv(),msgctl()消息队列接口调用mq_open(),mq_send(),mq_receive(),mq_unlink()
信号量接口调用semget(),semop(),semctl()信号量接口调用命名信号量sem_open(),sem_close(),sem_unlink(),sem_post(),sem_wait(),sem_trywait(),sem_timedwait(),sem_getvalue()未命名或基于内存的信号量sem_init(), sem_post(),sem_wait(),sem_getvalue(),sem_destroy()
使用密钥和标识符用于识别IPC对象的fiers.使用名称和文件描述符来识别IPC对象
NAPOSIX消息队列可以使用select(),poll()和epoll API进行监控
提供msgctl()调用提供函数(mq_getattr()和mq_setattr())访问或设置属性11. IPC  -  System V& POSIX
NAMulti - 安全.包括线程同步函数,如互斥锁,条件变量,读写锁等.
NA为消息队列提供一些通知功能(例如mq_notify())
需要系统调用,如shmctl(),命令(ipcs,ipcrm)来执行状态/控制操作.可以使用系统检查和操作共享内存对象调用如fstat(),fchmod()
a的大小System V共享内存段在创建时是固定的(通过shmget())我们可以使用ftruncate()来调整底层对象的大小,然后重新创建使用munmap()和mmap()(或特定于Linux的mremap())进行映射