Chapter 6 Deadlocks
2008-08-21 20:49:10
รูปแบบของปัญหา (System Model)
กระบวนการหนึ่งๆ จะต้องร้องขอใช้ทรัพยากรก่อนที่จะได้ใช้ทรัพยากรก่อนได้ใช้ทรัพยากรนั้น และจะต้องคืนทรัพยากรนั้นกลับสู่ระบบเมื่อใช้เสร็จ กระบวนการอาจจะร้องขอทรัพยากรได้มากเท่าที่ต้องการเพื่อที่จะทำงานของตนให้เสร็จสมบูรณ์ แต่จำนวนทรัพยากรทีร้องขอจะต้องไม่มากกว่าจำนวนที่มีอยู่จริงในระบบ
เมื่อกระบวนการต้องการใช้ทรัพยากรของระบบ จะต้องทำตามลำดับขั้นตอนต่างๆ ดังนี้
- การร้องขอ(Request)
- การใช้งาน(Use)
- การคืน(Release)
ลักษณะของวงจรอับ (Deadlock characterization)
วงจรอับเป็นสถานการณ์ที่ไม่เป็นที่ต้องการจะให้เกิดขึ้นในระบบ เพราะว่าเมื่อเกิดวงจรอับแล้วจะพบว่า ไม่มีกระบวนการใดได้ทำงานจนเสร็จสมบูรณ์ และทรัพยากรของระบบต่างก็ถูกครอบครองจนหมด ซึ่งจะเป็นตัวกันไม่ให้งานอื่นได้ทำงาน
เงื่อนไขในการติดวงจรอับ (Necessary Conditions)
วงจรอับจะเกิดขึ้นได้ก็ต่อเมื่อ
- ทรัพยากรเป็นแบบใช้ร่วมกันไม่ได้
- การถือครองแล้วรอคอย
- ห้ามแทรกกลางคัน
- วงจรรอคอย
กราฟการจัดสรรพทรัพยากร(Resource Allocation Graph)
เมื่อกระบวนการ 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 วิธีหลักๆคือ
- กำหนดกฎเกณฑ์บางอย่างในการใช้ทรัพยากร เพื่อให้แน่ใจว่าระบบไม่มีทางเกิดวงจรอับได้
- ไม่ต้องป้องกันใดๆเลย ปล่อยให้ระบบเกิดวงจรอับขึ้นก่อน แล้วค่อยตามแก้ไขทีหลัง
- มองข้ามปัญหาทั้งหมด ทำว่าวงจรอับไม่เคยเกิดขึ้นในระบบ
การป้องกันการเกิดวงจรอับ (Deadlock Prevention)
- ห้ามใช้ทรัพยากรร่วมกัน ระบบจะไม่ให้ใช้ทรัพยากรร่วมกัน
- การถือครองและรอคอย เมื่อ Process ใดร้องขอทรัพยากรในระบบ Process นั้นจะต้องไม่ถือครองทรัพยากรนั้น ทำได้ 2 วิธี
1. ให้ Process ร้องขอทรัพยากรทั้งหมดก่อน
2. ยินยอมใน Process ร้องขอทรัพยากรได้ก็ต่อเมื่อ Process นั้นไม่ได้ถือครอบครองตนเอง
การแก้ไขวงจรอับ (Recovery from Deadlock)
ระบบอาจจัดการได้ 2 วิธี คือ
- รายงานให้ผู้ควบคุมเครื่องทราบว่า ขณะนี้เกิดวงจรอับขึ้นในระบบแล้ว และให้ผู้ควบคุมจัดการแก้ไขวงจรอับเอง
- ระบบแก้ไขวงจรอับเองโดยอัตโนมัติ มี 2 วิธี คือ
· ยกเลิกการบวนการที่ติดอยู่ในวงจรอับบางกระบวนการเพื่อที่จะตัดวงจรอับ
· อนุญาตให้มีการแทรกกลางคันทรัพยากรบางส่วนที่ติดอยู่ในวงจรอับได้ เพื่อให้ระบบกลับคืนสู่สภาวะปกติ
การจัดการปัญหาวงจรอับโดยวิธีผสมผสาน (Combined Approach to Deadlock Handing)
ระบบที่ใช้วิธีผสมผสานนี้จะไม่เกิดวงจรอับ ดังนี้คือ
- วงจรอับไม่อาจจะเกิดข้ามกลุ่มของทรัพยากรได้ เพระเราใช้วิธีการจัดเรียงลำดับทรัพยากร
- ในแต่ละกลุ่มก็จะไม่เกิดวงจรอับ เพราะเราได้เลือกวิธีจัดการ 1 ใน 3 วิธี ที่กล่าวมาแล้วดังนั้นระบบโดยรวมจะไม่เกิดวงจรอับ
ป้าย : Deadlocks
Dictionary : Deadlocks

สวัสดีจ๊ะ แวะมาทักทาย ซำบายดีบ่.......
by :
raveepass
[2008-08-23 18:02:08]
|