Скачать презентацию Chương 6 Deadlock q Mô hình hệ Скачать презентацию Chương 6 Deadlock q Mô hình hệ

5fbce62c6aec800cfdb4046a98007eae.ppt

  • Количество слайдов: 46

Chương 6 : Deadlock q Mô hình hệ thống q Định nghĩa q Điều Chương 6 : Deadlock q Mô hình hệ thống q Định nghĩa q Điều kiện cần của deadlock q Resource Allocation Graph (RAG) q Phương pháp giải quyết deadlock q Deadlock prevention q Deadlock avoidance q Deadlock detection q Deadlock recovery q Phương pháp kết hợp KTMT giải quyết Deadlock Khoa để 1

Vấn đề deadlock trong hệ thống q Tình huống: một tập các process bị Vấn đề deadlock trong hệ thống q Tình huống: một tập các process bị blocked, mỗi process giữ tài nguyên và đang chờ tài nguyên mà process khác trong tập đang giữ. q Ví dụ 1 - Giả sử hệ thống có 2 file trên đĩa. - P 1 và P 2 mỗi process đang mở một file và yêu cầu mở file kia. q Ví dụ 2 Semaphore A và B, khởi tạo bằng 1 – P 0 – wait(A); – wait(B); P 1 wait(B); wait(A); Khoa KTMT 2

Mô hình hóa hệ thống q q Khái niệm tài nguyên (Resource) Là tất Mô hình hóa hệ thống q q Khái niệm tài nguyên (Resource) Là tất cả những gì được yêu cầu bởi tiến trình để xử lý Tài nguyên có thể ở nhiều loại Tài nguyên tái sử dụng theo kỳ (Serially Reusable Resources) – CPU cycles, memory space, I/O devices, files – Yêu cầu -> sử dụng -> trả lại (release) q Tài nguyên tiêu thụ (Consumable Resources) – Được sản sinh bởi một tiến trình, cần bởi một tiến trình - e. g. Messages, buffers of information, interrupts – Tạo ra ->yêu cầu ->sử dụng Khoa KTMT 3

Moâ hình hoùa heä thoáng q Hệ thống gồm các loại tài nguyên, kí Moâ hình hoùa heä thoáng q Hệ thống gồm các loại tài nguyên, kí hiệu R 1, R 2, …, Rm , bao gồm: - CPU cycle, không gian bộ nhớ, thiết bị I/O, file, semaphore, … Mỗi loại tài nguyên Ri có Wi thực thể (instance). q Giả sử tài nguyên tái sử dụng theo kỳ (Serially Reusable Resources) - Yêu cầu (request): process phải chờ nếu yêu cầu không được đáp ứng ngay - Sử dụng (use): process sử dụng tài nguyên - Hoàn trả (release): process hoàn trả tài nguyên q Các tác vụ yêu cầu (request) và hoàn trả (release) đều là system call. Ví dụ - request/release device - open/close file - allocate/free memory - wait/signal Khoa KTMT 4

Ñònh nghóa q Moät tieán trình goïi laø deadlocked neáu noù ñang ñôïi moät Ñònh nghóa q Moät tieán trình goïi laø deadlocked neáu noù ñang ñôïi moät söï kieän maø seõ khoâng bao giôø xảy ra. Thoâng thöôøng, coù nhieàu hôn moät tieán trình bò lieân quan trong moät deadlock. q Moät tieán trình goïi laø indefinitely postponed neáu noù bò trì hoaõn moät khoaûng thôøi gian daøi laëp ñi laëp laïi trong khi heä thoáng ñaùp öùng cho nhöõng tieán trình khaùc. § i. e. Moät tieán trình saün saøng ñeå xöû lyù nhöng noù khoâng bao giôø nhaän ñöôïc CPU. Khoa KTMT 5

Ñieàu kieän caàn ñeå xaûy ra deadlock Boán ñieàu kieän caàn (necessary condition) ñeå Ñieàu kieän caàn ñeå xaûy ra deadlock Boán ñieàu kieän caàn (necessary condition) ñeå xaûy ra deadlock 1. Mutual exclusion: ít nhaát moät taøi nguyeân ñöôïc giöõ theo nonsharable mode (ví duï: printer; ví duï sharable resource: read-only files). 2. Hold and wait: moät process ñang giöõ ít nhaát moät taøi nguyeân vaø ñôïi theâm taøi nguyeân do quaù trình khaùc ñang giöõ. Khoa KTMT 6

