บทที่ 7 วงจรอับmathcom.uru.ac.th/~beebrain/Slide/4123404A/Chapter5.pdf · บทที่ 7 วงจรอับ (DEADLOCK) รูปแบบของปัญหา

Post on 12-Oct-2020

4 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

Transcript

บทท 7 วงจรอบ

(DEADLOCK)

รปแบบของปญหา (System Model)

การคน (Release) กระบวนการตองคนทรพยากรทใชเสรจแลว กลบสระบบ

การใชงาน (Use) กระบวนการนนสามารถใชงานทรพยากรทไดรบ เชน ในกรณททรพยากรทรองขอคอ เครองพมพ เมอไดรบการจดสรรจากระบบแลว กระบวนการนนสามารถพมพขอมลออกทางเครองพมพได

การรองขอ (Request) ถาการรองขอนนไมไดรบการอนมตจากระบบในทนท (เชน ทรพยากรทตองการนน ก าลงถกใชงานโดยกระบวนการอน) ดงนน กระบวนการทรองขอ จะตองรอจนกวาจะไดรบทรพยากรทตองการ

เมอกระบวนการตองการใชทรพยากรของระบบ จะตองท าตามล าดบขนตอนตาง ๆ ดงน

รปแบบของปญหา (System Model)

การรองขอ และการคนทรพยากร คอ ค าสงเรยกระบบ (System calls)

กลมของกระบวนการ จะตกอยในสถานะวงจรอบ เมอทก ๆ กระบวนการ ทอยในกลมนน ตางกก าลงรอคอย ทจะใชทรพยากรทก าลงถกใช โดยกระบวนการอนในกลมนน

รปแบบของปญหา (System Model) เพอทจะแสดงใหเหนภาพของสถานะวงจรอบ เราจะมาพจารณา ระบบทประกอบ

ไปดวยเครองขบเทป 3 เครอง สมมตวา มกระบวนการอย 3 กระบวนการ และแตละกระบวนการ ก าลงใชเครองขบเทปอย กระบวนการละเครอง ตอมาถาแตละกระบวนการ รองขอเครองขบเทปเพมอกกระบวนการละ 1 เครอง ทง 3 กระบวนการ จะตดอยในวงจรอบทนท โดยแตละกระบวนการก าลงรอสถานการณท “เครองขบเทปถกปลอยคนสระบบ” ซงเปนสถานการณทขนกบกระบวนการอน ในวงจร (ทก าลงรอคอยทรพยากรอยเชนกน) ตวอยางทยกมานเปนการแสดงภาพของวงจรอบทเกดจากการทกระบวนการพยายามทจะแยงกนใชทรพยากรประเภทเดยวกน

ลกษณะของวงจรอบ (Deadlock Characterization)

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

• วงจรอบจะเกดขนไดกตอเมอ

• ทรพยากรเปนแบบใชรวมกนไมได (Mutual exclusion) นนคอ จะตองมทรพยากรอยางนอย 1 ตว จดอยในกลมทรพยากรทใชรวมกนไมได นนคอ จะมเพยง 1 กระบวนการเทานนทจะใชทรพยากรตวนนได ถามกระบวนการอนรองขอทรพยากรทก าลงถกใชอย กระบวนการนนจะตองรอ จนกระทงทรพยากรนน ถกคนกลบสระบบแลว

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

2. การถอครองแลวรอคอย (Hold and Wait) คอ มอยางนอยหนงกระบวนการ ทก าลงถอครองทรพยากรอยอยางนอย 1 ตว และขณะเดยวกน กก าลงรอคอยทรพยากรเพมอก แตเปนทรพยากรทก าลงถกถอครอง โดยกระบวนการอนอย

3. หามแทรกกลางคน (No Preemption) เมอกระบวนการก าลงใชทรพยากรอย จะไมมการแทรกกลางคน หรอ ทรพยากรทถกใชงาน จะถกปลอยคนสระบบ โดยความสมครใจของกระบวนการนน คอ เมอกระบวนการนน ไดท างานจนเสรจสมบรณแลว

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

4. วงจรรอคอย (Circular Wait) คอ เซตของกระบวนการ ทก าลงรอคอยทรพยากร (P0, P1, … , Pn) ซง P0 ก าลงรอคอยทรพยากรทถอครองโดย P1 , P1 ก าลงรอคอยทรพยากร ทถอครองโดย P2 , … , Pn-1 ก าลงรอคอยทรพยากรทถอครองโดย Pn และ Pn กก าลงรอคอยทรพยากรทถอครองโดย P0

