ภาวะติดตาย (Deadlock)
Deadlock คืออะไร สภาวะที่โปรเซสบางตัวหรือทุกตัว ไม่สามารถทำงานต่อไปได้ ส่วนใหญ่เกิดจากการใช้ทรัพยากรร่วมกัน แล้วมีการแย่งทรัพยากรกัน ทรัพยากรในระบบ เวลาของ CPU (CPU time) Address Space File I/O
เงื่อนไขการใช้ทรัพยากรของโปรเซส ทุกๆโปรเซสจะต้องดำเนินการตามเงื่อนไขนี้ 1. ร้องขอ (Request) จะรอจนกว่าได้รับทรัพยากรนั้น 2. ใช้งาน (Use) ใช้งานจนเสร็จ 3. คืนทรัพยากร (Release) ใช้เสร็จแล้วก็คืนกลับสู่ระบบ ปัญหาเกิดตรงไหน ร้องขอตลอดกาล ใช้งานแล้วไม่คืน
เงื่อนไขการเกิด Deadlock ทรัพยากรเป็นแบบใช้ร่วมกันไม่ได้ (Mutual Exclusion) 1 โปรเซสเท่านั้นที่จะใช้ทรัพยากรได้ อีกโปรเซสต้องรอ ถือครองแล้วรอคอย (Hold and Wait) โปรเซสตัวหนึ่งใช้ทรัพยากรอยู่ โดยที่กำลังรอคอยทรัพยากรอีกตัวหนึ่ง ซึ่งทรัพยากรตัวนี้ก็ถูกครอบครองโดยอีกโปรเซสหนึ่ง ไม่มีการแทรกกลางคัน (No Preemption) ทรัพยากรจะถูกคืนเมื่อโปรเซสต้องการคืน หากไม่คืน OS ทำอะไรไม่ได้ รอคอยเป็นวงกลม เป็นการรอคอยแบบงูกินหาง
ตัวอย่าง - วงกลม แทนโปรเซส - สี่เหลี่ยม แทนทรัพยากรแต่ละประเภท และจะใช้ จุดแทนทรัพยากรแต่ละ Instance - ลูกศร แทนการใช้ทรัพยากร P1 P2 R1 ถูกใช้โดย P1 R2 รอคอย R3 ถูกใช้โดย P2 R3
สรุป การเกิด Deadlock จะทำให้ระบบเสียเสถียรภาพไป ระบบควรจะมีการตรวจสอบ (Monitor) อยู่อย่างสม่ำเสมอ ทางที่ดีก็ควรป้องกันไว้ก่อน (Preventive Maintenance)