ระบบ 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 () |
Semaphore Interface เรียก semget (), semop (), semctl () | Semaphore Interface เรียก Semaphores 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 Message Queues สามารถตรวจสอบได้โดยใช้ select (), โพล () และ epoll API |
เสนอการโทร msgctl () | จัดเตรียมฟังก์ชัน (mq_getattr () และ mq_setattr ()) เพื่อเข้าถึงหรือตั้งค่าแอตทริบิวต์ 11. IPC - System V & POSIX |
NA | ปลอดภัยหลายเธรด ครอบคลุมฟังก์ชันการซิงโครไนซ์เธรดเช่นการล็อก mutex ตัวแปรตามเงื่อนไขการล็อกการอ่าน - เขียนเป็นต้น |
NA | เสนอคุณสมบัติการแจ้งเตือนบางอย่างสำหรับคิวข้อความ (เช่น mq_notify ()) |
ต้องการการเรียกระบบเช่น shmctl (), คำสั่ง (ipcs, ipcrm) เพื่อดำเนินการสถานะ / การควบคุม | ออบเจ็กต์หน่วยความจำที่แบ่งใช้สามารถตรวจสอบและจัดการได้โดยใช้การเรียกระบบเช่น fstat (), fchmod () |
ขนาดของเซ็กเมนต์หน่วยความจำที่ใช้ร่วมกัน System V ได้รับการแก้ไข ณ เวลาที่สร้าง (ผ่าน shmget ()) | เราสามารถใช้ ftruncate () เพื่อปรับขนาดของวัตถุต้นแบบจากนั้นสร้างการแมปใหม่โดยใช้ munmap () และ mmap () (หรือ mremap เฉพาะของ Linux ()) |