SlideShare una empresa de Scribd logo
1 de 71
(DEADLOCK)
รูปแบบของปัญหา (System 
Model)
รูปแบบของปัญหา (System 
Model)
รูปแบบของปัญหา (System 
Model) 
เพื่อที่จะแสดงให้เห็นภาพของสถานะวงจรอับ เรา 
จะมาพิจารณา ระบบที่ประกอบไปด้วยเครื่องขับเทป 
3 เครื่อง สมมติว่า มีกระบวนการอยู่ 3 กระบวนการ 
และแต่ละกระบวนการ กำาลังใช้เครื่องขับเทปอยู่ 
กระบวนการละเครื่อง ต่อมาถ้าแต่ละกระบวนการ 
ร้องขอเครื่องขับเทปเพิ่มอีกกระบวนการละ 1 เครื่อง 
ทั้ง 3 กระบวนการ จะติดอยู่ในวงจรอับทันที โดย 
แต่ละกระบวนการกำาลังรอสถานการณ์ที่ “เครื่องขับ 
เทปถูกปล่อยคืนสู่ระบบ” ซึ่งเป็นสถานการณ์ที่ขึ้นกับ 
กระบวนการอื่น ในวงจร (ที่กำาลังรอคอยทรัพยากร 
อยู่เช่นกัน) ตัวอย่างที่ยกมานี้เป็นการแสดงภาพของ 
วงจรอับที่เกิดจากการที่กระบวนการพยายามที่จะ 
แย่งกันใช้ทรัพยากรประเภทเดียวกัน
ลักษณะของวงจรอับ 
(Deadlock Characterization)
เงื่อนไขในการติดวงจรอับ 
(Necessary Conditions)
เงื่อนไขในการติดวงจรอับ 
(Necessary Conditions)
กราฟการจัดสรรทรัพยากร 
(Resource-Allocation Graph) 
P = { P1, P2, … , Pn} เป็นเซตของกระบวนการ 
ทั้งหมดที่มีอยู่ในระบบ 
และเซต R = { R0, R1, … , Rn } เป็นเซตของ 
ทรัพยากรที่มีอยู่ในระบบ 
โดยที่ลูกศรจาก Pi ไปยัง Rj (Pi Rj) นั้นเรียกว่า 
® 
“เส้นร้องขอ” (Request Edge) 
และลูกศรจาก Rj ไปยัง Pi (Rj Pi) เรียกว่า “เส้น 
® 
ถือครอง” (Assignment Edge)
กราฟการจัดสรรทรัพยากร 
(Resource-Allocation Graph) 
ในการเขียนกราฟ เราจะใช้วงกลมแทน 
กระบวนการ และใช้สี่เหลยี่มแทนทรัพยากร และใช้ 
จุด แทนจำานวนทรัพยากรแต่ละตัว ซึ่งจะอยู่ภายใน 
สี่เหลยี่ม โดยที่เส้นร้องขอจะต้องชไี้ปยังกรอบ 
สี่เหลยี่ม (ทรัพยากร Rj) เท่านั้น แต่เส้นถือครอง จะ 
ต้องชี้ไปยังจุดใดจุดหนึ่งในสี่เหลี่ยม
กราฟการจัดสรรทรัพยากร 
(Resource-Allocation Graph) 
กราฟการจัดสรรทรัพยากรในรูปข้างต้น แสดงสถานะของระบบ 
ดังนี้ 
 เซต P = { P1 , P2, P3} 
 เซต R = { R1 ® , R2 , R3 ® , R4 } 
® ® ® ® 
 เซต E = { P1 R1, P2 R3 , R1 P2 , R2 P2 ,R2 P1 , R3 
P3 } 
ทรัพยากรในระบบ 
ทรัพยากรประเภท R1 = 1 ตัว 
ทรัพยากรประเภท R2 = 2 ตัว 
ทรัพยากรประเภท R3 = 1 ตัว 
ทรัพยากรประเภท R4 = 3 ตัว
กราฟการจัดสรรทรัพยากร 
(Resource-Allocation Graph) 
สถานะของกระบวนการ 
กระบวนการ P1 กำาลังถือครองทรัพยากรประเภท R2 
และกำาลังรอคอยที่จะใช้ทรัพยากรประเภท R1 
กระบวนการ P2 กำาลังถือครองทรัพยากรประเภท R1 
และ R2 และกำาลังรอคอยที่จะใช้ทรัพยากรประเภท 
R3 
กระบวนการ P3 กำาลังถือครองทรัพยากรประเภท R3 
อยู่
กราฟการจัดสรรทรัพยากร 
(Resource-Allocation Graph) 
ถ้าเป็นระบบทที่รัพยากรแต่ละประเภทมีเพียง 1 ตัว 
เมื่อมีวงจรในกราฟ ก็จะต้องมีวงจรอับในระบบ 
แน่นอน 
แต่ถ้าทรัพยากรแต่ละประเภทมีจำานวนมากกว่า 1 ตัว 
วงจรที่เกิดขึ้นในกราฟ ไม่อาจเป็นตัวบอกได้เสมอ 
ไปว่า เกิดวงจรอับในระบบ 
® 
สมมติว่ากระบวนการ P3 ได้ร้องขอทรัพยากร 
ประเภท R2 แต่เนื่องจากไม่มีทรัพยากรตัวใด ใน 
ประเภท R2 ว่างเลย ดังนั้นเส้นร้องขอ P3 R2 จึงถูก 
ใส่เพิ่ม เข้าไปในกราฟ ซึ่งแสดงในรูปถัดไป
กราฟการจัดสรรทรัพยากร 
(Resource-Allocation Graph)
กราฟการจัดสรรทรัพยากร 
(Resource-Allocation Graph) 
ณ จุดนี้ จะเกิดวงจรอย่างน้อย 2 วง ขึ้นในระบบ คือ 
 P1 ® R1 ® P2 ® R3 ® P3 ® R2 ® 
P1 
 P2 ® R3 ® P3 ® R2 ® 
P2
กราฟการจัดสรรทรัพยากร 
(Resource-Allocation Graph)
กราฟการจัดสรรทรัพยากร 
(Resource-Allocation Graph) 
P1 ® R1 ® P3 ® R2 ® P1
กราฟการจัดสรรทรัพยากร 
(Resource-Allocation Graph) 
แต่อย่างไรก็ตามวงจรนจี้ะไม่ก่อให้เกิดวงจรอับ 
โดยสังเกตว่า กระบวนการ P4 จะปล่อยทรัพยากร 
ประเภท R2 ที่ตนเองถือครองอยู่ เมื่อใช้เสร็จ ซึ่งเมื่อ 
ทรัพยากร R2 ถูกปล่อยกลับสู่ระบบแล้วระบบก็ 
สามารถทจี่ะจัดทรัพยากรประเภท R2 ให้แก่ 
กระบวนการ P3 ได้ วงจรก็จะขาดทันที 
 เราอาจกล่าวโดยสรุปได้ว่า ถ้าไม่มีวงจรใน 
กราฟการจัดสรรทรัพยากรแล้ว ระบบจะไม่อยู่ใน 
สถานะวงจรอับ แต่ในทางกลับกัน ถ้ามีวงจรใน 
กราฟแล้ว ระบบอาจจะเกิดวงจรอับ หรือไม่เกิดก็ได้
การจัดการปัญหาวงจรอับ 
(Methods for Handing Deadlocks) 
การจัดการปัญหาวงจรอับมีอยู่ 3 วิธีหลัก ๆ คือ 
กำาหนดกฎเกณฑ์บางอย่างในการใช้ทรัพยากร เพื่อ 
ให้แน่ใจว่าระบบจะไม่มีทางเกิดวงจรอับได้ 
ไม่ต้องป้องกันใด ๆ เลย ปล่อยให้ระบบเกิดวงจรอับ 
ขึ้นก่อน แล้วค่อยตามแก้ไขทีหลัง 
มองข้ามปัญหาทั้งหมด แล้วแสร้งทำาว่าวงจรอับไม่ 
เคยเกิดขึ้นในระบบ วิธีการแก้ปัญหาวิธีนี้เป็นวิธีการ 
หนึ่งที่ถูกใช้ในระบบปฏิบัติการส่วนใหญ่ รวมทงั้ 
UNIX ด้วย <restart>
การป้องกันการเกิดวงจรอับ 
(Deadlock Prevention) 
ห้ามใช้ทรัพยากรร่วมกัน (Mutual Exclusion) 
 เงอื่นไขในข้อนี้ คือ การทรี่ะบบ ไม่อนุญาตให้ 
มีการใช้ทรัพยากรร่วมกัน เช่น เครื่องพิมพ์จะไม่ 
สามารถ ให้กระบวนการหลาย ๆ กระบวนการ ใช้ 
พร้อม ๆ กันได้ แต่ถ้าเรายอมให้ในระบบมีการใช้ 
ทรัพยากรร่วมกันได้ ปัญหาวงจรอับก็จะไม่เกิด เช่น 
แฟ้มข้อมูลที่อ่านได้อย่างเดียวสามารถใช้ร่วมกันได้ 
 อย่างไรก็ตาม การที่เราจะป้องกันการเกิดวงจร 
อับในระบบ โดยการป้องกันเงอื่นไขนี้ ไม่สามารถ 
ทำาได้เสมอไป เพราะยังมีทรัพยากรบางประเภท ที่ 
ไม่มีทางใช้ร่วมกันได้
การป้องกันการเกิดวงจรอับ 
(Deadlock Prevention) 
การถือครองแล้วรอคอย (Hold and Wait) 
 คือ การทจี่ะไม่ให้เกิด “การถือครองแล้วรอ 
คอย” ขึ้นในระบบ โดยจะต้องกำาหนดว่า เมื่อ 
กระบวนการหนึ่งจะร้องขอทรัพยากร กระบวนการ 
นั้นจะต้องไม่ได้ถือครองทรัพยากรใด ๆ อยู่ในขณะ 
นั้น ซึ่งอาจทำาได้ 2 วิธีการ คือ 
ให้กระบวนการร้องขอทรัพยากรที่ต้องการใช้ 
ทั้งหมด (ตลอดการทำางาน) ก่อนที่จะเริ่มต้นทำางาน 
ยอมให้กระบวนการร้องขอทรัพยากรได้ ก็ต่อเมื่อ 
กระบวนการนั้นมิได้ถือครองทรัพยากรใดไว้เลย
การป้องกันการเกิดวงจรอับ 
(Deadlock Prevention) 
เราจะเห็นความแตกต่างของ 2 วิธีนี้ โดยการ 
พิจารณาจากตัวอย่าง กระบวนการหนึ่งต้องการ 
คัดลอกข้อมูลจากเทปลงไปเก็บที่แฟ้มข้อมูลในดิสก์ 
เรียงลำาดับข้อมูลของแฟ้มข้อมูลในดิสก์ 
พิมพ์ผลลัพธ์ออกสู่เครื่องพิมพ์ 
ถ้าทรัพยากรทั้งหมดต้องถูกร้องขอในตอนเริ่มต้น 
งานของกระบวนการ (นนั่คือใช้วิธีแรก) แสดงว่า 
กระบวนการนี้ ก็จะถือครองเครื่องพิมพ์ ไว้ตลอด 
เวลาที่กระบวนการทำางานอยู่ ถึงแม้ว่ากระบวนการ 
นี้ จะใช้เครื่องพิมพ์เฉพาะในตอนท้ายของการ 
ทำางานเท่านั้น
การป้องกันการเกิดวงจรอับ 
(Deadlock Prevention) 
สำาหรับวิธีที่ 2 ให้กระบวนการร้องขอทรัพยากรใน 
ตอนเริ่มต้น แค่เครื่องขับเทป และแฟ้มข้อมูลในดิสก์ 
โดยเมอื่ได้รับทรัพยากรแล้ว กระบวนการจะคัดลอก 
ข้อมูล จากเทปลงไปสู่ดิสก์จากนั้นก็จะคืนทั้งเครื่อง 
ขับเทป และแฟ้มข้อมูลในดิสก์กลับสู่ระบบ จากนั้น 
กระบวนการก็จะต้องร้องขอแฟ้มข้อมูลในดิสก์และ 
เครื่องพิมพ์ใหม่อีกครั้งหนึ่ง เมื่อพิมพ์เสร็จเรียบร้อย 
แล้วกระบวนการก็จะคืนทรัพยากรกลับสู่ระบบ เป็น 
อันสิ้นสุดการทำางานของกระบวนการ
การป้องกันการเกิดวงจรอับ 
(Deadlock Prevention) 
วิธีการแรก มีข้อเสียคือ การใช้ทรัพยากรจะมี 
ประสิทธิผลตำ่ามาก อาจมี ปัญหาการแช่เย็น 
(starvation) อีกด้วย โดยถ้ามีบางกระบวนการ 
ต้องการใช้ทรัพยากร (ที่เป็นทนีิ่ยมใช้กันมาก) 
หลาย ๆ ตัว อาจต้องรอคอย อย่างไม่มีทสีิ่้นสุด 
ส่วนวิธีการหลังก็มีข้อเสียคือ ต้องคืนทรัพยากรทถีื่อ 
ครองอยู่ เพื่อที่จะร้องขอกลับมาใหม่อีก ร่วมกับ 
ทรัพยากรตัวใหม่ ทำาให้เสียเวลาโดยเปล่า 
ประโยชน์
การป้องกันการเกิดวงจรอับ 
(Deadlock Prevention) 
ห้ามแทรกกลางคัน (No Preemption) 
เราอาจกำาหนดกฎเกณฑ์ดังนี้ 
 ถ้ากระบวนการหนึ่ง (ที่กำาลังถือครองทรัพยากร 
บางส่วนอยู่) ร้องขอทรัพยากรเพิ่ม และระบบยังไม่ 
สามารถจัดให้ได้ในทันที (แสดงว่ากระบวนการที่ 
ร้องขอจะต้องรอ) เราจะให้ทรัพยากรทงั้หมด ที่ 
กระบวนการนี้ถือครองอยู่ ถูกแทรกกลางคัน นั่นคือ 
ทรัพยากรที่กระบวนการนี้ถือครองอยู่ทั้งหมดจะถูก 
ปล่อยคืนสู่ระบบโดยปริยาย กระบวนการที่ถูกแทรก 
กลางคันนจี้ะต้องรอคอยทรัพยากร ทั้งที่ร้องขอไว้ 
ตั้งแต่แรก และทถีู่กแทรกกลางคันไป ก่อนที่จะ 
สามารถทำางานต่อไปได้
การป้องกันการเกิดวงจรอับ 
(Deadlock Prevention) 
วิธีการนี้มักใช้กับทรัพยากรที่สามารถเก็บค่าสถานะ 
และติดตั้งค่ากลับคืนมาได้ง่าย เช่น ค่าในรีจีสเตอร์ 
(ของหน่วยประมวลผลกลาง) เนื้อที่ในหน่วยความ 
จำาหลัก เป็นต้น แต่จะไม่สามารถใช้กับทรัพยากรทวั่ 
ๆ ไป เช่น เครื่องพิมพ์ และ หน่วยขับเทป เป็นต้น
การป้องกันการเกิดวงจรอับ 
(Deadlock Prevention) 
วงจรรอคอย (Circular Wait) 
เราอาจป้องกันการเกิดวงจรอับ โดยการป้องกันไม่ 
ให้เกิดเงอื่นไขวงจรรอคอย ซึ่งสามารถทำาได้โดย 
การกำาหนดลำาดับของทรัพยากรทั้งหมดในระบบ 
และกำาหนดให้ กระบวนการต้องร้องขอใช้ 
ทรัพยากร เรียงตามเลขลำาดับนี้ 
 กำาหนดให้ R = { R1 , R2, … , Rm } โดย R เป็น 
