งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

ภาวะติดตาย ภาวะติดตาย Deadlocks นงลักษณ์ พรมทอง วิเชษฐ์ พลาย มาศ.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "ภาวะติดตาย ภาวะติดตาย Deadlocks นงลักษณ์ พรมทอง วิเชษฐ์ พลาย มาศ."— ใบสำเนางานนำเสนอ:

1 ภาวะติดตาย ภาวะติดตาย Deadlocks นงลักษณ์ พรมทอง วิเชษฐ์ พลาย มาศ

2 Deadlocks The Deadlock Problem System Model Deadlock Characterization Methods for Handling Deadlocks Deadlock Prevention Deadlock Avoidance Deadlock Detection Recovery from Deadlock

3 Chapter Objectives n เพื่อศึกษาแนวคิดพื้นฐานเกี่ยวกับปัญหาของ ภาวะติดตาย ซึ่งเป็นกลุ่มของกระบวนการที่ ทำงานในภาวะพร้อมกันเพื่อให้ภารกิจของตน เสร็จสิ้น n เพื่อศึกษาวิธีการที่แตกต่างกันในการจัดการกับ ภาวะติดตาย โดยการป้องกันหรือการหลีกเลี่ยง

4 ปัญหาภาวะติดตาย ปัญหาภาวะติดตาย The Deadlock Problem n กลุ่มของกลุ่มกระบวนการที่ต่างฝ่ายต่างรอคอยทรัพยากรที่กำลังถูกถือครอง โดยกระบวนการอื่นอยู่ Example l ระบบที่มีเทปไดรฟ์ 2 ชุด l P 1 และ P 2 ต่างฝ่ายต่างถือเทปไดรฟ์อยู่ และรอเทปไดรฟ์จากอีกฝ่าย หนึ่ง. Example semaphores A and B, initialized to 1 P 0 P 1 wait (A);wait(B) wait (B);wait(A)

5 Bridge Crossing Example n จราจรเดินรถได้เพียงคันเดียวบนสะพาน ไม่สามารถสวนกันได้ n สะพานแต่ละแห่ง เปรียบได้กับทรัพยากรชุดหนึ่งๆ n ถ้าเกิดภาวะติดตายขึ้น สามารถแก้ได้โดยยอมให้รถคันหนึ่งถอยไป จากสะพาน (บังคับให้ปลดปล่อยทรัพยากร และย้อนกลับ -preempt resources and rollback) n บางทีจำเป็นต้องถอยรถออกจากสะพานจำนวนหลายคัน จึงจะ สามารถแก้ปัญหาภาวะติดตายได้ n อาจเกิดภาวะต่างฝ่ายต่างรอซึ่งกันและกัน (Starvation)

6 แบบจำลองระบบ แบบจำลองระบบ System Model n ทรัพยากรแบ่งออกเป็นหลายชนิด R 1, R 2,..., R m รอบซีพียู, พื้นที่หน่วยความจำ, อุปกรณ์ไอ/โอ n ทรัพยากรแต่ละชนิด (R i ) จะมีจำนวนที่คงที่ (W i ). n แต่ละกระบวนการ จะใช้ประโยชน์จากทรัพยากร ดังนี้ : l ร้องขอ (request) l ใช้ (use) l ปลดปล่อย (release)

