System V & Posix



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

SYSTEM V POSIX
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 物件。 使用名稱和檔案描述符來識別 IPC 物件
不適用 POSIX 訊息佇列可以使用 select()、poll() 和 epoll API 進行監控
提供 msgctl() 呼叫 提供函式(mq_getattr() 和 mq_setattr())用於訪問或設定屬性 11. IPC - System V & POSIX
不適用 多執行緒安全。涵蓋執行緒同步函式,例如互斥鎖、條件變數、讀寫鎖等。
不適用 為訊息佇列提供了一些通知功能(例如 mq_notify())。
需要使用系統呼叫,例如 shmctl(),以及命令(ipcs、ipcrm)來執行狀態/控制操作。 可以使用系統呼叫(例如 fstat()、fchmod())檢查和操作共享記憶體物件。
System V 共享記憶體段的大小在建立時(透過 shmget())固定。 我們可以使用 ftruncate() 調整底層物件的大小,然後使用 munmap() 和 mmap()(或 Linux 特定的 mremap())重新建立對映。
廣告

© . All rights reserved.