เซตของทรัพยากรในระบบ และ กำาหนดให้ 
ทรัพยากรแต่ละประเภทมี ค่าเลขลำาดับเป็น 
เลขจำานวนเต็ม ที่ไม่ซำ้ากัน เขียนแทนด้วย F(Ri) 
เพื่อให้เราสามารถเปรียบเทียบทรัพยากร 2 ประเภท 
ได้ว่าตัวใดมีลำาดับก่อน-หลัง ตัวอย่างเช่น ถ้า
การป้องกันการเกิดวงจรอับ 
(Deadlock Prevention) 
F (เครื่องขับเทป) = 1 
F (เครื่องขับดิสก์) = 5 
F (เครื่องพิมพ์) = 12 
 
และกำาหนดวิธีการในการร้องขอทรัพยากรในระบบดังนี้ 
 กระบวนการแต่ละตัวสามารถร้องขอทรัพยากรได้ 
ในลำาดับที่เพิ่มขึ้นเท่านั้น คือ เริ่มต้นกระบวนการอาจ 
ร้องขอทรัพยากรใด ๆ ก็ได้ เช่น ทรัพยากร Ri แต่ต่อ 
จากนี้กระบวนการจะร้องขอทรัพยากร Rj ได้ก็ต่อเมื่อ 
F(Rj) > F(Ri) ถ้าเป็นการร้องขอทรัพยากร 
ประเภทเดียวกันหลาย ๆ ตัว กระบวนการจะต้องร้องขอ 
ทรัพยากรทีละตัว 
³ 
 ในทางตรงกันข้าม ถ้ากระบวนการต้องการร้องขอ 
ทรัพยากรประเภท Rj กระบวนการจะต้องปล่อย 
ทรัพยากร Ri ซึ่ง F(Ri) F(Rj) คืนสู่ระบบทุกตัวเสียก่อน 
เช่นถือครอง R5 อยู่อยากได้ R1 ต้องคืน R5 ก่อน R5 R1
การป้องกันการเกิดวงจรอับ 
(Deadlock Prevention) 
พึงสังเกตว่า การกำาหนดค่าเลขลำาดับของทรัพยากร 
ควรเรียงตามลำาดับการใช้งานตามปกติในระบบ 
เช่น ปกติเรามักใช้เครื่องขับเทป ก่อนเครื่องพิมพ์ 
เสมอ จึงควรกำาหนดลำาดับให้ F (เครื่องขับเทป) < F 
(เครื่องพิมพ์)
การหลีกเลยี่งวงจรอับ (Deadlock 
Avoidance) 
สถานะปลอดภัย (Safe State) 
 ระบบจะอยู่ในสถานะปลอดภัย (Safe State) ก็ต่อ 
เมื่อมีลำาดับการจัดสรรทรัพยากรอย่างปลอดภัยแก่ 
กระบวนการ (Safe Sequence) โดยเราจะถือว่าลำาดับ 
ของกระบวนการ <P1, P2 , … , Pn> เป็นลำาดับที่ 
ปลอดภัย สำาหรับสถานะของการจัดสรรทรัพยากร 
ปัจจุบัน
การหลีกเลยี่งวงจรอับ (Deadlock 
Avoidance) แต่ถ้าไม่สามารถหา 
ลำาดับกระบวนการที่ 
ปลอดภัยในระบบได้ 
แสดงว่าระบบอยู่ใน 
สถานะไม่ปลอดภัย 
(unsafe state) 
 สถานะปลอดภัยเป็น 
สถานะทไี่ม่มีวงจรอับ 
และในทางกลับกัน 
สถานะไม่ปลอดภัยเป็น 
สถานะที่อาจเกิดวงจรอับ 
ได้ แต่ก็ไม่ได้หมายความ 
ว่า สถานะไม่ปลอดภัย 
ทั้งหมดจะก่อให้เกิดวงจร
การหลีกเลยี่งวงจรอับ (Deadlock 
Avoidance) 
ตัวอย่างเช่น ระบบหนึ่งมีเครื่องขับเทป 12 เครื่อง 
และมีกระบวนการ 3 กระบวนการอยู่ในระบบ คือ 
P0 , P1 และ P2 โดยกระบวนการ P0 , P1 และ P2 
ต้องการใช้เครื่องขับเทปสูงสุด 10 , 4 และ 9 เครื่อง 
ตามลำาดับ ถ้า ณ เวลา T0 กระบวนการ P0 , P1 และ 
P2 ได้รับเครื่องขับเทป กระบวนการละ 5 , 2 และ 2 
เครื่อง ตามลำาดับ (แสดงว่า ณ เวลานนั้มีเครื่องขับ 
เทปว่าอยู่ 3 เครื่อง)
การหลีกเลยี่งวงจรอับ (Deadlock 
Avoidance) 
กระบวนการ 
ความต้องการสูงสุด 
(Process) 
(Maximum 
Needs) 
ความต้องการปัจจุบัน 
(Current Needs) 
P0 
P1 
P2 
10 
49 
522 
ณ เวลา T0 ลำาดับกระบวนการ < P1, P0 , P2 
> แสดงว่า ระบบอยู่ในสถานะปลอดภัย
การหลีกเลยี่งวงจรอับ (Deadlock 
Avoidance) 
บางครั้งระบบอาจจะเปลี่ยนจะสถานะปลอดภัย ไป 
เป็นสถานะไม่ปลอดภัยได้ เช่น สมมติว่า ณ เวลา T 
1 กระบวนการ P2 ร้องขอเครื่องขับเทปเพิ่มอีก 1 
เครื่อง และได้รับการจัดสรรจะทำาให้สถานะของ 
ระบบกลายเป็นสถานะไม่ปลอดภัยทันที 
โดยใช้แนวคิดของสถานะปลอดภัยนี้ เราสามารถ 
สร้างขั้นตอนวิธีการหลีกเลี่ยงวงจรอับซึ่งจะประกัน 
ได้ว่า จะไม่เกิดวงจรอับขึ้นในระบบ โดยเมื่อใด 
ก็ตามที่กระบวนการร้องขอทรัพยากรเพิ่มและ 
ทรัพยากรยังมีว่างพอ ระบบต้องตัดสินใจว่าจะให้ 
ทรัพยากรตามที่ร้องขอทันทีหรือไม่ให้ (ให้ 
กระบวนการรอไปก่อน) โดยพิจารณาจากว่าถ้า 
จัดสรรให้ตามที่ร้องขอแล้วระบบจะยังคงอยู่ใน
อัลกอริทึมของกราฟการจัดสรร 
ทรัพยากร 
(Resource-Allocation Graph Algorithm) 
โดยขั้นตอนวิธีนี้จะเพิ่มเส้นความต้องการ (Claim 
Edge) ขึ้นมาในกราฟการจัดสรรทรัพยากร โดยเส้® 
น 
ความต้องการที่ลากจาก Pi ไปยัง Rj (Pi Rj) หมายถึง 
ในอนาคตกระบวนการ Pi อาจจะร้องขอทรัพยากร 
ประเภท Rj จะเห็นว่า เส้นความต้องการมีทิศทาง 
เดียวกันกับ เส้นร้องขอ (จาก Pi ไป Rj) แต่จะต่างกัน 
ตรงที่เส้นความต้องการในกราฟการจัดสรร 
ทรัพยากร จะแสดงด้วยเส้นประ แต่เส้นร้องขอแสดง 
ด้วยเส้นทึบ
อัลกอริทึมของกราฟการจัดสรร 
ทรัพยากร 
(Resource-Allocation Graph Algorithm) 
สมมติว่ากระบวนการ Pi ได้ร้องขอทรัพยากรประเภท 
Rj ระบบจะอนุมัติกา® รร้องขอนี้ ถ้าการเป® 
ลี่ยนเส้น 
ร้องขอ (Pi Rj) ไปเป็นเส้นถือครอง (Rj Pi) ไม่ทำาให้ 
เกิดวงจรขึ้น แต่ถ้าพบว่าเส้นถือครองที่เกิดใหม่ทำาให้ 
เกิดวงจร กระบวนการนั้นจะต้องรอจนกว่าในระบบ 
จะมีทรัพยากรว่างมากขึ้น และเส้นถือครองของ 
กระบวนการที่ร้องขอจะไม่ก่อให้เกิดวงจรในกราฟ 
การจัดสรรทรัพยากร 
ถ้าไม่มีวงจรในกราฟ การอนุมัติทรัพยากรจะทำาให้ 
ระบบอยู่ในสถานะปลอดภัย ถ้าเกิดมีวงจรในกราฟ 
แล้วการอนุมัติทรัพยากร จะทำาให้ระบบอยู่ในสถานะ 
ไม่ปลอดภัย 
 เราจะแสดงขั้นตอนวิธีดังกล่าวโดยพิจารณา 
กราฟการจัดสรรทรัพยากร ดังรูป
อัลกอริทึมของกราฟการจัดสรร 
ทรัพยากร 
(Resource-Allocation Graph Algorithm)
อัลกอริทึมของกราฟการจัดสรร 
ทรัพยากร 
(Resource-Allocation Graph Algorithm) 
สมมติว่า P2 ร้องขอ R2 ระบบจะไม่อนุมัติการร้องขอ 
ดังกล่าว ถึงแม้ว่าทรัพยากร R2 จะว่างอยู่ก็ตาม 
เพราะว่าถ้าระบบอนุมัติ การร้องขอดังกล่าวแล้ว 
เส้นถือครอง R2 P2 จะก่อให้เกิดวงจรในกราฟการ 
จัดสรรทรัพยากร ดังรูป
อัลกอริทึมของกราฟการจัดสรร 
ทรัพยากร 
(Resource-Allocation Graph Algorithm) 
ซึ่งจะทำาให้ระบบอยู่ในสถานะไม่ปลอดภัย โดยอาจ 
เกิดวงจรอับขึ้นในระบบ ถ้ากระบวนการ P1 เกิด 
ร้องขอทรัพยากรประเภท R2 และ P2 ร้องขอ R1
อัลกอริทึมของนายธนาคาร 
(Banker’s Algorithm) 
เมื่อมีกระบวนการใหม่เกิดขึ้นในระบบ กระบวนการนั้น 
จะต้องประกาศจำานวนทรัพยากรสูงสุดที่ต้องการใน 
แต่ละประเภท โดยจำานวนที่ต้องการนี้จะต้องไม่เกินกว่า 
จำานวนที่มีอยู่จริงในระบบ และเมื่อกระบวนการร้องขอ 
ทรัพยากร ระบบจะต้องพิจารณาว่าเมื่อจัดสรร 
ทรัพยากรให้แต่ละกระบวนการแล้ว จะทำาให้ระบบอยู่ใน 
สถานะปลอดภัยหรือไม่ ถ้าอยู่ระบบก็จะจัดสรร 
ทรัพยากรให้ตามที่ขอ แต่ถ้าไม่กระบวนการที่ร้องขอก็ 
จะต้องรอจนกว่ากระบวนการอื่นได้คืนทรัพยากรบาง 
ส่วนให้แก่ระบบจนเพียงพอ 
ระบบต้องเก็บโครงสร้างข้อมูลหลายตัวเพื่อใช้ในขั้น 
ตอนวิธีแบบนายธนาคาร โครงสร้างข้อมูลเหล่านี้ เป็นตัว 
บอกสถานะของการจัดสรรทรัพยากรในระบบ
อัลกอริทึมของนายธนาคาร 
(Banker’s Algorithm) 
โครงสร้างข้อมูลที่จำาเป็นมีดังนี้ 
Available : เป็นเวคเตอร์ขนาด m ซึ่งใช้เก็บ ค่า 
จำานวนทรัพยากรที่ว่างของทรัพยากรแต่ละประเภท 
เช่น Available[j] = k หมายถึง ทรัพยากรประเภท Rj 
มีจำานวนทรัพยากรว่างอยู่ k ตัว 
Max : เป็นเมทริกซ์ขนาด n x m ซึ่งใช้เก็บค่าจำานวน 
สูงสุดของทรัพยากรแต่ละประเภทที่กระบวนการ 
แต่ละตัวต้องการใช้ เช่น Max[i,j] = k หมายถึง 
กระบวนการ Pi ต้องการทรัพยากรประเภท Rj มาก 
ที่สุด k ตัว
อัลกอริทึมของนายธนาคาร 
(Banker’s Algorithm) 
Allocation : เป็นเมทริกซ์ขนาด n x m ซึ่งใช้เก็บค่า 
จำานวนทรัพยากรแต่ละประเภทที่กระบวนการแต่ละ 
ตัว กำาลังถือครองอยู่ เช่น Allocation[i,j] = k หมาย 
ถึง กระบวนการ Pi กำาลังถือครองทรัพยากรประเภท 
Rj อยู่ k ตัว 
Need : เป็นเมทริกซ์ขนาด n x m ซึ่งใช้เก็บค่า 
จำานวนทรัพยากรแต่ละประเภทที่กระบวนการแต่ละ 
ตัว อาจร้องขอเพิ่มอีกได้ เช่น Need[i,j] = k หมายถึง 
กระบวนการ Pi อาจร้องขอทรัพยากรประเภท Rj ได้ 
อีก k ตัว จะเห็นว่า Need [i,j] = Max[i,j] – 
Allocation[i,j]
ขั้นตอนวิธีตรวจดูสถานะปลอดภัย 
(Safety Algorithm) 
 ขั้นตอนวิธีในการตรวจสอบว่า ระบบจะอยู่ใน 