7 คุณลักษณะของภาวะติดตาย คุณลักษณะของภาวะติดตาย Deadlock Characterization n การไม่เกิดร่วม (mutual exclusion) มีทรัพยากรอย่างน้อยหนึ่ง หน่วยที่ถือไว้ในภาวะที่ไม่สามารถแบ่งปันได้ (nonsharable mode) มี เพียงกระบวนการเท่านั้นที่ใช้ทรัพยากรนั้นได้ n ถือ-และ-รอ (hold-and-wait) มีกระบวนการกำลังครอบครอง ทรัพยากรอย่างน้อยหนึ่งหน่วย และกำลังรอคอยทรัพยากรอื่นเพิ่มเติม โดยที่ทรัพยากรนั้นกำลังถูกใช้อยู่โดยกระบวนการอื่นในขณะนั้น n ไม่มีการบังคับ (no preemption) ทรัพยากรเหล่านั้นไม่สามารถถูก บังคับได้ จะถูกปลดปล่อยออกมาเองภายหลังจากกระบวนการใช้จนเสร็จ สิ้น n การรอเป็นวงกลม (circular wait) จะต้องมีเซ็ต {P 0, P 1, …, P n } ของกระบวนการที่กำลังรอคอย กล่าวคือ P 0 กำลังรอทรัพยากรที่ถูกถือไว้ โดย P 1 ในขณะที่ P 1 ก็กำลังรอทรัพยากรที่ถือไว้โดย P 2 ต่อเนื่องเช่นนี้ ไปเรื่อยๆ จนถึง P n-1 กำลังรอทรัพยากรที่ถูกถือไว้โดย P n และ P n ก็กำลัง รอทรัพยากรที่ถูกถือไว้โดย P 0 ภาวะติดตายอาจเกิดขึ้นได้ถ้าประสบกับเงื่อนไขทั้ง 4 ข้อต่อไปนี้เกิดขึ้นในเวลา เดียวกันในระบบ

8 ตัวอย่างภาวะติดตายของการจราจรบริเวณสี่แยก

9 กราฟการจัดสรรทรัพยากร กราฟการจัดสรรทรัพยากร Resource-Allocation Graph n กราฟนี้ประกอบด้วยเซ็ตของจุดยอด V และเซ็ตของเส้นเชื่อม E เส้น ของจุดยอด V แบ่งออกเป็น 2 ประเภท l P = {P 1, P 2, …, P n }เป็นเซ็ตที่ประกอบด้วยกระบวนการทั้งหมด ในระบบ l R = {R 1, R 2, …, R m }เป็นเซ็ตที่ประกอบด้วยทรัพยากรทั้งหมด ในระบบ n เส้นเชื่อมจากกระบวนการ P i ไปยังทรัพยากร R j แทนด้วย P 1  R j หมายความว่า กระบวนการ Pi ร้องขอทรัพยากรของ R j และขณะนี้ กำลังรอทรัพยากรนั้นอยู่ n เส้นเชื่อมจากทรัพยากร R j ไปยังกระบวนการ P i แทนด้วย assignment edge – directed edge R j  P i หมายความว่า ทรัพยากร R j ถูกจัดสรรให้แก่กระบวนการ P i กราฟการจัดสรรทรัพยากรระบบ (system resource-allocation graph)

10 Resource-Allocation Graph (Cont.) n กระบวนการ Process n ทรัพยากรที่มี 4 หน่วย n P i ร้องขอ R j n P i กำลังถือ R j PiPi PiPi RjRj RjRj

11 ตย. กราฟการจัดสรรทรัพยากร

12 ตย. กราฟการจัดสรรทรัพยากรที่เกิดภาวะติดตาย

13 ตย. กราฟการจัดสรรทรัพยากรแต่ไม่เกิดภาวะติดตาย

14 ข้อสังเกต n ถ้ากราฟการจัดสรรทรัพยากรไม่มีวงกลม แสดง ว่าระบบไม่เกิดสถานะของภาวะติดตาย n ถ้ากราฟการจัดสรรทรัพยากรมีวงกลม แสดงว่า ระบบอาจเกิดสถานะของภาวะติดตายหรือไม่ก็ ได้ โดยที่ l ถ้ามี 1 หน่วยต่อ 1 ทรัพยากร แสดงว่าเกิด ภาวะติดตาย l ถ้ามีหลายหน่วยต่อทรัพยากร อาจเป็นไปได้ ที่จะเกิดภาวะติดตาย

15 วิธีการควบคุมภาวะติดตาย วิธีการควบคุมภาวะติดตาย Methods for Handling Deadlocks n วิธีที่ใช้ในการจัดการกับปัญหาภาวะติดตายมี 3 วิธี 1. เราอาจใช้เกณฑ์วิธีเพื่อประกันว่า ระบบจะไม่มีโอกาสเข้าสู่ สถานะของภาวะติดตาย (ป้องกัน-prevention) 2. เรายินยอมให้มีการเกิดภาวะติดตายได้ และจากนั้นจะใช้การ กู้คืน (กู้คืน-recovery) 3. เราสามารถหลีกเลี่ยงปัญหาภาวะติดตาย และอ้างว่าภาวะติด ตายไม่เกิดขึ้นในระบบ (หลีกเลี่ยง-avoidance) n วิธีที่ 3 นิยมนำไปใช้ในระบบปฏิบัติการส่วนใหญ่ รวมทั้งยูนิกซ์ ส่วน JVM ไม่มีการจัดการกับภาวะติดตาย เพราะยกให้นักพัฒนา แอพพลิเคชันเขียนโปรแกรมเพื่อควบคุมภาวะติดตาย

