บทที่6 Deadlock
posted on 18 Aug 2008 05:08 by 490702464037กระบวนการหนึ่งๆ จะต้องร้องขอใช้ทรัพยากรก่อนที่จะได้ใช้ทรัพยากรก่อนได้ใช้ทรัพยากรนั้น และจะต้องคืนทรัพยากรนั้นกลับสู่ระบบเมื่อใช้เสร็จ กระบวนการอาจจะร้องขอทรัพยากรได้มากเท่าที่ต้องการเพื่อที่จะทำงานของตนให้เสร็จสมบูรณ์ แต่จำนวนทรัพยากรทีร้องขอจะต้องไม่มากกว่าจำนวนที่มีอยู่จริงในระบบ
เมื่อกระบวนการต้องการใช้ทรัพยากรของระบบ จะต้องทำตามลำดับขั้นตอนต่างๆ ดังนี้
- การร้องขอ(Request)
- การใช้งาน(Use)
- การคืน(Release)
วงจรอับเป็นสถานการณ์ที่ไม่เป็นที่ต้องการจะให้เกิดขึ้นในระบบ เพราะว่าเมื่อเกิดวงจรอับแล้วจะพบว่า ไม่มีกระบวนการใดได้ทำงานจนเสร็จสมบูรณ์ และทรัพยากรของระบบต่างก็ถูกครอบครองจนหมด ซึ่งจะเป็นตัวกันไม่ให้งานอื่นได้ทำงาน
เงื่อนไขในการติดวงจรอับ (Necessary Conditions)วงจรอับจะเกิดขึ้นได้ก็ต่อเมื่อ
- ทรัพยากรเป็นแบบใช้ร่วมกันไม่ได้
- การถือครองแล้วรอคอย
- ห้ามแทรกกลางคัน
- วงจรรอคอย
เมื่อกระบวนการ P₁ ร้องขอทรัพยากรประเภท R₁ เราก็จะเขียนเส้นร้องขอลงในกราฟ การจัดสรรพทรัพยากร และเมื่อการร้องขอนั้นได้รับอนุมัติจากระบบ เส้นร้องขอก็จะถูกแปลง ไปเป็นเส้นถือครองแทน และหลังจากที่กระบวนการปล่อยทรัพยากรคืนสู่ระบบแล้ว เส้นถือครองก็จะถูกลบออกไปจากกราฟเช่นกัน
แสดงกราฟการจัดสรรทรัพยากร
กราฟการจัดสรรพทรัพยากรในรูปข้างต้น แสดงสถานะของระบบได้ ดังนี้เซต P = { P₁, P₂, P₃ }
เซต R = { R₁, R₂, R₃, R₄ }
เซต E = { P₁ à R₁, P₂ à R₃, R₁ à P₂, R₂ à P₂, R₂ à P₁, R₃ àP₃ }
การจัดการปัญหาวงจรอับ (Methods for Handing Deadlocks)การจัดการปัญหาวงจรอับมีอยู่ 3 วิธีหลักๆคือ
- กำหนดกฎเกณฑ์บางอย่างในการใช้ทรัพยากร เพื่อให้แน่ใจว่าระบบไม่มีทางเกิดวงจรอับได้
- ไม่ต้องป้องกันใดๆเลย ปล่อยให้ระบบเกิดวงจรอับขึ้นก่อน แล้วค่อยตามแก้ไขทีหลัง
- มองข้ามปัญหาทั้งหมด ทำว่าวงจรอับไม่เคยเกิดขึ้นในระบบ
- ห้ามใช้ทรัพยากรร่วมกัน ระบบจะไม่ให้ใช้ทรัพยากรร่วมกัน
- การถือครองและรอคอย เมื่อ Process ใดร้องขอทรัพยากรในระบบ Process นั้นจะต้องไม่ถือครองทรัพยากรนั้น ทำได้ 2 วิธี
1. ให้ Process ร้องขอทรัพยากรทั้งหมดก่อน
2. ยินยอมใน Process ร้องขอทรัพยากรได้ก็ต่อเมื่อ Process นั้นไม่ได้ถือครอบครองตนเอง
การแก้ไขวงจรอับ (Recovery from Deadlock)ระบบอาจจัดการได้ 2 วิธี คือ
- รายงานให้ผู้ควบคุมเครื่องทราบว่า ขณะนี้เกิดวงจรอับขึ้นในระบบแล้ว และให้ผู้ควบคุมจัดการแก้ไขวงจรอับเอง
- ระบบแก้ไขวงจรอับเองโดยอัตโนมัติ มี 2 วิธี คือ
· ยกเลิกการบวนการที่ติดอยู่ในวงจรอับบางกระบวนการเพื่อที่จะตัดวงจรอับ
· อนุญาตให้มีการแทรกกลางคันทรัพยากรบางส่วนที่ติดอยู่ในวงจรอับได้ เพื่อให้ระบบกลับคืนสู่สภาวะปกติ
การจัดการปัญหาวงจรอับโดยวิธีผสมผสาน (Combined Approach to Deadlock Handing)ระบบที่ใช้วิธีผสมผสานนี้จะไม่เกิดวงจรอับ ดังนี้คือ
- วงจรอับไม่อาจจะเกิดข้ามกลุ่มของทรัพยากรได้ เพระเราใช้วิธีการจัดเรียงลำดับทรัพยากร
- ในแต่ละกลุ่มก็จะไม่เกิดวงจรอับ เพราะเราได้เลือกวิธีจัดการ 1 ใน 3 วิธี ที่กล่าวมาแล้วดังนั้นระบบโดยรวมจะไม่เกิดวงจรอับ
edit @ 18 Aug 2008 07:56:05 by

#1 By อุอิ (118.173.231.22) on 2009-04-22 12:03