สถานะปลอดภัยหรือไม่ เป็นดังนี้ 
กำาหนดให้ Work และ Finish เป็นเวคเตอร์ขนาด m 
และ n ตามลำาดับ และกำาหนดค่าเริ่มต้น ดังนี้ 
Work := Available; 
For i := 1 TO n DO 
 Finish[i] := FALSE;
ขั้นตอนวิธีตรวจดูสถานะปลอดภัย 
(Safety Algorithm) 
 ให้ i = 1 
 WHILE i £ 
n DO BEGIN 
 IF Finish[i] = FALSE AND Need[i] £ 
Work 
 THEN BEGIN 
 Work := Work + Allocation[i]; 
 Finish[i] := TRUE; 
 i := i +1; END 
 ELSE i := i+1; 
 END 
 IF some Finish[i] = FALSE THEN “unsafe” ELSE “safe”
อัลกอริทึมร้องขอทรัพยากร 
(Resource-Request Algorithm) 
ให้ Requestเป็นเวคเตอร์ แสดงคำาร้องขอของ 
i กระบวนการ Pi โดยที่ Requestหมายถึง 
i กระบวนการ Pi ได้ร้องขอทรัพยากรประเภท Rj เป็น 
จำานวน k ตัว 
เมื่อกระบวนการ Pi ร้องขอทรัพยากร ระบบจะ 
จัดการ ดังนี้ 
£ 
1. ถ้า Request> Needแล้ว ระบบจะแจ้งข้อผิด 
i i พลาดว่า “กระบวนการขอทรัพยากรมากกว่าที่ระบุ” 
แล้วกระบวนการจะถูกขับออกจากระบบ แต่ถ้า 
RequestNeedแล้ว จะไปทำางานในขั้นตอนที่ 2 
i i
อัลกอริทึมร้องขอทรัพยากร 
(Resource-Request Algorithm) 
 2. ถ้า Requesti > Available แล้วให้ Pi รอจนกว่า 
ทรัพยากรที่ร้องขอจะว่าง จากนั้นจึงไปทำางานใน 
ขั้นตอนที่ 3 แต่ถ้า Requesti Available แล้ว จะไป 
ทำางานในขั้นตอนที่ 3 ทันที 
 3. ระบบจะสมมติว่าได้จัดสรรทรัพยากรให้ตามที่ 
กระบวนการ Pi ร้องขอมา โดยระบบจะมีสถานะ 
เปลี่ยนไป ดังนี้ 
 Available := Available – Requesti; 
 Allocationi := Allocationi + Requesti; 
 Needi := Needi – Requesti; 
£
อัลกอริทึมร้องขอทรัพยากร 
(Resource-Request Algorithm) 
แล้วตรวจสอบดูว่าสถานะของการจัดสรรทรัพยากร 
ขณะนี้เป็นสถานะปลอดภัยหรือไม่ ถ้าเป็นระบบก็จะ 
จัดสรรทรัพยากรให้ตามที่สมมติทันที แต่ถ้าระบบอยู่ 
ในสถานะไม่ปลอดภัยแล้วระบบก็จะให้กระบวนการ 
Pi รอ และ ถอยกลับไปอยู่ในสถานะเดิม (ก่อน การ 
สมมติค่า Available , Allocationi และ Needi เป็นค่า 
เดิม)
ตัวอย่าง (An Illustrative 
Example) 
 ระบบหนึ่งมีกระบวนการอยู่ 5 ตัว คือ P0 , P1 , P2 
, P3 และ P4 มีทรัพยากรอยู่ 3 ประเภท คือ A , B และ 
C โดยที่ในแต่ละประเภท มีจำานวนทรัพยากร 10 , 5 
และ 7 ตัว ตามลำาดับ
ตัวอย่าง (An Illustrative 
Example) 
Allocation Max Available 
A B C A B C A B C 
P0 
P1 
P2 
P3 
P4 
0 1 0 
2 0 0 
3 0 2 
2 1 1 
0 0 2 
7 5 3 
3 2 2 
9 0 2 
2 2 2 
4 3 3 
3 3 2
ตัวอย่าง (An Illustrative 
Example) 
และเนื่องจาก เมทริกซ์ 
Need เกิดจาก Max – 
Allocation ดังนั้นจะได้ 
ว่า 
Need 
A B C 
P0 
P1 
P2 
P3 
P4 
7 4 3 
1 2 2 
6 0 0 
0 1 1 
4 3 1
ตัวอย่าง (An Illustrative 
Example) 
และ เราพบว่า ระบบอยู่ในสถานะปลอดภัยเนื่องจาก 
กระบวนการอาจทำางานได้ตามลำาดับ 
<P1, P3, P4 , P2 , P0> ซึ่งเป็นไปตามเงื่อนไขของ 
สถานะปลอดภัย 
 สมมติว่า กระบวนการ P1 ร้องขอทรัพยากร 
ประเภท A และ C เพิ่มอย่างละ 1 และ 2 ตัวตามลำาดับ 
ดังนนั้ Request1 £ 
= (1,0,2) ระบบ£ 
จะตัดสินใจว่าจะ 
อนุมัติทรัพ£ ยากรให้ ตามที่ร้องขอหตอนดังนี้ 
£ 
รือไม่ตามขั้น 
Request1 Need1 เนื่องจาก (1,0,2) (1,2,2) 
Request1 Available เนอื่งจาก (1,0,2) (3,3,2)
ตัวอย่าง (An Illustrative 
Example) 
เมื่อผ่าน 2 ขั้นแรกแล้ว ระบบก็จะสมมติว่า ได้จัดสรร 
ทรัพยากรให้ตามที่ร้องขอ ทำาให้ระบบมีสถานะใหม่ 
ดังนี้ 
Allocation Need Available 
A B C A B C A B C 
P0 
P1 
P2 
P3 
P4 
0 1 0 
3 0 2 
3 0 2 
2 1 1 
0 0 2 
7 4 3 
0 2 0 
6 0 0 
0 1 1 
4 3 1 
2 3 0
ตัวอย่าง (An Illustrative 
Example) 
จากนั้นก็จะตรวจสอบว่า สถานะใหม่นี้จะเป็นสถานะ 
ปลอดภัยหรือไม่ โดยใช้ขั้นตอนวิธีสถานะปลอดภัย 
(safety algorithm) ตรวจสอบ และเราจะพบว่า 
กระบวนการอาจทำางานได้ ตามลำาดับ <P1, P3, P4, 
P0, P2> ซึ่งเป็นไปตามเงอื่นไข ของสถานะปลอดภัย 
เมื่อเป็นเช่นนี้ ระบบจะสามารถอนุมัติการร้องขอ 
ของ P1 ได้ 
 ในบางกรณี ระบบอาจไม่อนุมัติการร้องขอของ 
กระบวนการ เช่น จากตัวอย่างเดิมข้างต้น ถ้า P4 
ร้องขอทรัพยากร (3,3,0) เพิ่ม ระบบไม่อาจอนุมัติให้ 
ได้ เพราะมีทรัพยากรไม่พอ หรือถ้า P0 ร้องขอ 
ทรัพยากร (0,2,0) เพิ่ม ระบบก็จะไม่อนุมัติ แม้ว่าจะมี 
ทรัพยากรพอ เพราะว่าเมื่อระบบลองสมมติว่าได้ 
จัดสรรทรัพยากรให้ตามที่ขอแล้วพบว่าสถานะใหม่
การตรวจหาวงจรอับ (Deadlock 
Detection) 
 ถ้าในระบบปฏิบัติการไม่มีการป้องกันหรือหลีก 
เลี่ยงวงจรอับแล้ว ในที่สุดระบบก็อาจจะตกอยู่ใน 
สถานะวงจรอับได้ ดังนนั้ระบบจึงจำาต้องมีวิธีอื่น 
ทดแทนคือ 
ขั้นตอนวิธีที่จะตรวจหาวงจรอับในระบบว่าเกิดขึ้น 
แล้วหรือยัง 
ขั้นตอนวิธีในการแก้ไขวงจรอับ
ระบบที่มีทรัพยากรแต่ละประเภทเพียงตัว 
เดียว 
(Single Instance of Each Resource Type) 
 โดยนำากราฟการจัดสรรทรัพยากรมาแปลง 
สภาพเล็กน้อยเป็น กราฟการรอคอยทรัพยากร 
(Wait-for-Graph) การแปลงสภาพทำาโดยเอา 
สี่เหลยี่มที่แทนทรัพยากรออก และยุบรวมลูกศรเข้า 
ด้วยกัน ดังนี้ 
 ถ้ามีลูกศรจาก Pi ไป Pj ในกราฟการรอคอย 
ทรัพยากร แสดงว่า Pi กำาลังรอทรัพยากรซึ่ง Pj ถือ 
ครองอยู่ 
ตัวอย่างเช่น
ระบบที่มีทรัพยากรแต่ละประเภทเพียงตัว 
เดียว 
(Single Instance of Each Resource Type) 
(a) เป็นต้นแบบกราฟการจัดสรรทรัพยากร (b) แปลง 
เป็นกราฟการรอคอยทรัพยากร
ระบบที่มีทรัพยากรแต่ละประเภทเพียงตัว 
เดียว 
(Single Instance of Each Resource Type) 
ถ้าในกราฟการรอคอยทรัพยากรมีวงจรแล้วก็จะ 
เกิดวงจรอับ และในทางกลับกัน ถ้าเกิดวงจรอับแล้ว 
ก็จะมีวงจรในกราฟการรอคอยทรัพยากร ระบบต้อง 
เก็บข้อมูลของกราฟการรอคอยทรัพยากรไว้ และใช้ 
ขั้นตอนวิธีการตรวจหาวงจรในกราฟ เพอื่ตรวจหา 
วงจรอับในระบบ โดยคอยตรวจดูทุก ๆ ช่วงเวลา
ระบบที่มีทรัพยากรแต่ละประเภทหลายตัว 
(Several Instances of a Resource Type) 
ขั้นตอนวิธีในการตรวจหาวงจรอับนี้คล้ายกับ 
Banker’s Algorithm ซึ่งจำาเป็นต้องใช้โครงสร้าง 
ข้อมูลดังต่อไปนี้ 
Available : เป็นเวคเตอร์ขนาด m แสดงจำานวน 
ทรัพยากรแต่ละชนิด ที่ยังว่างอยู่ (ไม่ได้ถูก 
กระบวนการใดถือครองอยู่) 
Allocation : เป็นเมทริกซ์ n x m ใช้เก็บค่าจำานวน 
ทรัพยากรแต่ละชนิดที่กระบวนการแต่ละตัวถือครอง 
อยู่ 
Request : เป็นเมทริกซ์ n x m ใช้เก็บค่าจำานวน 
ทรัพยากรแต่ละชนิดที่กระบวนการแต่ละตัวกำาลัง 
ร้องขอ
ระบบที่มีทรัพยากรแต่ละประเภทหลายตัว 
(Several Instances of a Resource Type) 
ขั้นตอนวิธีตรวจหาวงจรอับ 
1. Work := Available; 
2. FOR i:= 1 TO n DO 
IF Allocation¹ 
0 
i  THEN Finish[i] := FALSE 
 ELSE Finish[i] := TRUE;