Ñieàu kieän caàn ñeå xaûy ra deadlock (tt) 3. No preemption: (= no resource Ñieàu kieän caàn ñeå xaûy ra deadlock (tt) 3. No preemption: (= no resource preemption) taøi nguyeân khoâng theå bò laáy laïi, maø chæ coù theå ñöôïc traû laïi töø process ñang giöõ taøi nguyeân ñoù khi noù muoán. 4. Circular wait: toàn taïi moät taäp {P 0, …, Pn} caùc quaù trình ñang ñôïi sao cho P 0 ñôïi moät taøi nguyeân maø P 1 ñang giöõ P 1 ñôïi moät taøi nguyeân maø P 2 ñang giöõ … Pn ñôïi moät taøi nguyeân maø P 0 ñang giöõ Khoa KTMT 7

Resource Allocation Graph q Resource allocation graph (RAG) laø ñoà thò coù höôùng, vôùi Resource Allocation Graph q Resource allocation graph (RAG) laø ñoà thò coù höôùng, vôùi taäp ñænh V vaø taäp caïnh E – Taäp ñænh V goàm 2 loaïi: § P = {P 1, P 2, …, Pn } (Taát caû process trong heä thoáng) § R = {R 1, R 2, …, Rm } (Taát caû caùc loaïi taøi nguyeân trong heä thoáng) – Taäp caïnh E goàm 2 loaïi: § Request edge: caïnh coù höôùng töø Pi ñeán Rj § Assignment edge: caïnh coù höôùng töø Rj ñeán Pi Khoa KTMT 8

Resource Allocation Graph (tt) Kyù hieäu q Process: q Loaïi taøi nguyeân vôùi 4 Resource Allocation Graph (tt) Kyù hieäu q Process: q Loaïi taøi nguyeân vôùi 4 thöïc theå: Pi Rj Rj q Pi yeâu caàu moät thöïc theå cuûa Rj : Pi Rj q Pi ñang giöõ moät thöïc theå cuûa Rj : Khoa KTMT Pi 9

Ví duï veà RAG R 3 R 1 P 3 P 2 R 4 Ví duï veà RAG R 3 R 1 P 3 P 2 R 4 Khoa KTMT 10

Ví duï veà RAG (tt) R 3 R 1 P 3 P 2 Deadlock Ví duï veà RAG (tt) R 3 R 1 P 3 P 2 Deadlock xaûy ra! R 2 R 4 Khoa KTMT 11

RAG vaø deadlock q Ví duï moät RAG chöùa chu trình nhöng khoâng xaûy RAG vaø deadlock q Ví duï moät RAG chöùa chu trình nhöng khoâng xaûy ra deadlock: P 4 coù theå traû laïi instance cuûa R 2. R 1 P 2 R 2 P 3 P 4 Khoa KTMT 12

RAG vaø deadlock (tt) q q RAG khoâng chöùa chu trình (cycle) khoâng coù RAG vaø deadlock (tt) q q RAG khoâng chöùa chu trình (cycle) khoâng coù deadlock RAG chöùa moät (hay nhieàu) chu trình – – Neáu moãi loaïi taøi nguyeân chæ coù moät thöïc theå deadlock Neáu moãi loaïi taøi nguyeân coù nhieàu thöïc theå coù theå xaûy ra deadlock Khoa KTMT 13

Caùc phöông phaùp giaûi quyeát deadlock (1) • • • Ba phöông phaùp 1) Caùc phöông phaùp giaûi quyeát deadlock (1) • • • Ba phöông phaùp 1) Baûo ñaûm raèng heä thoáng khoâng rôi vaøo tình traïng deadlock baèng caùch ngaên (preventing) hoaëc traùnh (avoiding) deadlock. Khaùc bieät – Ngaên deadlock: khoâng cho pheùp (ít nhaát) moät trong 4 ñieàu kieän caàn cho deadlock – Traùnh deadlock: caùc quaù trình caàn cung caáp thoâng tin veà taøi nguyeân noù caàn ñeå heä thoáng caáp phaùt taøi nguyeân moät caùch thích hôïp Khoa KTMT 14

