目录

System V&Posix(System V & Posix)

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

系统五 POSIX
AT&T(1983)推出了三种新形式的IPC设施,即消息队列,共享内存和信号量。 IEEE规定的可移植操作系统接口标准,用于定义应用程序编程接口(API)。 POSIX涵盖了IPC的所有三种形式
SYSTEM V IPC涵盖所有IPC机制,即管道,命名管道,消息队列,信号,信号量和共享内存。 它还包括socket和Unix Domain套接字。 几乎所有基本概念都与系统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对象。 使用名称和文件描述符来标识IPC对象
NA 可以使用select(),poll()和epoll API监视POSIX消息队列
提供msgctl()调用 提供访问或设置属性的函数(mq_getattr()和mq_setattr())11。IPC - System V&POSIX
NA 多线程安全。 涵盖线程同步函数,如互斥锁,条件变量,读写锁等。
NA 为消息队列提供一些通知功能(例如mq_notify())
需要系统调用(如shmctl(),命令(ipcs,ipcrm))来执行状态/控制操作。 可以使用系统调用(例如fstat(),fchmod())检查和操作共享内存对象
System V共享内存段的大小在创建时是固定的(通过shmget()) 我们可以使用ftruncate()调整底层对象的大小,然后使用munmap()和mmap()(或特定于Linux的mremap())重新创建映射。
Pipes.下一篇>
↑回到顶部↑
WIKI教程 @2018