16 การป้องกันภาวะติดตาย การป้องกันภาวะติดตาย Deadlock Prevention n เงื่อนไข การไม่เกิดร่วม (Mutual Exclusion) l ห้ามร้องขอทรัพยากรที่ใช้ร่วมกัน (sharable resources) โดยจะถือครองได้ เฉพาะทรัพยากรประเภทไม่สามารถใช้ร่วมกัน (nonsharable resources) ได้ เท่านั้น n เงื่อนไข ถือและรอ (Hold and Wait) l ต้องประกันว่า เมื่อไรก็ตามที่กระบวนการใดๆ ร้องขอทรัพยากร กระบวนการนั้น จะต้องไม่ถือทรัพยากรอื่นใดอยู่เลยในขณะนั้น l วิธีการคือ แต่ละกระบวนการที่ร้องขอจะต้องได้รับทรัพยากรทั้งหมดก่อนที่จะ เริ่มกระทำการ -หรือ- l จะยินยอมให้เฉพาะกระบวนการที่ไม่ถือทรัพยากรใดๆ อยู่ในมือเท่านั้นที่มีสิทธิ์ ร้องขอทรัพยากรใหม่ได้ ดังนั้น ก่อนที่จะเริ่มร้องขอทรัพยากรเพิ่ม กระบวนการ นั้นจะต้องปลดปล่อยทรัพยากรที่กำลังถืออยู่ทั้งหมดออกไปเสียก่อน l ข้อด้อย มีการใช้ประโยชน์ทรัพยากรต่ำ และมีความเป็นไปได้ที่อาจเกิดภาวะรอ แบบไม่รู้จบ การป้องกันไม่ให้เงื่อนไขทั้ง 4 ประการเกิดขึ้น

17 Deadlock Prevention (Cont.) n เงื่อนไข ไม่มีการบังคับ (No Preemption) l ถ้ากระบวนการที่กำลังถือทรัพยากรบางอย่างอยู่ร้องขอ ทรัพยากรอื่นเพิ่มเติม แต่ทรัพยากรนั้นยังไม่สามารถจัดสรรให้ ได้ในขณะนั้น กระบวนการนั้นจะต้องถูกบังคับให้ปลดปล่อย ทรัพยากรทั้งหมดที่กำลังถืออยู่ l และทรัพยากรเหล่านี้จะถูกใส่เพิ่มเข้าไปในรายการของ ทรัพยากรที่กระบวนการกำลังรอ l จากนั้น กระบวนการนั้นจะต้องเริ่มต้นร้องขอใหม่ทั้งหมด เช่นเดียวกับกระบวนการที่เพิ่งมาใหม่ n เงื่อนไข การรอเป็นวงกลม (Circular Wait) l ต้องทำการจัดอันดับทรัพยากรทุกประเภท l การร้องขอจากกระบวนการใดๆ จะต้องถูกนำไปจัดอันดับด้วย

18 การหลีกเลี่ยงภาวะติดตาย การหลีกเลี่ยงภาวะติดตาย Deadlock Avoidance n วิธีที่ง่ายที่สุดและใช้ประโยชน์ได้มากก็คือ แต่ละกระบวนการ จะต้องประกาศจำนวนทรัพยากรสูงสุดแต่ละประเภทที่ จำเป็นต้องใช้ไว้ล่วงหน้า, จัดลำดับความสำคัญก่อนหลังของ ทรัพยากรแต่ละประเภทที่จำเป็นต้องใช้ หรืออาจต้องการใช้ใน แต่ละกระบวนการ n ขั้นตอนวิธีแบบหลีกเลี่ยงภาวะติดตายนั้น จะทำการตรวจสอบ สถานะการจัดสรรทรัพยากรอยู่ตลอดเวลาเพื่อประกันว่าการ จัดสรรนั้นจะไม่นำไปสู่เงื่อนไขการรอแบบวงกลม n สถานะการจัดสรรทรัพยากร ระบุเกี่ยวกับจำนวนทรัพยากร ที่ว่างอยู่ และที่กำลังถูกจัดสรร และความต้องการสูงสุดของ กระบวนการทั้งหมด ระบบจะต้องเพิ่มเติมข้อมูลเกี่ยวกับ ลำดับความสำคัญ (priori)