Caùc phöông phaùp giaûi quyeát deadlock (2) • 2) Cho pheùp heä thoáng vaøo Caùc phöông phaùp giaûi quyeát deadlock (2) • 2) Cho pheùp heä thoáng vaøo traïng thaùi deadlock, nhöng sau ñoù phaùt hieän deadlock vaø phuïc hoài heä thoáng. • 3) Boû qua moïi vaán ñeà, xem nhö deadlock khoâng bao giôø xaûy ra trong heä thoáng. Khaù nhieàu heä ñieàu haønh söû duïng phöông phaùp naøy. – Deadlock khoâng ñöôïc phaùt hieän, daãn ñeán vieäc giaûm hieäu suaát cuûa heä thoáng. Cuoái cuøng, heä thoáng coù theå ngöng hoaït ñoäng vaø phaûi ñöôïc khôûi ñoäng laïi. Khoa KTMT 15

Ngaên deadlock baèng caùch ngaên moät trong 4 ñieàu kieän caàn cuûa deadlock 1. Ngaên deadlock baèng caùch ngaên moät trong 4 ñieàu kieän caàn cuûa deadlock 1. Ngaên mutual exclusion – ñoái vôùi nonsharable resource (vd: printer): khoâng laøm ñöôïc – ñoái vôùi sharable resource (vd: read-only file): khoâng caàn thieát Khoa KTMT 16

Ngaên deadlock (tt) 2. Ngaên Hold and Wait – Caùch 1: moãi process yeâu Ngaên deadlock (tt) 2. Ngaên Hold and Wait – Caùch 1: moãi process yeâu caàu toaøn boä taøi nguyeân caàn thieát moät laàn. Neáu coù ñuû taøi nguyeân thì heä thoáng seõ caáp phaùt, neáu khoâng ñuû taøi nguyeân thì process phaûi bò blocked. – Caùch 2: khi yeâu caàu taøi nguyeân, process khoâng ñöôïc giöõ baát kyø taøi nguyeân naøo. Neáu ñang coù thì phaûi traû laïi tröôùc khi yeâu caàu. – Ví duï ñeå so saùnh hai caùch treân: moät quaù trình copy döõ lieäu töø tape drive sang disk file, saép xeáp disk file, roài in keát quaû ra printer. – Khuyeát ñieåm cuûa caùch treân: § Hieäu suaát söû duïng taøi nguyeân (resource utilization) thaáp § Quaù trình coù theå bò starvation Khoa KTMT 17

Ngaên deadlock (tt) 3. Ngaên No Preemption: neáu process A coù giöõ taøi nguyeân Ngaên deadlock (tt) 3. Ngaên No Preemption: neáu process A coù giöõ taøi nguyeân vaø ñang yeâu caàu taøi nguyeân khaùc nhöng taøi nguyeân naøy chöa caáp phaùt ngay ñöôïc thì – Caùch 1: Heä thoáng laáy laïi moïi taøi nguyeân maø A ñang giöõ § A chæ baét ñaàu laïi ñöôïc khi coù ñöôïc caùc taøi nguyeân ñaõ bò laáy laïi cuøng vôùi taøi nguyeân ñang yeâu caàu – Caùch 2: Heä thoáng seõ xem taøi nguyeân maø A yeâu caàu § Neáu taøi nguyeân ñöôïc giöõ bôûi moät process khaùc ñang ñôïi theâm taøi nguyeân, taøi nguyeân naøy ñöôïc heä thoáng laáy laïi vaø caáp phaùt cho A. § Neáu taøi nguyeân ñöôïc giöõ bôûi process khoâng ñôïi taøi nguyeân, A phaûi ñôïi vaø taøi nguyeân cuûa A bò laáy laïi. Tuy nhieân heä thoáng chæ laáy laïi caùc taøi nguyeân maø process khaùc yeâu caàu Khoa KTMT 18

Ngaên deadlock (tt) 4. Ngaên Circular Wait: taäp caùc loaïi taøi nguyeân trong heä Ngaên deadlock (tt) 4. Ngaên Circular Wait: taäp caùc loaïi taøi nguyeân trong heä thoáng ñöôïc gaùn moät thöù töï hoaøn toaøn. – Ví duï: F(tape drive) = 1, F(disk drive) = 5, F(printer) = 12 § F laø haøm ñònh nghóa thöù töï treân taäp caùc loaïi taøi nguyeân. Khoa KTMT 19