ระบบที่มีทรัพยากรแต่ละประเภทหลายตัว 
(Several Instances of a Resource Type)  3. i := 1; 
 WHILE i n DO BEGIN 
 IF Finish[i] = FALSE AND Request[i] Work 
 THEN BEGIN 
 Work := Work + Allocationi; 
 Finish[i] := TRUE; 
 i := i+1; END 
 ELSE i := i+1; 
 END; 
 4. FOR i=1 TO n DO 
 IF Finish[i] = FALSE THEN process Pi is in a deadlocked. 
 6. IF Finish[i] = TRUE ทั้งหมด แสดงว่าขณะนี้ระบบไม่เกิดวงจร 
อับ.
ตัวอย่าง 
ให้ระบบมี 5 กระบวนการ P0 , P1 , P2 , P3 และ P4 และมี 
ทรัพยากรชนิด A 7 ตัว , ชนิด B 2 ตัว , ชนิด C 6 ตัว ณ 
เวลา T0 ระบบอยู่ในสถานะดังนี้ 
Allocation Request Available 
A B C A B C A B C 
P0 
P1 
P2 
P3 
P4 
0 1 0 
2 0 0 
3 0 3 
2 1 1 
0 0 2 
0 0 0 
2 0 2 
0 0 0 
1 0 0 
0 0 2 
0 0 0
ตัวอย่าง 
เราจะสรุปได้ว่า ขณะนี้ไม่มีวงจรอับเกิดขึ้นหรือ 
ระบบไม่ได้อยู่ในสถานะวงจรอับ โดยการดำาเนิน 
ตามขั้นตอนวิธีตรวจหาวงจรอับ (Deadlock 
Detection) ดังกล่าวข้างต้น 
เราจะพบว่ามีลำาดับการทำางานหนึ่ง คือ <P0 , P2 , P3 
, P1 , P4> ซึ่งจะให้ Finish[i] = TRUE ทั้งหมด
สมมติว่ากระบวนการ P2 ร้องขอ 
ทรัพยากรประเภท C เพิ่มอีก 1 ตัว 
สถานะของระบบจะกลายเป็น 
Request 
A B C 
P0 
P1 
P2 
P3 
P4 
0 0 0 
2 0 2 
0 0 1 
1 0 0 
0 0 2 
เราจะพบว่า ขณะ 
นี้มีวงจรอับเกิด 
ขึ้นในระบบ แม้ว่า 
P0 อาจทำางาน 
เสร็จ แล้วคืน 
ทรัพยากรชนิด B 
สู่ระบบ 
กระบวนการอื่น ๆ 
ก็ไม่อาจทำางาน 
ต่อได้ เพราะ 
ทรัพยากรที่ว่าง 
อยู่ไม่พอตาม
การใช้วิธีการตรวจหาวงจรอับ 
(Detection-Algorithm Usage) 
 เราจะใช้วิธีการตรวจหาวงจรอับ เมื่อใดบ้าง 
ขึ้นอยู่กับ 2 ปัจจัย คือ 
1. ความถี่ของการเกิดวงจรอับในระบบ 
2. จำานวนกระบวนการที่ติดอยู่ในวงจรอับ 
วงจรอับจะเกิดขึ้นเมื่อมีเหตุการณ์ที่บางกระบวนการ 
ร้องขอทรัพยากรแล้วระบบไม่สามารถอนุมัติให้ได้ 
ทันที เราจึงอาจตรวจหาวงจรอับโดยตรวจทุกครั้งที่ 
เหตุการณ์นี้เกิดขึ้น 
การตรวจหาวงจรอับบ่อยเกินไป ย่อมทำาให้เสียค่า 
ใช้จ่าย(เวลา)มาก เพื่อที่จะประหยัดค่าใช้จ่าย เรา 
อาจตรวจหาทุก ๆ ช่วงเวลาแทน เช่น ทุก ๆ 1 ชวั่โมง 
หรือ เมื่อประสิทธิผลของการใช้หน่วยประมวลผลก
การแก้ไขวงจรอับ 
(Recovery from Deadlock) 
 เมื่อตรวจพบว่าเกิดวงจรอับขึ้นในระบบแล้ว 
ระบบอาจจัดการได้ 2 วิธี คือ 
1. รายงานให้ผู้ควบคุมเครื่องทราบว่าขณะนี้เกิด 
วงจรอับขึ้นในระบบแล้ว และให้ผู้ควบคุมจัดการ 
แก้ไขวงจรอับเอง 
2. ระบบแก้ไขวงจรอับเองโดยอัตโนมัติ ซึ่งอาจ 
ทำาได้ 2 วิธี คือ 
ยกเลิกกระบวนการที่ติดอยู่ในวงจรอับบาง 
กระบวนการเพื่อที่จะตัดวงจรอับ 
อนุญาตให้มีการแทรกกลางคันทรัพยากรบางส่วนที่ 
ติดอยู่ในวงจรอับได้เพื่อทำาให้ระบบกลับคืนสู่สภาวะ 
ปกติ
การยกเลิกกระบวนการ 
(Process Termination) 
 วิธีการในการแก้ไขวงจรอับ โดยการยกเลิก 
กระบวนการในวงจรอับ มีอยู่ 2 วิธี (ทงั้ 2 วิธีนี้ เมื่อ 
กระบวนการถูกยกเลิก ทรัพยากรที่กระบวนการถือ 
ครองอยู่จะคืนกลับสู่ระบบ) 
ยกเลิกกระบวนการทงั้หมดที่ติดอยู่ในวงจรอับ 
ยกเลิกกระบวนการในวงจรอับทีละกระบวนการ จน 
กระทั่งระบบกลับสู่สภาวะปกติ
สำาหรับวิธีการยกเลิก 
กระบวนการทีละตัว 
 การพิจารณาค่าใช้จ่ายตำ่าที่สุด อาจพิจารณาได้ 
จากหลายปัจจัยดังนี้ 
 พิจารณาลำาดับความสำาคัญของกระบวนการ 
(Priority) 
 พิจารณาว่ากระบวนการนั้นทำางานมานานเท่าไร 
แล้ว และจะใช้เวลาอีกนานเท่าไรกว่างานจะเสร็จ 
สมบูรณ์ 
 พิจารณาว่ากระบวนการนั้นได้ถือครองหรือใช้ 
ทรัพยากรประเภทใดไปเท่าไรแล้ว 
 พิจารณาว่ากระบวนการยังต้องการทรัพยากรอีก 
เท่าไร จึงจะทำางานจนเสร็จสมบูรณ์ได้ 
 พิจารณาว่ามีกี่กระบวนการที่จะต้องถูกยกเลิก 
 พิจารณาว่ากระบวนการเป็นประเภทใด (แบบ 
โต้ตอบ (interactive) หรือแบบกลุ่ม(batch))
การแทรกกลางคัน (Resource 
Preemption) 
ในการเลือกใช้วิธีการแทรกกลางคัน เราจะต้อง 
พิจารณาผลที่จะเกิด 3 ข้อดังนี้ 
การเลือกผู้รับเคราะห์ (Selection a victim) โดยการ 
เลือกว่ากระบวนการใดในวงจรอับที่จะถูกแทรกกลาง 
คันแล้ว จะเสียค่าใช้จ่ายน้อยที่สุด 
การถอยกลับ (Rollback) ให้กระบวนการนั้นถอยกลับ 
ไปอยู่ในจุดที่ปลอดภัย และให้เริ่มทำางานใหม่อีกครั้ง 
จากจุดนี้ 
การแช่เย็น (Starvation) เราจะรับประกันได้อย่างไร 
ว่าจะไม่เกิดการแช่เย็น เช่น มีกระบวนการหนึ่งถูก 
แทรกกลางคันทรัพยากรที่กำาลังใช้อยู่เสมอ ๆ
การจัดการปัญหาวงจรอับโดยวิธีผสมผสาน 
(Combined Approach to Deadlock Handling) 
เราอาจพิสูจน์ได้ว่าระบบที่ใช้วิธีผสมผสานนี้จะไม่ 
เกิดวงจรอับ ดังนี้คือ 
วงจรอับไม่อาจจะเกิดข้ามกลมุ่ของทรัพยากรได้ 
เพราะเราใช้วิธีการจัดเรียงลำาดับทรัพยากร 
ในแต่ละกลุ่มก็จะไม่เกิดวงจรอับเพราะเราได้เลือก 
วิธีจัดการ 1 ใน 3 วิธี ที่กล่าวมาแล้ว ดังนั้นระบบโดย 
รวมจะไม่เกิดวงจรอับ
ตัวอย่าง 
 สมมติว่าระบบของเราประกอบไปด้วยทรัพยากร 
4 ประเภท คือ 
ทรัพยากรภายในของระบบ (Internal Resources) 
คือ ทรัพยากรที่ระบบใช้เอง เช่น PCB (Process 
Control Block) 
หน่วยความจำาหลัก (Central Memory) ซึ่งผู้ใช้ 
ระบบต้องใช้ 
อุปกรณ์ต่าง ๆ ในระบบ (Job Resources) เช่น 
อุปกรณ์ทางกายภาพ อุปกรณ์ทางตรรกะ 
หน่วยความจำาสำารอง (Swappable space) พนื้ที่ใน 
จานบันทึก (Backing Store) สำาหรับสำารองแต่ละงาน
ตัวอย่าง 
เราจัดการปัญหาวงจรอับในระบบนี้ โดยจัดแบ่ง 
กลมุ่ของทรัพยากรเป็น 4 กลุ่ม ตามที่กล่าวมาและใน 
แต่ละกลุ่มใช้วิธีจัดการดังนี้ 
ทรัพยากรภายในของระบบ ป้องกันโดยการจัด 
ลำาดับทรัพยากร เพราะกระบวนการที่ร้องขอ 
ทรัพยากรเหล่านี้ ล้วนเป็นกระบวนการภายในของ 
ระบบเอง 
หน่วยความจำาหลัก ป้องกันโดยการให้มีการแทรก 
กลางคันได้ เพราะอาจย้ายงานแต่ละชนิ้ออกจาก 
หน่วยความจำาหลักไปเก็บไว้ในหน่วยความจำา 
สำารอง (Backing Store) ได้โดยง่าย เมื่อมี 
กระบวนการต้องการใช้หน่วยความจำาเพิ่ม และ
ตัวอย่าง 
 อุปกรณ์ต่าง ๆ ในระบบ ใช้วิธีการหลีกเลยี่ง เพราะ 
ข้อมูลเกี่ยวกับความต้องการสูงสุดของแต่ละงาน 
อาจรู้ล่วงหน้าได้ เช่น จากบัตรควบคุมงาน (Job 
Control Card) ในกรณีที่ใช้บัตรเจาะรู (Punch 
cards) 
 หน่วยความจำาสำารอง ป้องกันโดย การจัดสรรล่วง 
หน้า เพราะจำานวนหน่วยความจำาสำารองสูงสุดของ 
แต่ละงาน มักจะถูกกำาหนดไว้แล้ว

Más contenido relacionado

La actualidad más candente

ธรณีภิบัติภัย
ธรณีภิบัติภัยธรณีภิบัติภัย
ธรณีภิบัติภัยMark Pitchayut
 
บทที่ 4 ระบบย่อยอาหาร 2559
บทที่ 4  ระบบย่อยอาหาร   2559บทที่ 4  ระบบย่อยอาหาร   2559
บทที่ 4 ระบบย่อยอาหาร 2559Pinutchaya Nakchumroon
 
บทที่ 23 มนุษย์กับความยั่งยืนของสิ่งแวดล้อม
บทที่ 23 มนุษย์กับความยั่งยืนของสิ่งแวดล้อมบทที่ 23 มนุษย์กับความยั่งยืนของสิ่งแวดล้อม
บทที่ 23 มนุษย์กับความยั่งยืนของสิ่งแวดล้อมฟลุ๊ค ลำพูน
 
บทที่5แรงในชีวิตประจำวันม 2
บทที่5แรงในชีวิตประจำวันม 2บทที่5แรงในชีวิตประจำวันม 2
บทที่5แรงในชีวิตประจำวันม 2Wichai Likitponrak
 
แบบฝึกหัดการหาสัดส่วนจีโนไทป์ฟีโนไทป์
แบบฝึกหัดการหาสัดส่วนจีโนไทป์ฟีโนไทป์แบบฝึกหัดการหาสัดส่วนจีโนไทป์ฟีโนไทป์
แบบฝึกหัดการหาสัดส่วนจีโนไทป์ฟีโนไทป์Maikeed Tawun
 
ความหนาแน่นและความดันของของไหล
ความหนาแน่นและความดันของของไหลความหนาแน่นและความดันของของไหล
ความหนาแน่นและความดันของของไหลChanthawan Suwanhitathorn
 
เรื่องภาษาซี
เรื่องภาษาซีเรื่องภาษาซี
เรื่องภาษาซีพัน พัน
 
ทรัพยากรน้ำ
ทรัพยากรน้ำทรัพยากรน้ำ
ทรัพยากรน้ำlinnoi
 
03แผน เรื่อง กฏการอนุรักษ์พลังงาน
03แผน เรื่อง กฏการอนุรักษ์พลังงาน03แผน เรื่อง กฏการอนุรักษ์พลังงาน
03แผน เรื่อง กฏการอนุรักษ์พลังงานWijitta DevilTeacher
 
การวัดปริมาณน้ำฝน
การวัดปริมาณน้ำฝนการวัดปริมาณน้ำฝน
การวัดปริมาณน้ำฝนdnavaroj
 
เรื่องที่ 4 การเคลื่อนที่แบบต่างๆ
เรื่องที่ 4 การเคลื่อนที่แบบต่างๆเรื่องที่ 4 การเคลื่อนที่แบบต่างๆ
เรื่องที่ 4 การเคลื่อนที่แบบต่างๆthanakit553
 
