You are on page 1of 41

บทที่ 8

สภาวะเดรสล็อค
Deadlocks

Deadlocks 1
หัวข้อบรรยาย
 รูปแบบของปั ญหาเดรสล็อค
 ลักษณะของวงจรเดรสล็อค
 การจัดการปั ญหาวงจรเดรสล็อค
 การป้ องกันการเกิดวงจรเดรสล็อค
 การหลีกเลี่ยงการเกิดวงจรเดรสล็อค
 การตรวจหาวงจรเดรสล็อค
 การก้คู ืนจากวงจรเดรสล็อค
 การจัดการปั ญหาวงจรเดรสล็อคโดยวิธีผสมผสาน

Deadlocks 2
รูปแบบของปั ญหาเดรสล็อค
 คือ กลุ่มของโปรเซสกลุ่มหนึ่ งที่อยุูในสถานะการที่ถูก
บล็อก โดยที่ตุางก็ถือครองทรัพยากรบางอยุางเอาไว้ และ
ต้องการใช้ทรัพยากรใหมุเพิ่มเติม ซึ่งทรัพยากรที่ต้องการ
เพิ่มเติมก็ถูกถือครองโดยโปรเซสอื่นที่อยุูในเดรสล็อค
เดียวกัน
 ตัวอยุางเชุน
 ระบบมีเทปไดร์ 2 ตัว
 โดยโปรเซส p1 และ p2 ตุางก็ถือครอง เทปไดร์เอาไว้
คนละตัว และแตุละโปรเซสตุางก็ต้องการเทปไดร์เพิ่ม
อีกโปรเซสละ 1 ตัว เชุนนี้ จะถือวุาระบบอยุูในสภาวะ
เดรสล็อค

Deadlocks 3
ตัวอยุางสภาวะเดรสล็อค

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

Deadlocks 4
รูปแบบของระบบ
 ในระบบประกอบด้วยทรัพยากร เชุน
CPU cycles, memory space, I/O devices
 ทรัพยากรแตุละอยุาง เปรียบเสมือน Ri ซึ่งมีจำานวนทั้ง
สิ้น Wi ชิ้น
 การใช้ทรัพยากรในระบบของแตุละโปรเซส มีข้ น ั ตอน
ดังนี้
 request -การร้องขอใช้ทรัพยากร
 use - สภาวะที่โปรเซสกำาลังใช้ทรัพยากรนั้ น
 release -การคืนทรัพยากรที่ใช้แล้วให้แกุระบบ

Deadlocks 5
ลักษณะของวงจรเดรสล็อค
(Deadlock Characterization)
 Mutual exclusion: เวลาใดๆจะมีโปรเซสเพียงโปร
เซสเดียวเทุานั้ นที่สามารถใช้ทรัพยากรนั้ นได้
 Hold and wait: โปรเซสกำาลังถือครองทรัพยากร
อยุางน้อย 1 ตัวและกำาลังร้องขอทรัพยากรเพิ่ม
 No preemption: ทรัพยากรนั้ น ๆ เมื่อถูกเริม ่ ต้นใช้
งานแล้วจะต้องถูกใช้งานตุอเนื่ อง จะคืนก็ตุอเมื่อ
ทำางานนั้ นเสร็จแล้วเทุานั้ น
 Circular wait: การถือครองและการขอใช้ทรัพยากร
ตุอเนื่ องกันเป็ นวงกลม

Deadlocks 6
ลักษณะของ Resource-
Allocation Graph
คือ กลุม
่ ของโหนด V และแขน E
 V ถูกแบุงออกเป็ น 2 ประเภท:
 P = {P1, P2, …, Pn}, คือกลุ่มของโปรเซสที่อยุูในระบบ

 R = {R1, R2, …, Rm}, คือกลุ่มของทรัพยากรที่มีอยุูท้ ังหมดในระบบ
 request edge – คือทิศทางของเส้นจาก Pi → Rj
 assignment edge – คือทิศทางของเส้นจาก Rj → Pi

Deadlocks 7
ลักษณะของ Resource-
Allocation Graph (ตุอ)
 โปรเซสใช้สัญลักษณ์

 ทรัพยากรใช้สญ
ั ลักษณ์เป็ นรูปสี่เหลี่ยม

 ถ้าโปรเซส pi ร้องขอใช้ทรัพยากร Rj
Pi

Rj

Deadlocks 8
ลักษณะของ Resource-
Allocation Graph (ตุอ)
 ถ้าโปรเซส pi กำาลังถือครองทรัพยากร Rj ให้
ใช้
Pi
Rj