** ตองมเงอนไขทง 4 นครบ จงจะเกดวงจรอบได เราจะเหนวา เงอนไขทง 4 ไมไดเปนอสระตอกนอยางแทจรง เชน วงจรรอคอย จะเกดจากการทมเงอนไข การถอครองแลวรอคอย ในระบบ

กราฟการจดสรรทรพยากร (Resource-Allocation Graph)

ใช Direct Graph ในการเขยน โดยประกอบดวย Vertex และ Edge

Vertex แบงเปน 2 ประเภทคอ

P = { P1, P2, … , Pn} เปนเซตของกระบวนการทงหมดทมอยในระบบ

และเซต R = { R0, R1, … , Rn } เปนเซตของทรพยากรทมอยในระบบ

และEdge แบงเปน

ลกศรจาก 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)

ท าใหเกดวงจรอบกบกระบวนการ P1 , P2 และ P3 กระบวนการ P2 ก าลงรอคอย ทรพยากรประเภท R3 ซงก าลงถกถอครองโดยกระบวนการ P3 และกระบวนการ P3 กก าลงรองขอทรพยากรประเภท R2 ซงถกถอครอง โดยกระบวนการ P1 และ P2 หรออาจกลาวไดวา กระบวนการ P3 ก าลงรอคอยให P1 หรอ P2 คนทรพยากรประเภท R2 กลบสระบบ

เราลองมาพจารณารปภาพถดไป จะเหนวาม วงจร

กราฟการจดสรรทรพยากร (Resource-Allocation Graph)

P1->R1->P3->R2->P1

กราฟการจดสรรทรพยากร (Resource-Allocation Graph)

แตอยางไรกตามวงจรนจะไมกอใหเกดวงจรอบ โดยสงเกตวา กระบวนการ P4 จะปลอยทรพยากรประเภท R2 ทตนเองถอครองอย เมอใชเสรจ ซงเมอทรพยากร R2 ถกปลอยกลบสระบบแลวระบบกสามารถทจะจดทรพยากรประเภท R2 ใหแกกระบวนการ P3 ได วงจรกจะขาดทนท

เราอาจกลาวโดยสรปไดวา ถาไมมวงจรในกราฟการจดสรรทรพยากรแลว ระบบจะไมอยในสถานะวงจรอบ แตในทางกลบกน ถามวงจรในกราฟแลว ระบบอาจจะเกดวงจรอบ หรอไมเกดกได

Break กนดกวา

การจดการปญหาวงจรอบ (Methods for Handing Deadlocks)

การจดการปญหาวงจรอบมอย 3 วธหลก ๆ คอ

1. ก าหนดกฎเกณฑบางอยางในการใชทรพยากร เพอใหแนใจวาระบบจะไมมทางเกดวงจรอบได

2. ไมตองปองกนใด ๆ เลย ปลอยใหระบบเกดวงจรอบขนกอน แลวคอยตามแกไขทหลง

3. มองขามปญหาทงหมด แลวแสรงท าวาวงจรอบไมเคยเกดขนในระบบ วธการแกปญหาวธนเปนวธการหนงทถกใชในระบบปฏบตการสวนใหญ รวมทง UNIX ดวย <restart>

การปองกนการเกดวงจรอบ (Deadlock Prevention)

1. หามใชทรพยากรรวมกน (Mutual Exclusion)

เงอนไขในขอน คอ การทระบบ ไมอนญาตให มการใชทรพยากรรวมกน เชน เครองพมพจะไมสามารถ ใหกระบวนการหลาย ๆ กระบวนการ ใชพรอม ๆ กนได แตถาเรายอมใหในระบบมการใชทรพยากรรวมกนได ปญหาวงจรอบกจะไมเกด เชน แฟมขอมลทอานไดอยางเดยวสามารถใชรวมกนได

อยางไรกตาม การทเราจะปองกนการเกดวงจรอบในระบบ โดยการปองกนเงอนไขน ไมสามารถท าไดเสมอไป เพราะยงมทรพยากรบางประเภท ทไมมทางใชรวมกนได

การปองกนการเกดวงจรอบ (Deadlock Prevention)

2. การถอครองแลวรอคอย (Hold and Wait)

คอ การทจะไมใหเกด “การถอครองแลวรอคอย” ขนในระบบ โดยจะตองก าหนดวา เมอกระบวนการหนงจะรองขอทรพยากร กระบวนการนนจะตองไมไดถอครองทรพยากรใด ๆ อยในขณะนน ซงอาจท าได 2 วธการ คอ

1. ใหกระบวนการรองขอทรพยากรทตองการใชทงหมด (ตลอดการท างาน) กอนทจะเรมตนท างาน

2. ยอมใหกระบวนการรองขอทรพยากรได กตอเมอกระบวนการนนมไดถอครองทรพยากรใดไวเลย