Ngaên deadlock (tt) 4. Ngaên Circular Wait (tt) – Caùch 1: moãi process chæ Ngaên deadlock (tt) 4. Ngaên Circular Wait (tt) – Caùch 1: moãi process chæ coù theå yeâu caàu thöïc theå cuûa moät loaïi taøi nguyeân theo thöù töï taêng daàn (ñònh nghóa bôûi haøm F) cuûa loaïi taøi nguyeân. Ví duï § Chuoãi yeâu caàu thöïc theå hôïp leä: tape drive disk drive printer § Chuoãi yeâu caàu thöïc theå khoâng hôïp leä: disk drive tape drive – Caùch 2: Khi moät process yeâu caàu moät thöïc theå cuûa loaïi taøi R F(R nguyeân Rj thì noù phaûi traû laïi caùc taøi nguyeân Ri vôùi 1 i) > F(Rj). – • “Chöùng minh” cho caùch 1: phaûn chöùng § F(R 4) < F(R 1) R 4 § F(R 1) < F(R 2) § F(R 2) < F(R 3) § F(R 3) < F(R 4) Vaäy F(R 4) < F(R 4), maâu thuaån! Khoa KTMT P 2 P 1 R 2 R 3 P 4 P 3 20

Deadlock avoidance q Deadlock prevention söû duïng taøi nguyeân khoâng hieäu quaû. q Deadlock Deadlock avoidance q Deadlock prevention söû duïng taøi nguyeân khoâng hieäu quaû. q Deadlock avoidance vaãn ñaûm baûo hieäu suaát söû duïng taøi nguyeân toái ña ñeán möùc coù theå. q Yeâu caàu moãi process khai baùo soá löôïng taøi nguyeân toái ña caàn ñeå thöïc hieän coâng vieäc q Giaûi thuaät deadlock-avoidance seõ kieåm traïng thaùi caáp phaùt taøi nguyeân (resource-allocation state) ñeå baûo ñaûm heä thoáng khoâng rôi vaøo deadlock. Traïng thaùi caáp phaùt taøi nguyeân ñöôïc ñònh nghóa döïa treân soá taøi nguyeân coøn laïi, soá taøi nguyeân ñaõ ñöôïc caáp phaùt vaø yeâu caàu toái ña cuûa caùc process. • Khoa KTMT 21

Traïng thaùi safe vaø unsafe q Moät traïng thaùi cuûa heä thoáng ñöôïc goïi Traïng thaùi safe vaø unsafe q Moät traïng thaùi cuûa heä thoáng ñöôïc goïi laø an toaøn (safe) neáu toàn taïi moät chuoãi an toaøn (safe sequence). Khoa KTMT 22

Chuoãi an toaøn q Moät chuoãi quaù trình <P 1, P 2, …, Pn Chuoãi an toaøn q Moät chuoãi quaù trình

laø moät chuoãi an toaøn neáu – Vôùi moïi i = 1, …, n, yeâu caàu toái ña veà taøi nguyeân cuûa Pi coù theå ñöôïc thoûa bôûi § taøi nguyeân maø heä thoáng ñang coù saün saøng (available) § cuøng vôùi taøi nguyeân maø taát caû Pj , j < i, ñang giöõ. q Moät traïng thaùi cuûa heä thoáng ñöôïc goïi laø khoâng an toaøn (unsafe) neáu khoâng toàn taïi moät chuoãi an toaøn. Khoa KTMT 23

Chuoãi an toaøn (tt) Ví duï: Heä thoáng coù 12 tape drives vaø 3 Chuoãi an toaøn (tt) Ví duï: Heä thoáng coù 12 tape drives vaø 3 quaù trình P 0, P 1, P 2 q Taïi thôøi ñieåm t 0 caàn toái ña ñang giöõ P 0 10 5 P 1 4 2 P 2 9 2 – Coøn 3 tape drive saün saøng. – Chuoãi

laø chuoãi an toaøn heä thoáng laø an toaøn Khoa KTMT 24