Deadlocks 9
ตัวอยุางของ Resource
Allocation Graph

Deadlocks 10
Allocation Graph
ที่เกิดเดรสล็อค

Deadlocks 11
Allocation Graph
ที่ไมุเกิดเดรสล็อค

Deadlocks 12
ความหมายของ Resource
Allocation Graph
 ถ้ากราฟไมุมี cycle แสดงวุาไมุมีสภาวะวงจรเดรสล็อค
เกิดขึ้น
 ถ้ากราฟมี cycle ก็พิจารณาเพิ่มเติมคือ
 ถ้าในระบบที่ทรัพยากรแตุละชนิ ดมีเพียงตัวเดียว
แสดงวุาได้เกิดสภาวะวงจรเดรวล็อคขึ้นแล้ว
 ในกรณี ท่ีทรัพยากรแตุละชนิ ดมีหลายตัว แสดงวุา
ระบบอยุูในสภาพที่เสี่ยงตุอการเกิดวงจรเดรสล็อค

Deadlocks 13
การจัดการปั ญหาวงจรเดรสล็อค
 ในระบบปฏิบัตก
ิ ารทัว่ ๆไป มี 3 แนวทางที่จัดการกับ
ปั ญหานี้
 ทำาให้แนุใจวุาระบบจะไมุเข้าสุูวงจรเดรสล็อค
 ยอมให้ระบบเข้าสุูวงจรเดรสล็อคกุอนแล้ว จึงคุอยแก้ไขใน
ภายหลัง
 ไมุให้ความสนใจกับปั ญหาวงจรเดรสล็อค โดยตั้งสมม่ติฐานวุา
ระบบจะไมุมีทางที่จะเกิดปั ญหาวงจรเดรสล็อค

Deadlocks 14
ล็อค
(Deadlock Prevention)
 Mutual Exclusion – ค่ณสมบัตน ิ ้ ี ไมุสามารถหลีกเลี่ยงได้
เพราะเป็ นค่ณสมบัตต ิ ามธรรมชาติของทรัพยากรแตุละชนิ ด
 Hold and Wait – ระบบจะต้องรับประกันวุา เมื่อใดที่โปรเซส
ร้องขอใช้ทรัพยากร โปรเซสนี้ จะต้องไมุครอบครองทรัพยากร
อื่นๆ อยุู
 บังคับให้โปรเซสจะต้องประกาศลุวงหน้าวุาต้องการใช้
ทรัพยากรอะไรบ้าง ดังนั้ นโปรเซสจะเริม ่ ประมวลผลได้ก็ตอ ุ
เมื่อได้รบ
ั การจัดสรรทรัพยากรที่ตอ ้ งการใช้ให้หมดเรียบร้อย
เสียกุอน
 มีการใช้ทรัพยากรของระบบในระดับตำ่าและเกิดปั ญหาการ
อดอยาก (Starvation)

Deadlocks 15
ล็อค
(Deadlock Prevention) (ตุอ)
 No Preemption – กำาหนดกฎการทำางานให้เป็ น
ดังนี้
 ถ้าโปรเซสที่กำาลังครอบครองทรัพยากรอยุาง
ใดอยุางหนึ่ งร้องขอใช้ทรัพยากรเพิ่มเติม แตุ
ระบบปฏิบัติการไมุสามารพจัดหาได้ในทันที ก็
ให้โปรเซสนั้ นคืนทรัพยากรที่ครอบครองอยุู
ทั้งหมดให้แกุระบบ
 เพิ่มเติมทรัพยากรที่สามารถหย่ดการทำางาน
กลางคันได้
 โปรเซสจะสามารถทำางานได้อีกครั้งเมื่อระบบ
ปฏิบัติการสามารถจัดสรรทรัพยากรเกุารวมทั้ง
ทรัพยากรใหมุท่ีโปรเซสนั้ นร้องขอให้แกุโปรเซ
Deadlocks 16
ล็อค
(Deadlock Prevention) (ตุอ)
 Circular Wait –วิธีกำาหนดหมายเลขเฉพาะให้
แกุทรัพยากรท่กตัว เรียกวุา การจัดลำาดับทั้ง
ระบบโปรเซสใด ๆ จะได้รบ ั อน่ ญาตให้ร้องขอ
ทรัพยากรที่มีหมายเลขสูงกวุาเทุานั้ น

Deadlocks 17
รสล็อค
Deadlock Avoidance
 วิธีการที่งุายทีส่ดและเป็ นประโยชน์มากที่ส่ดคือให้แตุละ
