หาข้อมูลเสริมให้ ต่อครับ
เดตล็อก(DEADLOCK)
ในการทำงานแบบ Multiprogramming จะมีหลาย ๆ โปรเซสพยายามที่จะแย่งกันใช้ทรัพยากรของระบบ แต่ละโปรเซส จะร้องขอทรัพยากรจากระบบ และถ้าในขณะนั้น ทรัพยากรที่ต้องการยังไม่ว่าง (มีโปรเซสอื่นครอบครองอยู่) โปรเซสนั้นจะต้องรอคอย และอาจจะพบว่า การรอคอยนั้นจะเป็นไปอย่างไม่มีที่สิ้นสุด ซึ่งสถานการณ์เช่นนี้เราเรียกว่า เดตล็อก(deadlock)
ทรัพยากรเป็นแบบใช้ร่วมกันไม่ได้ (Mutual exclusion) นั่นคือ จะต้องมีทรัพยากรอย่างน้อย 1 ตัว จัดอยู่ในกลุ่มทรัพยากรที่ใช้ร่วมกันไม่ได้ นั่นคือ จะมีเพียง 1 โปรเซสเท่านั้นที่จะใช้ทรัพยากรตัวนั้นได้ ถ้ามีโปรเซสอื่นร้องขอทรัพยากรที่กำลังถูกใช้อยู่ โปรเซสนั้นจะต้องรอ จนกระทั่งทรัพยากรนั้น ถูกคืนกลับสู่ระบบแล้ว
การถือครองแล้วรอคอย (Hold and Wait) คือ มีอย่างน้อยหนึ่งโปรเซส ที่กำลังถือครองทรัพยากรอยู่อย่างน้อย 1 ตัว และขณะเดียวกัน ก็กำลังรอคอยทรัพยากรเพิ่มอีก แต่เป็นทรัพยากรที่กำลังถูกถือครอง โดยโปรเซสอื่นอยู่
ห้ามแทรกกลางคัน (No Preemption) เมื่อโปรเซสกำลังใช้ทรัพยากรอยู่ จะไม่มีการแทรกกลางคัน หรือ ทรัพยากรที่ถูกใช้งาน จะถูกปล่อยคืนสู่ระบบ โดยความสมัครใจของโปรเซสนั้น คือ เมื่อโปรเซสนั้น ได้ทำงานจนเสร็จสมบูรณ์แล้ว
วงจรรอคอย (Circular Wait) คือ เซตของโปรเซส ที่กำลังรอคอยทรัพยากร (P0, P1, … , Pn) ซึ่ง P0 กำลังรอคอยทรัพยากรที่ถือครองโดย P1 , P1 กำลังรอคอยทรัพยากร ที่ถือครองโดย P2 , … , Pn-1 กำลังรอคอยทรัพยากรที่ถือครองโดย Pn และ Pn ก็กำลังรอคอยทรัพยากรที่ถือครองโดย P0ต้องมีเงื่อนไขทั้ง 4 นี้ครบ จึงจะเกิดวงจรอับได้ เราจะเห็นว่า เงื่อนไขทั้ง 4 ไม่ได้เป็นอิสระต่อกันอย่างแท้จริง เช่น วงจรรอคอย จะเกิดจากการที่มีเงื่อนไข การถือครองแล้วรอคอย ในระบบ