ìë¡
í ì€ë ëê° ììì ìì²íì ë, ê·ž ìê°ì ê·ž ììì ìŽì©í ì ìë ì¬í©ìŽ ë°ìí ì ìê³ , ê·žëë ì€ë ëê° ëêž° ìíë¡ ë€ìŽê°ëë€. ìŽì²ëŒ ëêž° ì€ìž ì€ë ëë€ìŽ(ê·žë€ìŽ ìì²í ììë€ìŽ ë€ë¥ž ì€ë ëë€ì ìíŽì ì ì ëìŽ ìê³ ê·žë€ë ë€ ëêž° ìíì ìêž° ë묞ì) ê²°ìœ ë€ìë ê·ž ìí륌 ë³ê²œìí¬ ì ììŒë©Ž ìŽë° ìí©ì êµì°© ìíëŒ ë¶ëŠ ëë€.
ì ê²ìêžì ìì¬íë ì² íìë€ìŽ ì ë¶ ìŒìªœ ì ê°ëœì ì§ìì ëì 겜ì°ì "ë êž°ì°šê° êµì°šë¡ìì ìë¡ ì ê·Œí ëë, ë ë€ ìì í ì ì§íŽìŒ íë©° ìëë°©ìŽ ììŽì§ì§ ìë í ë구ë ë€ì ì¶ë°í ì ìë€."ëŒë ìì ê° êµì°©ìíì ì¢ì ììì ëë€.
ìŒë°ì ìŒë¡ êµì°© ìí륌 íŽê²°íë ë°©ë²ìë í¬ê² ìž ê°ì§ê° ììµëë€.
êµì°©ìí륌 íŽê²°íë ìž ê°ì§ ë°©ë² | ||
êµì°© ìí ìë°©(Prevention) ëë ííŒ(Avoidance) | êµì°© ìíê° ëì§ ìëë¡ í©ëë€. | |
êµì°© ìí íì§(Detection) ë° ë³µêµ¬(Recovery) | êµì°© ìíê° íì§ëë©Ž ìì€í ì 묞ì ê° ë°ìíì§ ìëë¡ ì¡°ì¹ë¥Œ ì·ší©ëë€. | |
êµì°©ìí 묎ì(Ignore) | êµì°© ìíê° ì ë§ ëë¬Œê² ë°ìíë 겜ì°(1ë
ì íë²) êµì°© ìí ìë°© ëë íì§ì êŽë šë ì§ìë ì€ë²í€ë ë° ì±ë¥ ì í륌 ë°ì ìí€ë ê²ë³Žë€ êµì°© ìíê° ë°ìíëë¡ íê³ íìì ë°ëŒ ì¬ë¶í
íë ê²ìŽ ë ëì ì ììµëë€. (Unix ë° window륌 í¬íší ëë¶ë¶ì ìŽì첎ì ê° ì¬ì©íë ë°©ë²) |
ìŽë² ê²ìêžììë ìëì ê°ìŽ êµì°©ìí ì방곌 ííŒë§ ë€ë€ 볌 ê²ìŽë©° 목찚ë ìëì ê°ìµëë€.
- êµì°© ìí륌 í¹ì§ì§ë 4ê°ì§ íì 조걎ì ì ìíë€.
- ìì í ë¹ ê·žëíìì êµì°© ìí ìí©ì ìë³íë€.
- êµì°© ìí ìë°©ì ìí 4ê°ì§ ë°©ë²ì íê°íë€.
- êµì°© ìí ííŒë¥Œ ìíŽ ìíì ìê³ ëŠ¬ìŠ(Banker's Algorithm)ì ì ì©íë€.
êµì°© ìí í¹ì±(_Deadlock Characterization)
(1) íì조걎ë€(_Necessary Conditions)
êµì°© ìíë í ìì€í ì ë€ì ë€ ê°ì§ ì¡°ê±ŽìŽ ëìì ì±ëŠœë ë ë°ìí ì ììµëë€. (ë°ìí ìë ìë€ë ê²ìŽì§ êŒ ë°ìíë ê²ì ìë)
êµì°©ìí íì조걎 | |||
1. ìížë°°ì (mutual exclusion) | ê³µì ììì ëíŽìë íë²ì í ì€ë ëë§ ê·ž ììì ì¬ì©í ì ìë€. ë€ë¥ž ì€ë ëê° ììì ìì²íë©Ž, ìì² ì€ë ëë ìììŽ ë°©ì¶ë ë ê¹ì§ ë°ëì êž°ë€ë €ìŒ íë€. | ||
2. ì ì í ìíë¡ ëêž°(hold-and-wait) | ì€ë ëë ìµìí íëì ììì ì ì í ì±, íì¬ ë€ë¥ž ì€ë ëì ìíŽ ì ì ë ììì ì¶ê°ë¡ ì»êž° ìíŽ ë°ëì ëêž°íŽìŒ íë€. | ||
3. ë¹ì ì (no preemption) | ììë€ì ì ì í ì ììŽìŒ íë€. ìŠ, ìììŽ ê°ì ì ìŒë¡ ë°©ì¶ë ìë ìê³ , ì ì íê³ ìë ì€ë ëê° íì€í¬ë¥Œ ì¢ ë£í í ê·ž ì€ë ëì ìíŽ ìë°ì ìŒë¡ë§ ë°©ì¶ë ì ìë€. | ||
4. ìí ëêž°(circular wait) | ëêž°íê³ ìë ì€ë ëì ì§í©[T0, T1, ..... Tn]ìì T0ë T1ìŽ ì ì í ììì ëêž°íê³ , T1ë T2ê° ì ì í ììì ëêž°íê³ , .... T(n-1)ì TnìŽ ì ì í ììì ëêž°íë©°, Tnì T0ê° ì ì í ììì ëêž°íë€. |
ì°ëŠ¬ë êµì°© ìíê° ë°ìíë €ë©Ž ì ë€ ê°ì§ ì¡°ê±ŽìŽ ì±ëŠœëìŽìŒ íšì êŒ êž°ìµíŽìŒ í©ëë€. ìí ëêž° 조걎ì ì ì íë©° ëêž° 조걎ì ììíë¯ë¡, ìë¡ í©ì³ë ë ê² ê°ì§ë§ ê° ì¡°ê±Žì ë³ê°ë¡ ê°ì£Œíë ê²ìŽ ì ì©íêž° ë묞ì ëë ì¡ìµëë€.
(2) ìì í ë¹ ê·žëí(_Resource-Allocation Graph)
êµì°© ìíë ìì€í ìì í ë¹ ê·žëíëŒê³ íë ë°©í¥ ê·žëíë¡ ëì± ì ííê² êž°ì í ì ììµëë€. ìŽ ê·žëíë ì ì (vertex) Vì ì§í©ê³Œ ê°ì (edge) Eì ì§í©ìŒë¡ 구ì±ë©ëë€. ì ì Vì ì§í©ì ìì€í ëŽì 몚ë íì± ì€ë ëì ì§í©ìž T = {T1, T2, .... Tn}곌 ìì€í ëŽì 몚ë ìì ì íì ì§í©ìž R = {R1, R2, ... Rm}ì ë ê°ì§ ì íìŒë¡ 구ë³ë©ëë€.
ì€ë ë Tië¡ë¶í° ìì ì í Rjë¡ì ë°©í¥ ê°ì (directed edge)ì Ti->Rjë¡ íííë©°, ìŽê²ì ì€ë ë Tiê° ìì ì í Rjì ìžì€íŽì€ë¥Œ íë ìì²íë ê²ìŒë¡ íì¬ ìŽ ììì êž°ë€ëŠ¬ë ìíì ëë€. ìì ì í Rjë¡ë¶í° ì€ë ë Tië¡ì ë°©í¥ ê°ì±ì Rj -> Tië¡ íííë©°, ìŽê²ì ìì ì í Rjì í ìžì€íŽì€ê° ì€ë ë Tiì í ë¹ë ê²ì ì믞í©ëë€. ë°©í¥ ê°ì Ti -> Rjë ìì² ê°ì (request edge)ìŽëŒ ë¶ë¥Žê³ , ë°©í¥ ê°ì Rj -> Tië í ë¹ ê°ì±(assignment edge)ìŽëŒ í©ëë€.
ëìì ìŒë¡, ì°ëŠ¬ë ê° ì€ë ë Ti륌 ììŒë¡ íííê³ , ê° ìì ì í Rjë ì¬ê°íìŒë¡ ííí©ëë€. ê°ëší ìë¡, ìë ìŽë¯žì§ì íìë ìì í ë¹ ê·žëíë êµì°©ìí ìí©ì ì ëíëŽê³ ììµëë€.
first_mutex ê¶íì ê°ì§ê³ ìë ì€ë ë1ìŽ second_mutex륌 êž°ë€ëŠ¬ëë° second_mutexë ì€ë ë2ê° ê°ì§ê³ ìê³ , ìŽ ì€ë ë2ë first_mutex륌 êž°ë€ëŠ¬ê³ ììŽì ììí ìë¡ í ë¹ë°ì ì ìë êµì°©ìí륌 볎ì¬ì€ëë€.
ìì ì í Rjê° í ê° ìŽìì ìžì€íŽì€ë¥Œ ê°ì§ ëë ê° ìžì€íŽì€ë¥Œ ì¬ê°í ëŽì íëì ì ìŒë¡ íìí©ëë€. í ë¹ ê°ì ì ëí ë°ëì ì¬ê°í ìì íëì ì ì ì§ì íŽìŒë§ íì§ë§, ìì² ê°ì ì ì¬ê°í Rjë§ì ê°ëŠ¬íšë€ë ê²ì ì ìíŽìŒ í©ëë€.
ì€ë ë Tiê° ìì ì í Rjì í ìžì€íŽì€ë¥Œ ìì²íë©Ž, ìì² ê°ì ìŽ ìì í ë¹ ê·žëí ìì ìœì ë©ëë€. ìŽ ìì²ìŽ ë§ì¡±í ì ììŒë©Ž, ìì² ê°ì ì ìŠì í ë¹ ê°ì ìŒë¡ ë³íë©ëë€. ì€ë ëê° ë ììì ëí ì ê·Œì íŽìŒ íì§ ììŒë©Ž ììì ë°©ì¶íê³ , ê·ž 결곌 í ë¹ ê°ì ì ìì ë©ëë€.
ìë ìŽë¯žì§ë¥Œ ììë¡ ìí©ì íë² ì€ëª íŽ ë³Žê² ìµëë€.
ì€ë ë ì§í© T, ìì ì§í© R, ê·žëŠ¬ê³ ìí륌 ëíëŽë Eë ìëì ê°ìµëë€.
- T = {T1, T2, T3}
- R = {R1, R2, R3, R4}
- E = {T1->R1, T2->R3, R1->T2, R2->T2, R2->T1, R3->T3}
ììì ìžì€íŽì€ë ìëì ê°ìµëë€.
- ìì ì í R1ì ìžì€íŽì€ê° í ê°
- ìì ì í R2ì ìžì€íŽì€ê° ë ê°
- ìì ì í R3ì ìžì€íŽì€ê° í ê°
- ìì ì í Rì ìžì€íŽì€ê° ìž ê°
ì€ë ë ìíë ìëì ê°ìµëë€.
- ì€ë ë T1ì ìì ì í R2ì ìžì€íŽì€ í ê°ë¥Œ ì ì íê³ , ìì ì í R1ì ìžì€íŽì€ í ê°ë¥Œ êž°ë€ëŠ¬ë©° ëêž°íë€.
- ì€ë ë T2ë R1곌 R2ì ìžì€íŽì€ë¥Œ ê°ê° í ê°ì© ì ì íê³ , ìì ì í R3ì ìžì€íŽì€ í ê°ë¥Œ êž°ë€ëŠ°ë€.
- ì€ë ë T3ë R3ì ìžì€íŽì€ í ê°ë¥Œ ì ì íê³ ìë€.
ìì í ë¹ ê·žëíì ì ìë¡ë¶í°, ì°ëŠ¬ë ë§ìŒ ê·žëíê° ì¬ìŽíŽ(cycle)ì í¬íšíì§ ììŒë©Ž ìì€í ëŽ ìŽë ì€ë ëë êµì°© ìíê° ìëëŒë ê²ì ì ì ììµëë€. ë°ë©Ž, ê·žëíê° ì¬ìŽíŽì í¬íšíë©Ž êµì°© ìíê° ì¡Žì¬í ì ììµëë€(ë°ëì ë°ìíë 걎 ìë)
ë§ìŒ ê° ìì ì íìŽ ì ííê² íëì ìžì€íŽì€ë§ì ê°ì§ë©Ž, íëì ì¬ìŽíŽì êµì°© ìíê° ë°ìíììì ììí©ëë€. ë§ìŒ ì¬ìŽíŽìŽ ê°ê° íëì ìžì€íŽì€ë§ ê°ë ìì ì íì ì§í©ë§ì ííš íë€ë©Ž, êµì°© ìíê° ë°ìí ê²ì ëë€. ì¬ìŽíŽì í¬íšë ê° ì€ë ëë êµì°© ìíì ììµëë€. ìŽ ê²œì°ì ê·žëí ëŽì í ì¬ìŽíŽì êµì°© ìíê° ì¡Žì¬íêž° ìí íì충ë¶ì¡°ê±ŽìŽ ë©ëë€.
ë§ìŒ ê° ìì ì íìŽ ì¬ë¬ ê°ì ìžì€íŽì€ë¥Œ ê°ì§ë©Ž, ì¬ìŽíŽìŽ ë°ëì êµì°©ìíê° ë°ìíìì ì믞íì§ë ììµëë€. ìŽ ê²œì° ê·žëí ëŽì ì¬ìŽíŽì êµì°© ìíê° ì¡Žì¬íë ë° íì조걎ìŽë©° 충ë¶ì¡°ê±ŽìŽ ëì§ë ììµëë€.
ìŽ ê°ë ì ì€ëª íêž° ìíŽ, ë€ì ì ìì í ë¹ ê·žëí ìŽë¯žì§ë¥Œ ìŽíŽëŽ ìë€. ì€ë ë T3ê° ìì ì í R2ì ìžì€íŽì€ë¥Œ íë륌 ìì²íë€ê³ ê°ì íŽëŽ ìë€. ì¬ì© ê°ë¥í ìììŽ íì¬ ìêž° ë묞ì, ìì² ê°ì T3 -> R2륌 ê·žëíì ìëì ìŽë¯žì§ì ê°ìŽ ì¶ê°í©ëë€.
ìŽ ìì ìì ìì€í ëŽì ë ê°ì ìµì ì¬ìŽíŽìŽ ì¡Žì¬í©ëë€.
- T1 -> R1 -> T2 -> R3 -> T3 -> R2 -> T1
- T2 -> R3 -> T3 -> R2 -> T2
ì€ë ë T1, T2 ê·žëŠ¬ê³ T3ë êµì°© ìíì ëë€. ì€ë ë T2ë ì€ë ë T3ìŽ ì ì íê³ ìë ìì R3ì êž°ë€ëŠœëë€. ì€ë ë T3ë ë°ë©Žì ì€ë ë T1ìŽë T2ê° ìì R2륌 ë°©ì¶íꞰ륌 êž°ë€ëŠœëë€. ëí ì€ë ë T1ì T2ê° ìì R1ì ë°©ì¶íꞰ륌 êž°ë€ëŠœëë€.
ìŽì ìë ìŽë¯žì§ì ìë ìì í ë¹ ê·žëí륌 ìê°íŽ ëŽ ìë€.
ìŽ ìììë ìì ì¬ìŽíŽì ê°ìµëë€.
- T1 -> R1 -> T3 -> R2 -> T1
ê·žë¬ë ì ìììë êµì°© ìíê° ììµëë€. íë¡ìžì€ T4ê° ìì ì í R2ì ìžì€íŽì€ë¥Œ ë°©ì¶í ì ììì ììží ëŽìŒ í©ëë€. ìŽìŽ ê·ž ìììŽ T3ì í ë¹ë ì ìê³ , ê·ž ê²œì° ì¬ìŽíŽìŽ ììŽì§ëë€.
ììœíìë©Ž, ìì í ë¹ ê·žëíì ì¬ìŽíŽìŽ ìë€ë©Ž, ìì€í ì êµì°© ìíê° ìëëë€. ë°ë©Žì, ì¬ìŽíŽìŽ ìë€ë©Ž ìì€í ì êµì°© ìíìŒ ìë ìê³ ìë ìë ììµëë€.
êµì°© ìí ìë°©(_Deadlock Prevention)
ì°ëŠ¬ê° ììì ìŽíŽë³ž ê²ì²ëŒ, êµì°© ìíê° ë°ìíë €ë©Ž ë€ ê°ì§ì íì조걎 ê°ê°ìŽ ì±ëŠœíŽìŒ íšì ì ì ìììµëë€. ê·žë ë€ë©Ž ì°ëŠ¬ë ìŽì ìŽë€ 조걎 ì€ìì ìµìí íëê° ì±ëŠœíì§ ìëë¡ ë³Žì¥íšìŒë¡ìš ì°ëŠ¬ë êµì°© ìíì ë°ìì ìë°©í ì ììµëë€.
ìíž ë°°ì (Mutual Exclusion)ì ë¶ì | - ìœêž° ì ì© íìŒê³Œ ê°ì ê³µì ììì ì¬ì©í©ëë€. |
ì ì ë° ëêž°(Hold and Wait)ì ë¶ì | - íë¡ìžì€ ëꞰ륌 ìì êž° ìíŽì íë¡ìžì€ê° ì€íëêž° ì ì íìí 몚ë ììì í ë¹í©ëë€. (ìì ëë¹ ë°ì) - ììì ì ì íì§ ìê³ ìì ëìë§ ë€ë¥ž ììì ìì²í ì ìëë¡ í©ëë€. (êž°ììíê° ë ì ìì) |
ë¹ì ì (No Preemption) ì ë¶ì | - 몚ë ììì ëí ì ì ì íì©í©ëë€. - íë¡ìžì€ê° í ë¹ë°ì ì ìë ììì ìì²íë 겜ì°, êž°ì¡Žì ê°ì§ê³ ìë ììì 몚ë ë°ë©íê³ ì ìì곌 ìŽì ììì ì»êž° ìíŽ ëêž°íëë¡ í©ëë€. (ìì ëë¹ ë°ì) |
ìí ëêž°(Circular Wait)ì ë¶ì | - ììì ê³ ì í ë²ížë¥Œ í ë¹íê³ , ë²íž ììëë¡ ììì ì구íëë¡ í©ëë€. (ìì ëë¹ ë°ì) |
êµì°©ìí ííŒ(_Deadlock Avoidance)
ë°ë¡ ììì ì€ëª í êµì°©ìí ìë°© ë°©ë²ì ìŽì©íë©Ž ì¥ì¹ì ìŽì©ë¥ ìŽ ì íëê³ ìì€í ìŽ ì²ëŠ¬ìš(throughput)ìŽ ê°ìíë€ë 묞ì ê° ììµëë€.
êµì°©ìí륌 ííŒíë ëìì ìììŽ ìŽë»ê² ìì²ë ì§ì ëí ì¶ê° ì 볎륌 ì ê³µíëë¡ ì구íë ê²ì ëë€. ì륌 ë€ìŽ, ìì R1곌 R2륌 ê°ì§ ìì€í ìì ì€ë ë Pê° ë ììì 몚ë ë°©ì¶íêž° ì ì 뚌ì R1ì ìì²íê³ , ë€ìì R2륌 ìì²íë€ê³ ê°ì íê³ , ì€ë ë Që 뚌ì R2륌 ìì²íê³ , ë€ìì R1ì ìì²íë€ê³ ê°ì í©ìë€. ê° ì€ë ëì ìì²ê³Œ ë°©ì¶ì ëí ìì í ìì륌 íì íê³ ìë€ë©Ž, ì°ëŠ¬ë ê° ìì²ì ëíŽì ê°ë¥í 믞ëì êµì°© ìíì ë°ìì íŒíê² íêž° ìíŽ ì€ë ëê° ëêž°íŽìŒ íëì§ ë§ëì§ì ì¬ë¶ë¥Œ ê²°ì í ì ììµëë€. ê° ìì²ì ëíŽ ìì ê°ì ê²°ì ì íë €ë©Ž ìì€í ì íì¬ ìì²ì ë°ìë€ìŒ ì ìëì§ ëë ë°ëì ëêž°íŽìŒ í ê²ìžì§ë¥Œ ê²°ì íêž° ìíŽ ìëì ìž ê°ì§ë¥Œ ê³ ë €íŽìŒ í©ëë€.
- íì¬ ê°ì© ìì
- íì¬ ê° ì€ë ëì í ë¹ë ìì
- ê° ì€ë ëê° ììŒë¡ ìì²íê±°ë ë°©ì¶í ìì
ìŽ ë°©ë²ì ì¬ì©íë ë€ìí ìê³ ëŠ¬ìŠë€ì íìí ì 볎ì ì곌 ì íìì ì°šìŽê° ììµëë€. ê°ì¥ ëšìíê³ ì ìŒ ì ì©í 몚ëžì ê° ì€ë ëê° ìì ìŽ íìë¡ íë ê° ì íì ììë§ë€ ìµë ì륌 ì ìžíëë¡ ì구íë ê²ì ëë€. ê° ì€ë ëê° ìì²í ê° ì íì ììì ìµë ì ì 볎륌 íì í ì ìë€ë©Ž, ì°ëŠ¬ë ìì€í ìŽ êµì°© ìíì ë€ìŽê°ì§ ìì ê²ì 볎ì¥íë ìê³ ëŠ¬ìŠì ë§ë€ ì ììµëë€. êµì°© ìí ííŒ ìê³ ëŠ¬ìŠì ìì€í ì ìí ëêž° ìí©ìŽ ë°ìíì§ ìëë¡ ìì í ë¹ ìí륌 ê²ì¬í©ëë€. ìì í ë¹ ìíë ê°ì ììì ì, í ë¹ë ììì ì ê·žëŠ¬ê³ ì€ë ëë€ì ìµë ì구 ìì ìíŽ ì ìë©ëë€.
ìŽì ë ê°ì êµì°© ìí ííŒ ìê³ ëŠ¬ìŠ(ìì í ë¹ ê·žëí ìê³ ëŠ¬ìŠ, ìíì ìê³ ëŠ¬ìŠ)ì ìì볌 ê±Žë° ê·žì ì ìì ìíëŒë ì©ìŽì ëíŽ ëšŒì ììë³Žê² ìµëë€.
ìì ìí(_Safe State)
ìì€í ìíê° ìì (safe)íë€ë ë§ì ìì€í ìŽ ìŽë€ ììë¡ë ì€ë ëë€ìŽ ìì²íë 몚ë ììì(ìµë ì구 ì륌 ì구íëëŒë) êµì°© ìí륌 ìŒêž°ìí€ì§ ìê³ ì°šë¡ë¡ 몚ë í ë¹íŽ ì€ ì ìë€ë ê²ì ë»í©ëë€. ìŠ, ìì€í ìŽ ìì ìì(safe sequence)륌 ì°Ÿì ì ìë€ë©Ž ìì€í ì ìì íë€ê³ ë§í©ëë€. <T1, T2, ..., Tn>곌 ê°ì ì€ë ë ììê° ìì íë€ë ë§ì(몚ë Tiì ëíŽ) ê·ž Tiê° ìì²íë ììì ìì€í ì íì¬ ëšììë ìì곌 ììì ìíì ë§ì¹ 몚ë ì€ë ë Tjë€ìŽ(j <i) ë°ë©íë ììë€ë¡ ë§ì¡±ììŒ ì€ ì ììì ë»í©ëë€. ìŽì ê²œì° Tiê° ìì²í ììë€ì ìŠì ë§ì¡±ììŒì€ ì ìì ê²ìŒë¡ íëšëë©Ž Tiê° ëªšë Tjë€ìŽ ë§ì¹ í ê¹ì§ êž°ë€ëŠ¬ê² íë©Ž ë©ëë€. ê·žë¬ë©Ž Tië 몚ë Tjë€ìŽ ë°ë©í ììë€ì ê°ì§ê³ ìíì í ì ìê² ë©ëë€. Tiê° ëë¬ì ë T(i+1)ì íìí 몚ë ììì ì»ê² ëê³ ìŽì ê°ì ìí©ìŽ ê³ìë©ëë€. ìŽì²ëŒ 몚ë ì€ë ë륌 묎ì¬í ë§ì¹ ì ìë ìíì€ë¥Œ ì°Ÿì ì ììŒë©Ž ë¶ìì (unsafe)íë€ê³ ë§í©ëë€.
ìì€í ì ìíê° ìì íë€ë©Ž ë¬Œë¡ êµì°© ìíê° ìëëë€. ë°ëë¡ êµì°© ìíì ìë ìì€í ì ë¶ìì í ìíì ììµëë€. ê·žë ì§ë§ ìëì ìŽë¯žì§ì ê°ìŽ ìì€í ìíê° ë¶ìì íë€ê³ íŽì ë°ëì êµì°© ìíë¡ ê°ë€ë ê²ì ë»íë ê²ì ìëëë€.
ìì€í ìŽ ë¶ìì íë€ë ë§ì ììŒë¡ êµì°© ìíë¡ ê°ê² ë ìë ìë€ë ë»ì ëë€. ê·žë¬ë¯ë¡ ìì€í ìŽ ìì ìíì 뚞묎ë í ìŽì첎ì ë ë¶ìì ìíë êµì°© ìí 몚ë륌 ìë°©í ì ììµëë€. ê·žë¬ë ìŒëš ë¶ìì ìíì ë€ìŽê°ê² ëë©Ž ìŽì첎ì ë êµì°© ìíê° ìŒìŽë ìë ìë ìì ìì²ì ë§ì ìë ììµëë€. ì€ë ëë€ì íë ìíê° ë¶ìì ìí륌 ì ìŽí©ëë€.
ì륌 ë€ìŽ ìë ììì²ëŒ ìì€í ì 12ê°ì ìììŽ ìê³ T0, T1, T2 ìž ê°ì íë¡ìžì€ê° ìë€ê³ ê°ì íŽ ëŽ ìë€. T0ê° 10ê°ì ììì íìë¡ íê³ , T1ìŽ 4ê°, T2ê° 9ê°ê¹ì§ì ììì íìë¡ í ì ììµëë€. ììì ìì t0ìì T0ê° 5ê°, T1ìŽ 2ê°, T2ê° 2ê°ì ììì 볎ì ì€ì ëë€.(ë°ëŒì ìŽì 3ê°ì ìììŽ ìì€í 볎ì ë¶ìŒë¡ ëšììµëë€.)
t0ìì ìì€í ì ìíë ìì í©ëë€. <T1, T0, T2> ììê° ììŒë¯ë¡ ìì ìíì ëë€. ìëíë©Ž T1ìŽ ìì€í 볎ì ë¶ìŒë¡ 뚌ì ëëŽê³ ëë©Ž(ìŽì ìë 볎ì ë¶ 3ê° ëšìë ê²ì T1ìŽ ë°ë©íë 2륌 ì¶ê°íì¬ 3 + 2 = 5ê°ê° ìì€í 볎ì ë¶ìŽ ë©ëë€), T0ìŽ ê·ž ë€ì¯ ê°ë¥Œ ê°ì žê° ëëŒ ì ìê³ , ë§ì§ë§ìŒë¡ T2ê° ëëŽë©Ž ë©ëë€(ìŽì ìì€í 볎ì ë¶ì ë€ì 12ê°ê° ë©ëë€).
ìì€í ì ìì ìíì ìë€ê°ë ë¶ìì ìíë¡ ì ìŽí ì ììµëë€.
- ì륌 ë€ìŽ t1ìì T2ê° ìì í ê°ë¥Œ ì¶ê°ë¡ ìì²íì¬ ê·žê²ì 죌ìë€ê³ ê°ì íŽ ëŽ ìë€.
- ê·žë¬ë©Ž ìŽì ìì€í ìíë ë ìŽì ìì íì§ ìê² ë©ëë€.
- ìŽ ìíììë T1 ë§ìŽ ìíë ììì ë€ í ë¹ë°ì ì ììµëë€.
- T1ìŽ ë§ì¹ê³ ììì ë°ë©íŽë ìì€í 볎ì ë¶ì 4ê°ë¿ì ëë€.
- T0ê° 5ê°ë¥Œ ê°ì§ê³ ìê³ ìµë 10ê°ë¥Œ íìë¡ íë¯ë¡ ì¶ê°ë¡ 5ê°ê¹ì§ë¥Œ ë ìì²í ì ììµëë€.
- ê·žëŽ ê²œì° ììì ê°ìê° ë¶ì¡±íë¯ë¡ T0ì ëëŽì§ 못íê³ êž°ë€ëŠŽ ìë°ì ìê² ë©ëë€. ë§ì°¬ê°ì§ë¡ T2ë 6ê°ê¹ì§ì ììì ì¶ê°ë¡ ìì²í ì ììµëë€. ê·žë¬ë©Ž ìŽ ì€ë ëë êž°ë€ë €ìŒ í©ëë€.
- 결곌ë êµì°©ìíì ëë€.
ê·žë¬ë¯ë¡ ììì T2ê° ììì í ê° ë ë¬ëŒê³ í ë ê·ž ìì²ì ê·žëë¡ ë€ìŽì£Œë©Ž ì€ì륌 ë²íë ì ìŽ ë©ëë€. T2ê° í ê°ë¥Œ ìì²íëëŒë ë€ë¥ž ì€ë ëê° ëë ëê¹ì§ êž°ë€ëŠ¬ê² íë€ê° ê·žê²ì 죌ìë€ë©Ž êµì°© ìí륌 íŒí ìë ììì ê²ì ëë€.
ìŽì ìì ìŽëŒë ê°ë ìŽ ìŽíŽëìë€ë©Ž ííŒ ìê³ ëŠ¬ìŠìŽ ìŽë»ê² êµì°© ìí륌 ííŒí ì ìëì§ ì ìí ì ììµëë€. Ʞ볞 ìì¹ì ìì€í ì ìíê° íì ìì ìí륌 ë ëì§ ìëë¡ ê³ ìíë ê²ì ëë€. ìµìŽì ìíë ë¬Œë¡ ìì í©ëë€. ê·ž í ì€ë ëë€ìŽ ììì ìì²íë©Ž ìì€í ì ììì ìŠì í ë¹í ì ìëì§ ìëë©Ž ì€ë ëê° ëêž°íŽìŒ íëì§ ê²°ì íŽìŒ í©ëë€. ìì²í ììì ìŠì ì¹ëíŽ ì£Œë 겜ì°ë ìì€í ì ìíê° ìì ìíìì ìì ìíë¡ ì®êžž ëë¿ì ëë€.
ìŽë¬í ë°©ìììë ì€ë ëê° ìì²í ììë³Žë€ ë§ì ìì ìì€í ìŽ ë³Žì íê³ ìë€ê³ íëëŒë ê·ž íë¡ìžì€ë¥Œ êž°ë€ëŠ¬ê² íë ìí©ìŽ ë²ìŽì§ ì ììµëë€. ë°ëŒì ììì ìŽì©ë¥ ì ííŒë¥Œ ì ìž ë ë¹íŽì ë®ìì§ ìë°ì ììµëë€.
(1) êµì°©ìí ííŒ ìê³ ëŠ¬ìŠ 1: ìì í ë¹ ê·žëí ìê³ ëŠ¬ìŠ
ë§ìœ ê° ìì ì íë§ë€ ëšì§ íëì ìžì€íŽì€ë¥Œ ê°ë ìì í ë¹ ìì€í ì ê°ê³ ìë€ë©Ž, ì°ëŠ¬ë êµì°© ìí ííŒë¥Œ ìíŽ ììì ì€ëª í ìì í ë¹ ê·žëíì ë³íì ì¬ì©í ì ììµëë€. ìì² ê°ì 곌 í ë¹ ê°ì ì ì¶ê°íì¬, ì°ëŠ¬ë ììœ ê°ì (claim edge)ìŽëŒë ìë¡ìŽ íì ì ê°ì ì ëì í©ëë€. ììœ ê°ì (Ti -> Rj)ì Piê° ë¯žëì ìì Rj륌 ìì²í ê²ìŽëŒë ì믞ì ëë€. ìŽ ê°ì ì ë°©í¥ì ìì² ê°ì 곌 ì ì¬íì§ë§ ì ì (dashed line)ìŒë¡ íìí©ëë€. íë¡ìžì€ Tiê° ìì Rj륌 ìì²íë©Ž, ììœ ê°ì Ti -> Rjë ìì² ê°ì ìŒë¡ ë³íë©ëë€. ë§ì°¬ê°ì§ë¡ Tiê° ìì Rj륌 ë°©ì¶í ë, í ë¹ ê°ì Rj -> Tië ììœ ê°ì Ti -> Rjë¡ ë€ì ë³íë©ëë€.
ì°ëŠ¬ë ìì€í ìì ìììŽ ë°ëì ììœëìŽìŒ íšì ì ìíŽìŒ í©ëë€. ìŠ, ì€ë ë Tiê° ì€íëêž° ì ì, ì€ë ëì 몚ë ììœ ê°ì ìŽ ìì í ë¹ ê·žëíì íìëìŽìŒ í©ëë€. ì€ë ë Tiì ì°êŽë 몚ë ê°ì ë€ìŽ ììœ ê°ì ìŒ ëë§ ììœ ê°ì Ti -> Rj륌 ê·žëíì ì¶ê°íëë¡ íì©íšìŒë¡ìš ì°ëŠ¬ë ìì 조걎ì ìíí ì ììµëë€.
ì€ë ë Tiê° ìì Rj륌 ìì²íë€ê³ ê°ì íŽëŽ ìë€. ìì² ê°ì Ti -> Rj륌 í ë¹ ê°ì Rj -> Tië¡ ë³ííŽë ìì í ë¹ ê·žëíì ì¬ìŽíŽì íì±íì§ ìì ëë§ ìì²ì íì©í ì ììµëë€.
ë§ìœ ì¬ìŽíŽìŽ ìë€ë©Ž ììì í ë¹íŽë ìì€í ì ìì ìíê° ë©ëë€. ì¬ìŽíŽìŽ ë°ê²¬ëë©Ž, í ë¹ì ìì€í ì ë¶ìì ìíë¡ ë§ë€ ê²ì ëë€. ê·žë¬ë¯ë¡ ì€ë ë Tië ìì ì ìì²ìŽ 충족ë ëê¹ì§ ë°ëì ëêž°íŽìŒ í©ëë€.
ìŽ ìê³ ëŠ¬ìŠì ì€ëª íêž° ìíŽ ìëì ìì í ë¹ ê·žëí륌 ê³ ë €íŽ ëŽ ìë€.
T2ê° R2륌 ìì²íë€ê³ ê°ì íŽ ëŽ ìë€. R2ê° íì¬ ê°ì© ìíìŽì§ë§, ì°ëŠ¬ë ìŽë¥Œ T2ì í ë¹í ì ììµëë€. ìëíë©Ž, ìëì ê°ìŽ í ë¹í ê²œì° ê·žëíì ì¬ìŽíŽìŽ ìêž°êž° ë묞ì ëë€.
ì¬ìŽíŽì ìì€í ìŽ ë¶ìì í ìíì ììì ì믞í©ëë€. ë§ìŒ T1ìŽ R2륌 ìì²íê³ , T2ê° R1ì ìì²íë©Ž êµì°© ìíê° ë°ìí©ëë€.
(2) êµì°©ìí ííŒ ìê³ ëŠ¬ìŠ 2: ìíì ìê³ ëŠ¬ìŠ(Banker's Algorithm)
ìì í ë¹ ê·žëí ìê³ ëŠ¬ìŠì ì¢ ë¥ë§ë€ ìììŽ ì¬ë¬ ê°ì© ìê² ëë©Ž ì¬ì©í ì ììµëë€. ìëìì êž°ì íë ìíì ìê³ ëŠ¬ìŠì ìììŽ ì¬ë¬ ê°ì© ìì ëë ì¬ì©í ì ììµëë€. íì§ë§ ìì ìì í ë¹ ê·žëíë³Žë€ ìíì ìê³ ëŠ¬ìŠì íšìšì±ìŽ ë€ì ëšìŽì§ëë€. ìŽ ìê³ ëŠ¬ìŠìŽ ìíì(banker's)ëŒê³ ë¶ì¬ì§ ìŽì ë ìŽ ìê³ ëŠ¬ìŠì ìíì ì ì©íë©Ž ê³ ê°ë€ìŽ íêžì ì°ŸìŒë¬ ìë ìŒì í ììì ìíŽ ëªšë ê³ ê°ì ìì²ì ë€ ë€ìŽì€ ì ìê² ëêž° ë묞ì ëë€.
ìŽ ìì€í ììë ì€ë ëê° ììí ë ì€ë ëê° ê°ì§ê³ ììŽìŒ í ììì ìµë ê°ì륌 ìì ì¢ ë¥ë§ë€ 믞늬 ìë €ìŒ í©ëë€. ë¬Œë¡ ìŽ ì«ìê° ììì ìŽ ë³Žì ì륌 ëìŽìë©Ž ì ë©ëë€. ì€ë ëê° ììë€ì ìì²íë©Ž ìì€í ì ê·žê²ì ë€ìŽì£Œìì ë ìì€í ìŽ ê³ì ìì ìíì ëšžë¬Žë¥Žê² ëëì§ ì¬ë¶ë¥Œ íëšíŽìŒ í©ëë€. ê³ì ìì íê² ëë€ë©Ž ê·ž ìì²ì ë€ìŽì€ëë€. ê·žë ì§ ìë€ë©Ž ìŽ ì€ë ëì ìì²ì íëœìŽ ì ë ì± ë€ë¥ž ì€ë ëê° ëë ëê¹ì§ êž°ë€ëŠ¬ê² ë©ëë€.
ìíì ìê³ ëŠ¬ìŠì 구ííë €ë©Ž 뚌ì ìëì ìë£ë€ì ìììŒ í©ëë€. nì ì€ë ëì ììŽê³ mìŽ ììì ìëŒê³ ê°ì í©ëë€.
- Available: ê° ì¢ ë¥ë³ë¡ ê°ì©í ììì ê°ì륌 ëíëŽë 벡í°, í¬êž° m
- Max: ê° ì€ë ëê° ìµëë¡ íìë¡ íë ììì ëíëŽë íë ¬, n x m
- Allocation: ê° ì€ë ëì íì¬ í ë¹ë ììì ê°ì륌 ëíëŽë íë ¬, n x m
- Need: ê° ì€ë ëê° í¥í ìì²í ì ìë ììì ê°ì륌 ëíëŽë íë ¬, í¬êž° n x m
ì ìë£ë€ì ìê°ìŽ ì§ëšì ë°ëŒì ê·ž ê°ê³Œ í¬êž°ê° ë³í ì ììµëë€.
ìŽì ìì륌 ë€ìŽ íë² ìíì ìê³ ëŠ¬ìŠì ììëŽ ìë€.
- íì¬ ìì€í ìë ë€ì¯ ê°ì íë¡ìžì€ T0ë¶í° T4ê¹ì§ ìê³ , A, B, C ìž ê°ì§ ì¢ ë¥ì ìììŽ ìë€ê³ ê°ì í©ëë€.
- ìì€í ìë A ìììŽ 10ê°, BìììŽ 5ê°, CìììŽ 7ê°ê° ììµëë€.
Need(íìë¡ íë ì) íë ¬ ê°ì (Max - Allocation)ìŒë¡ ë¶í° ì»ìŽì§ëë€.(ìµë íìë¡ íë ì - íì¬ í ë¹ë ì)
ìŽ ìì€í ì ìì íë€ê³ ë§í ì ììµëë€. ìëíë©Ž <T1, T3, T4, T2, T0> ììŒë¡ ììì í ë¹íê² ëë©Ž ìì ì± êž°ì€ì ë§ì¡±ìí€êž° ë묞ì ìì ìì(safe sequence)륌 ê°ì¡êž° ë묞ì ëë€.
ìŽë²ìë T1ìŽ Aìì í ê°ì C ìì ë ê°ë¥Œ ì¶ê°ë¡ ìì², ìŠ Request = (1, 0, 2)ëŒê³ ê°ì íŽ ëŽ ìë€. ìŽ ìì²ì ìŠì ë€ìŽì€ ê²ìžì§ë¥Œ íëšíêž° ìíŽìë 뚌ì Request < Availableìžì§ ì¬ë¶ë¥Œ ê²ì¬íŽìŒ í©ëë€. ìŠ (1,0,2) <= (3, 3, 2)ìžì§ ì¬ë¶ë¥Œ ê²ì¬íŽìŒ í©ëë€. ìŽ ì¡°ê±ŽìŽ ë§ì¡±íë¯ë¡ ë€ì ëšê³ë¡ ë§ì¹ ìŽ ìì²ì ë€ìŽì£Œë ê²ì²ëŒ ìí ì 볎륌 ë§ë€ìŽ ëŽ ìë€.
ìŽì ìŽ ìíê° ìì íì§ ì¬ë¶ë¥Œ ìŽíŽë³Žë©Ž ë©ëë€. T0ë¶í° ììëë¡ ê³ì°íŽë³Žë©Ž ê²°êµ <T1, T3, T4, T0, T2>ëŒë ìì ìì(safe sequence)ê° ëìŽì ì ì ììµëë€. ë°ëŒì T1ì ìì²ì ìŠì ë€ìŽì€ ì ììµëë€.
ë§ìœ ìŽë¬í ìíìì T4ê° (3, 3, 0)ì ìì²íë©Ž ìììŽ ëªšìëŒë¯ë¡ ë€ìŽì€ ì ìë€ë ê² ì ì ì ììµëë€. ëí T0ê° (0, 2, 0)ì ìì²íë€ë©Ž ììì 충ë¶í ìì§ë§ ìí륌 ë¶ìì ìíë¡ ë§ëë¯ë¡ ìì ê·ž ìì²ì ìŠì ë€ìŽì€ ì ìë€ë ê²ì ì ì ììµëë€.
'ComputerScience ð > ìŽì첎ì ' 칎í ê³ ëŠ¬ì ë€ë¥ž êž
[OS] ë©ìž ë©ëªšëŠ¬(3) - TLB(translation look-aside buffers) (0) | 2022.03.28 |
---|---|
[OS] ë©ìž ë©ëªšëŠ¬(2) - íìŽì§ êž°ë² (0) | 2022.03.20 |
[OS] ë©ìž ë©ëªšëŠ¬(1) - 묌늬, ë ŒëŠ¬ì£Œì ë° ì°ì ë©ëªšëŠ¬ í ë¹ (0) | 2022.03.20 |
[OS] ìì¬íë ì² íìë€ ë¬žì (The Dining-Philosophers Problem) (0) | 2022.03.02 |
[OS] íë¡ìžì€ ëêž°í(Process Synchronization) (0) | 2022.02.24 |
[OS] CPU ì€ìŒì€ë§(CPU Scheduling) (0) | 2022.02.20 |
ëêž