เว็บบล๊อกผลงาน (Web Blog) นักศึกษาระดับปริญญาโท คณะวิทยาศาสตร์และเทคโนโลยี สาขาวิทยาการคอมพิวเตอร์ มหาวิทยาลัยธรรมศาสตร์

วันอังคารที่ 16 มีนาคม พ.ศ. 2553

Interprocess Communication (IPC) การสื่อสารระหว่างกระบวนการ

Interprocess Communication: IPC

ในสภาพแวดล้อมที่กระบวนการต้องติดต่อประสานงานกันนั้น กระบวนการสามารถสื่อสารข้ามกระบวนการได้ผ่านทางการสื่อสารระหว่างกระบวนการ หรือไอพีซี โดยไอพีซีจะมีกลไกที่อนุญาตให้กระบวนการต่างๆ สามารถสื่อสารกัน และการประสานเวลาระหว่างกระบวนการได้ ไอพีซีเป็นกลไกสำคัญที่ถูกนำไปใช้ประโยชน์ได้เป็นอย่างดีในสภาพแวดล้อมของระบบเครือข่ายการกระจาย Distributed Systems ซึ่งจำเป็นต้องมีการสื่อสารของกระบวนการที่อยู่ข้ามเครื่องในระบบเครือข่าย


ไอซีพี จะมีระบบการส่งผ่านข่าวสาร การตั้งชื่อ การประสานเวลา และการปรับอัตรา เข้ามาช่วยในการสื่อสารข้ามกระบวนการ


- การส่งผ่านข่าวสาร (Message-Passing)
ฟังชั่นระบบข่าวสารจะอนุญาตให้กระบวนการสามารถสื่อสารกับกระบวนการอื่นได้โดยไม่จำเป็นต้องมีการใช้ทรัพยากรหรือข้อมูลร่วมกัน โดยไอพีซีจะจัดเตรียมการดำเนินงานอย่างน้อย 2 ขั้นตอน คือ send / receive message สำหรับการสื่อสาร โดยอาศัยช่องทางที่เรียกว่า การเชื่อมโยงการสื่อสาร Communication Link กระบวนการที่ทำการส่งจะต้องสร้างการเชื่อมโยงกับกระบวนการที่ทำหน้าที่รับเสียก่อน ส่วนการเชื่อมโยงการสื่อสารนั้นสามารถทำได้หลายวิธีโดยอาจเป็นแบบกายภาพ physical อย่างเช่น ใช้หน่วยความจำร่วมกัน share memory ฮาร์ดแวร์บัส hardware bus หรือเครือข่าย network หรือแบบตรรกะ logical ก็ได้


ถ้าใช้แบบตรรกะก็สามารถทำได้หลายวิธี โดยอาศัยการเชื่อมโยงและการดำเนินการแบบ send / receive เข้ามาช่วย ได้แก่
  • การสื่อสารทางตรงและทางอ้อม (direct / indirect communication)
  • การสื่อสารแบบสมมาตรและแบบอสมมาตร (symetric / asymmetric)
  • การปรับอัตรา (buffering) แบบอัตโนมัติหรือแบบชัดเจน
  • ข่าวสารแบบขนาดคงที่หรือแปรผัน
 ในการใช้งานการเชื่อมโยง (link) เส้นทางการสื่อสารระหว่างกระบวนการนั้นจำเป็นต้องพิจารณาประเด็นคำถามดังต่อไปนี้
  • จะทำการติดตั้งสายการเชื่อมโยงได้อย่างไร
  • สายการเชื่อมโยงหนึ่งเส้น สามารถใช้สื่อสารได้มากกว่าหนึ่งกระบวนการหรือไม่
  • ต้องมีจำนวนสายการเชื่อมโยงกระบวนการได้กี่เส้น
  • ความจุของสายควรมีขนาดเท่าใด
  • ขนาดของข่าวสารที่ใช้สื่อสารกันจะมีรูปแบบคงที่หรือแปรผัน
  • สายการเชื่อมโยงจะเป็นแบบเดี่ยว (unidirectional) หรือแบบคู่ (bi-directional)

การตั้งชื่อ (Naming)
กระบวนการที่ต้องการสื่อสารกับกระบวนการอื่นจะต้องมีวิธีในการอ้างอิงถึงซึ่งสามารถสื่อสารกันได้ทั้งทางตรงและทางอ้อม


- การสื่อสารทางตรง (Direct Communication)
กระบวนการที่ต้องการสื่อจะต้องใช้ชื่อที่ชัดเจนทั้งฝั่งรับ และฝั่งส่งในรูปแบบดังน
  • send (P, message) ส่งข่าวสารไปยังกระบวนการ P
  • receive (Q, message) รับข่าวสารจากกระบวนการ Q
