Система V & Posix

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

СИСТЕМА V POSIX
AT & T представила (1983) три новые формы средств IPC, а именно очереди сообщений, разделяемую память и семафоры. Стандарты интерфейса переносимой операционной системы, установленные IEEE для определения интерфейса прикладного программирования (API). POSIX охватывает все три формы IPC
SYSTEM V IPC охватывает все механизмы IPC: каналы, именованные каналы, очереди сообщений, сигналы, семафоры и разделяемую память. Он также охватывает сокеты и сокеты Unix Domain. Почти все основные понятия такие же, как у 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_getvalue (), sem_destroy ()
Использует ключи и идентификаторы для идентификации объектов IPC. Использует имена и файловые дескрипторы для идентификации объектов IPC
Не Доступно Очереди сообщений POSIX можно отслеживать с помощью API select (), poll () и epoll
Предлагает вызов msgctl () Предоставляет функции (mq_getattr () и mq_setattr ()) для доступа или установки атрибутов 11. IPC - System V & POSIX
Не Доступно Многопоточный сейф. Охватывает функции синхронизации потоков, такие как блокировки мьютекса, условные переменные, блокировки чтения-записи и т. Д.
Не Доступно Предлагает несколько функций уведомлений для очередей сообщений (таких как mq_notify ())
Требуются системные вызовы, такие как shmctl (), команды (ipcs, ipcrm) для выполнения операций состояния / контроля. Объекты общей памяти могут проверяться и обрабатываться с помощью системных вызовов, таких как fstat (), fchmod ()
Размер сегмента разделяемой памяти System V фиксируется во время создания (через shmget ()) Мы можем использовать ftruncate (), чтобы настроить размер базового объекта, а затем заново создать отображение, используя munmap () и mmap () (или mremap () для Linux)