การปองกนการเกดวงจรอบ (Deadlock Prevention)

เราจะเหนความแตกตางของ 2 วธน โดยการพจารณาจากตวอยาง กระบวนการหนงตองการ

คดลอกขอมลจากเทปลงไปเกบทแฟมขอมลในดสก

เรยงล าดบขอมลของแฟมขอมลในดสก

พมพผลลพธออกสเครองพมพ

ถาทรพยากรทงหมดตองถกรองขอในตอนเรมตนงานของกระบวนการ (นนคอใชวธแรก) แสดงวากระบวนการน กจะถอครองเครองพมพ ไวตลอดเวลาทกระบวนการท างานอย ถงแมวากระบวนการน จะใชเครองพมพเฉพาะในตอนทายของการท างานเทานน

การปองกนการเกดวงจรอบ (Deadlock Prevention)

ส าหรบวธท 2 ใหกระบวนการรองขอทรพยากรในตอนเรมตน แคเครองขบเทป และแฟมขอมลในดสก โดยเมอไดรบทรพยากรแลว กระบวนการจะคดลอกขอมล จากเทปลงไปสดสกจากนนกจะคนทงเครองขบเทป และแฟมขอมลในดสกกลบสระบบ จากนนกระบวนการกจะตองรองขอแฟมขอมลในดสกและเครองพมพใหมอกครงหนง เมอพมพเสรจเรยบรอยแลวกระบวนการกจะคนทรพยากรกลบสระบบ เปนอนสนสดการท างานของกระบวนการ

การปองกนการเกดวงจรอบ (Deadlock Prevention)

วธการแรก มขอเสยคอ การใชทรพยากรจะมประสทธผลต ามาก อาจม ปญหาการแชเยน (starvation) อกดวย โดยถามบางกระบวนการตองการใชทรพยากร (ทเปนทนยมใชกนมาก) หลาย ๆ ตว อาจตองรอคอย อยางไมมทสนสด

สวนวธการหลงกมขอเสยคอ ตองคนทรพยากรทถอครองอย เพอทจะรองขอกลบมาใหมอก รวมกบทรพยากรตวใหม ท าใหเสยเวลาโดยเปลาประโยชน

การปองกนการเกดวงจรอบ (Deadlock Prevention)

3. หามแทรกกลางคน (No Preemption)

เราอาจก าหนดกฎเกณฑดงน

ถากระบวนการหนง (ทก าลงถอครองทรพยากรบางสวนอย) รองขอทรพยากรเพม และระบบยงไมสามารถจดใหไดในทนท (แสดงวากระบวนการทรองขอจะตองรอ) เราจะใหทรพยากรทงหมด ทกระบวนการนถอครองอย ถกแทรกกลางคน นนคอ ทรพยากรทกระบวนการนถอครองอยทงหมดจะถกปลอยคนสระบบโดยปรยาย กระบวนการทถกแทรกกลางคนนจะตองรอคอยทรพยากร ทงทรองขอไวตงแตแรก และทถกแทรกกลางคนไป กอนทจะสามารถท างานตอไปได

การปองกนการเกดวงจรอบ (Deadlock Prevention)

วธการนมกใชกบทรพยากรทสามารถเกบคาสถานะและตดตงคากลบคนมาไดงาย เชน คาในรจสเตอร (ของหนวยประมวลผลกลาง) เนอทในหนวยความจ าหลก เปนตน แตจะไมสามารถใชกบทรพยากรทว ๆ ไป เชน เครองพมพ และ หนวยขบเทป เปนตน

การปองกนการเกดวงจรอบ (Deadlock Prevention)

4. วงจรรอคอย (Circular Wait)

เราอาจปองกนการเกดวงจรอบ โดยการปองกนไมใหเกดเงอนไขวงจรรอคอย ซงสามารถท าไดโดย การก าหนดล าดบของทรพยากรทงหมดในระบบ และก าหนดให กระบวนการตองรองขอใชทรพยากร เรยงตามเลขล าดบน

ก าหนดให R = { R1 , R2, … , Rm } โดย R เปนเซตของทรพยากรในระบบ และ ก าหนดใหทรพยากรแตละประเภทม คาเลขล าดบเปน เลขจ านวนเตม ทไมซ ากน เขยนแทนดวย F(Ri) เพอใหเราสามารถเปรยบเทยบทรพยากร 2 ประเภทไดวาตวใดมล าดบกอน-หลง ตวอยางเชน ถา