โปรเซสประกาศลุวงหน้าวุาต้องการใช้ทรัพยากรใดบ้าง
และต้องการใช้ทรัพยากรจำานวนสูงส่ดเทุาใด
 อัลกอริทึมจะทำาการตรวจสอบสถานการณ์ถอ ื ครอง
ทรัพยากรของโปรเซสตุาง ๆ อยุูตลอดเวลาเพื่อทำาให้
แนุใจวุาไมุเกิดเงื่อนไข circular-wait ขึ้น
 สถานะresource allocation state กำาหนดขึ้นโดยจำานวน
ทรัพยากรที่วุางอยุูและจำานวนทรัพยากรที่จัดสรรให้แกุ
โปรเซสตุาง ๆ ไปแล้ว

Deadlocks 18
สภาวะ Safe State
 เมื่อโปรเซสร้องขอใช้ทรัพยากรที่วุางอยุู ระบบจะ
ต้องตรวจสอบวุาเมื่อให้ทรัพยากรนั้ นไปแล้วระบบ
จะยังคงอยุูในสถานะ safe state
 ระบบจะอยุูในสถานะ safe state ถ้าสามารถค้นหา
safe sequence ของโปรเซสทั้งหมดได้
 สำาหรับแตุละโปรเซส ระบบปฏิบัติการจะสามารถ
จัดสรรทรัพยากรให้แกุโปรเซสที่ร้องขอนั้ นได้ ซึ่ง
รวมทั้งจำานวนที่โปรเซส Pi (เมื่อ j<i) ร้องขอได้
 ถ้าโปรเซส Pi ต้องการใช้ทรัพยากรที่ระบบไมุ
สามารถจัดสรรให้ได้ทันที โปรเซส Pi จะต้อง
หย่ดรอจนโปรเซส Pi ทั้งหมดจะทำางานเสร็จสิ้น
และคืนทรัพยากรให้แกุระบบ
Deadlocks 19
สภาวะ Safe State (ตุอ)
 เมื่อโปรเซส Pi ทำางานเสร็จ โปรเซส Pi จึงจะได้
รับการจัดสรรทรัพยากรให้ สามารถประมวลผล
และคืนทรัพยากรให้แกุระบบเมื่อเสร็จสิ้นการ
ทำางาน
 เมื่อโปรเซส Pi ทำางานเสร็จ โปรเซส Pi +1 จึง
จะได้รบั การจัดสรรทรัพยากรให้และทำางานได้ตุอ
ไป

Deadlocks 20
ความหมายของสภาวะ Safe State
 ถ้าระบบอยุูในสภาวะ safe state ⇒ ไมุมีเดรสล็อคเกิด
ขึ้น

 ถ้าระบบอยุูในสภาวะ unsafe state ⇒ เป็ นไปได้ท่ีจะมี
เดรสล็อคเกิดขึ้นในระบบ

 การหลีกเลี่ยง คือ  ทำาให้แนุใจวุาระบบจะไมุเข้าสุู
สภาวะ unsafe state

Deadlocks 21
สภาวะ Safe, Unsafe ,
Deadlock State

Deadlocks 22
Allocation Graph
เพื่อหลีกเลี่ยงเดรสล็อค

Deadlocks 23
Allocation Graph ในสภาวะ
Unsafe

Deadlocks 24
อัลกอริธม
ึ Banker
 กำาหนดให้มีทรัพยากรหลายอยุางและทรัพยากรแตุละ
อยุางมีอยุูหลายชิ้น
 แตุละโปรเซสจะต้องแจ้งให้ทราบลุวงหน้าวุาต้องการใช้
ทรัพยากรอะไรบ้าง สูงส่ดเทุาไร
 เมื่อโปรเซสร้องขอทรัพยากรอาจจะไมุได้รบั การจัดสรร
ในทันที จึงอาจต้องรอคอยบ้าง
 เมื่อโปรเซสได้รบ
ั การจัดสรรทรัพยากรให้แล้ว โปรเซ
สนั้ นจะต้องคืนทรัพยากรให้แกุระบบภายในระยะเวลา
อันสมควร

Deadlocks 25
โครงสร้างข้อมูลของ
Banker’s Algorithm
กำาหนดให้ n = จำานวนของโปรเซส, และ m = จำานวนประเภทของทรัพยากร

 Available: เป็ นคุาเวกเตอร์ความยาว m ถ้า
available [j] = k หมายความว่า มีทรัพยากร
ประเภท Rj อย่่ k ตัว
 Max: เป็ นเมตริกขนาด n x m ถ้า Max [i,j] =