19 สถานะปลอดภัย สถานะปลอดภัย Safe State n เพื่อประกันว่าการจัดสรรนั้นจะไม่นำไปสู่เงื่อนไขการรอแบบวงกลม เมื่อ กระบวนการร้องขอทรัพยากรที่ว่างอยู่ ระบบจะตัดสินว่าจะจัดสรรให้หรือไม่ โดยพิจารณาว่าระบบจะอยู่ในสถานะปลอดภัย หรือไม่ n วิธีการที่นำเสนอในที่นี้จะใช้กราฟการจัดสรรทรัพยากรเข้ามาช่วย ด้วยการ ตรวจสอบว่ากราฟนั้นเป็นวงกลมหรือไม่ และใช้ในการตัดสินใจว่าจะจัดสรร ทรัพยากรอย่างไรจึงจะไม่เกิดภาวะติดตายขึ้นในระบบ n สมมุติว่า กระบวนการ Pi ร้องขอทรัพยากร Rj การร้องขอดังกล่าวจะได้รับ อนุญาตได้ก็ต่อเมื่อ l ถ้ามีการแปลงการร้องขอจากเส้นโยง Pi  Rj ไปยังเส้นโยงมอบหมาย Pi  Rj แล้วไม่ก่อให้เกิดผลลัพธ์เป็นวงกลมของกราฟการจัดสรร ทรัพยากร l การตรวจสอบสถานะปลอดภัย (safe state) หรือไม่ปลอดภัย (unsafe state) สามารถทำโดยได้โดยอาศัยขั้นตอนวิธีการตรวจหาวงกลม ซึ่ง ขั้นตอนวิธีการตรวจหาวงกลมนี้ต้องใช้เวลาปฏิบัติการในอันดับ n2 โดย ที่ n คือจำนวนกระบวนการทั้งหมดในระบบ

20 เงื่อนไขพื้นฐาน ถ้าไม่เกิดวงกลมก็แสดงว่าการจัดสรรทรัพยากรดังกล่าวก็ถือว่า ระบบอยู่ในสถานะปลอดภัย ( safe state - ไม่เกิดภาวะติดตาย) ถ้าพบว่า เกิดวงกลม ก็ถือว่าอยู่ในสถานะไม่ปลอดภัย ( unsafe state) n ขั้นตอนวิธีแบบหลีกเลี่ยง ต้องประกันว่าระบบจะต้องไม่เข้าสู่อาณา บริเวณของสถานะไม่ปลอดภัยในขณะใดขณะหนึ่ง

21 Safe, Unsafe, Deadlock State

22 Resource-Allocation Graph Algorithm n การเพิ่มเส้นโยงเรียกร้อง (claim edge) เข้าไปจากเดิมที่มีเพียงเส้นโยง ร้องขอกับเส้นโยงมอบหมาย โดยที่ เส้นโยงเรียกร้องของ P i  R j แสดง ว่า กระบวนการ P i เรียกร้องเพื่อจะขอใช้ทรัพยากร R j ในอนาคตอันใกล้นี้ เส้นโยงเรียกร้องจะแสดงเป็นเส้นประ n เส้นโยงเรียกร้องจะแปลงไปเป็นเส้นโยงร้องขอ (request edge) เมื่อมี การร้องขอทรัพยากร n เส้นโยงมอบหมาย (assignment edge) n เมื่อทรัพยากรถูกปลดปล่อยโดยกระบวนการหนึ่ง เส้นโยงมอบหมายจึงจะ ถูกแปลงไปเป็นเส้นโยงเรียกร้อง n ในระบบนี้ ทรัพยากรทั้งหมดจะถูกเรียกร้องตามลำดับความสำคัญ n จะช่วยให้สามารถพยากรณ์สถานะของภาวะติดตายที่อาจเกิดขึ้นในระบบ ได้อย่างแม่นยำด้วยการตรวจสอบว่ากราฟนั้นเป็นวงกลมหรือไม่ และใช้ใน การตัดสินใจว่าจะจัดสรรทรัพยากรอย่างไรจึงจะไม่เกิดภาวะติดตายขึ้นใน ระบบ

