500 likes | 805 Views
Chapter 5: DEADLOCK. Chương 5 : DEADLOCK. Nội dung: Ñònh nghóa deadlock Ñieàu kieän ñeå coù deadlock Caùc phöông phaùp giaûi quyeát Ngaên ngöøa deadlock Traùnh deadlock Phaùt hieän deadlock Phuïc hoài deadlock Baøi taäp. P1. 10KB. 8KB. P2. 8KB. spooler. 4KB. 3KB. P3. 7KB.
E N D
Chương 5 : DEADLOCK Nội dung: • Ñònh nghóa deadlock • Ñieàu kieän ñeå coù deadlock • Caùc phöông phaùp giaûi quyeát • Ngaên ngöøa deadlock • Traùnh deadlock • Phaùt hieän deadlock • Phuïc hoài deadlock • Baøi taäp
P1 10KB 8KB P2 8KB spooler 4KB 3KB P3 7KB printer 15KB buffer • Ví duï Taéc ngheõn trong giao thoâng Taéc ngheõn trong quaûn lyù in aán
BAØI TOAÙN VEÀ 5 TRIEÁT GIA AÊN TOÁI Naêm nhaø trieát hoïc cuøng ngoài aên toái vôùi moùn spaghetti noåi tieáng.Moãi nhaø trieát hoïc duøng 2 caùi nóa ñeå coù theå aên spaghetti. Nhöng treân baøn chæ coù toång coäng 5 caùi nóa ñeå xen keõ vôùi 5 caùi ñóa. Neáu 5 nhaø trieát hoïc ñeàu caàm 5 caùi nóa beân traùi cuøng luùc, thì seõ khoâng coù ai coù caùi nóa beân phaûi ñeå coù theå baét ñaàu thöôûng thöùc spaghetti.
ÑÒNH NGHÓA • Moãi tieán trình trong taäp hôïp ñeàu chôø ñôïi moät söï kieän maø chæ coù moät tieán trình khaùc trong taäp hôïp môùi coù theå phaùt sinh. • Hay : Moãi tieán trình trong taäp hôïp ñeàu chôø ñöôïc caáp phaùt taøi nguyeân hieän ñang bò moät quaù trình khaùc cuõng ôû traïng thaùi blocked chieám giöõ. • Moät heä thoáng bò deadlock : coù tieán trình bò deadlock.
Process1 Process2 R1 R2 VÍ DUÏ & BAÛN CHAÁT DEADLOCK Daïng deadlock: Hai tieán trình bò deadlock:
DEADLOCK VAØ TRÌ HOAÕN VOÂ HAÏN ÑÒNH • Deadlock • Ñôïi söï kieän khoâng bao giôø xaûy ra • Nguyeân nhaân ? • Trì hoaõn voâ haïn ñònh (Indefinite postponement) • Ñôïi söï kieän coù theå xaûy ra nhöng khoâng xaùc ñònh thôøi ñieåm • Bieåu hieän nhö deadlock • Nguyeân nhaân ? • Deadlock coù khaùc voøng laëp voâ haïn ?
ÑIEÀU KIEÄN XAÛY RA DEADLOCK • Coù söû duïng taøi nguyeân khoâng theå chia seû (mutual exclusion) • Söï chieám giöõ vaø yeâu caàu theâm taøi nguyeân (wait for ) • Khoâng thu hoài taøi nguyeân töø tieán trình ñang giöõ chuùng (no-preemption) • Toàn taïi moät chu trình trong ñoà thò caáp phaùt taøi nguyeân (circular-wait)
ÑOÀ THÒ CAÁP PHAÙT TAØI NGUYEÂN(Resource Allocation Graph) Pi • Process: • Loaïi taøi nguyeân vôùi 4 thöïc theå: • Pi yeâu caàu moät thöïc theå cuûa Rj : • Pi ñang giöõ moät thöïc theå cuûa Rj : Rj Rj Pi Rj Pi Kyù hieäu
Ví duï veà RAG R3 R1 P1 P3 P2 R2 R4
Ví duï veà RAG (tt) R3 R1 P1 P3 P2 Deadlock xaûy ra! R2 R4
RAG vaø deadlock • Ví duï moät RAG chöùa chu trình nhöng khoâng xaûy ra deadlock: P4 coù theå traû laïi instance cuûa R2. P2 R1 P1 P3 R2 P4
RAG vaø deadlock (tt) • 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
n R1 P1 R2 P2 ÑOÀ THÒ CAÁP PHAÙT TAØI NGUYEÂN(Resource Allocation Graph) P1 yeâu caàu n taøi nguyeân loaïi R1 Tieán trình • Coù theå söû duïng moät ñoà thò ñeå moâ hình hoaù vieäc caáp phaùt taøi nguyeân. Taøi nguyeân P2 ñang giöõ 1 taøi nguyeân loaïi R2 Taøi nguyeân R1 P1 P2 Moät tình huoáng taéc ngheõn R2
CAÙC PHÖÔNG PHAÙP XÖÛ LYÙ DEADLOK Coù ba höôùng tieáp caän ñeå xöû lyù taéc ngheõn • Söû duïng phöông thöùc (protocol) ñeå baûo ñaûm raèng heä thoáng khoâng bao giôø xaûy ra taéc ngheõn. • Cho pheùp xaûy ra taéc ngheõn vaø tìm caùch söûa chöõa taéc ngheõn. • Hoaøn toaøn boû qua vieäc xöû lyù taéc ngheõn, xem nhö heä thoáng khoâng bao giôø xaûy ra taéc ngheõn.
GIAÛI QUYEÁT DEADLOCK • Ngaên ngöøa deadlock(deadlock prevention) • Qui ñònh caáp, duøng taøi nguyeân nghieâm ngaët • Khoâng cho caùc ñieàu kieän deadlock xaûy ra • Traùnh deadlock(deadlock avoidance) • Vaãn cho caùc ñieàu kieän deadlock toàn taïi • Caáp taøi nguyeân hôïp lyù, an toaøn • Phaùt hieän deadlock(deadlock detection) • Phuïc hoài deadlock(deadlock recovery)
NGAÊN NGÖØA DEADLOCK • Caám ñieàu kieän taøi nguyeân khoâng theå chia seû (multual-exclusion ) • Caám ñieàu kieän Söï chieám giöõ vaø yeâu caàu theâm taøi nguyeân (hold & wait) • Tieán trình yeâu caàu taát caû taøi nguyeân moät laàn • Chæ ñöôïc xöû lyù khi ñaõ ñuû taát caû taøi nguyeân caàn thieát
NGAÊN NGÖØA DEADLOCK • Caám ñieàu kieän khoâng thu hoài taøi nguyeân (no-preemption) • Neáu yeâu caàu taøi nguyeân khoâng ñöôïc, tieán trình phaûi giaûi phoùng taát caû taøi nguyeân ñang giöõ vaø yeâu caàu laïi. (?) • Loaïi boû moät chu kyø (circular-wait) • Saép xeáp taøi nguyeân theo traät töï vaø chung caáp cho tieán trình theo ñuùng traät töï ñoù.
P3 P1 R1 R2 R3 R4 R5 R6 R7 P2 NGAÊN NGÖØA DEADLOCK (Havender) • Ví duï • Nhaän xeùt veà p/p ngaên ngöøa deadlock
TRAÙNH DEADLOCK Moät soá khaùi nieäm cô sôû • Traïng thaùi an toaøn. • Moät chuoãi caáp phaùt an toaøn. • Chieán löôïc caáp phaùt. • Giaûi thuaät xaùc ñònh traïng thaùi an toaøn. • Giaûi thuaät yeâu caàu taøi nguyeân.
Traïng thaùi safe vaø unsafe • 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).
Chuoãi an toaøn • Moät chuoãi quaù trình <P1, P2,…, Pn> 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öõ. • 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.
Chuoãi an toaøn (tt) Ví duï: Heä thoáng coù 12 tape drives vaø 3 quaù trình P0, P1, P2 • Taïi thôøi ñieåm t0 • Coøn 3 tape drive saün saøng. • Chuoãi <P1, P0, P2> laø chuoãi an toaøn heä thoáng laø an toaøn caàn toái ña ñang giöõ
Chuoãi an toaøn (tt) • Giaû söû taïi thôøi ñieåm t1, P2 yeâu caàu vaø ñöôïc caáp phaùt 1 tape drive • coøn 2 tape drive saün saøng • Heä thoáng trôû neân khoâng an toaøn. caàn toái ña ñang giöõ
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.
deadlock unsafe safe Traïng thaùi safe/unsafe vaø deadlock • 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.
TRAÙNH DEADLOCKGiaûi thuaät banker • 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. • Baét chöôùc nghieäp vuï ngaân haøng (banking)
TRAÙNH DEADLOCK • Giaûi thuaät nhaø baêng (Banker’s Algorithm) • Heä ñieàu haønh = nhaø Baêng • Tieán trình = khaùch haøng • Taøi nguyeân = voán vay • Raøng buoäc • Yeâu caàu vay cöïc ñaïi voán nhaø baêng • Khaùch khoâng traû voán neáu vay chöa ñuû yeâu caàu cöïc ñaïi • Khi vay ñuû, khaùch phaûi traû ñuû voán sau thôøi gian höõu haïn
TRAÙNH DEADLOCK • Traïng thaùi nhaø baêng • An toaøn (Safe): thoûa yeâu caàu moïi khaùch, ngaân haøng thu voán ñuû • Khoâng an toaøn ( Unsafe) : ngöôïc laïi coù theå deadlock • Heä thoáng phaûi caáp phaùt taøi nguyeân sao cho khoâng rôi vaøo traïng thaùi Unsafe
VÍ DUÏ • Traïng thaùi sau laø an toaøn. Taïi sao ?
VÍ DUÏ • Traïng thaùi sau laø khoâng an toaøn. Taïi sao ?
Giaûi thuaät kieåm tra traïng thaùi an toaøn – Ví duï • Coù 5 process P0 ,…, P4 • Coù 3 loaïi taøi nguyeân: A (coù 10 instance), B (5 instance) vaø C (7 instance). • Sô ñoà caáp phaùt trong heä thoáng taïi thôøi ñieåm T0
GT kieåm tra traïng thaùi an toaøn – Vd (tt) Chuoãi an toaøn <P1, P3, P4, P2, P0> AllocationNeedWork A B C A B C A B C P0 0 1 0 7 4 3 3 3 2 P1 2 0 0 1 2 2 P2 3 0 2 6 0 0 P3 2 1 1 0 1 1 P4 0 0 2 4 3 1 5 3 2 7 4 3 7 4 5 10 5 7 10 4 7
GT caáp phaùt taøi nguyeân – Ví duï • Yeâu caàu (1, 0, 2) cuûa P1 coù thoûa ñöôïc khoâng? • Kieåm tra ñieàu kieän Request1 Available: • (1, 0, 2) (3, 3, 2) laø ñuùng • Giaû ñònh thoûa yeâu caàu, kieåm tra traïng thaùi môùi coù phaûi laø safe hay khoâng. • Traïng thaùi môùi laø safe (chuoãi an toaøn laø <P1, P3, P4, P0, P2>), vaäy coù theå caáp phaùt taøi nguyeân cho P1.
GT caáp phaùt taøi nguyeân – Ví duï (tt) • P4 yeâu caàu (3, 3, 0) hoaëc P0 yeâu caàu (0, 2, 0) thì coù thoûa maõn ñöôïc hay khoâng?
n R1 P1 R2 P2 PHAÙT HIEÄN DEADLOCK • Ghi nhaän, theo doõi yeâu caàu, söï caáp phaùt taøi nguyeân cho caùc quaù trình. • Duøng ñoà thò caáp phaùt taøi nguyeân. P1 yeâu caàu n taøi nguyeân loaïi R1 Tieán trình Taøi nguyeân P2 ñang giöõ 1 taøi nguyeân loaïi R2 Taøi nguyeân
PHAÙT HIEÄN DEADLOCK • Giaûn löôïc ñoà thò caáp phaùt 1. Taøi nguyeân raûnh caáp cho quaù trình yeâu caàu 2. Quaù trình ñuû taøi nguyeân xoaù moïi caïnh vaøo, xoaù quaù qtrình 3. Laëp laïi 1 vôùi caùc quaù trình khaùc ñeán khi toái giaûn • Khi giaûi thuaät döøng • Ñoà thò caáp phaùt khoâng coøn caïnh: khoâng coù deadlock • Ñoà thò caáp phaùt coù chu trình (cycle): deadlock • Nhaän xeùt • Phí toån lôùn
P2 P3 R3 P2 P3 R3 R1 R1 P4 P4 P1 R2 P1 R2 P2 P3 R3 P2 P3 R3 R1 R1 P4 P4 P1 R2 P1 R2 VÍ DUÏ 1 : GIAÛN ÖÔÙC
P2 P1 R5 R6 P4 R2 P3 BAØI TAÄP : GIAÛN ÖÔÙC R1 R3
PHUÏC HOÀÀI DEADLOCK • Ñình chæ hoaït ñoäng cuûa caùc quaù trình lieân quan. • Thu hoài taøi nguyeân. • Khoù coù theå giaûi quyeát troïn veïn
BAØI TAÄP Tìm traïng thaùi cuûa heä thoáng sau
Chuoãi caáp phaùt an toaøn : <P2,P1,P3,P4>
Tìm traïng thaùi cuûa heä thoáng sau Neáu quaù trình P2 thay baèng yeâu caàu (0,4,2) thì heä thoáng caáp phaùt töùc thôøi cho noù khoâng ?