Chuoãi an toaøn (tt) q Giaû söû taïi thôøi ñieåm t 1, P 2 Chuoãi an toaøn (tt) q Giaû söû taïi thôøi ñieåm t 1, P 2 yeâu caàu vaø ñöôïc caáp phaùt 1 tape drive – coøn 2 tape drive saün saøng caàn toái ña ñang giöõ P 0 5 P 1 4 2 P 2 • 10 9 3 Heä thoáng trôû neân khoâng an toaøn. Khoa KTMT 25

Chuoãi an toaøn (tt) q Khi moät process yeâu caàu moät taøi nguyeân ñang Chuoãi an toaøn (tt) q Khi moät process yeâu caàu moät taøi nguyeân ñang saün saøng, heä thoáng seõ kieåm tra: neáu vieäc caáp phaùt naøy khoâng daãn ñeán tình traïng unsafe thì seõ caáp phaùt ngay. Khoa KTMT 26

Traïng thaùi safe/unsafe vaø deadlock q q q Neáu heä thoáng ñang ôû traïng Traïng thaùi safe/unsafe vaø deadlock q q q Neáu heä thoáng ñang ôû traïng thaùi safe khoâng deadlock. Neáu heä thoáng ñang ôû traïng thaùi unsafe coù theå daãn ñeán deadlock. Traùnh deadlock baèng caùch baûo ñaûm heä thoáng khoâng ñi ñeán traïng thaùi unsafe. deadlock unsafe Khoa KTMT 27

Giaûi thuaät banker q AÙp duïng cho heä thoáng caáp phaùt taøi nguyeân trong Giaûi thuaät banker q AÙp duïng cho heä thoáng caáp phaùt taøi nguyeân trong ñoù moãi loaïi taøi nguyeân coù theå coù nhieàu instance. q Baét chöôùc nghieäp vuï ngaân haøng (banking) q Ñieàu kieän – Moãi process phaûi khai baùo soá löôïng thöïc theå (instance) toái ña cuûa moãi loaïi taøi nguyeân maø noù caàn – Khi process yeâu caàu taøi nguyeân thì coù theå phaûi ñôïi maëc duø taøi nguyeân ñöôïc yeâu caàu ñang coù saün – Khi process ñaõ coù ñöôïc ñaày ñuû taøi nguyeân thì phaûi hoaøn traû trong moät khoaûng thôøi gian höõu haïn naøo ñoù. Khoa KTMT 28

Giaûi thuaät banker (tt) n: soá process, m: soá loaïi taøi nguyeân Caùc caáu Giaûi thuaät banker (tt) n: soá process, m: soá loaïi taøi nguyeân Caùc caáu truùc döõ lieäu Available: vector ñoä daøi m Available[ j ] = k loaïi taøi nguyeân Rj coù k instance saün saøng Max: ma traän n m Max[ i, j ] = k quaù trình Pi yeâu caàu toái ña k instance cuûa loaïi taøi nguyeân Rj Allocation: ma traän n m Allocation[i, j] = k Pi ñaõ ñöôïc caáp phaùt k instance cuûa Rj Need: ma traän n m Need[i, j] = k Pi caàn theâm k instance cuûa Rj Nhaän xeùt: Need[i, j] = Max[i, j] – Allocation[i, j] Kyù hieäu Y X Y[i] X[i], ví duï (0, 3, 2, 1) (1, 7, 3, 2) Khoa KTMT 29

Giaûi thuaät kieåm traïng thaùi an toaøn Tìm moät chuoãi an toaøn 1. Goïi Giaûi thuaät kieåm traïng thaùi an toaøn Tìm moät chuoãi an toaøn 1. Goïi Work vaø Finish laø hai vector ñoä daøi laø m vaø n. Khôûi taïo Work : = Available Finish[ i ] : = false, i = 1, …, n 2. Tìm i thoûa (a) Finish[ i ] = false (b) Needi Work (haøng thöù i cuûa Need) Neáu khoâng toàn taïi i nhö vaäy, ñeán böôùc 4. 3. Work : = Work + Allocationi Finish[ i ] : = true quay veà böôùc 2. 4. Neáu Finish[ i ] = true, i = 1, …, n, thì heä thoáng ñang ôû traïng thaùi safe Thôøi gian chaïy cuûa giaûi thuaät laø O(m·n 2) Khoa KTMT 30