23 กราฟการจัดสรรทรัพยากรสำหรับการหลีกเลี่ยงภาวะติดตาย

24 สถานะไม่ปลอดภัยในกราฟการจัดสรรทรัพยากร

25 การตรวจหาภาวะติดตาย การตรวจหาภาวะติดตาย Deadlock Detection n ยินยอมให้ระบบเข้าสู่สถานะของภาวะติดตายได้ (deadlock state) n ขั้นตอนวิธีที่ใช้ตรวจสอบสถานะของระบบว่าเกิดภาวะติดตายหรือไม่ (Detection algorithm) n ขั้นตอนวิธีที่ใช้กู้คืนจากภาวะติดตาย (Recovery scheme)

26 ทรัพยากรในระบบที่มีเพียงหน่วยเดียว n สามารถใช้ขั้นตอนวิธีการตรวจหาภาวะติดตายด้วยการใช้ กราฟการจัดสรรทรัพยากรที่เรียกว่า กราฟการรอ (wait-for graph) n ในการตรวจหาภาวะติดตายนี้ ระบบจำเป็นต้องบำรุงรักษา กราฟการรอ และเรียกใช้ขั้นตอนวิธีดังกล่าวเป็นระยะๆ เพื่อ ค้นหาวงกลมในกราฟ n ขั้นตอนวิธีดังกล่าวต้องใช้เวลาปฏิบัติการในอันดับ O(n 2 ) โดยที่ n คือจำนวนของยอดในกราฟ

27 Resource-Allocation Graph and Wait-for Graph (a) กราฟการจัดสรรทรัพยากร (b) ความสอดคล้องกันของกราฟการรอ

28 ทรัพยากรในระบบที่มีหลายประเภท n ความพอเพียง Available: l เป็นเว็กเตอร์ของขนาด m แสดงจำนวนของทรัพยากรแต่ละ ประเภทที่มีให้ใช้งาน n การจัดสรร Allocation: l เป็นแมทริกซ์ n x m ที่ระบุจำนวนทรัพยากรแต่ละประเภทใน ปัจจุบันที่ถูกจัดสรรให้แต่ละกระบวนการ n การร้องขอ Request: l เป็นแมทริกซ์ n x m ที่ แสดงการร้องขอในปัจจุบันของแต่ละ กระบวนการ ถ้าการร้องขอ [i j ] = k, แสดงว่า กระบวนการ P i is กำลังร้องขอทรัพยากร k มากกว่าหนึ่งอย่างของทรัพยากร R j

29 Detection Algorithm 1.Let Work and Finish be vectors of length m and n, respectively Initialize: (a) Work = Available (b)For i = 1,2, …, n, if Allocation i  0, then Finish[i] = false;otherwise, Finish[i] = true. 2.Find an index i such that both: (a)Finish[i] == false (b)Request i  Work If no such i exists, go to step 4.

30 Detection Algorithm (Cont.) 3.Work = Work + Allocation i Finish[i] = true go to step 2. 4.If Finish[i] == false, for some i, 1  i  n, then the system is in deadlock state. Moreover, if Finish[i] == false, then P i is deadlocked. ขั้นตอนวิธีดังกล่าวต้องใช้เวลาปฏิบัติการในอันดับ O(m x n2) ในการ ตรวจหาว่าระบบเกิดสถานะภาวะติดตายหรือไม่

31 Example of Detection Algorithm Five processes P 0 through P 4 ; three resource types A (7 instances), B (2 instances), and C (6 instances). Snapshot at time T 0 : AllocationRequestAvailable A B C A B C A B C P P P P P Sequence will result in Finish[i] = true for all i.

