IPC Anatomy

Inter-Process Communication Anatomy

การสื่อสารระหว่างโปรเซส (Interprocess communication - IPC) เป็นกลไกสำคัญในการติดต่อสื่อสารระหว่างโปรเซสให้สามารถแลกเปลี่ยนข้อมูลซึ่งกันและกัน ไม่ว่าจะอยู่ภายในคอมพิวเตอร์เดียวกันหรือโปรเซสที่อาจจะอยู่ต่างคอมพิวเตอร์แต่ถูกเชื่อมต่อผ่านระบบเครือข่ายเดียวกัน ตัวอย่างเช่น การเรียกคำสั่งผ่านเชลล์โดยผลลัพธ์จากโปรเซสแรกจะส่งไปเป็นอินพุทให้กับโปรเซสถัดไป ด้วยการใช้เครื่องหมาย "|" (Pipe)

$ ls -al | grep "source"
drwxr-xr-x 24 root root     4096 2013-09-25 04:51 linux-source-2.6.32

ซึ่งการสร้างท่อเชื่อมต่อ (link) นั้นจะมีด้วยกับสองรูปแบบคือแบบทางเดียวและแบบสองทิศทาง เมื่อมีการสร้างท่อเชื่อมต่อระหว่างกันแล้วโปรเซสก็สามารถส่งข้อมูลหรือข้อความ (message) ถึงกันได้มากเพียงใดก็ขึ้นอยู่กับความจุของลิงค์ว่ามีเท่าไหร่ และบัฟเฟอร์ของลิงค์

จากตารางข้างล่างแสดงวิธีการสื่อสารระหว่างโปรเซสในแบบต่างๆ และที่ถูกรองรับสำหรับแต่ละมาตราฐานในระบบปฏิบัติการ UNIX/LINUX

ตารางแสดงวิธีการสื่อสารในแบบต่างๆของ IPC

การรองรับแต่ละรูปของการสื่อสาร IPC ของแต่ละมาตราฐานสามารถสรุปได้ดังนี้

  • มาตราฐาน POSIX จะมี system calls ที่รองรับการจัดการสัญญาณ (signal), shared memory, semaphores, mutexes, condition variables, และ message queues

  • มาตราฐาน IRIX จะมี library calls รองรับสำหรับ shared memory, semaphores, locks, และ barriers โดย IRIX จะมีขั้นตอนการทำงานที่มากกว่า POSIX แต่ในบางกรณีจะได้เปรียบกว่า POSIX ในกรณีที่ใช้หน่วยประมวลผลแบบ multiprocessors นอกจากนั้นยังมีฟังก์ชัน poll() ที่สามารถนำไปใช้กับ semaphores

  • มาตราฐาน AT&T System V (system five) Release 4 จะมี system calls สำหรับการจัดการสัญญาณ (signal), shared memory, semaphores, message queues, และ file locking ซึ่งเป็นมาตราฐานที่เหมาะกับการนำไปใช้ในโปรแกรมที่จะถูกนำไปทำงานอยู่บนแต่ละแพลตฟอร์ม (porting software) แต่อย่างไรก็ตามอาจจะไม่ได้ประสิทธิภาพเต็มที่

  • มาตราฐาน BSD UNIX จะรองรับการจัดการสัญญาณ (signal), file locking, และ socket

โดยตัวมาตราฐาน POSIX นั้นถือว่าเป็นตัวล่าสุด ซึ่งถ้าพิจารณาการเรียกใช้ system calls ในภาพรวมตัว POSIX จะเหมาะสมและได้ประสิทธิภาพดีที่สุด นอกจากนั้นถ้าจะใช้ฟังก์ชันในมาตราฐานของ System V ก็จะเหมาะกับหน่วยประมวลผล MIPS ที่ใช้รูปแบบการติดต่อระหว่างโปรแกรมภายในระบบปฏิบัติการแบบ ABI (Application Binary Interface) รวมทั้งการนำโปรแกรมไปทำงานบนแพลตฟอร์มอื่นๆที่ใช้มาตราฐาน System V เช่นเดียวกัน

Last updated

Assoc. Prof. Wiroon Sriborrirux, Founder of Advance Innovation Center (AIC) and Bangsaen Design House (BDH), Electrical Engineering Department, Faculty of Engineering, Burapha University