ภาวะติดตายหรือDeadlock คืออะไร
การติดตาย(Deadlocks) คือเมื่อโปรเซสต้องการใช้ทรัพยากร และร้องขอทรัพยากรจากระบบ แต่ทรัพยากรที่โปรเซสต้องการใช้ไม่ว่าง เนื่องจากโปรเซสอื่นกำลังใช้งานอยู่ ทำให้โปรเซสนั้นๆ ต้องรอคอย และเป็นการรอคอยที่ไม่มีที่สิ้นสุด (โปรเซสไม่มีโอกาสได้รับการจัดสรรทรัพยากร) เช่น โปรเซส A ต้องการใช้เครื่องพิมพ์ แต่เครื่องพิมพ์ถูกใช้โดยโปรเซส B ทำให้โปรเซส A ต้องรอจนกว่าเครื่องพิมพ์จะว่าง ส่วนโปรเซส B อยู่ในสถานะรอให้ทรัพยากรอื่นว่างเช่นกัน ทำให้โปรเซส A ไม่มีโอกาสได้รับจัดสรรให้ใช้เครื่องพิมพ์ ซึ่งเป็นการรอคอยอย่างไม่มีที่สิ้นสุด
ลักษณะการติดตาย
1. การไม่เกิดร่วม (Mutual Exclusion)
ในกรณีที่เป็นทรัพยากรที่ไม่สามารถใช้ร่วมกันได้ ทาให้ทรัพยากรถูกใช้งานได้เพียงครั้งละ 1 โปรเซส คือ ขณะเวลาหนึ่งจะมีเพียงโปรเซสเดียวที่ใช้งานทรัพยากรได้ ไม่สามารถมีโปรเซสอื่นใช้งานทรัพยากรพร้อมกันได้
2. การครอบครองและการรอใช้ทรัพยากร (Hold and Wait)
โปรเซสที่ได้ครอบครอง (hold) ทรัพยากรอยู่แล้ว ต้องการใช้ทรัพยากรอื่นเพิ่มเติม และร้องขอทรัพยากรที่มีสถานะไม่ว่าง ทาให้โปรเซสต้องรอ (Wait)
3. การไม่แย่งชิงทรัพยากร (No Preemptive)
โปรเซสที่รอใช้ทรัพยากรต่อจากโปรเซสอื่น (ที่กาลังใช้ทรัพยากรนั้นอยู่) จะต้องรอจนกว่าโปรเซสนั้นๆ ทางานเสร็จ และปลดปล่อยทรัพยากร โปรเซสไม่สามารถแย่งชิงทรัพยากรจากโปรเซสอื่นได้
4. การรอแบบวงกลม (Circulate Wait)
โปรเซสเกิดการรอเป็น วัฏจักร (P0, P1, P2, …, Pn) โดย
P0 รอทรัพยากรที่ถูกครอบครองโดย P1
P1 รอทรัพยากรที่ถูกครอบครองโดย P2
……………………………………………………………………
Pn-1 รอทรัพยากรที่ถูกครอบครองโดย Pn
Pn รอทรัพยากรที่ถูกครอบครองโดย P0
การเกิดติดตายจะต้องมีครบทั้ง 4 เงื่อนไข โดยเงื่อนไขทั้ง 4 ข้อนี้ ไม่ได้เป็นอิสระต่อกัน คือ ถ้าเกิดการรอแบบวงกลมแล้ว จะทาให้เกิดการครอบครองและรอ เป็นต้น
ตัวอย่างของเหตุการณ์ที่เกิดการติดตาย
• การติดตายในการจราจร
• การติดตายในการใช้ทรัพยากร
การหลีกเลี่ยงการติดตาย
ทางเลือกหนึ่งก็คือยอมให้เกิด 3 กรณีดังนี้ อนุญาตให้ใช้ทรัพยากรร่วมกันด้ให้โปรเซสร้องขอทรัพยากรทั้งหมด ก่อน และให้ระบบแทรกกางคัน แต่ระบบต้องใช้วิจารณญาณในการเลือกระบบต้องมีความสามารถตัดสินใจว่าในกรณีที่ทรัพยากรหนึ่งๆนั้นจะทำให้ระบบปลอดภัยหรือไม่ และจะอนุญาตให้โปรเซสนั้นได้รับทรัพยากร ถ้าระบบปลอดภัยเท่านั้น
การตรวจสอบการติดตาย
1. จะตรวจสอบเมื่อใดและบ่อยแค่ไหนขึ้นอยู่กับ
– ความถี่หรือโอกาสที่จะเกิดสภาวะติดายในระบบ
– จำนวนโปรเซสที่ต้องทำงานย้อนหลัง
2. ถ้าอัลกอริทึมตรวจหาสภาวะติดตายถูกนำมาใช้อย่างไม่สมบรูณ์ อาจเป็นไปได้ว่าจะเกิด Cycle ขึ้นหลาย Cycle จนทำให้ไม่สามารถบอกได้ว่าโปรเซสใดอยู่ในกลุ่ม Cycle
ไม่มีความคิดเห็น:
แสดงความคิดเห็น