32 Example (Cont.) P 2 requests an additional instance of type C. Request A B C P P P P P State of system? Can reclaim resources held by process P 0, but insufficient resources to fulfill other processes; requests. Deadlock exists, consisting of processes P 1, P 2, P 3, and P 4.

33 เงื่อนไขการเลือกอัลกอริธึมแบบการตรวจหา เงื่อนไขการเลือกอัลกอริธึมแบบการตรวจหา Detection-Algorithm Usage n ในการเลือกใช้ขั้นตอนวิธีการตรวจหา จะต้องพิจารณา ปัจจัยต่อไปนี้ l ภาวะติดตายจะเกิดขึ้นบ่อยแค่ไหน l มีกระบวนการที่จะได้รับผลกระทบจากการเกิดภาวะติด ตายเป็นจำนวนเท่าไร n ถ้าภาวะติดตายเกิดขึ้นบ่อย ขั้นตอนวิธีการตรวจหาดังกล่าว ก็ควรถูกเรียกใช้บ่อย ทรัพยากรทั้งหมดที่ถูกจัดสรรให้กับ กระบวนการที่อยู่ในภาวะติดตายจะสูญเปล่าจนกว่าภาวะติด ตายจะถูกกำจัด n ยิ่งไปกว่านั้น กระบวนการที่อาจเข้าไปเกี่ยวข้องกับภาวะติด ตายก็อาจเพิ่มจำนวนขึ้นเรื่อยๆ

34 การกู้คืนจากภาวะติดตาย : การกู้คืนจากภาวะติดตาย : การเลิกกระบวนการ Recovery from Deadlock: Process Termination n ทำการเลิกกลางคันกระบวนการทั้งหมดที่เกิดภาวะติดตาย n ทำการยกเลิกกลางคันทีละกระบวนการไปจนกระทั่งยุติภาวะติดตาย n ปัจจัยที่สามารถใช้เป็นแนวทางในการพิจารณาได้ดังต่อไปนี้ l ลำดับความสำคัญของกระบวนการนั้น l กระบวนการนั้นจะใช้เวลาเท่าไรในการคำนวน และต้องใช้เวลาคำนวณอีก นานเท่าไรก่อนที่จะเสร็จภารกิจที่ได้รับมอบหมาย l จำนวนและประเภทของทรัพยากรที่กระบวนการนั้นกำลังใช้อยู่ (ตัวอย่างเช่น ทรัพยากรที่กระบวนการนั้นใช้อยู่สามารถบังคับวางได้ง่าย หรือไม่) l มีทรัพยากรอีกจำนวนเท่าไรที่กระบวนการนั้นจะต้องใช้อีกจนกว่างานจะ เสร็จ l มีกระบวนการที่จำเป็นต้องถูกยกเลิกจำนวนเท่าไร l กระบวนการนั้นเป็นเชิงโต้ตอบหรือเชิงกลุ่ม

35 การกู้คืนจากภาวะติดตาย : การกู้คืนจากภาวะติดตาย : การบังคับ ทรัพยากร Resource Preemption n ปัจจัยที่พึงพิจารณา l การเลือกเหยื่อ (selection of a victim) ต้องมีค่าใช้จ่ายต่ำที่สุด l การย้อนกลับ (rollback) – การกลับคืนไปสู่สถานะปลอดภัย, เริ่มต้นกระบวนการนั้นใหม่ l การรอคอยอย่างไม่มีที่สิ้นสุด (Starvation) บางกระบวนการอาจ ถูกเลือกเป็นเหยื่อทุกครั้งที่เกิดภาวะติดตาย จึงควรคำนึงว่า นโยบายการเลือกเหยื่อใดๆ ก็ตามต้องมั่นใจว่ากระบวนการที่ถูก เลือกนั้นจะตกเป็นเหยื่อเพียงในช่วงสั้นๆ เท่านั้น

36 End of Deadlock วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | ภาวะติดตาย (Deadlock) | 36

37


ดาวน์โหลด ppt ภาวะติดตาย ภาวะติดตาย Deadlocks นงลักษณ์ พรมทอง วิเชษฐ์ พลาย มาศ.

งานนำเสนอที่คล้ายกัน


Ads by Google