k หมายความว่า โปรเซสชื่อ Pi ต้องการ
ทรัพยากรประเภท Rj ส่งสุด k ตัว

Deadlocks 26
โครงสร้างข้อมูลของ
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].

Deadlocks 27
การทำางานของอังกอริธึม
ให้ Requesti เป็ นเวกเตอร์แสดงคำาร้องขอของ
กระบวนการ Pi ได้รอ ้ งขอทรัพยากรประเภท Rj
เป็ นจำานวน k ตัว
1.ถ้า Requesti ≤ Needi แล้ว ระบบจะแจ้งข้อผิด
พลาดวุา กระบวนการการขอทรัพยากรมากกวุา
ที่ระบ่ และกระบวนการจะถูกขับออกจากระบบ
แตุถา้ Requesti ≤ Needi แล้ว จะไปทำางานใน
ขั้นตอนที่ 2
2.ถ้า Requesti ≤ Available แล้วให้ Pi รอจนกวุา
ทรัพยากรที่รอ้ งขอจะวุาง จากนั้ นจึงไปทำางาน
ในขั้นตอนที่ 3 แตุถา้ Requesti ≤ Available
แล้ว จะไปทำางานในขั้นตอนที่ 3 ทันที
Deadlocks 28
การทำางานของอังกอริธึม
(ตุอ)
3.ระบบสมมติวุาได้จัดสรรทรัพยากรให้ตามที่
กระบวนการ Pi ร้องขอมา โดยระบบจะมี
สถานะเปลี่ยนไปดังนี้
Available = Available = Requesti;
Allocationi = Allocationi + Requesti;
Needi = Needi – Requesti;;
• ถ้า safe ⇒ ทรัพยากรนั้นได้รับการจัดสรรให้
Pi
• ถ้า unsafe ⇒ Pi จะต้องรอ

Deadlocks 29
ตัวอยุางของ Banker’s
Algorithm
 มีโปรเซสอยุู 5 โปรเซส คือ P0 ถึง P4 และมีทรัพยากรอยุู 3 ประเภท
โดยมีประเภท A อยุู 10 ตัว ประเภท B อยุู 5 ตัวและประเภท C อยุู 7
ตัว
 เริม
่ ต้นที่ข้อมูลในระบบเป็ นดังนี้
Allocation Max Available
A B CA B C A B C
P0 0 1 07 5 3 3 3 2
P1 200322
P2 302902
P3 211222
P4 0 0 24 3 3
Deadlocks 30
ตัวอยุางของ Banker’s
Algorithm (ตุอ)
 เนื่ องจากเมทริกซ์ Need เกิดจาก Max-Allocation จะได้วุา
Need
A B C
P0 7 4 3
P1 1 2 2
P2 6 0 0
P3 0 1 1
P4 4 3 1
 พบวุาระบบอยุูในสถานะปลอดภัยเนื่ องจากระบวนการอาจทำางานได้
ตามลำาดับ ซึ่งเป็ นไปตามเงื่อนไขของสถานะปลอดภัย < P1, P3,
P4, P2, P0>

Deadlocks 31
การตรวจจับสภาวะเดรสล็อค
 อน่ ญาตให้ระบบเข้าสุูสภาวะเดรสล็อค

 ใช้ Detection algorithm เพื่อตรวจสอบ

 ถ้าพบก็ทำาการก้ค
ู น
ื กลับมา

Deadlocks 32
กรณี ทรัพยากรแตุละประเภทมี
เพียงแคุหนึ่ งตัว
 ใช้ wait-for graph ชุวย
 โหนดคือโปรเซส

 Pi → Pj ถ้า Pi รอทรัพยากรที่ Pj ใช้งานอย่่

 จากนั้ นทำาการค้นหา cycle ในกราฟ

 คุาการดำาเนิ นงานที่ใช้ในการค้นหาในกราฟ มีคุาเป็ น n2
operations เมื่อ n คือจำานวนของโหนดในกราฟ

Deadlocks 33
Graph เป็ น Wait-for
Graph

Resource-Allocation Graph Corresponding wait-for graph

Deadlocks 34
กรณี ทรัพยากรแตุละประเภทมี
หลายๆตัว
 Available: คือเวกเตอร์ขนาด m ซึ่งแทนจำานวน
ประเภทของทรัพยากร

 Allocation: คือเมตริกขนาด n x m ใช้บอก
จำานวนทรัพยากรแตุละประเภทที่แตุละโปรเซส
ครอบครองอยุู

 Request: คือเมตริกขนาด n x m ใช้บอกจำานวน
