บทที่6 Deadlock

posted on 18 Aug 2008 05:08 by 490702464037
รูปแบบของปัญหา (System Model)

                กระบวนการหนึ่งๆ จะต้องร้องขอใช้ทรัพยากรก่อนที่จะได้ใช้ทรัพยากรก่อนได้ใช้ทรัพยากรนั้น และจะต้องคืนทรัพยากรนั้นกลับสู่ระบบเมื่อใช้เสร็จ กระบวนการอาจจะร้องขอทรัพยากรได้มากเท่าที่ต้องการเพื่อที่จะทำงานของตนให้เสร็จสมบูรณ์ แต่จำนวนทรัพยากรทีร้องขอจะต้องไม่มากกว่าจำนวนที่มีอยู่จริงในระบบ

                เมื่อกระบวนการต้องการใช้ทรัพยากรของระบบ จะต้องทำตามลำดับขั้นตอนต่างๆ ดังนี้

  1. การร้องขอ(Request)
  2. การใช้งาน(Use)
  3. การคืน(Release)
ลักษณะของวงจรอับ (Deadlock characterization)

            วงจรอับเป็นสถานการณ์ที่ไม่เป็นที่ต้องการจะให้เกิดขึ้นในระบบ เพราะว่าเมื่อเกิดวงจรอับแล้วจะพบว่า ไม่มีกระบวนการใดได้ทำงานจนเสร็จสมบูรณ์ และทรัพยากรของระบบต่างก็ถูกครอบครองจนหมด ซึ่งจะเป็นตัวกันไม่ให้งานอื่นได้ทำงาน

เงื่อนไขในการติดวงจรอับ (Necessary Conditions)

                วงจรอับจะเกิดขึ้นได้ก็ต่อเมื่อ

  1. ทรัพยากรเป็นแบบใช้ร่วมกันไม่ได้
  2. การถือครองแล้วรอคอย
  3. ห้ามแทรกกลางคัน
  4. วงจรรอคอย
กราฟการจัดสรรพทรัพยากร(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 วิธีหลักๆคือ

  1. กำหนดกฎเกณฑ์บางอย่างในการใช้ทรัพยากร เพื่อให้แน่ใจว่าระบบไม่มีทางเกิดวงจรอับได้
  2. ไม่ต้องป้องกันใดๆเลย ปล่อยให้ระบบเกิดวงจรอับขึ้นก่อน แล้วค่อยตามแก้ไขทีหลัง
  3. มองข้ามปัญหาทั้งหมด ทำว่าวงจรอับไม่เคยเกิดขึ้นในระบบ
การป้องกันการเกิดวงจรอับ (Deadlock Prevention)
  • ห้ามใช้ทรัพยากรร่วมกัน ระบบจะไม่ให้ใช้ทรัพยากรร่วมกัน
  • การถือครองและรอคอย เมื่อ Process ใดร้องขอทรัพยากรในระบบ Process นั้นจะต้องไม่ถือครองทรัพยากรนั้น ทำได้ 2 วิธี

1.       ให้ Process ร้องขอทรัพยากรทั้งหมดก่อน

2.       ยินยอมใน Process ร้องขอทรัพยากรได้ก็ต่อเมื่อ Process นั้นไม่ได้ถือครอบครองตนเอง

การแก้ไขวงจรอับ (Recovery from Deadlock)

ระบบอาจจัดการได้ 2 วิธี คือ

  1. รายงานให้ผู้ควบคุมเครื่องทราบว่า ขณะนี้เกิดวงจรอับขึ้นในระบบแล้ว และให้ผู้ควบคุมจัดการแก้ไขวงจรอับเอง
  2. ระบบแก้ไขวงจรอับเองโดยอัตโนมัติ มี 2 วิธี คือ

·         ยกเลิกการบวนการที่ติดอยู่ในวงจรอับบางกระบวนการเพื่อที่จะตัดวงจรอับ

·         อนุญาตให้มีการแทรกกลางคันทรัพยากรบางส่วนที่ติดอยู่ในวงจรอับได้ เพื่อให้ระบบกลับคืนสู่สภาวะปกติ

การจัดการปัญหาวงจรอับโดยวิธีผสมผสาน (Combined Approach to Deadlock Handing)

ระบบที่ใช้วิธีผสมผสานนี้จะไม่เกิดวงจรอับ ดังนี้คือ

  1. วงจรอับไม่อาจจะเกิดข้ามกลุ่มของทรัพยากรได้ เพระเราใช้วิธีการจัดเรียงลำดับทรัพยากร
  2. ในแต่ละกลุ่มก็จะไม่เกิดวงจรอับ เพราะเราได้เลือกวิธีจัดการ 1 ใน 3 วิธี ที่กล่าวมาแล้วดังนั้นระบบโดยรวมจะไม่เกิดวงจรอับ

edit @ 18 Aug 2008 07:56:05 by

Comment

Comment:

Tweet

hgfhgh

#7 By (202.29.239.44|192.168.16.154, 202.29.239.44) on 2014-07-18 10:12

คุมเครื่องทราบว่า ขณะนี้เกิดวงจรอับขึ้นในระบบแล้ว และให้ผู้ค

#6 By bestresearchpaper.com (192.184.1.170|192.184.1.170) on 2014-03-06 01:13

มีวิธิการคำนวณไหมครับ

#5 By boo (117.47.233.175) on 2010-08-17 23:00

อยากรู้ว่ากระบวนการทำงานการป้องกัน Deadlock มีอะไรบ้างค่ะและ เครื่องมือการจัดการกับ Program ย่อยมีอะไรบ้างค่ะ
อยากรู้มากเลยค่ะ กรุณาตอบกลับมาที่อีเมล์
kookai_kan@hotmail.com

#4 By (124.121.209.171) on 2009-08-18 14:53

ดีใจจังได้อันดับ 3

#3 By nuy (202.44.32.9) on 2009-07-17 18:33

ดีมากๆๆ เลยค่ะ

#2 By ball (202.44.32.9) on 2009-07-17 18:32

ขอบคุณนะค่ะ open-mounthed smile

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