鍍金池/ 教程/ Linux/ System V & Posix
命名管道
消息隊列
進程創(chuàng)建與終止
信號量
進程組,會話和作業(yè)控制
共享內(nèi)存
進程間通信簡介
子進程監(jiān)視
其他進程
覆蓋進程映像
進程信息
進程映像
內(nèi)存映射
相關(guān)系統(tǒng)調(diào)用(System V)
進程資源
System V & Posix
信號
進程間通信教程
管道

System V & Posix

下表列出了System V IPC和POSIX IPC之間的區(qū)別。

SYSTEM V POSIX
AT&T(1983)介紹了IPC設(shè)施的三種新形式,即消息隊列,共享內(nèi)存和信號量。 由IEEE指定的便攜式操作系統(tǒng)接口標準來定義應(yīng)用程序編程接口(API)。 POSIX涵蓋了所有三種形式的IPC
SYSTEM V IPC涵蓋了所有的IPC機制,即管道,命名管道,消息隊列,信號,信號量和共享內(nèi)存。 它還涵蓋套接字和Unix域套接字。 幾乎所有的基本概念都與系統(tǒng)V相同。它僅與接口有所不同。
共享內(nèi)存接口調(diào)用shmget()shmat(),shmdt(),shmctl() 共享內(nèi)存接口調(diào)用shm_open(),mmap(),shm_unlink()
消息隊列接口調(diào)用msgget()msgsnd(),msgrcv()msgctl() 消息隊列接口調(diào)用mq_open(),mq_send(),mq_receive()mq_unlink()
信號量接口調(diào)用semget(),semop()semctl() 信號量接口調(diào)用命名信號量sem_open(),sem_close()sem_unlink(),sem_post(),sem_wait()sem_trywait(),sem_timedwait()sem_getvalue()未命名或基于內(nèi)存的信號量sem_init(),sem_post(),sem_wait (),sem_getvalue(),sem_destroy()
使用鍵和標識符來標識IPC對象。 使用名稱和文件描述符來標識IPC對象
NA 可以使用select()poll()和epoll API來監(jiān)視POSIX消息隊列
提供msgctl()調(diào)用 提供函數(shù)(mq_getattr()mq_setattr())來訪問或設(shè)置屬性
NA 多線程安全。 包含線程同步函數(shù),如互斥鎖,條件變量,讀寫鎖等
NA 為消息隊列提供少量通知功能(如mq_notify())
需要系統(tǒng)調(diào)用如shmctl(),命令(ipcs,ipcrm)來執(zhí)行狀態(tài)/控制操作。 共享內(nèi)存對象可以使用系統(tǒng)調(diào)用(如fstat(),fchmod()
System V共享內(nèi)存段的大小在創(chuàng)建時是固定的(通過shmget()) 可以使用ftruncate()來調(diào)整底層對象的大小,然后使用munmap()mmap()(或Linux專用的mremap())重新創(chuàng)建映射

上一篇:進程映像下一篇:覆蓋進程映像