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

ชนิดการสื่อสารวัตถุประสงค์รองรับระบบ

เป็นการส่งสัญญาณของระบบในระดับล่างไปขัดจังหวะของโปรเซส เพื่อบอกให้โปรเซสทำตามวัตถุประสงค์ของสัญญาณนั้นๆ หรืออาจจะใช้เป็นการส่งสัญญาณระหว่างโปรเซสด้วยกัน

POSIX, System V, BSD

สตรีมข้อมูลระหว่างโพรเซสชนิดทางเดียว หรือ half duplex

POSIX, System V, BSD

ดำเนินการผ่านไฟล์บนระบบไฟล์แทนมาตรฐาน input และ output

POSIX, System V, BSD

สตรีมข้อมูลที่ไม่ระบุคล้ายกับไปป์ แต่เก็บและเรียกข้อมูลจากใน แพ็กเกจ

POSIX, System V

Locks, Mutexes, and Condition Variables

เทคนิคทางโปรแกรมเพื่อป้องกันไม่ให้โปรเซสแย่งกันเข้าไปใช้ทรัพยากรของระบบพร้อมกัน

POSIX, IRIX

โครงสร้างมาตรฐานที่ประสาน thread หรือกระบวนการที่กระทำกับทรัพยากรที่ใช้ร่วมกัน

POSIX, IRIX, System V

เป็นวิธีการส่งข้อมูลไปไว้ในส่วนของหน่วยความจำที่แชร์ให้กับ โปรเซสอื่นๆให้สามารถเข้าถึงข้อมูลนั้นได้

POSIX, IRIX, System V

แมพไฟล์ไปยัง RAM และสามารถแก้ไขได้โดยการเปลี่ยนที่อยู่หน่วยความจำโดยตรง

POSIX, IRIX, System V

ส่งข้อมูลไปยังเครือข่ายเน็ทเวิร์คบนคอมพิวเตอร์เครื่องเดียวกันหรือไปยังคอมพิวเตอร์เครื่องอื่น

BSD

การรองรับแต่ละรูปของการสื่อสาร 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