วันพฤหัสบดีที่ 6 ธันวาคม พ.ศ. 2550

- การติดต่อทางอ้อม (indirect communication )

การติดต่อแบบนี้โปรเซสทั้งสองที่ต้องการจะติดต่อกันจะติดต่อกันผ่านทางเมลล์บ็อกซ์ (Mailbox) หรืออาจเรียกว่าเป็นการติดต่อทางพอร์ต (port) และเมลล์บ็อกซ์ที่ใช้ในการติดต่อกันนี้จะต้องมีการแชร์เมลล์บ็อกซ์ไว้ก่อนด้วย รูปแบบคำสั่งการรับ - ส่งข้อมูลผ่านเมลล์บ็อกซ์เป็นเช่นนี้
Send(B, message) เป็นการส่งแมสเสจไปยังเมลล์บ็อกซ์ B
Receive(A, message) เป็นการรับแมสเซสจากเมลล์บ็อกซ์ A
ลิงค์แบบนี้จะมีคุณสมบัติดังนี้
w จะมีการสร้างลิงค์ระหว่างโปรเซสที่มีการแชร์เมลล์บ็อกซ์เท่านั้น
w ลิงค์หนึ่ง ๆ อาจจะมีความสำพันธ์มากกว่าสองโปรเซสก็ได้
w ระหว่างโปรเซสแต่ละคู่นั้นอาจมีหลายลิงค์ที่แตกต่างกันได้ แต่ละลิงค์จะมีเพียงเมลล์บ็อกซ์เดียว
w การลิงค์อาจเป็นทิศทางเดียว หรือสองทิศทางก็ได้
ตอนนี้เพื่อความเข้าใจมากยิ่งขึ้น สมมุติว่าทั้งโปรเซส p1, p2 และ p3 มีการแชร์เมลล์บ็อกซ์ A ไว้โปรเซส p1 จะส่งแมสเสจไปยัง A ในขณะที่โปรเซส P2 และ P3 ต้องการรัยแมสเสจจาก A คำถามก็คือว่าโปรเซสใดจะรับแมสเสจที่ส่งจาก A คำถามอาจแก้ได้หลายวิธีดังนี้
w ยอมให้มีการลิงค์ทั้งสองโปรเซส
w ยอมให้มีการรับแมสเสจได้เพียงครั้งละ 1 โปรเซส
w ยอมให้ระบบเลือกว่าโปรเซสใดที่จะเข้ารับแมสเสจ

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