Giaûi thuaät caáp phaùt taøi nguyeân Goïi Requesti laø request vector cuûa process Pi. Giaûi thuaät caáp phaùt taøi nguyeân Goïi Requesti laø request vector cuûa process Pi. Requesti [ j ] = k Pi caàn k instance cuûa taøi nguyeân Rj. 1. Neáu Requesti Needi thì ñeán böôùc 2. Neáu khoâng, baùo loãi vì process ñaõ vöôït yeâu caàu toái ña. 2. Neáu Requesti Available thì qua böôùc 3. Neáu khoâng, Pi phaûi chôø vì taøi nguyeân khoâng coøn ñuû ñeå caáp phaùt. Khoa KTMT 31

Giaûi thuaät caáp phaùt taøi nguyeân (tt) 3. Giaû ñònh caáp phaùt taøi nguyeân Giaûi thuaät caáp phaùt taøi nguyeân (tt) 3. Giaû ñònh caáp phaùt taøi nguyeân ñaùp öùng yeâu caàu cuûa Pi baèng caùch caäp nhaät traïng thaùi heä thoáng nhö sau: Available : = Available – Requesti Allocationi : = Allocationi + Requesti Needi : = Needi – Requesti AÙp duïng giaûi thuaät kieåm traïng thaùi an toaøn leân traïng thaùi treân § Neáu traïng thaùi laø safe thì taøi nguyeân ñöôïc caáp thöïc söï cho Pi. § Neáu traïng thaùi laø unsafe thì Pi phaûi ñôïi, vaø • phuïc hoài traïng thaùi: Available : = Available + Requesti Allocationi : = Allocationi – Requesti Needi : = Needi + Requesti Khoa KTMT 32

Giaûi thuaät kieåm traïng thaùi an toaøn – Ví duï q Coù 5 process Giaûi thuaät kieåm traïng thaùi an toaøn – Ví duï q Coù 5 process P 0 , …, P 4 q Coù 3 loaïi taøi nguyeân: A (coù 10 instance), B (5 instance) vaø C (7 instance). q Sô ñoà caáp phaùt trong heä thoáng taïi thôøi ñieåm T 0 Allocation Max Available Need A B C P 0 0 1 0 7 5 3 3 3 2 7 4 3 P 1 2 0 0 3 2 2 1 2 2 P 2 3 0 2 9 0 2 6 0 0 P 3 2 1 1 2 2 2 0 1 1 P 4 0 0 2 4 3 3 4 3 1 Khoa KTMT 33

GT kieåm traïng thaùi an toaøn – Vd (tt) Chuoãi an toaøn <P 1, GT kieåm traïng thaùi an toaøn – Vd (tt) Chuoãi an toaøn

Allocation Need Work ABC A B C P 0 010 743 3 3 2 P 1 200 122 P 2 302 600 P 3 211 011 P 4 002 431 5 3 2 7 4 3 7 4 5 10 4 7 Khoa KTMT 10 5 7 34

GT caáp phaùt taøi nguyeân – Ví duï q Yeâu caàu (1, 0, 2) GT caáp phaùt taøi nguyeân – Ví duï q Yeâu caàu (1, 0, 2) cuûa P 1 coù thoûa ñöôïc khoâng? – Kieåm tra ñieàu kieän Request 1 Available: § (1, 0, 2) (3, 3, 2) laø ñuùng – Giaû ñònh thoûa yeâu caàu, kieåm traïng thaùi môùi coù phaûi laø safe hay khoâng. Allocation Need Available A B C P 0 0 1 0 7 4 3 2 3 0 P 1 3 0 2 0 P 2 3 0 2 6 0 0 P 3 2 1 1 0 1 1 P 4 0 0 2 4 3 1 – Traïng thaùi môùi laø safe (chuoãi an toaøn laø

), vaäy coù theå caáp phaùt taøi nguyeân cho P 1. Khoa KTMT 35

GT caáp phaùt taøi nguyeân – Ví duï (tt) q P 4 yeâu caàu GT caáp phaùt taøi nguyeân – Ví duï (tt) q P 4 yeâu caàu (3, 3, 0) hoaëc P 0 yeâu caàu (0, 2, 0) thì coù thoûa maõn ñöôïc hay khoâng? Khoa KTMT 36