การปองกนการเกดวงจรอบ (Deadlock Prevention) F(เครองขบเทป) = 1 F(เครองขบดสก) = 5 F(เครองพมพ) = 12 ก าหนดวธการในการรองขอทรพยากรในระบบดงน กระบวนการแตละตวสามารถรองขอทรพยากรได ในล าดบทเพมขนเทานน คอ เรมตนกระบวนการอาจรองขอทรพยากรใด ๆ กได เชน ทรพยากร Ri แตตอจากนกระบวนการจะรองขอทรพยากร Rj ไดกตอเมอ F(Rj) > F(Ri) ถาเปนการรองขอทรพยากร ประเภทเดยวกนหลาย ๆ ตว กระบวนการจะตองรองขอทรพยากรทละตว

การปองกนการเกดวงจรอบ (Deadlock Prevention) ตวอยาง จากเลขล าดบทรพยากระ ถากระบวนการหนงตองการใชเครองขบเทพ (F(R) = 1) และเครองพมพ (F(R) = 12) กระบวนการนนตองรองขอเครองขบเทปกอน แลวจงขอเครองพมพ ในทางตรงกนขาม ถากระบวนการตองการรองขอทรพยากรประเภท Rj กระบวนการจะตองปลอยทรพยากร Ri ซง F(Ri) >= F(Rj) คนสระบบทกตวเสยกอน เชนถอครอง R5 อยอยากได R1 ตองคน R5 กอน R5 >= R1

การหลกเลยงวงจรอบ (Deadlock Avoidance) อกทางเลอกหนงทไมใหเกดวงจรอบนนคอการหลกเลยง การหลกเลยงเราตองมขอมลการรองของทรพยากรของระบบโดยรวม

เชน ในระบบมเครองขบเทป 1 เครองพมพ 1 และตองทราบวา กระบวนการ P ตองการขบเทป และรองขอเครองพมพ แลวปลอยคนระบบ และ กระบวนการ Q รองขอเครองพมพ จากนนรองขอขบเทป จากขอมลท าใหเราทราบวาการรองขอของกระบวนการท าใหเกดการรอกนหรอ ไม

การหลกเลยงวงจรอบ (Deadlock Avoidance) วธการหนงทงาย คอ ใหกระบวนการประกาศจ านวนทรพยากรสงสดในแตละประเภท ทกระบวนการนนตองการ

ซงท าใหเราสามารถสรางขนตอนการรองขอเพอจะสามารถรบประกนไดวาไมเกดวงจรอบได โดยจะมขนตอนในการตรวจสอบสถานะของการจดสรรทรพยากรอยเสมอ โดยสถาระของการจดสรรทรพยากร ประกอบดวย จ านวนทรพยากรทงหมด จ านวนทรพยากรทถกจดสรรใหกบกระบวนการ และความตองการสงสดของแตละกระบวนการ ระบบจะอยในสถาณะปลอดภยหากมรปแบบทางเลอกในการจดสรรทรพยากรใหแตละกระบวนการ

การหลกเลยงวงจรอบ (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 4 9

5 2 2

ณ เวลา T0 ล าดบกระบวนการ < P1, P0 , P2 > แสดงวา ระบบอยในสถานะปลอดภย

การหลกเลยงวงจรอบ (Deadlock Avoidance) จะเหนวาระบบสามารถจดสรรทรพยากรใหกระบวนการ P1 ได เมอ P1 ท างานเสรจ กจะคนทรพยากรทงหมดใหกบระบบ ดงนน จะไดเครองขบเทป เพมเปน 5 เครองและสามารถจดสรรใหกบ P0 และ P2 ได

การหลกเลยงวงจรอบ (Deadlock Avoidance) บางครงระบบอาจจะเปลยนจะสถานะปลอดภย ไปเปนสถานะไมปลอดภย

ได เชน สมมตวา ณ เวลา T1 กระบวนการ P2 รองขอเครองขบเทปเพมอก 1 เครอง และไดรบการจดสรรจะท าใหสถานะของระบบกลายเปนสถานะไมปลอดภยทนท (อยางไร ??)

การหลกเลยงวงจรอบ (Deadlock Avoidance) โดยใชแนวคดของสถานะปลอดภยน เราสามารถสรางขนตอนวธการ

หลกเลยงวงจรอบซงจะประกนไดวา จะไมเกดวงจรอบขนในระบบ โดยเมอใดกตามทกระบวนการรองขอทรพยากรเพมและทรพยากรยงมวางพอ ระบบตองตดสนใจวาจะใหทรพยากรตามทรองขอทนทหรอไมให (ใหกระบวนการรอไปกอน) โดยพจารณาจากวาถาจดสรรใหตามทรองขอแลวระบบจะยงคงอยในสถานะปลอดภยหรอไม

top related