IPC Anatomy
Inter-Process Communication Anatomy
Last updated
Inter-Process Communication Anatomy
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
การสื่อสารระหว่างโปรเซส (Interprocess communication - IPC) เป็นกลไกสำคัญในการติดต่อสื่อสารระหว่างโปรเซสให้สามารถแลกเปลี่ยนข้อมูลซึ่งกันและกัน ไม่ว่าจะอยู่ภายในคอมพิวเตอร์เดียวกันหรือโปรเซสที่อาจจะอยู่ต่างคอมพิวเตอร์แต่ถูกเชื่อมต่อผ่านระบบเครือข่ายเดียวกัน ตัวอย่างเช่น การเรียกคำสั่งผ่านเชลล์โดยผลลัพธ์จากโปรเซสแรกจะส่งไปเป็นอินพุทให้กับโปรเซสถัดไป ด้วยการใช้เครื่องหมาย "|
" (Pipe)
ซึ่งการสร้างท่อเชื่อมต่อ (link) นั้นจะมีด้วยกับสองรูปแบบคือแบบทางเดียวและแบบสองทิศทาง เมื่อมีการสร้างท่อเชื่อมต่อระหว่างกันแล้วโปรเซสก็สามารถส่งข้อมูลหรือข้อความ (message) ถึงกันได้มากเพียงใดก็ขึ้นอยู่กับความจุของลิงค์ว่ามีเท่าไหร่ และบัฟเฟอร์ของลิงค์
จากตารางข้างล่างแสดงวิธีการสื่อสารระหว่างโปรเซสในแบบต่างๆ และที่ถูกรองรับสำหรับแต่ละมาตราฐานในระบบปฏิบัติการ UNIX/LINUX
ตารางแสดงวิธีการสื่อสารในแบบต่างๆของ IPC
เป็นการส่งสัญญาณของระบบในระดับล่างไปขัดจังหวะของโปรเซส เพื่อบอกให้โปรเซสทำตามวัตถุประสงค์ของสัญญาณนั้นๆ หรืออาจจะใช้เป็นการส่งสัญญาณระหว่างโปรเซสด้วยกัน
POSIX, System V, BSD
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 เช่นเดียวกัน