วงจรอับ (Dead Lock)
by Our Burapharat
1. แผนภาพวงจรอับ
2. การป้องกันการเกิดวงจรอับ
2.1. การให้ใช้ทรัพยากรร่วมกันได้ (Mutual exclusion prevention) - ทรัพยากรในระบบไม่อนุญาตให้หลายโปรเซส ใช้งานพร้อมๆ กันได้ - วิธีการแก้ไขระบบปฏิบัติการจะต้องจัดการให้โปรเซสในระบบสามารถใช้งาน ทรัพยากรเหล่านั้นร่วมกันได้ (เช่น ไฟล์ข้อมูล ระบบอาจจะอนุญาตให้หลายโปรเซส เข้าถึงไฟล์ข้อมูลนั้นได้ โดยมีการกาหนดให้มีการเข้าถึงเป็นแบบอ่านได้อย่างเดียว (read only)) - เครื่องพิมพ์ไม่สามารถใช้ทรัพยากรร่วมกันได้ อาจจะใช้วิธีสพูลลิ่งเข้ามาช่วย โดยใช้พื้นที่ดิสก์เป็นตัวรับเอาต์พุตแทนเครื่องพิมพ์ 13
2.2. การป้องกันการถือครองและรอคอย (Hold and wait prevention) - อนุญาตให้โปรเซสร้องขอทรัพยากรที่ต้องการทั้งหมดก่อน และจะไม่อนุญาตให้ โปรเซสนั้นทางานจนกว่าจะได้รับทรัพยากรที่ร้องขอไปพร้อมกันทั้งหมดก่อน - วิธีการนี้จะทาให้ระบบปฏิบัติการทางานอย่างไม่มีประสิทธิภาพ เพราะอย่างแรก โปรเซสจะต้องถือครองทรัพยากรเป็นเวลานานในขณะที่รอให้ตัวเองได้รับทรัพยากร ทั้งหมดก่อนจึงจะทางานได้ ทั้งๆ ที่โปรเซสเหล่านั้นเพียงได้รับทรัพยากรบางตัวก็ สามารถทางานก่อนได้เลย - บางทรัพยากรที่ถูกครอบครองโดยโปรเซสอาจจะยังไม่ได้ถูกใช้งาน และโปรเซสอื่นก็ ไม่สามารถเรียกนาไปใช้ได้ด้วย
2.3. ยอมให้มีการแทรกกลางคัน (Preemptable) -ระบบจะไม่ยอมให้โปรเซสร้องขอทรัพยากรจนกว่าจะปลดปล่อยทรัพยากรของตัวเอง - ถ้าโปรเซสต้องการเพิ่มต้องปล่อยทรัพยากรแล้วทาการขอใหม่ - ระบบสามารถแทรกได้กลางครัน ใช้ได้กับระบบที่มีสิทธิและลาดับความสาคัญ (priority)
2.4. การป้องกันการเกิดวงจรรอคอย (Circular wait protection) - โปรเซสจะร้องขอได้เฉพาะทรัพยากรที่อยู่ในลาดับสูงกว่าเท่านั้น เช่น ถ้าโปรเซสกาลังถือครองทรัพยากร S อยู่ และต่อมาโปรเซสนี้ได้ทาการร้องขอ ทรัพยากร ซึ่งระบบจะอนุญาตให้โปรเซสนั้นร้องขอได้เฉพาะทรัพยากรที่อยู่ในลาดับ ที่สูงกว่า S การป้องกันวิธีนี้จะส่งผลให้การทางานของระบบปฏิบัติการไร้ประสิทธิภาพโดยจะ ทาให้การประมวลผลช้าลงและมีการปฏิเสธการใช้งานของทรัพยากรโดยไม่มีความ จาเป็น
3. วิธีการตรวจสอบและกู้คืน
3.1. ขั้นตอนการตรวจหาวงจรอับ
3.1.1. ทาการตรวจทุกครั้งที่มีการร้องขอ -สามารถตรวจพบวงจรอับได้รวดเร็ว -กาหนดเวลาได้ง่าย ข้อเสีย ต้องเสียเวลาในการตรวจ
3.2. ขั้นตอนการกู้คืนระบบ
3.2.1. 1. ยกเลิกการทางานของแต่ละโปรเซสที่เกิดวงจรอับ -เลือกโปรเซสที่ได้ใช้เวลาของตัวประมวลผลไปแล้วน้อยที่สุด -เลือกโปรเซสที่ได้ให้ผลลัพธ์ หรือเอาต์พุตออกมาแล้วน้อยที่สุด -เลือกโปรเซสที่ได้ครอบครองทรัพยากรไปแล้วน้อยที่สุด -เลือกโปรเซสที่มีลาดับความสาคัญ หรือ priority น้อยที่สุด -เลือกโปรเซสที่ยังต้องการเวลาในการทางานมากที่สุด
3.2.2. 2. ทาการแทรกหรือเรียกทรัพยากรคืนจากโปรเซสทีละตัวจนกว่าวงจรอับจะหายไป
3.2.3. 3. ยกเลิกการทางานของทุกโปรเซสที่เกิดวงจรอับ
3.2.4. 4. ทาการสารองข้อมูลของทุกโปรเซสที่เกิดวงจรอับไปยังจุดที่ทาการตรวจสอบก่อนหน้านี้