ความหลากหลายทางชีวภาพ
ความหลากหลายทางชีวภาพความหลากหลายทางชีวภาพ
ความหลากหลายทางชีวภาพPinutchaya Nakchumroon
 
ฟิสิกส์ 5 ไฟฟ้าสถิตย์ ตอนที่ 3
ฟิสิกส์ 5 ไฟฟ้าสถิตย์ ตอนที่ 3ฟิสิกส์ 5 ไฟฟ้าสถิตย์ ตอนที่ 3
ฟิสิกส์ 5 ไฟฟ้าสถิตย์ ตอนที่ 3Wijitta DevilTeacher
 
บทที่ 1 ชีวิตกับสิ่งแวดล้อม
บทที่ 1 ชีวิตกับสิ่งแวดล้อมบทที่ 1 ชีวิตกับสิ่งแวดล้อม
บทที่ 1 ชีวิตกับสิ่งแวดล้อมPinutchaya Nakchumroon
 
7 การประยุกต์ใช้ความรู้เกี่ยวกับแก๊สและสมบัติของแก๊ส
7 การประยุกต์ใช้ความรู้เกี่ยวกับแก๊สและสมบัติของแก๊ส7 การประยุกต์ใช้ความรู้เกี่ยวกับแก๊สและสมบัติของแก๊ส
7 การประยุกต์ใช้ความรู้เกี่ยวกับแก๊สและสมบัติของแก๊สPreeyapat Lengrabam
 

La actualidad más candente (20)

ธรณีภิบัติภัย
ธรณีภิบัติภัยธรณีภิบัติภัย
ธรณีภิบัติภัย
 
บทที่ 4 ระบบย่อยอาหาร 2559
บทที่ 4  ระบบย่อยอาหาร   2559บทที่ 4  ระบบย่อยอาหาร   2559
บทที่ 4 ระบบย่อยอาหาร 2559
 
บทที่ 23 มนุษย์กับความยั่งยืนของสิ่งแวดล้อม
บทที่ 23 มนุษย์กับความยั่งยืนของสิ่งแวดล้อมบทที่ 23 มนุษย์กับความยั่งยืนของสิ่งแวดล้อม
บทที่ 23 มนุษย์กับความยั่งยืนของสิ่งแวดล้อม
 
บทที่5แรงในชีวิตประจำวันม 2
บทที่5แรงในชีวิตประจำวันม 2บทที่5แรงในชีวิตประจำวันม 2
บทที่5แรงในชีวิตประจำวันม 2
 
แบบฝึกหัดการหาสัดส่วนจีโนไทป์ฟีโนไทป์
แบบฝึกหัดการหาสัดส่วนจีโนไทป์ฟีโนไทป์แบบฝึกหัดการหาสัดส่วนจีโนไทป์ฟีโนไทป์
แบบฝึกหัดการหาสัดส่วนจีโนไทป์ฟีโนไทป์
 
ความหนาแน่นและความดันของของไหล
ความหนาแน่นและความดันของของไหลความหนาแน่นและความดันของของไหล
ความหนาแน่นและความดันของของไหล
 
ความหนาแน่น (Density)
ความหนาแน่น (Density)ความหนาแน่น (Density)
ความหนาแน่น (Density)
 
เรื่องภาษาซี
เรื่องภาษาซีเรื่องภาษาซี
เรื่องภาษาซี
 
ทรัพยากรน้ำ
ทรัพยากรน้ำทรัพยากรน้ำ
ทรัพยากรน้ำ
 
03แผน เรื่อง กฏการอนุรักษ์พลังงาน
03แผน เรื่อง กฏการอนุรักษ์พลังงาน03แผน เรื่อง กฏการอนุรักษ์พลังงาน
03แผน เรื่อง กฏการอนุรักษ์พลังงาน
 
การวัดปริมาณน้ำฝน
การวัดปริมาณน้ำฝนการวัดปริมาณน้ำฝน
การวัดปริมาณน้ำฝน
 
เรื่องที่ 4 การเคลื่อนที่แบบต่างๆ
เรื่องที่ 4 การเคลื่อนที่แบบต่างๆเรื่องที่ 4 การเคลื่อนที่แบบต่างๆ
เรื่องที่ 4 การเคลื่อนที่แบบต่างๆ
 
ความหลากหลายทางชีวภาพ
ความหลากหลายทางชีวภาพความหลากหลายทางชีวภาพ
ความหลากหลายทางชีวภาพ
 
ฟิสิกส์ 5 ไฟฟ้าสถิตย์ ตอนที่ 3
ฟิสิกส์ 5 ไฟฟ้าสถิตย์ ตอนที่ 3ฟิสิกส์ 5 ไฟฟ้าสถิตย์ ตอนที่ 3
ฟิสิกส์ 5 ไฟฟ้าสถิตย์ ตอนที่ 3
 
Biohmes55
Biohmes55Biohmes55
Biohmes55
 
บทที่ 3 พลังงานทดแทน
บทที่  3 พลังงานทดแทนบทที่  3 พลังงานทดแทน
บทที่ 3 พลังงานทดแทน
 
บทที่ 1 ชีวิตกับสิ่งแวดล้อม
บทที่ 1 ชีวิตกับสิ่งแวดล้อมบทที่ 1 ชีวิตกับสิ่งแวดล้อม
บทที่ 1 ชีวิตกับสิ่งแวดล้อม
 
7 การประยุกต์ใช้ความรู้เกี่ยวกับแก๊สและสมบัติของแก๊ส
7 การประยุกต์ใช้ความรู้เกี่ยวกับแก๊สและสมบัติของแก๊ส7 การประยุกต์ใช้ความรู้เกี่ยวกับแก๊สและสมบัติของแก๊ส
7 การประยุกต์ใช้ความรู้เกี่ยวกับแก๊สและสมบัติของแก๊ส
 
เฉลย06กฎการเคลื่อนที่
เฉลย06กฎการเคลื่อนที่เฉลย06กฎการเคลื่อนที่
เฉลย06กฎการเคลื่อนที่
 
Ch10th
Ch10thCh10th
Ch10th
 

