อัลกอริทึมการกีดกันร่วมกันแบบกระจายของ Lamport
อัลกอริทึมการกีดกันร่วมกันแบบกระจายของ Lamportเป็นอัลกอริทึมแบบใช้การแย่งชิงเพื่อการ กีดกันร่วมกันในระบบแบบกระจาย
อัลกอริทึม
คุณสมบัติของโหนด
- ทุกกระบวนการจะรักษาคิวของคำขอที่รออยู่เพื่อเข้าสู่ส่วนวิกฤตตามลำดับ คิวเหล่านี้เรียงลำดับตามการประทับเวลาเสมือนที่ได้มาจาก การประทับเวลา ของLamport [ 1 ]
อัลกอริทึม
กระบวนการร้องขอ
- โดยจัดลำดับคำขอไว้ในคิวของตนเอง (เรียงตามเวลาที่ส่ง)
- ส่งคำขอไปยังทุกโหนด
- กำลังรอการตอบกลับจากโหนดอื่นๆ ทั้งหมด
- หากคำขอของเราอยู่ในลำดับต้นๆ ของคิวและได้รับคำตอบทั้งหมดแล้ว ให้เข้าสู่ส่วนวิกฤต (critical section)
- เมื่อออกจากส่วนวิกฤตแล้ว ให้ลบคำขอของส่วนนั้นออกจากคิวและส่งข้อความปล่อยไปยังทุกกระบวนการ
กระบวนการอื่นๆ
- หลังจากได้รับคำขอแล้ว ระบบจะจัดคำขอนั้นลงในคิวคำขอของตัวเอง (เรียงตามเวลาที่ได้รับ) และตอบกลับพร้อมประทับเวลา
- หลังจากได้รับข้อความแจ้งการอนุมัติแล้ว ให้ลบคำขอที่เกี่ยวข้องออกจากคิวคำขอของตนเอง
ความซับซ้อนของข้อความ
อัลกอริทึมนี้สร้างข้อความ 3( N − 1) ข้อความต่อคำขอ หรือข้อความ ( N − 1) ข้อความและการกระจายเสียง 2 ครั้ง ข้อความ 3( N − 1) ข้อความต่อคำขอประกอบด้วย:
- จำนวนคำขอทั้งหมด( N − 1)
- จำนวนการตอบกลับทั้งหมด( N − 1)
- จำนวนการปล่อยทั้งหมด( N − 1)
ข้อเสีย
อัลกอริทึมนี้มีข้อเสียหลายประการ ได้แก่:
- ระบบนี้ไม่น่าเชื่อถืออย่างยิ่ง เพราะหากกระบวนการใดกระบวนการหนึ่งล้มเหลว ก็จะทำให้การดำเนินงานหยุดชะงักลง
- มีความซับซ้อนของข้อความสูงถึง 3( N − 1) ข้อความต่อการเข้า/ออกในส่วนวิกฤต