ทรัพยากรที่โปรเซสตุละโปรเซสร้องขอเพิ่ม

Deadlocks 35
ตัวอยุาง Detection
Algorithm
 ในระบบประกอบด้วยโปรเซสทั้งสิ้น 5 โปรเซส ชื่อวุา
P0 จนถึง P4 โดยมีทรัพยากรอยุู 3 ประเภท คือ A (7
ตัว), B (2 ตัว), และ C (6 ตัว)
 ที่เวลาเริม
่ ต้น ข้อมูลในระบบเป็ นดังนี้

Deadlocks 36
ตัวอยุาง Detection
Algorithm (ตุอ)
AllocationRequest Available
A B C A B C A B C
P0 0 1 0 0 0 0 000
P1 2 0 0 202
P2 3 0 3 0 0 0
P3 2 1 1 100
P4 0 0 2 002
 ลำาดับ <P0, P2, P3, P1, P4> เป็ นผลทำาให้ Finish[i] = true ในท่ก i

Deadlocks 37
การใช้งาน Detection-
Algorithm
 จะตรวจสอบเมื่อใดและบุอยแคุไหน
 ความถี่หรือโอกาสที่จะเกิดสภาวะขัดตายขึ้นในระบบ
 จำานวนโปรเซสที่ตอ
้ ง roll back ทำางานย้อนกลับ
หลัง)

 ถ้าอัลกอริทึมตรวจหาสภาวะขัดตาย ถูกนำามาใช้อยุางไมุ
สมบูรณ์ อาจเป็ นไปได้วุาจะเกิดcycle ขึ้นเป็ นจำานวน
หลาย cycle ทำาให้ไมุสามารถบอกได้วุา โปรเซสใดอยุู
ในกลุ่ม cycle ใดที่เกิดสภาวะขัดตายขึ้น

Deadlocks 38
การกู้ระบบคืนจากสภาวะเดรสล็อค
 บังคับให้ท่กโปรเซสที่เกี่ยวข้องหย่ดทำางานทั้งหมด
 สัง
่ ให้โปรเซสหย่ดทำางานในทันที ทีละโปรเซสจนกวุาหุวงโซุของโปร
เซสที่ทำาให้เกิดสภาวะขัดตายจะหมดไป
 การเลือกโปรเซสที่จะถูกสัง ่ ให้หย่ดทำางาน พิจารณาจาก
 เลือกตามลำาดับความสำาคัญของแตุละโปรเซส
 เวลาซีพียูท่ีใช้ไป หรือเวลาซีพียูท่ีเหลืออยุูของแตุละโปรเซส
 ปริมาณทรัพยากรที่ใช้ไปแล้ว
 ปริมาณทรัพยากรที่ต้องการใช้เพิ่ม
 จำานวนโปรเซสที่จะต้องถูกสัง ่ ให้หย่ดทำางาน
 ลักษณะของโปรเซส คือเป็ นงานแบบ interactive หรือ batch

Deadlocks 39
การกู้ระบบคืนจากสภาวะเดรส
ล็อค(ตุอ)
 เลือกโปรเซสโดยพิจารณาจากโปรเซสที่มีมูลคุาการ
ทำางานตำ่าที่ส่ด
 Rollback –เลือกโปรเซสที่จะทำาให้เกิดโรลแบ็ก ตำ่าที่ส่ด
การโรลแบ็ก คือการย้อนการทำางานของโปรเซสหนึ่ ง
กลับไปยังจ่ดที่ปลอดภัย
 Starvation –วิธก ี ารเลือกโปรเซสที่ไมุเหมาะสมอาจ
ทำาให้เกิดปั ญหา starvation คือโปรเซสกลุม่ หนึ่ งมักจะ
ถูกเลือกให้หย่ดทำางานเสมอเมื่อเกิดปั ญหาขัดตายขึ้น

Deadlocks 40
การจัดการปั ญหาวงจรเดรสล็อคโดย
วิธีผสมผสาน
 รวมเทคนิ คทั้งสามวิธเี ข้าด้วยกัน
 เทคนิ คการป้ องกัน
 เทคนิ คการหลีกเลี่ยง
 เทคนิ คการตรวจสอบ
 อน่ ญาตให้ใช้เทคนิ คที่เหมาะกับทรัพยากรแตุละประเภท
ในระบบ
 แบุงทรัพยากรออกเป็ นคลาสๆ
 เลือกเทคนิ คที่เหมาะสมในแตุละคลาส โดยไมุจำาเป็ น
ต้องเหมือนกัน
Deadlocks 41