Os6

  • 4. รูปแบบของปัญหา (System Model) เพื่อที่จะแสดงให้เห็นภาพของสถานะวงจรอับ เรา จะมาพิจารณา ระบบที่ประกอบไปด้วยเครื่องขับเทป 3 เครื่อง สมมติว่า มีกระบวนการอยู่ 3 กระบวนการ และแต่ละกระบวนการ กำาลังใช้เครื่องขับเทปอยู่ กระบวนการละเครื่อง ต่อมาถ้าแต่ละกระบวนการ ร้องขอเครื่องขับเทปเพิ่มอีกกระบวนการละ 1 เครื่อง ทั้ง 3 กระบวนการ จะติดอยู่ในวงจรอับทันที โดย แต่ละกระบวนการกำาลังรอสถานการณ์ที่ “เครื่องขับ เทปถูกปล่อยคืนสู่ระบบ” ซึ่งเป็นสถานการณ์ที่ขึ้นกับ กระบวนการอื่น ในวงจร (ที่กำาลังรอคอยทรัพยากร อยู่เช่นกัน) ตัวอย่างที่ยกมานี้เป็นการแสดงภาพของ วงจรอับที่เกิดจากการที่กระบวนการพยายามที่จะ แย่งกันใช้ทรัพยากรประเภทเดียวกัน
  • 8. กราฟการจัดสรรทรัพยากร (Resource-Allocation Graph) P = { P1, P2, … , Pn} เป็นเซตของกระบวนการ ทั้งหมดที่มีอยู่ในระบบ และเซต R = { R0, R1, … , Rn } เป็นเซตของ ทรัพยากรที่มีอยู่ในระบบ โดยที่ลูกศรจาก Pi ไปยัง Rj (Pi Rj) นั้นเรียกว่า ® “เส้นร้องขอ” (Request Edge) และลูกศรจาก Rj ไปยัง Pi (Rj Pi) เรียกว่า “เส้น ® ถือครอง” (Assignment Edge)
  • 9. กราฟการจัดสรรทรัพยากร (Resource-Allocation Graph) ในการเขียนกราฟ เราจะใช้วงกลมแทน กระบวนการ และใช้สี่เหลยี่มแทนทรัพยากร และใช้ จุด แทนจำานวนทรัพยากรแต่ละตัว ซึ่งจะอยู่ภายใน สี่เหลยี่ม โดยที่เส้นร้องขอจะต้องชไี้ปยังกรอบ สี่เหลยี่ม (ทรัพยากร Rj) เท่านั้น แต่เส้นถือครอง จะ ต้องชี้ไปยังจุดใดจุดหนึ่งในสี่เหลี่ยม
  • 10. กราฟการจัดสรรทรัพยากร (Resource-Allocation Graph) กราฟการจัดสรรทรัพยากรในรูปข้างต้น แสดงสถานะของระบบ ดังนี้  เซต P = { P1 , P2, P3}  เซต R = { R1 ® , R2 , R3 ® , R4 } ® ® ® ®  เซต E = { P1 R1, P2 R3 , R1 P2 , R2 P2 ,R2 P1 , R3 P3 } ทรัพยากรในระบบ ทรัพยากรประเภท R1 = 1 ตัว ทรัพยากรประเภท R2 = 2 ตัว ทรัพยากรประเภท R3 = 1 ตัว ทรัพยากรประเภท R4 = 3 ตัว
  • 11. กราฟการจัดสรรทรัพยากร (Resource-Allocation Graph) สถานะของกระบวนการ กระบวนการ P1 กำาลังถือครองทรัพยากรประเภท R2 และกำาลังรอคอยที่จะใช้ทรัพยากรประเภท R1 กระบวนการ P2 กำาลังถือครองทรัพยากรประเภท R1 และ R2 และกำาลังรอคอยที่จะใช้ทรัพยากรประเภท R3 กระบวนการ P3 กำาลังถือครองทรัพยากรประเภท R3 อยู่
  • 12. กราฟการจัดสรรทรัพยากร (Resource-Allocation Graph) ถ้าเป็นระบบทที่รัพยากรแต่ละประเภทมีเพียง 1 ตัว เมื่อมีวงจรในกราฟ ก็จะต้องมีวงจรอับในระบบ แน่นอน แต่ถ้าทรัพยากรแต่ละประเภทมีจำานวนมากกว่า 1 ตัว วงจรที่เกิดขึ้นในกราฟ ไม่อาจเป็นตัวบอกได้เสมอ ไปว่า เกิดวงจรอับในระบบ ® สมมติว่ากระบวนการ P3 ได้ร้องขอทรัพยากร ประเภท R2 แต่เนื่องจากไม่มีทรัพยากรตัวใด ใน ประเภท R2 ว่างเลย ดังนั้นเส้นร้องขอ P3 R2 จึงถูก ใส่เพิ่ม เข้าไปในกราฟ ซึ่งแสดงในรูปถัดไป
  • 14. กราฟการจัดสรรทรัพยากร (Resource-Allocation Graph) ณ จุดนี้ จะเกิดวงจรอย่างน้อย 2 วง ขึ้นในระบบ คือ  P1 ® R1 ® P2 ® R3 ® P3 ® R2 ® P1  P2 ® R3 ® P3 ® R2 ® P2
  • 17. กราฟการจัดสรรทรัพยากร (Resource-Allocation Graph) แต่อย่างไรก็ตามวงจรนจี้ะไม่ก่อให้เกิดวงจรอับ โดยสังเกตว่า กระบวนการ P4 จะปล่อยทรัพยากร ประเภท R2 ที่ตนเองถือครองอยู่ เมื่อใช้เสร็จ ซึ่งเมื่อ ทรัพยากร R2 ถูกปล่อยกลับสู่ระบบแล้วระบบก็ สามารถทจี่ะจัดทรัพยากรประเภท R2 ให้แก่ กระบวนการ P3 ได้ วงจรก็จะขาดทันที  เราอาจกล่าวโดยสรุปได้ว่า ถ้าไม่มีวงจรใน กราฟการจัดสรรทรัพยากรแล้ว ระบบจะไม่อยู่ใน สถานะวงจรอับ แต่ในทางกลับกัน ถ้ามีวงจรใน กราฟแล้ว ระบบอาจจะเกิดวงจรอับ หรือไม่เกิดก็ได้
  • 18. การจัดการปัญหาวงจรอับ (Methods for Handing Deadlocks) การจัดการปัญหาวงจรอับมีอยู่ 3 วิธีหลัก ๆ คือ กำาหนดกฎเกณฑ์บางอย่างในการใช้ทรัพยากร เพื่อ ให้แน่ใจว่าระบบจะไม่มีทางเกิดวงจรอับได้ ไม่ต้องป้องกันใด ๆ เลย ปล่อยให้ระบบเกิดวงจรอับ ขึ้นก่อน แล้วค่อยตามแก้ไขทีหลัง มองข้ามปัญหาทั้งหมด แล้วแสร้งทำาว่าวงจรอับไม่ เคยเกิดขึ้นในระบบ วิธีการแก้ปัญหาวิธีนี้เป็นวิธีการ หนึ่งที่ถูกใช้ในระบบปฏิบัติการส่วนใหญ่ รวมทงั้ UNIX ด้วย <restart>
  • 19. การป้องกันการเกิดวงจรอับ (Deadlock Prevention) ห้ามใช้ทรัพยากรร่วมกัน (Mutual Exclusion)  เงอื่นไขในข้อนี้ คือ การทรี่ะบบ ไม่อนุญาตให้ มีการใช้ทรัพยากรร่วมกัน เช่น เครื่องพิมพ์จะไม่ สามารถ ให้กระบวนการหลาย ๆ กระบวนการ ใช้ พร้อม ๆ กันได้ แต่ถ้าเรายอมให้ในระบบมีการใช้ ทรัพยากรร่วมกันได้ ปัญหาวงจรอับก็จะไม่เกิด เช่น แฟ้มข้อมูลที่อ่านได้อย่างเดียวสามารถใช้ร่วมกันได้  อย่างไรก็ตาม การที่เราจะป้องกันการเกิดวงจร อับในระบบ โดยการป้องกันเงอื่นไขนี้ ไม่สามารถ ทำาได้เสมอไป เพราะยังมีทรัพยากรบางประเภท ที่ ไม่มีทางใช้ร่วมกันได้
  • 20. การป้องกันการเกิดวงจรอับ (Deadlock Prevention) การถือครองแล้วรอคอย (Hold and Wait)  คือ การทจี่ะไม่ให้เกิด “การถือครองแล้วรอ คอย” ขึ้นในระบบ โดยจะต้องกำาหนดว่า เมื่อ กระบวนการหนึ่งจะร้องขอทรัพยากร กระบวนการ นั้นจะต้องไม่ได้ถือครองทรัพยากรใด ๆ อยู่ในขณะ นั้น ซึ่งอาจทำาได้ 2 วิธีการ คือ ให้กระบวนการร้องขอทรัพยากรที่ต้องการใช้ ทั้งหมด (ตลอดการทำางาน) ก่อนที่จะเริ่มต้นทำางาน ยอมให้กระบวนการร้องขอทรัพยากรได้ ก็ต่อเมื่อ กระบวนการนั้นมิได้ถือครองทรัพยากรใดไว้เลย
  • 21. การป้องกันการเกิดวงจรอับ (Deadlock Prevention) เราจะเห็นความแตกต่างของ 2 วิธีนี้ โดยการ พิจารณาจากตัวอย่าง กระบวนการหนึ่งต้องการ คัดลอกข้อมูลจากเทปลงไปเก็บที่แฟ้มข้อมูลในดิสก์ เรียงลำาดับข้อมูลของแฟ้มข้อมูลในดิสก์ พิมพ์ผลลัพธ์ออกสู่เครื่องพิมพ์ ถ้าทรัพยากรทั้งหมดต้องถูกร้องขอในตอนเริ่มต้น งานของกระบวนการ (นนั่คือใช้วิธีแรก) แสดงว่า กระบวนการนี้ ก็จะถือครองเครื่องพิมพ์ ไว้ตลอด เวลาที่กระบวนการทำางานอยู่ ถึงแม้ว่ากระบวนการ นี้ จะใช้เครื่องพิมพ์เฉพาะในตอนท้ายของการ ทำางานเท่านั้น
  • 22. การป้องกันการเกิดวงจรอับ (Deadlock Prevention) สำาหรับวิธีที่ 2 ให้กระบวนการร้องขอทรัพยากรใน ตอนเริ่มต้น แค่เครื่องขับเทป และแฟ้มข้อมูลในดิสก์ โดยเมอื่ได้รับทรัพยากรแล้ว กระบวนการจะคัดลอก ข้อมูล จากเทปลงไปสู่ดิสก์จากนั้นก็จะคืนทั้งเครื่อง ขับเทป และแฟ้มข้อมูลในดิสก์กลับสู่ระบบ จากนั้น กระบวนการก็จะต้องร้องขอแฟ้มข้อมูลในดิสก์และ เครื่องพิมพ์ใหม่อีกครั้งหนึ่ง เมื่อพิมพ์เสร็จเรียบร้อย แล้วกระบวนการก็จะคืนทรัพยากรกลับสู่ระบบ เป็น อันสิ้นสุดการทำางานของกระบวนการ
  • 23. การป้องกันการเกิดวงจรอับ (Deadlock Prevention) วิธีการแรก มีข้อเสียคือ การใช้ทรัพยากรจะมี ประสิทธิผลตำ่ามาก อาจมี ปัญหาการแช่เย็น (starvation) อีกด้วย โดยถ้ามีบางกระบวนการ ต้องการใช้ทรัพยากร (ที่เป็นทนีิ่ยมใช้กันมาก) หลาย ๆ ตัว อาจต้องรอคอย อย่างไม่มีทสีิ่้นสุด ส่วนวิธีการหลังก็มีข้อเสียคือ ต้องคืนทรัพยากรทถีื่อ ครองอยู่ เพื่อที่จะร้องขอกลับมาใหม่อีก ร่วมกับ ทรัพยากรตัวใหม่ ทำาให้เสียเวลาโดยเปล่า ประโยชน์
  • 24. การป้องกันการเกิดวงจรอับ (Deadlock Prevention) ห้ามแทรกกลางคัน (No Preemption) เราอาจกำาหนดกฎเกณฑ์ดังนี้  ถ้ากระบวนการหนึ่ง (ที่กำาลังถือครองทรัพยากร บางส่วนอยู่) ร้องขอทรัพยากรเพิ่ม และระบบยังไม่ สามารถจัดให้ได้ในทันที (แสดงว่ากระบวนการที่ ร้องขอจะต้องรอ) เราจะให้ทรัพยากรทงั้หมด ที่ กระบวนการนี้ถือครองอยู่ ถูกแทรกกลางคัน นั่นคือ ทรัพยากรที่กระบวนการนี้ถือครองอยู่ทั้งหมดจะถูก ปล่อยคืนสู่ระบบโดยปริยาย กระบวนการที่ถูกแทรก กลางคันนจี้ะต้องรอคอยทรัพยากร ทั้งที่ร้องขอไว้ ตั้งแต่แรก และทถีู่กแทรกกลางคันไป ก่อนที่จะ สามารถทำางานต่อไปได้
  • 25. การป้องกันการเกิดวงจรอับ (Deadlock Prevention) วิธีการนี้มักใช้กับทรัพยากรที่สามารถเก็บค่าสถานะ และติดตั้งค่ากลับคืนมาได้ง่าย เช่น ค่าในรีจีสเตอร์ (ของหน่วยประมวลผลกลาง) เนื้อที่ในหน่วยความ จำาหลัก เป็นต้น แต่จะไม่สามารถใช้กับทรัพยากรทวั่ ๆ ไป เช่น เครื่องพิมพ์ และ หน่วยขับเทป เป็นต้น
  • 26. การป้องกันการเกิดวงจรอับ (Deadlock Prevention) วงจรรอคอย (Circular Wait) เราอาจป้องกันการเกิดวงจรอับ โดยการป้องกันไม่ ให้เกิดเงอื่นไขวงจรรอคอย ซึ่งสามารถทำาได้โดย การกำาหนดลำาดับของทรัพยากรทั้งหมดในระบบ และกำาหนดให้ กระบวนการต้องร้องขอใช้ ทรัพยากร เรียงตามเลขลำาดับนี้  กำาหนดให้ R = { R1 , R2, … , Rm } โดย R เป็น เซตของทรัพยากรในระบบ และ กำาหนดให้ ทรัพยากรแต่ละประเภทมี ค่าเลขลำาดับเป็น เลขจำานวนเต็ม ที่ไม่ซำ้ากัน เขียนแทนด้วย F(Ri) เพื่อให้เราสามารถเปรียบเทียบทรัพยากร 2 ประเภท ได้ว่าตัวใดมีลำาดับก่อน-หลัง ตัวอย่างเช่น ถ้า
  • 27. การป้องกันการเกิดวงจรอับ (Deadlock Prevention) F (เครื่องขับเทป) = 1 F (เครื่องขับดิสก์) = 5 F (เครื่องพิมพ์) = 12  และกำาหนดวิธีการในการร้องขอทรัพยากรในระบบดังนี้  กระบวนการแต่ละตัวสามารถร้องขอทรัพยากรได้ ในลำาดับที่เพิ่มขึ้นเท่านั้น คือ เริ่มต้นกระบวนการอาจ ร้องขอทรัพยากรใด ๆ ก็ได้ เช่น ทรัพยากร Ri แต่ต่อ จากนี้กระบวนการจะร้องขอทรัพยากร Rj ได้ก็ต่อเมื่อ F(Rj) > F(Ri) ถ้าเป็นการร้องขอทรัพยากร ประเภทเดียวกันหลาย ๆ ตัว กระบวนการจะต้องร้องขอ ทรัพยากรทีละตัว ³  ในทางตรงกันข้าม ถ้ากระบวนการต้องการร้องขอ ทรัพยากรประเภท Rj กระบวนการจะต้องปล่อย ทรัพยากร Ri ซึ่ง F(Ri) F(Rj) คืนสู่ระบบทุกตัวเสียก่อน เช่นถือครอง R5 อยู่อยากได้ R1 ต้องคืน R5 ก่อน R5 R1
  • 28. การป้องกันการเกิดวงจรอับ (Deadlock Prevention) พึงสังเกตว่า การกำาหนดค่าเลขลำาดับของทรัพยากร ควรเรียงตามลำาดับการใช้งานตามปกติในระบบ เช่น ปกติเรามักใช้เครื่องขับเทป ก่อนเครื่องพิมพ์ เสมอ จึงควรกำาหนดลำาดับให้ F (เครื่องขับเทป) < F (เครื่องพิมพ์)
  • 29. การหลีกเลยี่งวงจรอับ (Deadlock Avoidance) สถานะปลอดภัย (Safe State)  ระบบจะอยู่ในสถานะปลอดภัย (Safe State) ก็ต่อ เมื่อมีลำาดับการจัดสรรทรัพยากรอย่างปลอดภัยแก่ กระบวนการ (Safe Sequence) โดยเราจะถือว่าลำาดับ ของกระบวนการ <P1, P2 , … , Pn> เป็นลำาดับที่ ปลอดภัย สำาหรับสถานะของการจัดสรรทรัพยากร ปัจจุบัน
  • 30. การหลีกเลยี่งวงจรอับ (Deadlock Avoidance) แต่ถ้าไม่สามารถหา ลำาดับกระบวนการที่ ปลอดภัยในระบบได้ แสดงว่าระบบอยู่ใน สถานะไม่ปลอดภัย (unsafe state)  สถานะปลอดภัยเป็น สถานะทไี่ม่มีวงจรอับ และในทางกลับกัน สถานะไม่ปลอดภัยเป็น สถานะที่อาจเกิดวงจรอับ ได้ แต่ก็ไม่ได้หมายความ ว่า สถานะไม่ปลอดภัย ทั้งหมดจะก่อให้เกิดวงจร
  • 31. การหลีกเลยี่งวงจรอับ (Deadlock Avoidance) ตัวอย่างเช่น ระบบหนึ่งมีเครื่องขับเทป 12 เครื่อง และมีกระบวนการ 3 กระบวนการอยู่ในระบบ คือ P0 , P1 และ P2 โดยกระบวนการ P0 , P1 และ P2 ต้องการใช้เครื่องขับเทปสูงสุด 10 , 4 และ 9 เครื่อง ตามลำาดับ ถ้า ณ เวลา T0 กระบวนการ P0 , P1 และ P2 ได้รับเครื่องขับเทป กระบวนการละ 5 , 2 และ 2 เครื่อง ตามลำาดับ (แสดงว่า ณ เวลานนั้มีเครื่องขับ เทปว่าอยู่ 3 เครื่อง)
  • 32. การหลีกเลยี่งวงจรอับ (Deadlock Avoidance) กระบวนการ ความต้องการสูงสุด (Process) (Maximum Needs) ความต้องการปัจจุบัน (Current Needs) P0 P1 P2 10 49 522 ณ เวลา T0 ลำาดับกระบวนการ < P1, P0 , P2 > แสดงว่า ระบบอยู่ในสถานะปลอดภัย
  • 33. การหลีกเลยี่งวงจรอับ (Deadlock Avoidance) บางครั้งระบบอาจจะเปลี่ยนจะสถานะปลอดภัย ไป เป็นสถานะไม่ปลอดภัยได้ เช่น สมมติว่า ณ เวลา T 1 กระบวนการ P2 ร้องขอเครื่องขับเทปเพิ่มอีก 1 เครื่อง และได้รับการจัดสรรจะทำาให้สถานะของ ระบบกลายเป็นสถานะไม่ปลอดภัยทันที โดยใช้แนวคิดของสถานะปลอดภัยนี้ เราสามารถ สร้างขั้นตอนวิธีการหลีกเลี่ยงวงจรอับซึ่งจะประกัน ได้ว่า จะไม่เกิดวงจรอับขึ้นในระบบ โดยเมื่อใด ก็ตามที่กระบวนการร้องขอทรัพยากรเพิ่มและ ทรัพยากรยังมีว่างพอ ระบบต้องตัดสินใจว่าจะให้ ทรัพยากรตามที่ร้องขอทันทีหรือไม่ให้ (ให้ กระบวนการรอไปก่อน) โดยพิจารณาจากว่าถ้า จัดสรรให้ตามที่ร้องขอแล้วระบบจะยังคงอยู่ใน
  • 34. อัลกอริทึมของกราฟการจัดสรร ทรัพยากร (Resource-Allocation Graph Algorithm) โดยขั้นตอนวิธีนี้จะเพิ่มเส้นความต้องการ (Claim Edge) ขึ้นมาในกราฟการจัดสรรทรัพยากร โดยเส้® น ความต้องการที่ลากจาก Pi ไปยัง Rj (Pi Rj) หมายถึง ในอนาคตกระบวนการ Pi อาจจะร้องขอทรัพยากร ประเภท Rj จะเห็นว่า เส้นความต้องการมีทิศทาง เดียวกันกับ เส้นร้องขอ (จาก Pi ไป Rj) แต่จะต่างกัน ตรงที่เส้นความต้องการในกราฟการจัดสรร ทรัพยากร จะแสดงด้วยเส้นประ แต่เส้นร้องขอแสดง ด้วยเส้นทึบ
  • 35. อัลกอริทึมของกราฟการจัดสรร ทรัพยากร (Resource-Allocation Graph Algorithm) สมมติว่ากระบวนการ Pi ได้ร้องขอทรัพยากรประเภท Rj ระบบจะอนุมัติกา® รร้องขอนี้ ถ้าการเป® ลี่ยนเส้น ร้องขอ (Pi Rj) ไปเป็นเส้นถือครอง (Rj Pi) ไม่ทำาให้ เกิดวงจรขึ้น แต่ถ้าพบว่าเส้นถือครองที่เกิดใหม่ทำาให้ เกิดวงจร กระบวนการนั้นจะต้องรอจนกว่าในระบบ จะมีทรัพยากรว่างมากขึ้น และเส้นถือครองของ กระบวนการที่ร้องขอจะไม่ก่อให้เกิดวงจรในกราฟ การจัดสรรทรัพยากร ถ้าไม่มีวงจรในกราฟ การอนุมัติทรัพยากรจะทำาให้ ระบบอยู่ในสถานะปลอดภัย ถ้าเกิดมีวงจรในกราฟ แล้วการอนุมัติทรัพยากร จะทำาให้ระบบอยู่ในสถานะ ไม่ปลอดภัย  เราจะแสดงขั้นตอนวิธีดังกล่าวโดยพิจารณา กราฟการจัดสรรทรัพยากร ดังรูป
  • 37. อัลกอริทึมของกราฟการจัดสรร ทรัพยากร (Resource-Allocation Graph Algorithm) สมมติว่า P2 ร้องขอ R2 ระบบจะไม่อนุมัติการร้องขอ ดังกล่าว ถึงแม้ว่าทรัพยากร R2 จะว่างอยู่ก็ตาม เพราะว่าถ้าระบบอนุมัติ การร้องขอดังกล่าวแล้ว เส้นถือครอง R2 P2 จะก่อให้เกิดวงจรในกราฟการ จัดสรรทรัพยากร ดังรูป
  • 38. อัลกอริทึมของกราฟการจัดสรร ทรัพยากร (Resource-Allocation Graph Algorithm) ซึ่งจะทำาให้ระบบอยู่ในสถานะไม่ปลอดภัย โดยอาจ เกิดวงจรอับขึ้นในระบบ ถ้ากระบวนการ P1 เกิด ร้องขอทรัพยากรประเภท R2 และ P2 ร้องขอ R1
  • 39. อัลกอริทึมของนายธนาคาร (Banker’s Algorithm) เมื่อมีกระบวนการใหม่เกิดขึ้นในระบบ กระบวนการนั้น จะต้องประกาศจำานวนทรัพยากรสูงสุดที่ต้องการใน แต่ละประเภท โดยจำานวนที่ต้องการนี้จะต้องไม่เกินกว่า จำานวนที่มีอยู่จริงในระบบ และเมื่อกระบวนการร้องขอ ทรัพยากร ระบบจะต้องพิจารณาว่าเมื่อจัดสรร ทรัพยากรให้แต่ละกระบวนการแล้ว จะทำาให้ระบบอยู่ใน สถานะปลอดภัยหรือไม่ ถ้าอยู่ระบบก็จะจัดสรร ทรัพยากรให้ตามที่ขอ แต่ถ้าไม่กระบวนการที่ร้องขอก็ จะต้องรอจนกว่ากระบวนการอื่นได้คืนทรัพยากรบาง ส่วนให้แก่ระบบจนเพียงพอ ระบบต้องเก็บโครงสร้างข้อมูลหลายตัวเพื่อใช้ในขั้น ตอนวิธีแบบนายธนาคาร โครงสร้างข้อมูลเหล่านี้ เป็นตัว บอกสถานะของการจัดสรรทรัพยากรในระบบ
  • 40. อัลกอริทึมของนายธนาคาร (Banker’s Algorithm) โครงสร้างข้อมูลที่จำาเป็นมีดังนี้ Available : เป็นเวคเตอร์ขนาด m ซึ่งใช้เก็บ ค่า จำานวนทรัพยากรที่ว่างของทรัพยากรแต่ละประเภท เช่น Available[j] = k หมายถึง ทรัพยากรประเภท Rj มีจำานวนทรัพยากรว่างอยู่ k ตัว Max : เป็นเมทริกซ์ขนาด n x m ซึ่งใช้เก็บค่าจำานวน สูงสุดของทรัพยากรแต่ละประเภทที่กระบวนการ แต่ละตัวต้องการใช้ เช่น Max[i,j] = k หมายถึง กระบวนการ Pi ต้องการทรัพยากรประเภท Rj มาก ที่สุด k ตัว
  • 41. อัลกอริทึมของนายธนาคาร (Banker’s Algorithm) Allocation : เป็นเมทริกซ์ขนาด n x m ซึ่งใช้เก็บค่า จำานวนทรัพยากรแต่ละประเภทที่กระบวนการแต่ละ ตัว กำาลังถือครองอยู่ เช่น Allocation[i,j] = k หมาย ถึง กระบวนการ Pi กำาลังถือครองทรัพยากรประเภท Rj อยู่ k ตัว Need : เป็นเมทริกซ์ขนาด n x m ซึ่งใช้เก็บค่า จำานวนทรัพยากรแต่ละประเภทที่กระบวนการแต่ละ ตัว อาจร้องขอเพิ่มอีกได้ เช่น Need[i,j] = k หมายถึง กระบวนการ Pi อาจร้องขอทรัพยากรประเภท Rj ได้ อีก k ตัว จะเห็นว่า Need [i,j] = Max[i,j] – Allocation[i,j]
  • 42. ขั้นตอนวิธีตรวจดูสถานะปลอดภัย (Safety Algorithm)  ขั้นตอนวิธีในการตรวจสอบว่า ระบบจะอยู่ใน สถานะปลอดภัยหรือไม่ เป็นดังนี้ กำาหนดให้ Work และ Finish เป็นเวคเตอร์ขนาด m และ n ตามลำาดับ และกำาหนดค่าเริ่มต้น ดังนี้ Work := Available; For i := 1 TO n DO  Finish[i] := FALSE;
  • 43. ขั้นตอนวิธีตรวจดูสถานะปลอดภัย (Safety Algorithm)  ให้ i = 1  WHILE i £ n DO BEGIN  IF Finish[i] = FALSE AND Need[i] £ Work  THEN BEGIN  Work := Work + Allocation[i];  Finish[i] := TRUE;  i := i +1; END  ELSE i := i+1;  END  IF some Finish[i] = FALSE THEN “unsafe” ELSE “safe”
  • 44. อัลกอริทึมร้องขอทรัพยากร (Resource-Request Algorithm) ให้ Requestเป็นเวคเตอร์ แสดงคำาร้องขอของ i กระบวนการ Pi โดยที่ Requestหมายถึง i กระบวนการ Pi ได้ร้องขอทรัพยากรประเภท Rj เป็น จำานวน k ตัว เมื่อกระบวนการ Pi ร้องขอทรัพยากร ระบบจะ จัดการ ดังนี้ £ 1. ถ้า Request> Needแล้ว ระบบจะแจ้งข้อผิด i i พลาดว่า “กระบวนการขอทรัพยากรมากกว่าที่ระบุ” แล้วกระบวนการจะถูกขับออกจากระบบ แต่ถ้า RequestNeedแล้ว จะไปทำางานในขั้นตอนที่ 2 i i
  • 45. อัลกอริทึมร้องขอทรัพยากร (Resource-Request Algorithm)  2. ถ้า Requesti > Available แล้วให้ Pi รอจนกว่า ทรัพยากรที่ร้องขอจะว่าง จากนั้นจึงไปทำางานใน ขั้นตอนที่ 3 แต่ถ้า Requesti Available แล้ว จะไป ทำางานในขั้นตอนที่ 3 ทันที  3. ระบบจะสมมติว่าได้จัดสรรทรัพยากรให้ตามที่ กระบวนการ Pi ร้องขอมา โดยระบบจะมีสถานะ เปลี่ยนไป ดังนี้  Available := Available – Requesti;  Allocationi := Allocationi + Requesti;  Needi := Needi – Requesti; £
  • 46. อัลกอริทึมร้องขอทรัพยากร (Resource-Request Algorithm) แล้วตรวจสอบดูว่าสถานะของการจัดสรรทรัพยากร ขณะนี้เป็นสถานะปลอดภัยหรือไม่ ถ้าเป็นระบบก็จะ จัดสรรทรัพยากรให้ตามที่สมมติทันที แต่ถ้าระบบอยู่ ในสถานะไม่ปลอดภัยแล้วระบบก็จะให้กระบวนการ Pi รอ และ ถอยกลับไปอยู่ในสถานะเดิม (ก่อน การ สมมติค่า Available , Allocationi และ Needi เป็นค่า เดิม)
  • 47. ตัวอย่าง (An Illustrative Example)  ระบบหนึ่งมีกระบวนการอยู่ 5 ตัว คือ P0 , P1 , P2 , P3 และ P4 มีทรัพยากรอยู่ 3 ประเภท คือ A , B และ C โดยที่ในแต่ละประเภท มีจำานวนทรัพยากร 10 , 5 และ 7 ตัว ตามลำาดับ
  • 48. ตัวอย่าง (An Illustrative Example) Allocation Max Available A B C A B C A B C P0 P1 P2 P3 P4 0 1 0 2 0 0 3 0 2 2 1 1 0 0 2 7 5 3 3 2 2 9 0 2 2 2 2 4 3 3 3 3 2
  • 49. ตัวอย่าง (An Illustrative Example) และเนื่องจาก เมทริกซ์ Need เกิดจาก Max – Allocation ดังนั้นจะได้ ว่า Need A B C P0 P1 P2 P3 P4 7 4 3 1 2 2 6 0 0 0 1 1 4 3 1
  • 50. ตัวอย่าง (An Illustrative Example) และ เราพบว่า ระบบอยู่ในสถานะปลอดภัยเนื่องจาก กระบวนการอาจทำางานได้ตามลำาดับ <P1, P3, P4 , P2 , P0> ซึ่งเป็นไปตามเงื่อนไขของ สถานะปลอดภัย  สมมติว่า กระบวนการ P1 ร้องขอทรัพยากร ประเภท A และ C เพิ่มอย่างละ 1 และ 2 ตัวตามลำาดับ ดังนนั้ Request1 £ = (1,0,2) ระบบ£ จะตัดสินใจว่าจะ อนุมัติทรัพ£ ยากรให้ ตามที่ร้องขอหตอนดังนี้ £ รือไม่ตามขั้น Request1 Need1 เนื่องจาก (1,0,2) (1,2,2) Request1 Available เนอื่งจาก (1,0,2) (3,3,2)
  • 51. ตัวอย่าง (An Illustrative Example) เมื่อผ่าน 2 ขั้นแรกแล้ว ระบบก็จะสมมติว่า ได้จัดสรร ทรัพยากรให้ตามที่ร้องขอ ทำาให้ระบบมีสถานะใหม่ ดังนี้ Allocation Need Available A B C A B C A B C P0 P1 P2 P3 P4 0 1 0 3 0 2 3 0 2 2 1 1 0 0 2 7 4 3 0 2 0 6 0 0 0 1 1 4 3 1 2 3 0
  • 52. ตัวอย่าง (An Illustrative Example) จากนั้นก็จะตรวจสอบว่า สถานะใหม่นี้จะเป็นสถานะ ปลอดภัยหรือไม่ โดยใช้ขั้นตอนวิธีสถานะปลอดภัย (safety algorithm) ตรวจสอบ และเราจะพบว่า กระบวนการอาจทำางานได้ ตามลำาดับ <P1, P3, P4, P0, P2> ซึ่งเป็นไปตามเงอื่นไข ของสถานะปลอดภัย เมื่อเป็นเช่นนี้ ระบบจะสามารถอนุมัติการร้องขอ ของ P1 ได้  ในบางกรณี ระบบอาจไม่อนุมัติการร้องขอของ กระบวนการ เช่น จากตัวอย่างเดิมข้างต้น ถ้า P4 ร้องขอทรัพยากร (3,3,0) เพิ่ม ระบบไม่อาจอนุมัติให้ ได้ เพราะมีทรัพยากรไม่พอ หรือถ้า P0 ร้องขอ ทรัพยากร (0,2,0) เพิ่ม ระบบก็จะไม่อนุมัติ แม้ว่าจะมี ทรัพยากรพอ เพราะว่าเมื่อระบบลองสมมติว่าได้ จัดสรรทรัพยากรให้ตามที่ขอแล้วพบว่าสถานะใหม่
  • 53. การตรวจหาวงจรอับ (Deadlock Detection)  ถ้าในระบบปฏิบัติการไม่มีการป้องกันหรือหลีก เลี่ยงวงจรอับแล้ว ในที่สุดระบบก็อาจจะตกอยู่ใน สถานะวงจรอับได้ ดังนนั้ระบบจึงจำาต้องมีวิธีอื่น ทดแทนคือ ขั้นตอนวิธีที่จะตรวจหาวงจรอับในระบบว่าเกิดขึ้น แล้วหรือยัง ขั้นตอนวิธีในการแก้ไขวงจรอับ
  • 54. ระบบที่มีทรัพยากรแต่ละประเภทเพียงตัว เดียว (Single Instance of Each Resource Type)  โดยนำากราฟการจัดสรรทรัพยากรมาแปลง สภาพเล็กน้อยเป็น กราฟการรอคอยทรัพยากร (Wait-for-Graph) การแปลงสภาพทำาโดยเอา สี่เหลยี่มที่แทนทรัพยากรออก และยุบรวมลูกศรเข้า ด้วยกัน ดังนี้  ถ้ามีลูกศรจาก Pi ไป Pj ในกราฟการรอคอย ทรัพยากร แสดงว่า Pi กำาลังรอทรัพยากรซึ่ง Pj ถือ ครองอยู่ ตัวอย่างเช่น
  • 55. ระบบที่มีทรัพยากรแต่ละประเภทเพียงตัว เดียว (Single Instance of Each Resource Type) (a) เป็นต้นแบบกราฟการจัดสรรทรัพยากร (b) แปลง เป็นกราฟการรอคอยทรัพยากร
  • 56. ระบบที่มีทรัพยากรแต่ละประเภทเพียงตัว เดียว (Single Instance of Each Resource Type) ถ้าในกราฟการรอคอยทรัพยากรมีวงจรแล้วก็จะ เกิดวงจรอับ และในทางกลับกัน ถ้าเกิดวงจรอับแล้ว ก็จะมีวงจรในกราฟการรอคอยทรัพยากร ระบบต้อง เก็บข้อมูลของกราฟการรอคอยทรัพยากรไว้ และใช้ ขั้นตอนวิธีการตรวจหาวงจรในกราฟ เพอื่ตรวจหา วงจรอับในระบบ โดยคอยตรวจดูทุก ๆ ช่วงเวลา
  • 57. ระบบที่มีทรัพยากรแต่ละประเภทหลายตัว (Several Instances of a Resource Type) ขั้นตอนวิธีในการตรวจหาวงจรอับนี้คล้ายกับ Banker’s Algorithm ซึ่งจำาเป็นต้องใช้โครงสร้าง ข้อมูลดังต่อไปนี้ Available : เป็นเวคเตอร์ขนาด m แสดงจำานวน ทรัพยากรแต่ละชนิด ที่ยังว่างอยู่ (ไม่ได้ถูก กระบวนการใดถือครองอยู่) Allocation : เป็นเมทริกซ์ n x m ใช้เก็บค่าจำานวน ทรัพยากรแต่ละชนิดที่กระบวนการแต่ละตัวถือครอง อยู่ Request : เป็นเมทริกซ์ n x m ใช้เก็บค่าจำานวน ทรัพยากรแต่ละชนิดที่กระบวนการแต่ละตัวกำาลัง ร้องขอ
  • 58. ระบบที่มีทรัพยากรแต่ละประเภทหลายตัว (Several Instances of a Resource Type) ขั้นตอนวิธีตรวจหาวงจรอับ 1. Work := Available; 2. FOR i:= 1 TO n DO IF Allocation¹ 0 i  THEN Finish[i] := FALSE  ELSE Finish[i] := TRUE;
  • 59. ระบบที่มีทรัพยากรแต่ละประเภทหลายตัว (Several Instances of a Resource Type)  3. i := 1;  WHILE i n DO BEGIN  IF Finish[i] = FALSE AND Request[i] Work  THEN BEGIN  Work := Work + Allocationi;  Finish[i] := TRUE;  i := i+1; END  ELSE i := i+1;  END;  4. FOR i=1 TO n DO  IF Finish[i] = FALSE THEN process Pi is in a deadlocked.  6. IF Finish[i] = TRUE ทั้งหมด แสดงว่าขณะนี้ระบบไม่เกิดวงจร อับ.
  • 60. ตัวอย่าง ให้ระบบมี 5 กระบวนการ P0 , P1 , P2 , P3 และ P4 และมี ทรัพยากรชนิด A 7 ตัว , ชนิด B 2 ตัว , ชนิด C 6 ตัว ณ เวลา T0 ระบบอยู่ในสถานะดังนี้ Allocation Request Available A B C A B C A B C P0 P1 P2 P3 P4 0 1 0 2 0 0 3 0 3 2 1 1 0 0 2 0 0 0 2 0 2 0 0 0 1 0 0 0 0 2 0 0 0
  • 61. ตัวอย่าง เราจะสรุปได้ว่า ขณะนี้ไม่มีวงจรอับเกิดขึ้นหรือ ระบบไม่ได้อยู่ในสถานะวงจรอับ โดยการดำาเนิน ตามขั้นตอนวิธีตรวจหาวงจรอับ (Deadlock Detection) ดังกล่าวข้างต้น เราจะพบว่ามีลำาดับการทำางานหนึ่ง คือ <P0 , P2 , P3 , P1 , P4> ซึ่งจะให้ Finish[i] = TRUE ทั้งหมด
  • 62. สมมติว่ากระบวนการ P2 ร้องขอ ทรัพยากรประเภท C เพิ่มอีก 1 ตัว สถานะของระบบจะกลายเป็น Request A B C P0 P1 P2 P3 P4 0 0 0 2 0 2 0 0 1 1 0 0 0 0 2 เราจะพบว่า ขณะ นี้มีวงจรอับเกิด ขึ้นในระบบ แม้ว่า P0 อาจทำางาน เสร็จ แล้วคืน ทรัพยากรชนิด B สู่ระบบ กระบวนการอื่น ๆ ก็ไม่อาจทำางาน ต่อได้ เพราะ ทรัพยากรที่ว่าง อยู่ไม่พอตาม
  • 63. การใช้วิธีการตรวจหาวงจรอับ (Detection-Algorithm Usage)  เราจะใช้วิธีการตรวจหาวงจรอับ เมื่อใดบ้าง ขึ้นอยู่กับ 2 ปัจจัย คือ 1. ความถี่ของการเกิดวงจรอับในระบบ 2. จำานวนกระบวนการที่ติดอยู่ในวงจรอับ วงจรอับจะเกิดขึ้นเมื่อมีเหตุการณ์ที่บางกระบวนการ ร้องขอทรัพยากรแล้วระบบไม่สามารถอนุมัติให้ได้ ทันที เราจึงอาจตรวจหาวงจรอับโดยตรวจทุกครั้งที่ เหตุการณ์นี้เกิดขึ้น การตรวจหาวงจรอับบ่อยเกินไป ย่อมทำาให้เสียค่า ใช้จ่าย(เวลา)มาก เพื่อที่จะประหยัดค่าใช้จ่าย เรา อาจตรวจหาทุก ๆ ช่วงเวลาแทน เช่น ทุก ๆ 1 ชวั่โมง หรือ เมื่อประสิทธิผลของการใช้หน่วยประมวลผลก
  • 64. การแก้ไขวงจรอับ (Recovery from Deadlock)  เมื่อตรวจพบว่าเกิดวงจรอับขึ้นในระบบแล้ว ระบบอาจจัดการได้ 2 วิธี คือ 1. รายงานให้ผู้ควบคุมเครื่องทราบว่าขณะนี้เกิด วงจรอับขึ้นในระบบแล้ว และให้ผู้ควบคุมจัดการ แก้ไขวงจรอับเอง 2. ระบบแก้ไขวงจรอับเองโดยอัตโนมัติ ซึ่งอาจ ทำาได้ 2 วิธี คือ ยกเลิกกระบวนการที่ติดอยู่ในวงจรอับบาง กระบวนการเพื่อที่จะตัดวงจรอับ อนุญาตให้มีการแทรกกลางคันทรัพยากรบางส่วนที่ ติดอยู่ในวงจรอับได้เพื่อทำาให้ระบบกลับคืนสู่สภาวะ ปกติ
  • 65. การยกเลิกกระบวนการ (Process Termination)  วิธีการในการแก้ไขวงจรอับ โดยการยกเลิก กระบวนการในวงจรอับ มีอยู่ 2 วิธี (ทงั้ 2 วิธีนี้ เมื่อ กระบวนการถูกยกเลิก ทรัพยากรที่กระบวนการถือ ครองอยู่จะคืนกลับสู่ระบบ) ยกเลิกกระบวนการทงั้หมดที่ติดอยู่ในวงจรอับ ยกเลิกกระบวนการในวงจรอับทีละกระบวนการ จน กระทั่งระบบกลับสู่สภาวะปกติ
  • 66. สำาหรับวิธีการยกเลิก กระบวนการทีละตัว  การพิจารณาค่าใช้จ่ายตำ่าที่สุด อาจพิจารณาได้ จากหลายปัจจัยดังนี้  พิจารณาลำาดับความสำาคัญของกระบวนการ (Priority)  พิจารณาว่ากระบวนการนั้นทำางานมานานเท่าไร แล้ว และจะใช้เวลาอีกนานเท่าไรกว่างานจะเสร็จ สมบูรณ์  พิจารณาว่ากระบวนการนั้นได้ถือครองหรือใช้ ทรัพยากรประเภทใดไปเท่าไรแล้ว  พิจารณาว่ากระบวนการยังต้องการทรัพยากรอีก เท่าไร จึงจะทำางานจนเสร็จสมบูรณ์ได้  พิจารณาว่ามีกี่กระบวนการที่จะต้องถูกยกเลิก  พิจารณาว่ากระบวนการเป็นประเภทใด (แบบ โต้ตอบ (interactive) หรือแบบกลุ่ม(batch))
  • 67. การแทรกกลางคัน (Resource Preemption) ในการเลือกใช้วิธีการแทรกกลางคัน เราจะต้อง พิจารณาผลที่จะเกิด 3 ข้อดังนี้ การเลือกผู้รับเคราะห์ (Selection a victim) โดยการ เลือกว่ากระบวนการใดในวงจรอับที่จะถูกแทรกกลาง คันแล้ว จะเสียค่าใช้จ่ายน้อยที่สุด การถอยกลับ (Rollback) ให้กระบวนการนั้นถอยกลับ ไปอยู่ในจุดที่ปลอดภัย และให้เริ่มทำางานใหม่อีกครั้ง จากจุดนี้ การแช่เย็น (Starvation) เราจะรับประกันได้อย่างไร ว่าจะไม่เกิดการแช่เย็น เช่น มีกระบวนการหนึ่งถูก แทรกกลางคันทรัพยากรที่กำาลังใช้อยู่เสมอ ๆ
  • 68. การจัดการปัญหาวงจรอับโดยวิธีผสมผสาน (Combined Approach to Deadlock Handling) เราอาจพิสูจน์ได้ว่าระบบที่ใช้วิธีผสมผสานนี้จะไม่ เกิดวงจรอับ ดังนี้คือ วงจรอับไม่อาจจะเกิดข้ามกลมุ่ของทรัพยากรได้ เพราะเราใช้วิธีการจัดเรียงลำาดับทรัพยากร ในแต่ละกลุ่มก็จะไม่เกิดวงจรอับเพราะเราได้เลือก วิธีจัดการ 1 ใน 3 วิธี ที่กล่าวมาแล้ว ดังนั้นระบบโดย รวมจะไม่เกิดวงจรอับ
  • 69. ตัวอย่าง  สมมติว่าระบบของเราประกอบไปด้วยทรัพยากร 4 ประเภท คือ ทรัพยากรภายในของระบบ (Internal Resources) คือ ทรัพยากรที่ระบบใช้เอง เช่น PCB (Process Control Block) หน่วยความจำาหลัก (Central Memory) ซึ่งผู้ใช้ ระบบต้องใช้ อุปกรณ์ต่าง ๆ ในระบบ (Job Resources) เช่น อุปกรณ์ทางกายภาพ อุปกรณ์ทางตรรกะ หน่วยความจำาสำารอง (Swappable space) พนื้ที่ใน จานบันทึก (Backing Store) สำาหรับสำารองแต่ละงาน
  • 70. ตัวอย่าง เราจัดการปัญหาวงจรอับในระบบนี้ โดยจัดแบ่ง กลมุ่ของทรัพยากรเป็น 4 กลุ่ม ตามที่กล่าวมาและใน แต่ละกลุ่มใช้วิธีจัดการดังนี้ ทรัพยากรภายในของระบบ ป้องกันโดยการจัด ลำาดับทรัพยากร เพราะกระบวนการที่ร้องขอ ทรัพยากรเหล่านี้ ล้วนเป็นกระบวนการภายในของ ระบบเอง หน่วยความจำาหลัก ป้องกันโดยการให้มีการแทรก กลางคันได้ เพราะอาจย้ายงานแต่ละชนิ้ออกจาก หน่วยความจำาหลักไปเก็บไว้ในหน่วยความจำา สำารอง (Backing Store) ได้โดยง่าย เมื่อมี กระบวนการต้องการใช้หน่วยความจำาเพิ่ม และ
  • 71. ตัวอย่าง  อุปกรณ์ต่าง ๆ ในระบบ ใช้วิธีการหลีกเลยี่ง เพราะ ข้อมูลเกี่ยวกับความต้องการสูงสุดของแต่ละงาน อาจรู้ล่วงหน้าได้ เช่น จากบัตรควบคุมงาน (Job Control Card) ในกรณีที่ใช้บัตรเจาะรู (Punch cards)  หน่วยความจำาสำารอง ป้องกันโดย การจัดสรรล่วง หน้า เพราะจำานวนหน่วยความจำาสำารองสูงสุดของ แต่ละงาน มักจะถูกกำาหนดไว้แล้ว