ในสภาพแวดล้อมที่กระบวนการต้องติดต่อประสานงานกันนั้น กระบวนการสามารถสื่อสารข้ามกระบวนการได้ผ่านทางการสื่อสารระหว่างกระบวนการ หรือไอพีซี โดยไอพีซีจะมีกลไกที่อนุญาตให้กระบวนการต่างๆ สามารถสื่อสารกัน และการประสานเวลาระหว่างกระบวนการได้ ไอพีซีเป็นกลไกสำคัญที่ถูกนำไปใช้ประโยชน์ได้เป็นอย่างดีในสภาพแวดล้อมของระบบเครือข่ายการกระจาย 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) แบบอัตโนมัติหรือแบบชัดเจน
- ข่าวสารแบบขนาดคงที่หรือแปรผัน
- จะทำการติดตั้งสายการเชื่อมโยงได้อย่างไร
- สายการเชื่อมโยงหนึ่งเส้น สามารถใช้สื่อสารได้มากกว่าหนึ่งกระบวนการหรือไม่
- ต้องมีจำนวนสายการเชื่อมโยงกระบวนการได้กี่เส้น
- ความจุของสายควรมีขนาดเท่าใด
- ขนาดของข่าวสารที่ใช้สื่อสารกันจะมีรูปแบบคงที่หรือแปรผัน
- สายการเชื่อมโยงจะเป็นแบบเดี่ยว (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
การเชื่อมโยงการสื่อสารด้วยวิธีดังกล่าว จะต้องมีคุณสมบัติดังต่อไปนี้
- ต้องมีการสร้างความเชื่อมโยงไว้ระหว่างตูกระบวนการที่ใช้ตูไปรษณีย์ร่วกัน
- สายเชื่อมโยงหนึ่งเส้น สามารถรองรับการเชื่อมโยงของกระบวนการได้มากกว่าสองกระบวนการ
- กระบวนการแต่ละคู่สามารถใช้สายเชื่อมโยงเพื่อติดต่อกันได้หลายเส้นทาง
- สายการเชื่อมโยงอาจใช้ได้ทั้งแบบทางเดี่ยวและทางคู่
- อนุญาตให้สายการเชื่อมโยงหนึ่งเส้น รองรับกระบวนการได้มากที่สุดเพียงสองกระบวนการเท่านั้น
- อนุญาตให้มีเพียงกระบวนการเดียวที่สามารถรับข่าวสารจากตู้ไปรษณีย์ ณ ขณะใดขณะหนึ่ง
- ให้ระบบเป็นผูตัดสินใจชี้ขาดว่าจะเลือกให้กระบวนการใดเป็นผู้รับข่าวสารนั้น และแจ้งว่าใครเป็นผู้รับ ไปให้ผู้ส่งทราบ
การประสานเวลา (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) ขนาดของกองซ้อนมีค่าเป็นอนันต์ ดังนั้นจึงสามารถรองรับข่าวสารได้ทั้งหมดโดยผู้ส่งไม่จำเป็นต้องหยุดรอ
credit:
รองศาสตราจารย์ ดร.วิเศษฐ์ พลายมาศ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น