วงจรอับ (Dead Lock)

Get Started. It's Free
or sign up with your email address
Rocket clouds
วงจรอับ (Dead Lock) by Mind Map: วงจรอับ (Dead Lock)

1. วงจรอับคืออะไร ?

1.1. วงจรอับ (Deadlock) คือกลุ่มของโปรเซสที่ถูกปฏิเสธไม่ให้ทางาน (blocking) อันมีผลสืบ เนื่องมาจากการแย่งชิงทรัพยากร หรือการสื่อสาร โดยที่โปรเซสในกลุ่มต่างรอคอยสัญญาณ ทางาน ที่จะเกิดขึ้นได้เฉพาะจากโปรเซสภายในกลุ่มนี้เท่านั้น

2. เงื่อนไขการเกิดวงจรอับ

2.1. วงจรอับอาจจะเกิดขึ้นก็ต่อเมื่อเงื่อนไข ดังนี้ 1. เมื่อทรัพยากรที่ไม่สามารถถูกใช้ร่วมกันได้หลาย ๆ โปรเซสพร้อมกันได้ (Mutual exclusion condition) 2. เมื่อมีการถือครองและรอ (hold and wait condition) 3. เมื่อการทางานในระบบไม่มีการแทรกกลางครัน (no preemptive condition) ไม่สามารถบังคับให้มีการปลดปล่อยทรัพยากรได้ 4. เกิดวงจรรอคอย (Circuit wait condition)

3. แผนภาพวงจรอับ

4. การป้องกันการเกิดวงจรอับ

4.1. การให้ใช้ทรัพยากรร่วมกันได้ (Mutual exclusion prevention) - ทรัพยากรในระบบไม่อนุญาตให้หลายโปรเซส ใช้งานพร้อมๆ กันได้ - วิธีการแก้ไขระบบปฏิบัติการจะต้องจัดการให้โปรเซสในระบบสามารถใช้งาน ทรัพยากรเหล่านั้นร่วมกันได้ (เช่น ไฟล์ข้อมูล ระบบอาจจะอนุญาตให้หลายโปรเซส เข้าถึงไฟล์ข้อมูลนั้นได้ โดยมีการกาหนดให้มีการเข้าถึงเป็นแบบอ่านได้อย่างเดียว (read only)) - เครื่องพิมพ์ไม่สามารถใช้ทรัพยากรร่วมกันได้ อาจจะใช้วิธีสพูลลิ่งเข้ามาช่วย โดยใช้พื้นที่ดิสก์เป็นตัวรับเอาต์พุตแทนเครื่องพิมพ์ 13

4.2. การป้องกันการถือครองและรอคอย (Hold and wait prevention) - อนุญาตให้โปรเซสร้องขอทรัพยากรที่ต้องการทั้งหมดก่อน และจะไม่อนุญาตให้ โปรเซสนั้นทางานจนกว่าจะได้รับทรัพยากรที่ร้องขอไปพร้อมกันทั้งหมดก่อน - วิธีการนี้จะทาให้ระบบปฏิบัติการทางานอย่างไม่มีประสิทธิภาพ เพราะอย่างแรก โปรเซสจะต้องถือครองทรัพยากรเป็นเวลานานในขณะที่รอให้ตัวเองได้รับทรัพยากร ทั้งหมดก่อนจึงจะทางานได้ ทั้งๆ ที่โปรเซสเหล่านั้นเพียงได้รับทรัพยากรบางตัวก็ สามารถทางานก่อนได้เลย - บางทรัพยากรที่ถูกครอบครองโดยโปรเซสอาจจะยังไม่ได้ถูกใช้งาน และโปรเซสอื่นก็ ไม่สามารถเรียกนาไปใช้ได้ด้วย