การเชื่อมโยงการสื่อสารจะต้องมีคุณสมบัติ ดังนี้
  • ทั้งฝั่งรับและฝั่งส่งจะต้องติดตั้งการเชื่อมโยงระหว่างกันโดยอัตโนมัติ
  • การเชื่อมโยงจะทำเฉพาะคู่ของฝั่งรับและฝั่งส่งเท่านั้น
  • ฝั่งรับและฝั่งส่งจะมีการเชื่อมโยงพียงเส้นเดียวเท่านั้น
  • สายการเชื่อมโยงสามารถใช้ได้ทั้งแบบทางดี่ยวและทางคู่ แต่โดยทั่วไปใช้แบบทางคู่
ในการกำหนดตำแหน่งที่อยู่แบบสมมาตร ทั้งผู้รับและผู้ส่งจะต้องมีชื่อสำหรับการสื่อสารกัน ในขณะที่ตำแหน่งที่อยู๋แบบอสมมาตรนั้น ผู้ส่งระบุเพียงชื่อของผู้รับเท่านั้น แต่ผู้รับไม่จำเป็นต้องระบุชื่อผู้ส่งตามรูปแบบข้างล่าง ดังนี้
  • send (P, message) ส่งข่าวสารไปยังกระบวนการ P
  • receive (id, message) รับสามารถรับข่าวสารที่ถูกส่งมาจากกระบวนการใดๆ ก็ได้ โดยตัวแปร id จะแทนกลุ่มของชื่อกระบวนการที่สื่อสารกัน
ข้อด้อยของวิธีแบบสมมาตรและแบบอสมมาตร ก็คือมีข้อจำกัดเกี่ยวกับชื่อมากเกินไป ถ้ามีการเปลี่ยนชื่อของกระบวนการจะต้องแจ้งไปยังสมาชิกทั้งหมด เวลาจะแก้ไขชื่อใหม่จะต้องหาชื่อเดิมที่อ้างอิงเสียก่อน ซึ่งถือว่าไม่ยืดหยุ่น

- การสื่อสารทางอ้อม (Indirect Communication)
ด้วยการสื่อสารทางอ้อมข่าวสารจะถูกส่งและรับผ่านทางตูไปรษณีย์ (mail box) หรือพอร์ต (port) โดยตู้ไปรษณีย์จะมีเลขที่ซึ่งไม่ซ้ำกันกำกับไว้ ทุกกระบวนการสามารถติดต่อสื่อสารถึงกันโดยอาศัยตู้ไปรษณีย์ ดังกล่าวนี้ ในบางกรณีอาจมีมากกว่าหนึ่งกระบวนการที่สามารถใช้ตู้ไปรษณีย์ร่วมกันได้


การปฏิบัติงานเกี่ยวกับตู้ไปรษณีย์ ที่สามารถทำได้มีดังนี้
  • การสร้างตู้ไปรษณีย์ใหม่
  • การส่งข่าวสารผ่านตู้ไปรษณีย์
  • การลบตู้ไปรษณีย์
การส่ง / รับ ที่สามารถทำได้มีดังนี้
  • send (A, message) ส่งข่าวสารไปยังตูไปรษณีย์ A
  • receive (A, message) รับข่าวสารจากตูไปรษณีย์ A

การเชื่อมโยงการสื่อสารด้วยวิธีดังกล่าว จะต้องมีคุณสมบัติดังต่อไปนี้
  • ต้องมีการสร้างความเชื่อมโยงไว้ระหว่างตูกระบวนการที่ใช้ตูไปรษณีย์ร่วกัน
  • สายเชื่อมโยงหนึ่งเส้น สามารถรองรับการเชื่อมโยงของกระบวนการได้มากกว่าสองกระบวนการ
  • กระบวนการแต่ละคู่สามารถใช้สายเชื่อมโยงเพื่อติดต่อกันได้หลายเส้นทาง
  • สายการเชื่อมโยงอาจใช้ได้ทั้งแบบทางเดี่ยวและทางคู่
