1 / 33

Chapter 4 : Dead Lock

Chapter 4 : Dead Lock. Computer Operating System ระบบปฏิบัติการคอมพิวเตอร์. วัตถุประสงค์. วงจรอับคืออะไร เงื่อนไขที่ทำให้เกิดวงจรอับ แผนภาพแสดงของวงจรอับ การป้องกันการเกิดวงจรอับ การหลีกเลี่ยงวงจรอับ วิธีการตรวจสอบการกู้คืนเมื่อเกิดวงจรอับ การที่ไม่ต้องสนใจอะไรเลย

Télécharger la présentation

Chapter 4 : Dead Lock

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 4 : Dead Lock Computer Operating System ระบบปฏิบัติการคอมพิวเตอร์

  2. วัตถุประสงค์ • วงจรอับคืออะไร • เงื่อนไขที่ทำให้เกิดวงจรอับ • แผนภาพแสดงของวงจรอับ • การป้องกันการเกิดวงจรอับ • การหลีกเลี่ยงวงจรอับ • วิธีการตรวจสอบการกู้คืนเมื่อเกิดวงจรอับ • การที่ไม่ต้องสนใจอะไรเลย • สรุปวิธีการเกิดวงจรอับ

  3. วงจรอับ (Dead Lock) Introduction • ระบบคอมพิวเตอร์ประกอบด้วยทรัพยากร(resource) จำนวนมาก • ทรัพยากรเหล่านี้ถูกเรียกใช้ได้ทีละ 1 โปรเซส • เช่น เครื่องพิมพ์, ดีสก์ไดรฟ์, harddisk เป้าหมาย • ทรัพยากรจะต้องถูกครอบครองเพียง 1 โปรเซสเท่านั้น ณ เวลาใดเวลาหนึ่ง ปัญหา • มีหลายโปรแกรมทำงานในเวลาพร้อม ๆ กัน • 1 โปรแกรมมีหลายโปรเซส • แต่ละโปรเซสต้องการทรัพยากร ซึ่งบางครั้งอาจเป็นทรัพยากรเดียวกันก็ได้

  4. วงจรอับ (Dead Lock) • โปรเซส A ขอใชสแกนเนอร์ และได้ใช้ • โปรเซส B ขอใชเครื่องเขียนซีดี (CD writer) และได้ใช้ • โปรเซส A ขอใช้เครื่องเขียนซีดีบ้าง แต่ B ไม่ยอม • ในขณะเดียวกัน B เกิดร้องขอเพื่อใช้สแกนเนอร์บ้าง ซึ่ง A กำลังใช้อยู่ • ต่างคนต่างไม่ได้ใช้ทรัพยากรของแต่ละฝ่าย โปรเซส A ร้องขอ ครอบครอง ครอบครอง ร้องขอ โปรเซส B รูปที่ 4.1 การเกิดวงจรอับโดยโปรเซสทั้งสองต่างรอใช้ทรัพยากร

  5. 4.1 วงจรอับคืออะไร (Dead Lock) “วงจรอับ (Deadlock) คือกลุ่มของโปรเซสที่ถูกปฏิเสธไม่ให้ทำงาน (blocking) อันมีผลสืบ เนื่องมาจากการแย่งชิงทรัพยากร หรือการสื่อสาร โดยที่โปรเซสในกลุ่มต่างรอคอยสัญญาณ ทำงานที่จะเกิดขึ้นได้เฉพาะจากโปรเซสภายในกลุ่มนี้เท่านั้น” ภาพที่ 4.2 การเกิดวงจรอับ

  6. 4.2 เงื่อนไขการเกิดวงจรอับ วงจรอับอาจจะเกิดขึ้นก็ต่อเมื่อเงื่อนไขทั้งสามข้อต่อไปนี้ 1. เมื่อทรัพยากรที่ไม่สามารถถูกใช้ร่วมกันได้หลาย ๆ โปรเซสพร้อมกันได้ (Mutual exclusion condition) 2. เมื่อมีการถือครองและรอ (hold and wait condition) 3. เมื่อการทำงานในระบบไม่มีการแทรกกลางครัน (no preemptive condition) ไม่สามารถบังครับให้มีการปลดปล่อยทรัพยากรได้ 4. เกิดวงจรรอคอย (Circuit wait condition) ทรัพยากร A ครอบครอง ครอบครอง Process A Process B ร้องขอ ร้องขอ ทรัพยากร B

  7. 4.3 แผนภาพของวงจรอับ กราฟจัดสรรทรัพยากร • ลูกศรจากโหนดทรัพยากรชี้ไปหาโหนดโปรเซส หมายถึง ทรัพยากรนั้นได้ถูกร้องขอและโปรเซสนั้นก็ได้ใช้ไปแล้ว และกำลังถือครองอยู่ ในรูป ทรัพยากร R ในขณะนั้นถูกโปรเซส A ถือครองอยู่ A โปรเซส R ทรัพยากร การถือครองทรัพยากร

  8. 4.3 แผนภาพของวงจรอับ กราฟจัดสรรทรัพยากร • ลูกศรจากโหนดโปรเซสชี้ไปหาโหนดทรัพยากร หมายถึง โปรเซสในขณะนั้นกำลังรอคอยทรัพยากรนั้นอยู่ โปรเซส B กำลังรอทรัพยากร S S ทรัพยากร B โปรเซส การรอคอยทรัพยากร

  9. 4.3 แผนภาพของวงจรอับ กราฟจัดสรรทรัพยากร • ในรูปที่ 4.4 (ค) จะเห็นได้ว่ามีวงจรอับเกิดขึ้น โปรเซส C กำลังรอคอยที่จะใช้ทรัพยากร T ซึ่งในขณะนั้นก็ถูกถือครองโดยโปรเซส D โปรเซส D เองไม่สามารถปล่อยทรัพยากร T ได้ เพราะว่าตัวเองก็กำลังรอคอยทรัพยากร U ที่ถือครองโดยโปรเซส C เช่นกัน โปรเซสทั้งสองก็จะรอคอยอย่างไม่มีที่สิ้นสุด แผนภาพวงกลมในกราฟแสดงว่าวงจรอับนั้นเกี่ยวข้องกับโปรเซสและทรัพยากรที่มีเส้นกราฟต่อกันเป็นลูกโซ่ โดยจากตัวอย่างในรูปนั้น คือ วงจร C-T-D-U-C D T U C (ค) วงจรอับ

  10. 4.3 แผนภาพของวงจรอับ สมมุติว่า ในระบบมีโปรเซส 3 ตัว คือ A, B และ C และทรัพยากร 3 ตัว คือ R, S และ T การร้องขอและการปล่อยทรัพยากรของทั้งสามโปรเซส ดังรูป ระบบปฏิบัติการมีอิสระในการอนุญาตให้โปรเซสใดทำงานหรือป้องกันไม่ให้โปรเซสงานใดทำงานก็ได้ โดยอาจจะเริ่มจากให้ A ทำงานจนกว่า A จะทำงานเสร็จ และจึงให้ B ทำงานจนเสร็จ แล้ว C จึงทำงานต่อ ลักษณะการกำหนดให้โปรเซสทำงานดังกล่าวจะไม่ทำให้เกิดวงจรอับอย่าง แน่นอน เพราะไม่มีการแข่งขันในการใช้ทรัพยากรร่วมกับโปรเซสอื่น

  11. 4.3 แผนภาพของวงจรอับ A B C A B C A B C R S T R S T R S T A request R B request S C request T A B C A B C A B C R S T R S T R S T A request S B request T C request R กำหนดให้โปรเซสสามารถทำการคำนวณและแสดงผลพร้อมกันได้ การจัดการ ตารางทำงานที่เหมาะสมควรเป็นการทำงานแบบหมุนเวียนกันไป หรือ round robin นั่นเอง

  12. 4.3 แผนภาพของวงจรอับ A B C A B C A B C R S T R S T R S T A request R C request T A request S A B C A B C A B C R S T R S T R S T C request R A dedicate R A request S ถ้าคาดว่าวงจรอับจะเกิดขึ้น ระบบอาจจะระงับไม่ให้โปรเซส B ได้รับทรัพยากร S และให้เพียงโปรเซส A และ C ทำงานก่อน ทำให้ได้ลำดับของการร้องขอและการปล่อยทรัพยากรเป็นดังรูป

  13. 4.4 การป้องกันการเกิดวงจรอับ 4.4.1 การให้ใช้ทรัพยากรร่วมกันได้ (Mutual exclusion prevention) - ทรัพยากรในระบบไม่อนุญาตให้หลายโปรเซส ใช้งานพร้อมๆ กันได้ - วิธีการแก้ไขระบบปฏิบัติการจะต้องจัดการให้โปรเซสในระบบสามารถใช้งาน ทรัพยากรเหล่านั้นร่วมกันได้ (เช่น ไฟล์ข้อมูล ระบบอาจจะอนุญาตให้หลายโปรเซส เข้าถึงไฟล์ข้อมูลนั้นได้ โดยมีการกำหนดให้มีการเข้าถึงเป็นแบบอ่านได้อย่างเดียว (read only)) - เครื่องพิมพ์ไม่สามารถใช้ทรัพยากรร่วมกันได้ อาจจะใช้วิธีสพูลลิ่งเข้ามาช่วย โดยใช้พื้นที่ดิสก์เป็นตัวรับเอาต์พุตแทนเครื่องพิมพ์

  14. 4.4 การป้องกันการเกิดวงจรอับ 4.4.2 การป้องกันการถือครองและรอคอย (Hold and wait prevention) - อนุญาตให้โปรเซสร้องขอทรัพยากรที่ต้องการทั้งหมดก่อน และจะไม่อนุญาตให้ โปรเซสนั้นทำงานจนกว่าจะได้รับทรัพยากรที่ร้องขอไปพร้อมกันทั้งหมดก่อน - วิธีการนี้จะทำให้ระบบปฏิบัติการทำงานอย่างไม่มีประสิทธิภาพ เพราะอย่างแรก โปรเซสจะต้องถือครองทรัพยากรเป็นเวลานานในขณะที่รอให้ตัวเองได้รับทรัพยากร ทั้งหมดก่อนจึงจะทำงานได้ ทั้งๆ ที่โปรเซสเหล่านั้นเพียงได้รับทรัพยากรบางตัวก็ สามารถทำงานก่อนได้เลย - บางทรัพยากรที่ถูกครอบครองโดยโปรเซสอาจจะยังไม่ได้ถูกใช้งาน และโปรเซสอื่นก็ ไม่สามารถเรียกนำไปใช้ได้ด้วย

  15. 4.4 การป้องกันการเกิดวงจรอับ 4.4.3 ยอมให้มีการแทรกกลางครัน (Preemptable) - ระบบจะไม่ยอมให้โปรเซสร้องขอทรัพยากรจนกว่าจะปลดปล่อยทรัพยากรของตัวเอง - ถ้าโปรเซสต้องการเพิ่มต้องปล่อยทรัพยากรแล้วทำการขอใหม่ - ระบบสามารถแทรกได้กลางครัน ใช้ได้กับระบบที่มีสิทธิและลำดับความสำคัญ (priority)

  16. 4.4 การป้องกันการเกิดวงจรอับ 4.4.4 การป้องกันการเกิดวงจรรอคอย (Circular wait protection) - โปรเซสจะร้องขอได้เฉพาะทรัพยากรที่อยู่ในลำดับสูงกว่าเท่านั้น เช่น ถ้าโปรเซสกำลังถือครองทรัพยากร S อยู่ และต่อมาโปรเซสนี้ได้ทำการร้องขอ ทรัพยากร ซึ่งระบบจะอนุญาตให้โปรเซสนั้นร้องขอได้เฉพาะทรัพยากรที่อยู่ในลำดับ ที่สูงกว่า S การป้องกันวิธีนี้จะส่งผลให้การทำงานของระบบปฏิบัติการไร้ประสิทธิภาพโดยจะ ทำให้การประมวลผลช้าลงและมีการปฏิเสธการใช้งานของทรัพยากรโดยไม่มีความ จำเป็น

  17. 4.4 การป้องกันการเกิดวงจรอับ

  18. 4.5 การหลีกเลี่ยงการเกิดวงจรอับ (Avoidance) 4.5.1 แนวเส้นของการใช้ทรัพยากร - วิธีการคิด หรืออัลกอริทึ่มของการหลีกเลี่ยงการเกิดวงจรอับวิธีนี้มีพื้นฐานอยู่บน แนวความคิดคือ ต้องการให้ระบบอยู่ในสถานะที่ปลอดภัย (safe state) - แผนภาพจะถูกใช้เพื่อแสดงแนวความคิดของคำว่า “อยู่ในสถานะที่ปลอดภัย” - ในบางครั้งการใช้แผนภาพจะไม่สามารถสื่อความหมายโดยตรงเกี่ยวกับการใช้ อัลกอริทึ่มนี้ก็ตาม แต่สามารถทำให้เราเข้าใจความหมายของปัญหาและหนทางแก้ไข ได้มากขึ้น

  19. 4.5 การหลีกเลี่ยงการเกิดวงจรอับ (Avoidance) 4.5.1 แนวเส้นของการใช้ทรัพยากร B u (โปรเซสทั้งสอง เสร็จเรียบร้อย เครื่องพิมพ์ I8 I7 I6 t I5 พล็อตเตอร์ r s A p q I1 I2 I3 I4 เครื่องพิมพ์ พล็อตเตอร์

  20. 4.5 การหลีกเลี่ยงการเกิดวงจรอับ (Avoidance) 4.5.2 การปฏิเสธให้โปรเซสทำงาน (ระบบที่มีโปรเซส nตัว และมีทรัพยากรต่างชนิด กัน mตัว) โดยมีการนิยามเวกเตอร์และแมตทริกซ์ ดังนี้ แมตทริกซ์ Claim แสดงถึงความต้องการทรัพยากรแต่ละชนิดสูงสุดของแต่ละโปรเซส โดยให้แต่ละแถวแทนโปรเซส 1 ตัว นั่นคือ Cij = จำนวนทรัพยากร j ที่โปรเซส i ต้องการ

  21. 4.5 การหลีกเลี่ยงการเกิดวงจรอับ (Avoidance) 4.5.2 การปฏิเสธให้โปรเซสทำงาน Aij = จำนวนทรัพยากร j ที่ถูกครอบครองโดยโปรเซส i

  22. 4.5 การหลีกเลี่ยงการเกิดวงจรอับ (Avoidance) 4.5.2 การปฏิเสธให้โปรเซสทำงาน Cij = จำนวนทรัพยากร j ที่โปรเซส i ต้องการ Aij = จำนวนทรัพยากร j ที่ถูกครอบครองโดยโปรเซส i • ทรัพยากรทั้งหมดจะเท่ากับทรัพยากรที่ว่างรวมกับทรัพยากรที่ถูกครอบครอง Ri = Vi + Aki • ไม่มีโปรเซสใดร้องขอได้มากกว่าจำนวนทรัพยากรที่มีอยู่ทั้งหมด Cki Ri • ไม่มีโปรเซสใดที่สามารถครอบครองทรัพยากรมากกว่าที่ตัวเองร้องขอในตอนแรก Aki Cki • จะเริ่มโปรเซสใหม่ก็ต่อเมื่อ Ri C(n+1) +Cki

  23. 4.5.3 การปฏิเสธไม่ให้ครอบครองทรัพยากร 4.5 การหลีกเลี่ยงการเกิดวงจรอับ (Avoidance) • Banker’s Algorithm • ลูกค้าเปรียบได้กับโปรเซส เงินเปรียบได้กับทรัพยากร • หลักทั่วไป *** ธนาคารมีสิทธิปฏิเสธการให้กู้ได้ ธนาคารมีจำนวนเงินจำกัด ลูกค้าต้องการกู้ในวงเงินสูงสุด ลูกค้าจะชำระคืนเมื่อได้รับเงินจากธนาคาร

  24. 4.5.3 การปฏิเสธไม่ให้ครอบครองทรัพยากร 4.5 การหลีกเลี่ยงการเกิดวงจรอับ (Avoidance) • ให้ B ทำงานเสร็จก่อนโดยเพิ่มทรัพยากรให้อีก 2 ตัว • เมื่อ B ทำงานเสร็จและคืนทรัพยากรสู่ระบบ • กำหนดให้ C ทำงานโดยให้ทรัพยากรเพิ่มดังรูป (ง) • เมื่อ C ทำงานเสร็จแล้วจะได้ผลดังรูป (จ) ทำให้ A สามารถทำงานจนเสร็จสมบูรณ์ได้ HAS MAX HAS MAX HAS MAX HAS MAX HAS MAX Free 3 Free 1 Free 5 Free 0 Free 7 (ก) (ข) (ค) (ง) (จ) โดย HAS คือ ทรัพยากรที่ได้รับ MAX คือ ทรัพยากรที่ต้องการทั้งหมด ตัวอย่างการแสดงของสถานะที่ปลอดภัย

  25. 4.5 การหลีกเลี่ยงการเกิดวงจรอับ (Avoidance) 4.5.3 การปฏิเสธไม่ให้ครอบครองทรัพยากร HAS MAX HAS MAX HAS MAX HAS MAX Free 3 Free 2 Free 0 Free 4 (ก) (ข) (ค) (ง) ตัวอย่าง การแสดงของสถานะที่ไม่ปลอดภัย • ให้การตัดสินใจจาก (ก) ไป (ข) เป็นการตัดสินใจที่นำพาระบบเข้าสู่สถานะที่ไม่ปลอดภัย • แต่ไม่ได้หมายความว่าระบบจะเข้าสู่วงจรอับเสมอ วิธีแก้ไข ระบบควรปฏิเสธการร้องขอการครอบครองทรัพยากรของโปรเซส A

  26. 4.5 การหลีกเลี่ยงการเกิดวงจรอับ (Avoidance) 4.5.4 วิธีการทำงานแบบนายธนาคารสำหรับระบบที่มีทรัพยากรหลายตัว • R = [6342] ทรัพยากรที่มีอยู่ทั้งหมด Allocate (A) Claim (C) เครื่องพิมพ์ เครื่องพิมพ์ พล็อตเตอร์ โปรเซส พล็อตเตอร์ โปรเซส ซีดีรอม ซีดีรอม เทป เทป • P = [5322] ทรัพยากรที่ถูกครอบครองในขณะนั้น V = R – P • V = [1020] ทรัพยากรที่ว่าง

  27. 4.5 การหลีกเลี่ยงการเกิดวงจรอับ (Avoidance) 4.5.4 วิธีการทำงานแบบนายธนาคารสำหรับระบบที่มีทรัพยากรหลายตัว Allocate (A) Claim (C) เครื่องพิมพ์ เครื่องพิมพ์ พล็อตเตอร์ โปรเซส พล็อตเตอร์ โปรเซส ซีดีรอม ซีดีรอม เทป เทป • V = [1020] นำมาเทียบกับ ค่าที่อยู่ในแมตทริกซ์ C แล้วนำค่าจาก Allocate (A) มารวมกับค่า V ก็จะได้ค่าทรัพยากรที่ว่าง หลังจากมีการคืนค่าทรัพยากรจากโปรเซสที่ทำงานเสร็จแล้ว ทำจนครบทุกโปรเซสที่อยู่ในระบบ

  28. 4.5 การหลีกเลี่ยงการเกิดวงจรอับ (Avoidance) 4.5.4 วิธีการทำงานแบบนายธนาคารสำหรับระบบที่มีทรัพยากรหลายตัว วิธีการตรวจสอบดูว่าระบบอยู่ในสถานะปลอดภัยหรือไม่ • เริ่มตรวจสอบแถวของโปรเซสในตาราง C ว่ามีแถวใดบ้างที่มีจำนวนทรัพยากรที่ต้องการน้อยกว่าหรือเท่ากับ V ถ้าไม่มีแสดงว่าอยู่ในวงจรอับแล้ว • สมมุติว่ามี 1 แถวที่สามารถได้รับทรัพยากรแต่ละตัวทั้งหมด (เช่นโปรเซส D) และทำงานได้ ให้ทำเครื่องหมายว่าทำงานสำเร็จและคืนทรัพยากรสู่ระบบ • ทำซ้ำข้อ 1 และ 2 จนกระทั่งทุกโปรเซสทำงานเสร็จ

  29. 4.6 วิธีการตรวจสอบและกู้คืนเมื่อเกิดวงจรอับ 4.6.1 ขั้นตอนการตรวจหาวงจรอับ • ทำการตรวจทุกครั้งที่มีการร้องขอ • สามารถตรวจพบวงจรอับได้รวดเร็ว • กำหนดเวลาได้ง่าย ข้อเสีย ต้องเสียเวลาในการตรวจ

  30. 4.6 วิธีการตรวจสอบและกู้คืนเมื่อเกิดวงจรอับ 4.6.1 ขั้นตอนการตรวจหาวงจรอับ • อัลกอริธึม • เริ่มต้นโปรเซสไม่มีเครื่องหมายใด ๆ • ทำเครื่องหมายบนโปรเซสทุกตัว ที่มีค่าของแถวในแมตริกซ์ A เป็น 0 หมด • สร้างเวกเตอร์ W ให้มีค่าเท่ากับเวกเตอร์ V • ค้นหาตำแหน่งแถวที่ I โดยที่โปรเซส I จะต้องไม่ถูกทำเครื่องหมายแล้ว และแถวที่ i ของ Q มีค่าน้อยกว่าหรือเท่ากับ W นั่นคือ Qjk Wk,สำหรับทุกค่าของ 1 k  m ถ้าไม่พบแถวตามที่กำหนดให้หยุดการทำงาน • ถ้าพบแถวตรงตามเงื่อนไข ให้ทำเครื่องหมายที่โปรเซส i และเพิ่มค่าของ W โดยการบวกเพิ่มค่าของแถวที่ตรงกันในแมตริกซ์ A นั่นคือให้ Wk = Wk + Ajk

  31. 4.6.1 ขั้นตอนการตรวจหาวงจรอับ 4.6 วิธีการตรวจสอบและกู้คืนเมื่อเกิดวงจรอับ วิธีการตรวจหาวงจรอับ • ทำเครื่องหมายที่โปรเซส P4 เพราะว่า P4 ไม่มีทรัพยากรในครอบครอง • กำหนดให้ W = [00001] • ทรัพยากรที่โปรเซส P3 ต้องการน้อยกว่าหรือเท่ากับ W ดังนั้นให้ทำเครื่องหมายที่ P3 และเพิ่มค่า W = W + [00010] = [00011] • ออกจากการตรวจสอบ R1 R2 R3 R4 R5 R1 R2 R3 R4 R5 R1 R2 R3 R4 R5 R P1 P3 P4 P1 P3 P4 เวกเตอร์ทรัพยากร P2 P2 R1 R2 R3 R4 R5 V แมตริกซ์ (Q) ที่ร้องขอ แมตริกซ์ (A) การครอบครองทรัพยากร เวกเตอร์ทรัพยากรที่เหลือ

  32. 4.6 วิธีการตรวจสอบและกู้คืนเมื่อเกิดวงจรอับ 4.6.2 ขั้นตอนการกู้คืนระบบ วิธีที่สามารถนำไปใช้ในการกู้คืนระบบ 1. ยกเลิกการทำงานของแต่ละโปรเซสที่เกิดวงจรอับ • เลือกโปรเซสที่ได้ใช้เวลาของตัวประมวลผลไปแล้วน้อยที่สุด • เลือกโปรเซสที่ได้ให้ผลลัพธ์ หรือเอาต์พุตออกมาแล้วน้อยที่สุด • เลือกโปรเซสที่ได้ครอบครองทรัพยากรไปแล้วน้อยที่สุด • เลือกโปรเซสที่มีลำดับความสำคัญ หรือ priority น้อยที่สุด • เลือกโปรเซสที่ยังต้องการเวลาในการทำงานมากที่สุด 2. ทำการแทรกหรือเรียกทรัพยากรคืนจากโปรเซสทีละตัวจนกว่าวงจรอับจะหายไป 3. ยกเลิกการทำงานของทุกโปรเซสที่เกิดวงจรอับ 4. ทำการสำรองข้อมูลของทุกโปรเซสที่เกิดวงจรอับไปยังจุดที่ทำการตรวจสอบก่อนหน้านี้

  33. แบบฝึกหัดท้ายบทที่ 4

More Related