Система V и Posix

В следующей таблице перечислены различия между System V IPC и POSIX IPC.

СИСТЕМА 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
NA Очереди сообщений POSIX можно отслеживать с помощью API-интерфейсов select (), poll () и epoll.
Предлагает вызов 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 ())