แต่เนื่องจากตู้ไปรษณีย์มีการใช้งานร่วมกันมากกว่าหนึ่งกระบวนการ จึงอาจเกิดปัญหาในการสื่อสารขึ้นมาได้ สมมติว่า กระบวนการ P1, P2 และ P3 ต่างใช้ตูไปรษณีย์ A ร่วมกัน เมื่อ P1 ส่งข่าวสารไปยังตูไปรษณีย์ A | P2 หรือ P3 จะเป็นผูได้รับข่าวสารขาก P1 เพื่อแก้ปัญหาดังกล่าว ระบบจะต้องว่าข้อกำหนดต่างๆ ดังนี้
  • อนุญาตให้สายการเชื่อมโยงหนึ่งเส้น รองรับกระบวนการได้มากที่สุดเพียงสองกระบวนการเท่านั้น
  • อนุญาตให้มีเพียงกระบวนการเดียวที่สามารถรับข่าวสารจากตู้ไปรษณีย์ ณ ขณะใดขณะหนึ่ง
  • ให้ระบบเป็นผูตัดสินใจชี้ขาดว่าจะเลือกให้กระบวนการใดเป็นผู้รับข่าวสารนั้น และแจ้งว่าใครเป็นผู้รับ ไปให้ผู้ส่งทราบ

การประสานเวลา (Synchronization)
การสื่อสารระหว่างกระบวนการจะอยู่ในรูปแบบที่เรียกว่า การส่ง (Send) และการรับ (receive) ซึ่งสามารถออกแบบในการรับ-ส่งข่าวสารเป็นแบบบล็อก (blocking) เรียกว่าการประสานเวลา (Synchronous) หรือแบบนันบล็อก (non-blocking) บางทีเรียกว่า ไม่ประสานเวลา (asynchronous) ก็ได้



  • การส่งแบบบล็อก (blocking send) ฝั่งผู้ส่งจะต้องหยุดรอจนกว่าข่าวสารที่ถูกส่งไปถึงที่รับแล้ว ซึ่งรับโดยกระบวนการ หรือตู้ไปรษณีย์ก็ได้ แล้วมีการตอบรับจากผู้รับ
  • การส่งแบบนันบล็อก (non-blocking send) ที่ส่งไม่จำเป็นต้องการการตอบรับจากผู้รับ
  • การรับแบบบล็อก (blocking receive) ฝั่งผู้รับจะต้องหยุดรอจนกว่าจะได้รับข่าวสารอย่างครบถ้วน
  • การรับแบบนันบล็อก (non-blocking receive) ฝั่งที่รับไม่ต้องรอจนกระทั้งส่งเสร็จ สามารถเรียกใช้ข่าวสาร ซึ่งอาจได้ข่าวสารที่ถูกต้องหรือเป็นค่าว่าง (null) ก็ได้

การปรับอัตรา (Buffering)
การสื่อสารระหว่างกระบวนการนั้นอาจเป็นแบบทางตรงหรือทางอ้อมก็ได้ ข่าวสารจะถูกแลกเปลี่ยนโดยกระบวนการสื่อสารซึ่งอยู่ในกองซ้อนชั่วคราว (Temporary queue) โดยพื้นฐานแล้ว เราจะมีวิธีใช้งานกองซ้อนชั่วคราวได้ วิธีใดวิธีหนึ่งสามวิธีดังนี้


  • ความจุค่าศูนย์ (zero capacity) ขนาดสูงสุดของกองซ้อนมีค่าเป็นศูนย์ หมายความว่า จะมีข่าวสารอยในกองซ้อนได้เพียงชุดเดียวเท่านั้น ในกรณีนี้ ผู้ส่งจะต้องบล็อกรอจนกระทั้งผู้รับได้รับข่าวสารเรียบร้อยแล้วจึงจะทำอย่างอื่นได้
  • ความจุค่าจำกัด (bounded capacity) ขนาดความจุของกองซ้อนมีค่าจำกัดเท่ากับ n ดังนั้นจึงรองรับข่าวสารได้มากถึง n จำนวนเท่าความจุถ้ามีข่าวสารใหม่เข้ามาและกองซ้อนยังไม่เต็ม ก็จะเก็บไว้ในกองซ้อน ฝั่งที่ส่งก็ไม่จำเป็นต้องหยุดรอ แต่ถ้ากองซ้อนหรือสายการเชื่อมโยงเต็ม ที่ส่งจำเป็นต้องหยุดรอ จนกระทั้งมีพื้นที่ว่างในกองซ้อน จึงจะสามารถสางข่าวสารได้
  • ความจุค่าไม่จำกัด (unbounded capacity) ขนาดของกองซ้อนมีค่าเป็นอนันต์ ดังนั้นจึงสามารถรองรับข่าวสารได้ทั้งหมดโดยผู้ส่งไม่จำเป็นต้องหยุดรอ
ในกรณีของความจุค่าศูนย์ บางทีหมายถึง ระบบข่าวสารที่ไม่มีการปรับอัตราส่วนอีก 2 กรณีหลังเรียกว่า การปรับอัตราแบบอัตโนมัติ


credit:
รองศาสตราจารย์ ดร.วิเศษฐ์ พลายมาศ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

คลังบทความของบล็อก

favourites