Phaùt hieän deadlock q Chaáp nhaän xaûy ra deadlock trong heä thoáng, kieåm traïng Phaùt hieän deadlock q Chaáp nhaän xaûy ra deadlock trong heä thoáng, kieåm traïng thaùi heä thoáng baèng giaûi thuaät phaùt hieän deadlock. q Neáu coù deadlock thì tieán haønh phuïc hoài heä thoáng q Caùc giaûi thuaät phaùt hieän deadlock thöôøng söû duïng moâ hình RAG. q Heä thoáng caáp phaùt taøi nguyeân ñöôïc khaûo saùt trong moãi tröôøng hôïp sau 1. Moãi loaïi taøi nguyeân chæ coù moät thöïc theå (instance) 2. Moãi loaïi taøi nguyeân coù theå coù nhieàu thöïc theå Khoa KTMT 37

Moãi loaïi taøi nguyeân chæ coù moät thöïc theå q Söû duïng wait-for graph Moãi loaïi taøi nguyeân chæ coù moät thöïc theå q Söû duïng wait-for graph – Wait-for graph ñöôïc daãn xuaát töø RAG baèng caùch boû caùc node bieåu dieãn taøi nguyeân vaø gheùp caùc caïnh töông öùng. § Coù caïnh töø Pi ñeán Pj Pi ñang chôø taøi nguyeân töø Pj P 5 R 1 P 5 R 4 P 1 P 2 P 3 R 2 q R 3 P 4 R 5 P 1 P 2 P 3 P 4 Moät giaûi thuaät kieåm tra coù toàn taïi chu trình trong wait-for graph hay khoâng seõ ñöôïc goïi ñònh kyø. Giaûi thuaät phaùt hieän chu trình coù thôøi gian chaïy laø O(n 2), vôùi n laø soá ñænh cuûa graph. Khoa KTMT 38

Moãi loaïi taøi nguyeân coù nhieàu thöïc theå q Phöông phaùp duøng wait-for graph Moãi loaïi taøi nguyeân coù nhieàu thöïc theå q Phöông phaùp duøng wait-for graph khoâng aùp duïng ñöôïc cho tröôøng hôïp moãi loaïi taøi nguyeân coù nhieàu instance. q Caùc caáu truùc döõ lieäu duøng trong giaûi thuaät phaùt hieän deadlock • Available: vector ñoä daøi m • soá instance saün saøng cuûa moãi loaïi taøi nguyeân • Allocation: ma traän n m • soá instance cuûa moãi loaïi taøi nguyeân ñaõ caáp phaùt cho moãi process • Request: ma traän n m • yeâu caàu hieän taïi cuûa moãi process. • Request [i, j ] = k Pi ñang yeâu caàu theâm k instance cuûa Rj Khoa KTMT 39

Giaûi thuaät phaùt hieän deadlock 1. Goïi Work vaø Finish laø vector kích thöôùc Giaûi thuaät phaùt hieän deadlock 1. Goïi Work vaø Finish laø vector kích thöôùc m vaø n. Khôûi taïo: Work : = Available i = 1, 2, …, n, neáu Allocationi 0 thì Finish[ i ] : = false coøn khoâng thì Finish[ i ] : = true 2. Tìm i thoûa maõn: Finish[ i ] : = false vaø Requesti • thôøi gian chaïy cuûa giaûi thuaät Work Neáu khoâng toàn taïi i nhö theá, ñeán böôùc 4. O(m·n 2) 3. Work : = Work + Allocationi Finish[ i ] : = true quay veà böôùc 2. 4. Neáu Finish[ i ] = false, vôùi moät i = 1, …, n, thì heä thoáng ñang ôû traïng thaùi deadlock. Hôn theá nöõa, Finish[ i ] = false thì Pi bò deadlocked. Khoa KTMT 40

Giaûi thuaät phaùt hieän deadlock – Ví duï q • Heä thoáng coù 5 Giaûi thuaät phaùt hieän deadlock – Ví duï q • Heä thoáng coù 5 quaù trình P 0 , …, P 4 3 loaïi taøi nguyeân: A (7 instance), B (2 instance), C (6 instance). Allocation Request Available A B C P 0 0 1 0 0 0 0 P 1 2 0 0 2 P 2 3 0 0 0 P 3 2 1 1 1 0 0 P 4 0 0 2 Chaïy giaûi thuaät, tìm ñöôïc chuoãi

vôùi Finish[ i ] = true, i = 1, …, n, vaäy heä thoáng khoâng bò deadlocked. Khoa KTMT 41