4.3. ยอมให้มีการแทรกกลางคัน (Preemptable) -ระบบจะไม่ยอมให้โปรเซสร้องขอทรัพยากรจนกว่าจะปลดปล่อยทรัพยากรของตัวเอง - ถ้าโปรเซสต้องการเพิ่มต้องปล่อยทรัพยากรแล้วทาการขอใหม่ - ระบบสามารถแทรกได้กลางครัน ใช้ได้กับระบบที่มีสิทธิและลาดับความสาคัญ (priority)

4.4. การป้องกันการเกิดวงจรรอคอย (Circular wait protection) - โปรเซสจะร้องขอได้เฉพาะทรัพยากรที่อยู่ในลาดับสูงกว่าเท่านั้น เช่น ถ้าโปรเซสกาลังถือครองทรัพยากร S อยู่ และต่อมาโปรเซสนี้ได้ทาการร้องขอ ทรัพยากร ซึ่งระบบจะอนุญาตให้โปรเซสนั้นร้องขอได้เฉพาะทรัพยากรที่อยู่ในลาดับ ที่สูงกว่า S การป้องกันวิธีนี้จะส่งผลให้การทางานของระบบปฏิบัติการไร้ประสิทธิภาพโดยจะ ทาให้การประมวลผลช้าลงและมีการปฏิเสธการใช้งานของทรัพยากรโดยไม่มีความ จาเป็น

5. การหลีกเลี่ยงการเกิดวงจรอับ

5.1. แนวเส้นของการใช้ทรัพยากร - วิธีการคิด หรืออัลกอริทึ่มของการหลีกเลี่ยงการเกิดวงจรอับวิธีนี้มีพื้นฐานอยู่บน แนวความคิดคือ ต้องการให้ระบบอยู่ในสถานะที่ปลอดภัย (safe state) - แผนภาพจะถูกใช้เพื่อแสดงแนวความคิดของคาว่า “อยู่ในสถานะที่ปลอดภัย” - ในบางครั้งการใช้แผนภาพจะไม่สามารถสื่อความหมายโดยตรงเกี่ยวกับการใช้ อัลกอริทึ่มนี้ก็ตาม แต่สามารถทาให้เราเข้าใจความหมายของปัญหาและหนทางแก้ไข ได้มากขึ้น 18

5.2. การปฏิเสธให้โปรเซสทางาน

5.3. การปฏิเสธไม่ให้ครอบครองทรัพยากร

6. วิธีการตรวจสอบและกู้คืน

6.1. ขั้นตอนการตรวจหาวงจรอับ

6.1.1. ทาการตรวจทุกครั้งที่มีการร้องขอ -สามารถตรวจพบวงจรอับได้รวดเร็ว -กาหนดเวลาได้ง่าย ข้อเสีย ต้องเสียเวลาในการตรวจ

6.2. ขั้นตอนการกู้คืนระบบ

6.2.1. 1. ยกเลิกการทางานของแต่ละโปรเซสที่เกิดวงจรอับ -เลือกโปรเซสที่ได้ใช้เวลาของตัวประมวลผลไปแล้วน้อยที่สุด -เลือกโปรเซสที่ได้ให้ผลลัพธ์ หรือเอาต์พุตออกมาแล้วน้อยที่สุด -เลือกโปรเซสที่ได้ครอบครองทรัพยากรไปแล้วน้อยที่สุด -เลือกโปรเซสที่มีลาดับความสาคัญ หรือ priority น้อยที่สุด -เลือกโปรเซสที่ยังต้องการเวลาในการทางานมากที่สุด

6.2.2. 2. ทาการแทรกหรือเรียกทรัพยากรคืนจากโปรเซสทีละตัวจนกว่าวงจรอับจะหายไป

6.2.3. 3. ยกเลิกการทางานของทุกโปรเซสที่เกิดวงจรอับ

6.2.4. 4. ทาการสารองข้อมูลของทุกโปรเซสที่เกิดวงจรอับไปยังจุดที่ทาการตรวจสอบก่อนหน้านี้