Giaûi thuaät phaùt hieän deadlock – Ví duï (tt) q P 2 yeâu caàu Giaûi thuaät phaùt hieän deadlock – Ví duï (tt) q P 2 yeâu caàu theâm moät instance cuûa C. Ma traän Request nhö sau: P 0 P 1 P 2 P 3 P 4 Request A B C 0 0 0 2 0 0 1 1 0 0 2 – Traïng thaùi cuûa heä thoáng laø gì? § Coù theå thu hoài taøi nguyeân ñang sôû höõu bôûi process P 0 nhöng vaãn khoâng ñuû ñaùp öùng yeâu caàu cuûa caùc process khaùc. • Vaäy toàn taïi deadlock, bao goàm caùc process P 1, P 2, P 3, vaø P 4. Khoa KTMT 42

Deadlock Recovery q Khi deadlock xaûy ra, ñeå phuïc hoài – baùo ngöôøi vaän Deadlock Recovery q Khi deadlock xaûy ra, ñeå phuïc hoài – baùo ngöôøi vaän haønh (operator) hoaëc – heä thoáng töï ñoäng phuïc hoài baèng caùch beû gaõy chu trình deadlock: § chaám döùt moät hay nhieàu quaù trình § laáy laïi taøi nguyeân töø moät hay nhieàu quaù trình Khoa KTMT 43

Deadlock Recovery: Chaám döùt quaù trình q Phuïc hoài heä thoáng bò deadlock baèng Deadlock Recovery: Chaám döùt quaù trình q Phuïc hoài heä thoáng bò deadlock baèng caùch chaám döùt quaù trình – Chaám döùt taát caû process bò deadlocked, hoaëc – Chaám döùt laàn löôït töøng process cho ñeán khi khoâng coøn deadlock § Söû duïng giaûi thuaät phaùt hieän deadlock ñeå xaùc ñònh coøn deadlock hay khoâng q Döïa treân yeáu toá naøo ñeå choïn process caàn ñöôïc chaám döùt? – – – Ñoä öu tieân cuûa process Thôøi gian ñaõ thöïc thi cuûa process vaø thôøi gian coøn laïi Loaïi taøi nguyeân maø process ñaõ söû duïng Taøi nguyeân maø process caàn theâm ñeå hoaøn taát coâng vieäc Soá löôïng process caàn ñöôïc chaám döùt Process laø interactive process hay batch process Khoa KTMT 44

Deadlock recovery: Laáy laïi taøi nguyeân q Laáy laïi taøi nguyeân töø moät process, Deadlock recovery: Laáy laïi taøi nguyeân q Laáy laïi taøi nguyeân töø moät process, caáp phaùt cho process khaùc cho ñeán khi khoâng coøn deadlock nöõa. q Caùc vaán ñeà trong chieán löôïc thu hoài taøi nguyeân: – Choïn “naïn nhaân” ñeå toái thieåu chi phí (coù theå döïa treân soá taøi nguyeân sôû höõu, thôøi gian CPU ñaõ tieâu toán, . . . ) – Rollback: rollback process bò laáy laïi taøi nguyeân trôû veà traïng thaùi safe, tieáp tuïc process töø traïng thaùi ñoù. Heä thoáng caàn löu giöõ moät soá thoâng tin veà traïng thaùi caùc process ñang thöïc thi. – Starvation: ñeå traùnh starvation, phaûi baûo ñaûm khoâng coù process seõ luoân bò laáy laïi taøi nguyeân moãi khi deadlock xaûy ra. Khoa KTMT 45

Phöông phaùp keát hôïp ñeå giaûi quyeát Deadlock q Keát hôïp 3 phöông phaùp Phöông phaùp keát hôïp ñeå giaûi quyeát Deadlock q Keát hôïp 3 phöông phaùp cô baûn § Ngaên chaën (Prevention) § Traùnh (Avoidance) § Phaùt hieän (Detection) Cho pheùp söû duïng caùch giaûi quyeát toái öu cho moãi lôùp taøi nguyeân trong heä thoáng. q Phaân chia taøi nguyeân thaønh caùc lôùp theo thöù baäc. – Söû duïng kyõ thuaät thích hôïp nhaát cho vieäc quaûn lyù deadlock trong moãi lôùp naøy. Khoa KTMT 46