c °2003, sangjin@kut.ac.kr
* <* Ö = å i< K: ~ ¡q ç { ¡È 01
A. Silberschatz, P.B. Galvin, G. Gagne Operating System Concepts, Sixth Edition, John Wiley & Sons, 2003.
Part I. Overview
<Õ ªa > 1.1> ( Ë É Ó' r Û ¼% _ 7 ½ ¨$
כ í ¹ è
} º4
1
1.1.2 • î r%
^ ò ] jê Í? ø
S y å ð ËX ¾ È ì
• " ¶½ é É{ + ©
– ( É Ó' × ¼J ?# Q\ ¦ ao ' Há Ô ÐÕ ªÏ þ – (É Ó' ¶ " é: CPU r ç , B ß j ¸o / Nç B ,
ß { 9 $ / © Nç B , { ß Ø 9 ¦§ 4 u ©
– 6 x6 £ xá Ô ÐÕ ªÏ _ þ Ð@ /\ ¦ ] j/ NK B Å Ò H á Ô Ð Õ ªÏ þ – (É Ó' _ 6 x ü <( É Ó' × ¼J ?# Q s \ × æç B ß > h^ % ½ i É` + ¦K Å Ò Há Ô ÐÕ ªÏ þ
• ] j# Qá Ô ÐÕ ªÏ þ – 6 x á Ô ÐÕ ªÏ _ þ z ´ ' ` ¦ ao ' ¦, ¸À Ó <( ü É Ó' ¸6 x\ ¦~ Ót ½ ô Ç .
ØW U Æ Ë= _ k< g m?
1.1
• ( É Ó' r Û ¼% 7 _ ¨ ½$
כ í ¹ è
1.1.3 Æ ØW U Ë= _ k< g8 ý × Ò »
– × ¼J ?# Q
• î r%
^ ò ] j_ 3 q³ l ð
– î r%
^ ò ] j – 6 x6 £ xá Ô ÐÕ ªÏ þ
– 6 x \ > ¼ o # $
] í j/ N B
– 6 x
– ( É Ó' r Û ¼% _ 7 ´ òÖ ¦& î h r%
ò • î r%
^ ò ] j_ 3 q& l h
• î r%
^ ò ] j# A 3 0\ @ /ô Ç&
_ ñ – ä +q 1. î r%
^ ò ] j\ ¦½ ¨{ 9 % ` i ¦M : í Ê÷ < & # Qe H ¸ H כ
– 6 x \ > ( É Ó' \ " f á Ô ÐÕ ªÏ ` þ ¦ ´ òÖ ¦ s h & ¦¼ o # > z ´' ½ Éà + ºe H¨ 8
` â ¦] j N B /
– ä +q 2. Ó ½ à © º' ÷ & ¦e HÄ »{ ô 9 Çá Ô Ð Õ ªÏ ë þ î ß r%
^ ò ] js . Ð: x r ´ É ú Ð &
(kernel)s y Û ô Ç .
– (É Ó' " ¶_ é ½ É{ + , s © ½ É{ + © r/ É N& B
K ñ 9´ òÖ ¦& Ü h ¼ Ðs À Ò# Q4 R Ê. < – j ]# QÔ á ÐÕ ªÏ Ü þ ¼ Ð 6 x á Ô ÐÕ ªÏ _ þ z ´ ` ' ¦y 1 q l # ¸À Óü <( É Ó' ¸6 x` ¦~ Ót ½ ¦{ 9 Ø ¦§ © 4 u _ ] j# Q< ü1 x l ` ¦ ao ' ô Ç .
Ð: x&
_ ñ 2\ ¦ 6 x Ê. < 1.1.1
Þ Ó å ËX ¾ È ì
• (É Ó' _ 6 x ¸\ î r%
^ ò ] j_ [ > O ~ Ó ½ Ós ¾ &
ñ a ) .
1.2
– > h 6 x( É Ó' : ¼ o # $
( í ), $ ©
0 í x(× p æ), " ¶ é ¸6 Ö x( )
cß 8 à ų 7 _Æ ÈS k y ð
• ô Ç 6 x _ á Ô ÐÕ ªÏ ë þ ` ß ¦Ã º' î r
^ ò % ] j_ { 9 rÕ É ªë ß u~ p 1 . ì Í ø \ ô Ç 6 x # Qá Ô ÐÕ ªÏ ` þ ¦1 xr l \ à º' # Q 6 x 1 xr l \ 6 x Hr Û ¼% 7 \ " f Hî r%
^ ò ] j_ 9 { rç É é ß ß t · § ú .
– B j á ÔY Ua >, p Ë m ( É Ó' : " ¶ é ¸6 Ö x( ) © – 0 >ß ¼Û ¼_ s : > h 6 x$
õ í " ¶ é ¸6 Ö x – Ê ë@ /6 x( É Ó' : > h 6 x$
( í ), © ¶ " é] X 1
1.2.1
ø Ç m Í% Z iP S y ð
• k& T P »(time sharing) ¢ Ò ¸ HY w O I Û ¼(
(multitaskç ing) r É × æá Ô ÐÕ ªA b ç
õ ² o ú &
K ñ r ç s ß ÷ & Á º ¸| 6 §í £ H" f_ \ ` O ¦z ´ ' H~ Ód ½ Ü ¼ Ð, §@ / Hr ç s ß B Ä ºÂ ª ú á Ô ÐÕ ªÏ s þ z ´' & ÷ H1 xî l ß 6 x H( É Ó' ü < © ñ 6 xs 0 x p .
• í Ól ½ r Û ¼% 7 r É 6 x f ] r X Û ¼% ` 7 ¦ 6 x t · § ú ¦, ë H( É Ó' î r%
ò \ > á Ô ÐÕ ªÏ õ þ X <s ' \ ¦ u
× ¼\ ¦: xK ] j/ N B # 6 x % i . • ô Ç _ _ á Ô ÐÕ ªÏ ß þ ës à º ' ÷ &Ù ¼ Ðî r%
^ ò ] j_ Å Òe Á º H _ \ \ O " f 6 § £ \ Ü O ¼ Ð ] j# Q\ ¦ 1 x& l Ü h ¼ Ð` l H s כ % 3 .
• s% ! 3 6 x ü < r Û ¼% 7 ç \ ß f ] X © ñ 6 x 0 s xô p Çr Û ¼% ` 7 ¦@ / od ( É Ó' r Û ¼% (inter7 active computer system)s ô Ç . s r Û ¼% \ 7 f " H6 x² £ r ú ç (response time)s ß Â ª ú ô Ç .
• î r%
^ ò ] j H Ó ½ B © j ¸o \ Å © Ò % i .
• rì r½ Ér + Û ¼% 7 r# É Q 6 x 1 xr l \ ( É Ó' ¦ \ 6 x½ ÉÃ + ºe > K ï r .
• % o 5 q Å ¸\ ¦ Ó ¾ © l 0 AK Ä » ô Çכ ¹½ ¨\ ¦ כ 9 ¹ Ð H \ ` O ¦ Êa < ¸ " f{ 9 F c% o (batch processing) % i .
• j B ¸o \ & F h ÷ &# Qz ´ ' × æ á Ô ÐÕ ªÏ ` þ ¦è « ×T z «(process) â ô Ç .
• ë H] j& h
• ú ´ § r É 6 x _ á Ô ÐÕ ªÏ ` þ ¦1 xr l \ à º' l 0 A " K f HÅ Òl % 3 u © _ 6 x| ÓÜ ¾ ¼ Ð H Ò7 ¤ á . s H] ë j\ ¦ K l 0 AK n Û ¼ß ¼\ ¦ Å Òl % 3 u © _ Ð ¸$ © u © Ð ¸6 Ö x 9, ³F & V © o , 6 x & ÷ Hl Z O r É B © j ¸o (virtual memory)s .
– l > & { h 9 Ø ¦§ 4 u © & h u © _ 5 q Å ¸ Ð @ © /& Ü h ¼ ÐÖ ¼ 9 CPU 7 x7 á x/ á ' H
â Ä º ´ § ú ¤ . • f ] ] X H X (direct access)s 0 xô p Çn Û ¼ß ¼_ ¸{ 9 – ¼ Ðá Ç
â «X · äÿ
(job scheduling)õ b
ä »è « × Ü «8 b (multiprogramming)s 0 x p > H d. 1.2.2
1.3
• í Ól ½ > h 6 x( É Ó' _ CPU_ ô Ç> M :ë H\ > h 6 x( É Ó' _ î r%
^ ò ] j Hé í ß Hô Çl 0 xë p ] ß j/ N B % i .
ú Þ³ n z º§ q S y ð
• × æá Ô ÐÕ ªA b ç
s ê Í# ø Q> h_ á Ô ÐÕ ªÏ ` þ ¦1 x l r \ B j ¸o \ & F h # _ á Ô ÐÕ ªÏ s þ @ / l I © ÷ & Õ ª1 xî l ß rá É Ô ÐÕ ªÏ ` þ ¦z ´' H~ Ód ½ ` ¦´ ô ú Ç .
• lÕ t_ ü µ Ï 1 \ > h 6 x( É Ó' _ î r%
^ ò ] j ¸Y w O I Û ¼(
, ç B © j ¸o 1 xõ p ° ú r É ¦/ Ll å x` p 0 ¦] j/ N B > ÷ &% 3 . t ë s ß [ tî þ r%
^ ò ] j H CPU_ 6 x´ òÖ ¦ Ð H 6 x_ ¼ o # $
\ í u × æ % i .
• & © h
• : x _ µ ϲ 1 \ ú ¶ " é \ " f
{ ` 9 ¦] H X ½ ÉÃ + º > e ÷ &# Q, l r> > h 6 x( É Ó' \ כ 9 ¹\ ~ O
{ 9 Ð ñ כ 9 ¹K & .
– 9 { Ø ¦§ õ 4 á Ô ÐÕ ªÏ _ þ z ´ ' ` ¦#
î ' Ü ¼ ÐÃ º ' ½ ÉÃ + ºe # Q CPU_ 6 x´ òÖ ¦(CPU utiliza tion)s 7 x £ Ê < • × æá Ô ÐÕ ªA b
\ ç " fî rò %^
] j H 6 x \ ¦@ / # _ &
` ñ ¦ # ô Ç .
1.4
ú Þ³ n z º: g" eS y ð
• × æá Ô Ð[ j" fr Û ¼% (multiprocessor system): ( 7 Ó' É ! QÛ ¼, 9 t! þ , B 3 j ¸o 1 x` p ¦/ NÄ B » HÑ ts ü © á _ Ô Ð[ j" f\ ¦ 6 x Hr Û ¼% 7
– n Û ¼ß ¼\ e H \ $ O © è(job pool)\ " f \ ` O ¦ × þ # j B ¸o Ð` l H ` כ ¦ Û O \ ¼H × ¦a As ô Ç .
– r ´ É ú Ð #
§ î = r > Û ¼% 7 (parallel system) ¢ ¸ Hx 9 ½ Ër + Û ¼% 7 (tightly coupled system)s ô Ç .
– z ´ ' × æ \ s O @ /l H © ÷ &% ` 3 ¦M :B j ¸o \ e H \ × O æ \ ¦ × þ # CPU \ ½ É{ + © H כ r CPU Û É ¼H × ¦a As ô Ç .
• × æá Ô Ð[ j" fr Û ¼% _ 7 & © h
• # Q á Ô ÐÕ ªÏ s þ 1 xr l \ B j ¸o \ Å © Ò Ù ¼ Ð B j ¸o ao ' ¤ 4¸ ú . 1.2.3
K 6 ± ´ qS y ð
– %o Ö ¦(throughput) 7 x : N > £ h_ á Ô Ð[ j" f ¦ \ 6 xô Ç ¦ # % o Ö ¦s NC 7 x £ H כ r É m .
S Ä Ø¶ Z £S y ð
• × æá Ô ÐÕ ªA b
` ç ¦] j/ N B H{ 9 F c% o r Û ¼% 7 r É CPU_ 6 x´ òÖ ¦ rZ É }% t i ë ß 6 x ü <( É Ó' \ ß ç © ñ 6 x rj É ]/ N B t 3 w l % i .
– â ]
j& 8 h ¤ £ \ " f × æá Ô Ð[ j" f r Û ¼% ` 7 ¦ 6 x H s כ # Q> h_ é { ß á 9 Ô Ð[ j" fr ¼% Û ` 7 ¦ 6 x H כ Ð $ § 4 . 2
â&#x20AC;&#x201C; Â&#x2019; ø @$
7 Ă ÂŁ x : Â&#x2020; Ă&#x160;) < Â&#x2021;6 x(fault tolerance)\   Ă&#x201E; Âť o . > 5 qĂ&#x192; Ă&#x2026; Âş' Â?á Â&#x; &Â? H Ă&#x2014; ÂźJ ?# Q_ Ă&#x192; Âş\  q Y V # Â&#x152;" fq Ă&#x203A; Âź\ ÂŚ> 5 q] Ă&#x2026; j/ N½ B Ă&#x2030;Ă&#x192; + Âşe Â? Â&#x201D; H0 x§ p 4 ÂŚĂ&#x201E; ` Âş Ă´ Ă&#x2021;$
0 Ă x$ p (graceful degradation) Ă&#x2021; Ă´ .
â&#x20AC;˘ 9 |ĂŠ Â&#x2013;r Ă&#x; Ă&#x203A; Âź% Â&#x203A;Â&#x2022; 7 ¸ Ă&#x2014; ĂŚĂĄ Ă&#x201D;Â&#x2013; Ă?[ j" fr Ă&#x203A; Âź% Â&#x203A;Ăľ 7 Ă° Ă? t ø Ă?@ Â&#x2013; /g A+ A~ Ăž Ă&#x201C;d ½ Ăľ Â&#x201D; q @ /g A+ A~ Ăž Ă&#x201C;d ½ Ă&#x153; Â&#x201D; ÂźÂ&#x2013; Ă?ĂŹ rĂ&#x20AC; Ă&#x201C;½ Ă&#x2030;Ă&#x192; + Âş Â&#x201D; e . â&#x20AC;&#x201C; q@ /g A+ A~ Ăž Ă&#x201C;d ½ : Â&#x201D; _ ( Ă&#x2030; Â&#x17D; Ă&#x201C;' Â? H@ /l Â&#x153;I Š Ă?e Â&#x2013; Â&#x201C; Â&#x201D; ÂŚ Qt Â? H ¸$ Ă&#x2013;
Ă oá &# Q6 x6 ÂŁ xĂĄ  Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞ Â&#x203A;` Ăž Ă? ÂŚĂ&#x192; Âş' Â?Ă´ Â&#x; Ă&#x2021; . @ /l Â&#x153;I Š _ ( Ă&#x2030; Â&#x17D; Ă&#x201C;' Â? H Q  t ¸$ Ă&#x2013;
Ă o ( Ă&#x2030; Â&#x17D; Ă&#x201C;' \ ÂŚ y Â&#x2122;r Â&#x152; Ă´ Ă&#x2021; . ĂŤ Â&#x2013;Â&#x20AC; Ă&#x; Â&#x2022; Â? ( _ Ă&#x2030; Â&#x17D; Ă&#x201C;' z ´J Â&#x20AC; @ /l Â&#x153;I Š _ ( Ă&#x2030; Â&#x17D; Ă&#x201C;'  ¸$ Ă&#x2013;
Ă oá &# Qz ´J Ă´ Ă&#x2021;" f! Q\ ÂŚ@ /Â&#x2019; Ă´ Ă&#x2021; . â&#x20AC;&#x201C; @ /g A+ A~ Ăž Ă&#x201C;d ½ : y Â&#x201D; Â&#x2022;( Â&#x152; Ă&#x2030; Â&#x17D; Ă&#x201C;' Â? HÂ&#x2014; ¸¿ Âş6 x6 ÂŁ xĂĄ  Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞ Â&#x203A;` Ăž Ă? ÂŚĂ&#x192; ÂşÂ? ' Â&#x; Â? H1 xr l \  Â? r( Ă&#x2030; Ă&#x2030; Â&#x17D; Ă&#x201C;' _ Â&#x153;I Š ÂŚy \ Â&#x2122;r Â&#x152; Ă´ Ă&#x2021; .
â&#x20AC;˘ Ă&#x2014; ĂŚĂĄ Ă&#x201D;Â&#x2013; Ă?[ j" fr Ă&#x203A; Âź% Â&#x203A;_ 7 ĂŹ rĂ&#x20AC; Ă&#x201C; â&#x20AC;&#x201C; @ /g A+ A Ăž Ă&#x2014; ĂŚ% Â&#x192;o (SMP, Symmetric MultiProcessing):  Â&#x153;´ Š §s Ăş 6 x  Â&#x201C; ÂŚe Â? Â&#x201D; H~ Ă&#x201C;d ½ Ă&#x153; Â&#x201D; Âź Â&#x2013; Ă?s ~ Ă&#x201C;d ½  Â&#x201D; \" fy Â&#x2022;ĂĄ Â&#x152; Ă&#x201D;Â&#x2013; Ă?[ j" fÂ? H@ /1 x p 9, °  ú Â&#x201C; rĂ&#x192; Ă&#x2030; ºï r_ { 9 ` ÂŚĂ´ Ă&#x2021; . â&#x20AC;&#x201C; q @ /g A+ A Ăž Ă&#x2014; ĂŚ% Â&#x192;o (asymmetric multiprocessing): s ~ Ă&#x201C;d ½ \ Â&#x201D;  " fy Â&#x2022;ĂĄ Â&#x152; Ă&#x201D;Â&#x2013; Ă?[ j" fÂ? H" fÂ&#x2013; Ă? Â? r \ Ă&#x2030; Ă O Âş\ ÂŚ ĂŹ r{ Â&#x2122;Ă´ Â&#x152; Ă&#x2021; . Â&#x2DC; Ă?: x ĂĄ Â&#x; Ă&#x201D;Â&#x2013; Ă?[ j" f ç Â&#x2013;\ Ă&#x;  Ă&#x2026; Ă&#x2019;/7 xÂ&#x203A; ĂĄ a> ' (master/slave relationship)\ ÂŚ+ A$ Ăž
Ă 9, Ă&#x2026; Ă&#x2019;ĂĄ Ă&#x201D;Â&#x2013; Ă?[ j" fÂ? HÂ Â&#x2022;\ Â&#x152; _ O Ă&#x203A; ÂźH Ă&#x2014; ÂŚ` ÂŚ &
Ăą # Â&#x152;7 x5 ĂĄ qĂĄ Ă&#x2026; Ă&#x201D;Â&#x2013; Ă?[ j" f\   Â&#x2022;\ Â&#x152; ` O Œ½ Ă&#x2030;{ + Â&#x153;Ă´ Š Ă&#x2021; .
1.5
1.7
â&#x20AC;˘ Â&#x2122; k
ĂŤ Ă&#x2018;k 5 â ÂŤ` g(real-time system)Â&#x201C; rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ j" f Â&#x2022; Â&#x152; xs l 1 X <s ' â ĂŹ2 §\ ÂŁ  % 3 Ă´ Â? Ă&#x2021;r ç Â&#x2013;] Ă&#x; jÂ&#x20AC; Â&#x2022;s Â? e ` Â&#x201D; ÂŚ : M 6 xÂ?  a ) . â&#x20AC;˘ zr ´ ç Â&#x2013;r Ă&#x; Ă&#x203A; Âź% Â&#x203A;_ 7 ĂŽ r%
^ ò Â&#x2030;] jÂ? HÂ&#x2DC; Ă?: x: Â&#x; ¤Ă&#x192; ÂŁ Âş3 q& l 6 h x  s .
Ă&#x2DC;Â? Z Ă&#x201E; mS Â&#x2DC; Â Â&#x17D;y Ă°
â&#x20AC;˘ s r Ă&#x203A; Âź% Â&#x203A;Â&#x201C; 7 rW Ă&#x2030; 1Ă Ă&#x201D;0 >Ă&#x; Âź\ ÂŚ: xK Â&#x; : xÂ&#x2019; Â&#x; # Â&#x152;Ă&#x2022; ÂŞl 0 x p ÂŚ] ` j/ NĂ´ B Ă&#x2021; .
â&#x20AC;˘ z ´r ç Â&#x2013;Ăľ Ă&#x; Ă&#x2DC; Ă&#x201D; Â? H Â&#x201C; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź r Ă&#x2030; Â? r> Ă&#x2030; hÂĽ s Ă&#x2020; . â&#x20AC;˘ z ´r ç Â&#x2013;r Ă&#x; Ă&#x203A; Âź% Â&#x203A;_ 7 ĂŹ rĂ&#x20AC; Ă&#x201C;
â&#x20AC;˘ ĂŹĂ r Â&#x2013;r Ă&#x; Ă&#x203A; Âź% 7 Â&#x203A;Â&#x201C; r Ă&#x2030; Ă&#x2014; ĂŚĂĄ Ă&#x201D;Â&#x2013; Ă?[ j" fr Ă&#x203A; Âź% Â&#x203A;Ăľ 7 Ă° Ă? t ø Â&#x2013; Ă?# Â&#x152; QĂĄ Ă&#x201D;Â&#x2013; Ă?[ j" f\ ÂŚ 6 x  t ĂŤ Â&#x2013;x Ă&#x; 9 ½ Ă&#x2039;+ + AI Ăž m Â&#x201C; ÂŚÂ&#x2122; è ½ Ă&#x2039;(loosely coupled) + + AI Ăž s 9, ( Ă&#x2030; Â&#x17D; Ă&#x201C;' ! QĂ&#x203A; Âź 9 t! Ăž ` 3 ÂŚ/ NĂ&#x201E; B Âť t Ăş § ¡Â&#x201C; ÂŚ, W 1Ă Ă&#x201D;0 >Ă&#x; Âź\ ÂŚs 6 x  # Â&#x152;: x Â&#x; Â&#x2019; Ă´ Ă&#x2021; .
â&#x20AC;&#x201C; 7 Â&#x2026;~ ø Ă&#x160; 5 Â&#x2122;
k ĂŤ Ă&#x2018; k 5 â ÂŤ` g(hard real-time system): Ă&#x2014; ĂŚâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź šô Ă&#x2021; Â&#x2022;\ Â&#x152; s O &
K Ăą Â&#x201D; r ç Â&#x2013;? Ă&#x; /\  ¢ aÂŤ Ă&#x2018; d` Â&#x2020; H ÂŚÂ&#x2DC; Ă? Â&#x153;Ă´ Š Ă&#x2021; . s \ ÂŚ0 AK r Ă&#x203A; Âź% 7 Â&#x203A;? /\  e Â? Â&#x201D; H ¸Â&#x17D; Â&#x2014; Ht Â&#x192; Â&#x201C; r% Ă&#x2030; 3 Ă´ Â? Ă&#x2021;r ç Â&#x2013;] Ă&#x; jĂ´ Ă&#x2021;` ÂŚ Â&#x201D; . â&#x20AC;&#x201C; Âľ Â&#x201D; ĂŹ ÂŞĂ&#x203A; S Ă&#x2013; Â&#x2122;
k ĂŤ Ă&#x2018; k 5 â ÂŤ` g(soft real-time system): Ă&#x2014; ĂŚâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź šô Ă&#x2021; z ´r ç Â&#x2013;  Ă&#x; Â&#x2022;\ Â&#x152; Â&#x201C; O r Ă&#x2030; Â? r  Ă&#x2030; Â&#x2022;\ Â&#x152; Â&#x2DC; O Ă? Ă&#x201E; ÂşÂ&#x201A; Ă H0 A\ ÂŚ t Â&#x201C; ÂŚz ´' Â?á Â&#x; &t ĂŤ Â&#x2013;% Ă&#x; 3 Â? & >
K Ăą Â&#x201D; r ç Â&#x2013;? Ă&#x; /\  ¢ aÂŤ Ă&#x2018;H d` Â&#x2020; ÂŚÂ&#x2DC; Ă? Â&#x153; Š t Â? H §Â? Ăş ¡ H .
â&#x20AC;˘ W 1Ă Ă&#x201D;0 >Ă&#x; ÂźÂ? H 6 x  Â? HĂĄ Ă&#x201D;Â&#x2013; Ă?Â&#x17E; Ă?c t, } + Â&#x153;_ Š Ă&#x; Âźl , Â&#x201E; 5 x Ă&#x2026; B ^ Â&#x2030;\  Ï rĂ&#x20AC; Ă&#x201C;½ Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . } Â&#x153;_ Š Ă&#x; Âźl \  " f H LAN (Local Area Network), MAN (Metropolitan Â? Area Network), WAN (Wide Area Network)Ă&#x153; ÂźÂ&#x2013; Ă?ĂŹ r Ă&#x20AC; Ă&#x201C;Ă´ Ă&#x2021; .
1.8 1.5.1
z Ăź > T Â&#x17D; Ă&#x2026;² š Â&#x17D;-" e! aS  Â&#x17D;y Ă°
Ă&#x2026;6 Â&#x153; Â&#x201C; Ă&#x17E;S Ă&#x201C; Â Â&#x17D;y Ă°
â&#x20AC;˘ ĂŤ Ă&#x160;@ /6 xr  Ă&#x203A; Âź% Â&#x203A;(handlheld system): W 7 1Ă Ă&#x201D;0 >Ă&#x; Âź: xÂ&#x2019; Â&#x; 0 s xĂ´ p Ă&#x2021; PDA (Personal Digital Assistant) ¢ ¸Â? H ĂŤ@ Ă&#x160; /Â&#x201E; oĂź <°  Â&#x201C; Ăş rr Ă&#x2030; Ă&#x203A; Âź% Â&#x203A; 7
â&#x20AC;˘ " f! Qr Ă&#x203A; Âź% 7 Â&#x203A;Â&#x201C; r Ă&#x2030;Ă&#x; Âź> > Ă Â&#x2013;" Ă&#x; f! Qr Ă&#x203A; Âź% 7 Â&#x203A;(computeserver system)Ăľ
{ 9 " f! Q(file-server system)Ă&#x153; Âź Â&#x2013; Ă?ĂŹ rĂ&#x20AC; Ă&#x201C;½ Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; .
â&#x20AC;˘ Ă&#x160; ĂŤ@ /6 xr  Ă&#x203A; Âź% Â&#x203A;_ 7 : ¤f ÂŁ
ç â&#x20AC;&#x201C; h &Â&#x201C; rB Ă&#x2030; jÂ&#x2014; ¸o â&#x20AC;&#x201C; ĂĄ Ă&#x201D;Â&#x2013; Ă?j [Ă&#x203A; Âź_ $
0 Ă xs p { 9 ĂŹ Ă? PC\ ø  q K Â&#x153;@ Š /& h ÂźÂ&#x2013; Ă&#x153; Ă?b # Â? Q Â&#x201D; . s Â&#x201C; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź rĂ&#x160; Ă&#x2030; ĂŤĂ&#x17D; t6 Â&#x2030; xr  Ă&#x203A; Âź% 7 Â&#x203A;_ Ă&#x; Âź Ăź l <Â&#x201E; § 4 6 xĂŤ  H] jM :ĂŤ Hs . â&#x20AC;&#x201C;  Â&#x2022;Â&#x201C; Â&#x152; r Ă&#x2030; oÂ&#x20AC;
â&#x20AC;&#x201C; > Ă Â&#x2013;" Ă&#x; f! Q rĂ&#x203A; Âź% Â&#x203A;: 9 7 t Ăž s Â&#x192; Ă Ă&#x201D;Ă&#x153; ÂźÂ&#x2013; Ă?Ă&#x201A; Ă&#x2019;' â&#x20AC;Ť×&#x203A;â&#x20AC;Ź š A` Ăľ ' ÂŚ~ Ă&#x17D; Ă&#x192; ÂŞ Ă&#x2022; ` â&#x20AC;Ť×&#x203A;â&#x20AC;Ź ÂŚ@ /Â&#x2019; Ă&#x192; ÂşÂ? ' Â&#x;K ĂŻ r 6 §\ ÂŁ  9 t Ăž s Â&#x192; Ă Ă&#x201D;\  > Ăľ \ · &[ t 9ĂŻ r . â&#x20AC;&#x201C;
{ 9 " f! Q rĂ&#x203A; Âź% Â&#x203A;: 9 7 t Ăž s Â&#x192; Ă Ă&#x201D;\ Â >
{ 9 r Ă&#x203A; Âź% 7 Â&#x203A;Â&#x201C; ' ` Â&#x2026;s Ă&#x203A; Âź\ ÂŚ] j/ N B # Â&#x152;Ă&#x2026; Ă&#x2019;9, 9 t Ăž s Ă Â&#x192; Ă&#x201D;Â? Hs Â&#x201C; ' ` Â&#x2026;s Ă&#x203A; Âź\ ÂŚ: xK Â&#x;
{ ` 9 ÂŚĂ&#x2019; t$ q
, Ă t q Ă&#x152; Â&#x2019; , Â&#x2022;] Â&#x152; j1 x` p Œ½ Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; .
1.6
Ă&#x2021;S m á Â&#x2021; mS Â&#x2DC;  Â&#x17D;y Ă°
â&#x20AC;˘ ĂŤ Ă&#x160;@ /6 xr  Ă&#x203A; Âź% Â&#x203A;Â&#x201C; 7 rĂž Ă&#x2030; jH \  bluetoothĂź <°  Â&#x201C; Ăş rĂ Ă&#x2030; ÂşÂ&#x201A; xÂ&#x2019; Â&#x; : l Ă&#x2022; t` Ăź ÂŚs 6 x  # Â&#x152;Â&#x201C; ' ] Ă&#x2026; X H` ÂŚ] j/ NĂ´ B Ă&#x2021; .
Ăš Ă&#x2030; mÂ&#x2030; mS Â&#x2DC; Â Â&#x17D;y Ă°
1.9
Ă&#x2C6;Â&#x203A; e ĂĽ ½Ă&#x2039; Ă&#x160; Sò ĂżĂ&#x; & Ă&#x2039; O
â&#x20AC;˘ Ă Â&#x153;Â&#x201A; Ă&#x201C;l ½ ( Ă&#x2030; Â&#x17D; Ă&#x201C;h A¨ Â&#x160; 8
Â&#x201C; â rĂ&#x2014; Ă&#x2030; ĂŚÂ&#x20AC; Â&#x153;| Š Ă&#x2014; 9 ĂŚ( Ă&#x2030; Â&#x17D; Ă&#x201C;h A¨ Â&#x160; 8
s â 3 % . W 1Ă Ă&#x201D;0 >Ă&#x; Âźl Ă&#x2022; t, : Ăź ¤y ÂŁ Ă&#x201E; ÂťÂ&#x201A; : xÂ&#x2019; Â&#x; l Ă&#x2022; t_ Ăź Âľ Ă?² 1 Â&#x2DC; Ăş Ă?ĂŹ Â&#x2013; rĂ Â&#x2013;( Ă&#x; Ă&#x2030; Â&#x17D; Ă&#x201C;h A(distributed computing) ¨ Â&#x160; 8
s â 1 x p Â&#x153; Š  % i . Ăž jH \  Â? H Ă ÂşÂ&#x201A; : xÂ&#x2019; Â&#x; l Ă&#x2022; tĂľ Ăź Â&#x2122; è+ A, Ă&#x160; Ăž ĂŤ /6 @ x(  Ă&#x2030; Â&#x17D; Ă&#x201C;' Ă&#x2014; ÂźJ ?# Ql Ă&#x2022; t_ Ăź Âľ Ă?² 1 Â&#x2DC;Â&#x2013; Ăş Ă?s 1 x( l Ă&#x2030; Â&#x17D; Ă&#x201C; A(mobile computing) ¨ h Â&#x160; 8
s â 1 x p Â&#x153; Š % i .
â&#x20AC;˘ Â&#x2122;
Ă 5 k â ÂŤ` g(clustered system)Â&#x201C; r# Ă&#x2030;
§ ĂŽ =r > Ă&#x203A; Âź% 7 Â&#x203A;, ĂŹ r Â&#x2013;r Ă&#x; Ă Ă&#x203A; Âź% 7 Â&#x203A;Ăľ Ă° Ă? t ø Â&#x2013; Ă? Ă&#x2014; ĂŚ CPU\ ÂŚ 6 x  t ĂŤ Â&#x2013; Ă&#x; # Â&#x152; Q> h_ r Ă&#x203A; Âź% 7 Â&#x203A;` ÂŚx 9 ½ Ă&#x2039; + # Â&#x152; 6 xĂ´  Ă&#x2021; Â? H8 ¤ ÂŁ \ Â&#x20AC;  " f Ă&#x2DC; Ă&#x201D; . â&#x20AC;˘ | 9 ĂŠ Â&#x2013; Ă&#x; o(clustering)_ 3 q& l Â&#x201C; h rZ Ă&#x2030; }Â&#x201C; r 6 Ă&#x2030; x$ Â
s Ă . 3
• ' Å_ µ ϲ 1 ú Ð ³F & _ ( É Óh A¨ 8
` â ¦Û R /l ì Í ø É ( Óh As ¦¸ ô Ç . • j þH \ Hz ´r ç î ß r%
^ ò ] j\ ¦y 7 xl á > ü < u © \ ? / © # 6 x ¦e . s ( É Óh A¨ 8
` â ¦ Z e n × ¼( É Óh A(embedded computing) ¨ 8
s â Ç ô . s ¨ 8
\ â 6 x÷ & Hî r%
^ ò ] j H B © j ¸o ü <° ú r É ¦/ L å l0 x p rj É ]/ N B t · § ú H .
4
c °2003, sangjin@kut.ac.kr
* <* Ö = å i< K: ~ ¡q ç { ¡È 02 A. Silberschatz, P.B. Galvin, G. Gagne Operating System Concepts, Sixth Edition, John Wiley & Sons, 2003.
Part I. Overview
2.1
!
<Õ ªa > 2.1> Ë u © I © _ s ^ ¦ (2) ' X à O Ô_ 7 xÀ á Óì r$ 3 (3) : ¤& £
ñ ' X à O ÔÃ º ' ( ' X à O Ô7 ' ¸ Ö 6 x) (4) Ð a ' a ) I © \ ¦ ¶ " é 4 © ¤) ¦ " ð 3 r ` O \ ¦F > h
å È e ½' [S y ð º
2
å È e ½' [S y 8 ð ý ÞX Ò l c
• & @ ³ /_ # 6 3 x( É Ó' H/ NÄ B » aÅ ) Òl % 3 u © \ ] X H ` ¦] j/ N B H/ N: B x! QÛ ¼\ _ K a CPUü ) < # Q> h_ u © ] j# Ql (device controller) н ¨$
í &# ÷ Qe .
2.2
I/O º
• © u ] j# Ql \ s _ © u © ] j# Ql \ | cà ¨ ºe .
– © u ] j# Ql : y u © (n Û ¼ß ¼, ¸n ¸ u © , q n ¸n Û ¼e ¦Y Us )\ ¦ ao ' ô Ç .
• © u ] j# Ql Ht % ! i Q( ü <Y
> > h_ : ¤Ã £ º3 q& l Y h U Û t ¼' \ ¦Ä »t ô Ç .
– © u ] j# Ql ü < CPU H #
î ' Ü ¼ Ð Ã º' ÷ &Ù ¼ Ðs [ t þ rÅ É Òl % 3 u © ] X H\ @ /K
Ô â tô q Ç . Å Òl % 3 u © ] j# Ql Hs [ t_ þ ] X H` ¦1 x l l oK ï r .
• © u ] j# Ql H aÅ ) Ò u © ü <t % ! i Q( ç ß X \ <s ' s 1 x` l ¦Õ e þ . s ! Q( _ ß ¼l HÅ Ò u © \ Ø Ô .
• (É Ó' % 6 §½ £ ¨1 x÷ l & íl \ z ´' | cá ¨ Ô ÐÕ ª s þ Ï 9 כ ¹ . s Ô á ÐÕ ªÏ ` þ ¦É Ùç Ãâ «ç é hè 5 « × Ü «^ 9 g(bootstrap program)s ô Ç . s á Ô ÐÕ ªÏ þ r É Ð: x( É Ó' × ¼J ?# Q? /\ ROM(Read-Only Memory)\ $ ÷ © &# Qe .
2.2.1 I/O ß Ã Å' [. ɲ n • I/O` ¦r l 0 AK CPU H u © ] j# Ql ? /\ e HY Ut Û ¼' \ & X h ]ô ÇX <s ' \ ¦& F h ô Ç . ] j# Q l Hs ` כ ¦ # # Q ' " 1 x` l ¦2 [½ Ét + &
ñ Ç ô . { 9 Ø ¦§ _ 4 à º ' s = Q å Ð: x ' X à O Ô\ ¦ xK : CPU\ Õ ª z ´` ¦: x Ðô Ç .
–  Òà ÔÛ ¼à Ôê á Á Ô ÐÕ ªÏ þ r É ¸ H × ¼J ?# Q\ ¦ íl o ¦ î r%
^ ò ] j & V ` , ¦ Å Òl % 3 u © \ & F h ô ÇÊ ê\ & V ` , ¦z ´ ' ô Ç .
• { Ø 9 ¦§ _ 4 ¿ º t + AI þ – l 1l x d { 9 Ø ¦§ (synchronous I/O): { 4 Ø 9 ¦§ s 4 r ÷ & כ ¹' Aô õ Çá Ô Ð[ j" f H{ Ø 9 ¦§ s 4 ¢ a Ñ| « cM ¨ : t l ; 2 . – q 1 xl l d { Ø 9 ¦§ (asynchronous I/O): כ 4 ¹' Aô õ Ç Ô á Ð[ j" f H{ Ø 9 ¦§ s 4 ¢ a« Ñ| cM ¨ : t l t o · § ú ¦> 5 q Å r É \ ` O ¦Ã º' ô Ç .
• (É Ó' \ " f | _ µ ÏÒ 1 t q rê É >ç ÃÝ
ç Ã(interrupt) ñ¢ ¸ Hç é h(trap)` 5 ¦ x :K î r%
^ ò ] j\ : x Ð a ) . à Ôê Á r É r´ É ú ÐV \ü @(exception) ô Ç . – à ÔX à O Ô H × ¼J ?# Q r Û ¼% 7 _ Ã º' â ì 2 §` £ ¦ Ë ¨l 0 AK µ ÏÒ 1 t q H s כ ¦, à Ôê Á r É èá Ôà ÔJ ?# Q µ ÏÒ 1 t q H à ÔX à O Ôs .
• { Ø 9 ¦§ _ 4 ¢ a« Ñ\ ¦l o H~ ÓZ ½ O
– × ¼J ?# Q H CPU\ : ¤& £
ñ ñ\ ¦ Ð? /# Q à ÔX à O Ô_ µ ÏÒ 1 t` q ¦· ; ú 2 .
– : ¤Ã £ ºô Ç"
§ î
# î Q 6 x – @ /l À Òá Ô 6 x
– èá Ôà ÔJ ?# Q H k â «` g ¡ õ· (system call)s H: ¤& £
ñ í ` ß ¦z ´' # {  9 Ò Ðµ ÏÒ 1 tr q v ¸À Ó(0 ¾ ºl ,  Ò& ½ h Ëô + ÇÅ Òl % 3 © u ] H X ) M :ë H\ µ Ï& 1 Ü h ¼ е ÏÒ 1 t q a ) .
• ß ë CPU { 9 Ø ¦§ ¢ 4 a« Ñ\ ¦ Ó ½ l © o ô Ç ô \ Ç{ Ø 9 ¦§ ë 4 0 ß x p . s כ r É | Ðf à t · § ú . # Q{ Ø 9 ¦§ ` 4 ¦#
î ' Ü ¼ Ðà º ' ½ Éà + ºe ¦, { 9 ¦§ Ø õ 4 > í ` ß ¦#
' î ½ ÉÃ + ºe # Q r Û ¼% 7 _ ´ òÖ ¦ ¦Z ` }{ Ã 9 ºe .
– ' X à O Ô µ ÏÒ 1 t÷ q & CPU H ³F & Ã º' × æ \ ` O ¦3 "Æ Ò ¦, î r%
^ ò ] j? /\ e H: ¤& £
ñ ï× ¼\ ¦z ´' ô Ç . sz ´' s = Q å r " 3 r ð \ ` O ¦F > hô Ç .
• î% r
^ ò ] j H# Q> h_ { Ø 9 ¦§ כ 4 ¹' A` õ ¦ ao ' l AK 0 Õ ªa > 2.1õ Ë ° ú r É u © I © _ s ^ ¦(device status table)` ¦Ä »t ô Ç . ¢ ¸ô Çy u © @ /l ©\ Ç ¦Ä »t ô Ç .
– l r& : h ' X à O Ô1 x l ¶ " éo (1) ³F & \ ` O ¦3 "Æ Ò ¦, ³F & I © \ ¦ Ð a ' 1
DMA º
2.2.2
• Ò Ål % 3 u © ü < CPU_ 5 q Å ¸ s \ ¦F G4 ¤ l 0 A Å K Òl % 3 u © ü < CPU s \ H r (cache) ¦ H ¦5 qB Å j ¸o ! Q( \ ¦ 6 xô Ç .
• 5 q Å ¸ Ö ¼ ;{ 2 9 Ø ¦§ 4 u © H _ { 9 § ` 4 ¦~ Î Ã r É Ê ê\ 6 §{ £ 9 § 4 t CPU H rÄ É »6 xô Ç \ ` O ¦ Éà + ½ ºe . Õ ª Q ì Í@ ø / Ð{ 9 Ø ¦§ 4 u © _ 5 q Å ¸ Ø Ô à ÔX à O Ô -Á º > µ ÏÒ 1 t q # CPU rÄ É »6 xô Ç \ ` O ¦½ Ér + ç s ß & h .
2.3.2
• l n Û ¼ß ¼ He ¦A ' (platter) ¦ H# Q> h " _ ¶+ é Aó þ ÍÜ ø ¼ н ¨$
÷ í &# Qe Ü ¼9, s e ¦A ' H " r ¶+ é A þ ¸ _ ª à ÔÏ (track)Ü þ ¼ Ð * '# Q . à Ô þ Ï r É r # Q> h_ ! o' l Ð * '# Q .
• s ` כ ¦ K l 0 AK 6 x H l Z s O DMA (Direct Memory Access)s . DMA ~ Ód ½ \ " f © u ] j# Ql HX <s ' ^ ¦2 ¤` ¦ CPU_ a# ' \ s O f Å X ] Òl % 3 u © Ðs 1 x l 9, ' X à O Ô H s à Ô 0 ß é A ^ ¦2 ¤é 0 ß A е ÏÒ 1 tô q Ç .
• ú ° r 0 É Au \ e H à ÔÏ _ þ ¸6 §` £ ¦ z ´; 2 8(cylinder) ô Ç . • nÛ ¼ß ¼_ 5 q Å ¸ Hn Û ¼ß ¼\ " f( É Ó' ÐX <s ' \ ¦ 5 x Å Hq Ö ¦ 5 xÒ Å ¦(transfer rate)õ e _ ] X Hr ç (random-access time)s ß ¦ H0 Au
r ñ & ç (positioning time)\ ß _ K &
ñ a ) .
$ [X s ê º
2.3
• (É Ó' á Ô ÐÕ ªÏ s þ ´ ' z & ÷l 0 AK " f HÅ Òl % 3 © u \ & F h ÷ &# Q ô Ç . Å Òl % 3 u © \ ¦ r´ É ú Ð _ e ] H X B j ¸o (random-access memory) ô Ç .
• e _ ] X Hr ç _ ß ½ ¨$
כ í ¹ è
• CPU f ] ] X H X ½ ÉÃ + ºe Hl % 3 u © HÅ Òl % 3 u © ÷ rs .
– Ã Ò Ð or ç (seek time): n ß Û ¼ß ¼ ` ¦" ¶ é H ´ z ; 2 80 Au Ð` l HX < o Hr ç ß
• Å Òl % 3 u © H Ð: x1 x& l e h _ ] X HB j ¸o (dynamic RAM) ¦ Hì Í ø ¸^ B j ¸o \ ¦ 6 xô Ç .
– r t (rotation latency): n Û ¼ß ¼ r # ¶ " é H! o' l n Û ¼ß ¼ 0 Au \ Z ~s HX < o Hr ç ß
• Å Òl % 3 u © _ ô Ç ½ ¨$
é í 0 ß A\ ¦ 0 >× ¼(word) 9, y 0 >× ¼ H1 q: l ¤ô £ ÇÅ Ò è\ ¦ .
• Ð : xe ¦A ' H· ª û r É Ð ñ} Ü ¼ ÐW # = e t ë K ß ¼ × l ³ ð ` ¦ H < r © ~ ´Ã ºe Ü ¼9, s
Ä â º\ H4 ¤½ ¨½ Éà + º\ O .
• s & © Ü h ¼ Ð H ¸ HÔ á ÐÕ ªÏ õ þ X <s ' \ ¦Å Òl % 3 u © \ %
½ ò ¨& Ü h ¼ Ð$ © ¦z ·t ë ß 6 §¿ £ º t s Ä »M :ë H\ 0 x p t ú § · .
• nÛ ¼ß ¼× ¼ s Ú Ô H I/O ! QÛ ¼\ ¦: xK ( É Ó' \ ÷ &# Qe Ü ¼9, ³F & V o , 6 x÷ & H~ Ód ½ r É 6 § £ ° õ ú .
– s Ä » 1. Å Òl % 3 u © _ ¼ ßl – s Ä » 2. Å Òl % 3 u © _ 6 fµ Ï$ 1
í
– EIDE (Enhanced Integrated Drive Electronics)
s ë H] j\ ¦K l 0 AK Ð ¸l % 3 u © \ ¦ 6 x Ç ô . Ð ¸l % 3 u © H´ § ú r É _ ª X <s ' \ ¦%
½ ò ¨ Ð a½ ' ÉÃ + ºe # Q ô Ç .
– ATA (Advanced Technology Attachment) – SCSI (Small Computer-Systems Interface) • < Xs ' _ §¨ 8 r: É ¤Ã £ ºô Ç] j# Ql \ ¦: xK s À Ò# Q . ( É Ó' = Q\ å H ñÛ ¼à Ô] j# Ql e Ü ¼ 9, n Û ¼ß ¼ ^ ? /\ Hn Û ¼ß ¼] j# Ql e .
• V © o , 6 x H Ð ¸l % 3 u © H l n Û ¼ ß ¼(magnetic disk)s . 2.3.1
M O ±
¤M W ÄX ì sV ê
• nÛ ¼ß ¼] j# Ql H ^ & Ü h ¼ ÐH r \ ¦ t ¦e .
• Memory-mapped I/O: Å Òl % 3 u © _ { 9  ÒÅ Ò è 9 { Ø ¦§ ` 4 ¦0 AK \ V ÷ &# Qe Ü ¼9, s Å Ò è\ " f{ 9 æ ¼ u © Y Ut Û ¼' РÒ' X <s ' \ ¦{ 9 æ ¼ H õ a ) . s ~ ÓZ ½ O r É ¦5 q6 Å x² £ r ú ç ß ¦כ ` ¹½ ¨ H u © \ h &½ Ë + .
• z] ´ jX <s ' Hn Û ¼ß ¼] j# Ql \ _ K n Û ¼ß ¼\ fH " r Ð` t ¦, ñÛ ¼à Ô] j# Ql HH r \ e HX <s ' \ ¦Å Òl % 3 u © Ð` | .
• s ~ ÓZ ½ O rf É § = > íà Ô¢ ¸ H#
§ î = > íà Ô\ a ) © u ü <{ Ø 9 ¦§ ½ 4 É: + M ¸ 6 x a ) . CPU H I/O íà Ô\ ¦ : xK s ü <° ú r É u © ü <X <s ' \ ¦ §¨ ô 8 Ç . X <s ' §¨ ~ 8 Ód ½ r É 6 §õ £ ° ú r¿ É º t ~ Ód ½ s e .
2.4
[X $ sX ê sV ê 8 ý4 « º
• $ © u © _ > 8 x½ £ ¨ ¸\ 0 A\ 0 Au ½ ÉÃ + º2 ¤5 q Å ¸ H Ø Ôt ë ß ¦ s . ¢ ¸ô Ç0 A\ 0 Au ½ ÉÃ + º2 ¤6 f Ï$ 1 µ
s í .
– á Ô ÐÕ ªÏ þ a I/O(programmed I/O): CPU > ) 5 q Å u © _ I © \ ¦ (polling) H~ Ód ½
• º ¿$ © u © _ 5 q Å ¸ s H× æç \ ß rH É r \ ¦ u O [ # F G4 ¤½ Éà + ºe .
– ' X à O Ôl ì Í: ø 6 §X £ <s ' \ ¦% o ½ Éï + rq ÷ & u © ] j# Ql H ' X à O Ô\ ¦: xK Õ ª z ´` ¦ CPU\ · o ú H~ Ód ½
• rÛ ¼% ` 7 ¦½ ¨$
½ í ÉM + :$ © u © _ > 8 x½ £ ¨ ¸\ ¦ç H Ae þ + > ¸ ½ ú ¨$
í $ § ô 4 Ç \ Z } r$ É
0 í x` p ¦ ` 3 % ¦Ã ºe . 2
• ìí r ¨ ß 8
\ â " f H# Q
{ 9 _ 4 ¤ rs : # Q( Ó' É \ ì rí ÷ ß &# Qe ` ¦Ã ºe . " f _ 4 ¤ r\ : @ /ô ÇÌ t q s s À Ò# Qt r4 É ¤ r : ¸ t q Ì ÷ & ¸2 ¤ # ô Ç .
2.5
• × æá Ô ÐÕ ªA b
¨ ç 8
\ â " f H _ á Ô Ð[ jÛ ¼_ ¸À Ó rá É Ô Ð[ jÛ ¼\ > ¸%
ò Ó` ¾ ¦× ¦Ã ºe .
• " fî r%
^ ò ] j Hs ¸À Ó rá É Ô Ð[ jÛ ¼ % \
ò Ó` ¾ ¦Å Òt · § ú ¸2 ¤K ô Ç .
• Ð : x ¸À Ó µ ÏÒ 1 t q × ¼J ?# Q Hà Ôê ` Á ¦µ ÏÒ 1 t q 9, î r%
^ ò ] j Hà Ôê ` Á ¦µ ÏÒ 1 tr q á Ô Ð[ jÛ ¼\ ¦ ] © y j Ð7 x« á Ñr v ¦& ] h ô X Ç ¸À ÓB jr t \ ¦Ø ¦§ 4 # ï r .
<Õ ªa > 2.2> $ Ë © u © _ > 8 x½ £ ¨ ¸ 2.4.1
2.5.1
ú T Þ{ n ¢© ÞX Ò l c
• # Q ¸À Ó Ð Ò' á Ô Ð[ jÛ ¼\ ¦ Ð ñ l 0 AK Ð x : 6 §õ £ ° ú r¿ É º t 1 x l ¸× ¼\ ¦] j/ Nô B Ç . ³F & ¸× ¼\ ¦ ? /l 0 AK × ¼J ?# Q\ s ` כ ¦ ? / H ¸× ¼q à Ô(mode bit) e .
> 0Ë Å S
• CPU X <s ' \ ¦ 9 כ ¹ $ H r \ Õ ªX <s ' e Ht ô Ç . ë ß e Ü ¼ H r \ " f Ð 6 x ¦\ Ü O ¼ Å Òl % 3 u © \ e HX <s ' ¦ \ 6 x t ë s ß X <s ' _ 4 ¤ r` : ¦H r \ Ð aô ' Ç . s כ rs É X <s ' \ ¦/ I¢ B ¸ r 6 x½ É + Ò X S ¦s Z }l M :ë Hs .
– 6 x ¸× ¼: 6 x á Ô Ð[ jÛ ¼ Hs ¸× ¼\ fà " º' ÷ & à ÔX à O Ô à Ôê s Á µ ÏÒ 1 t q ¸m ' ¸× ¼ Ð ¨ 8 a ) . – ¸ m ' ¸× ¼(monitor mode): r´ É ú Ðà »( s $ ¸× ¼(supervisor mode), r Û ¼% 7 ¸× ¼, ¤ £ : ¶ Ý ¸× ¼(privileged mode) ô Ç .
• î "§
# î QH r % 3 ! & ¼ h Ü Ð × ¼J ?# Q\ ¦s 6 x # ½ ¨ ³ & aH ) r ¸e . s כ rî É r%
^ ò ] j a# ' t 3 w l Ù ¼ Ðs õ 3 q\ l " f H À Òt · § ú H .
• ë] H j\ ¦{ 9 Ü ¼~ ´ èt e H"
§ î
# î Q H: ¤¶ £ Ý"
§ î
î ¼ Ü Ðì rÀ Ó ¦s "
§ î
î r É ¸m ' ¸× ¼\ " fë Ã ß º ÷ ' & ¸2 ¤ # á Ô Ð[ jÛ ¼\ ¦ Ð ñô Ç .
• H r _ ß ¼l H] jô Ç÷ &# Qe Ü ¼Ù ¼ Ðs ` כ ¦¸ ú a ' o # r Û ¼% _ 7 $
0 í x` p ¦Z }{ Ã 9 ºe . H r _ ß ¼l ü < §^ &
Õ ñ (replacement policy)` þ ¦¸ ú × þ " ¶ é HX <s ' Hr \ e ` ¦S Ò X ¦` ¦ 80\ " f 99% t Z }{ à 9 ºe .
• 6 x Hî r%
^ ò ] jë s ß Ã º' ½ Éà + ºe H: ¤¶ £ Ý"
î
_ î § Ã º' ` ¦ Â Ò Ì Ã # î r%
^ ò ] jü < © ñ 6 xô Ç . s כ ¹' A` õ ¦ Ð: xr Û ¼% 7 ñØ ¦s 9, ¼J × ?# Q Hs r Û ¼% 7 ñØ ¦` ¦ èá Ôà ÔJ ?# Q ' à O X Ô Ðç Å ß Òô Ç .
• Å Òl % 3 u © H CPUü < Ð ¸l % 3 u © s \ e H H r Ð 6 x| cà ¨ ºe . 2.4.2
© ú# a| º Æ
2.5.2 ø Éû m ÚI s Ä| í º Æ
ø Ç må ËV ¾ Ë R
• 6 x Ô ¦Z & O h { Ø 9 ¦§ כ 4 ¹' A` õ ¦½ Éà + º\ O ¸2 ¤ ¸ H{ Ø 9 ¦§ " 4
§ î
î r: É ¤ £ ¶" Ý
§ î
Ü î ¼ Ðì rÀ Óô Ç .
• $ © u © _ > 8 x½ £ ¨ ¸\ ¦ 6 x ° ú rX É <s ' # QY U 6 \\ rF > ½ ɺ + Ãe .
• 6 x HÕ ªa > 2.3õ Ë ° s ú r Û ¼% 7 ñØ ¦` ¦s 6 x { # Ø 9 ¦§ " 4
§ î
` î ¦z ´' ô Ç .
• ô Ç \ _ á Ô Ð[ jÛ ¼ë 1 ß x l s כ r É Á ºë H] j ÷ &t · § ú H . Õ ª Q # Qá Ô Ð[ jÛ ¼ ° ú rX É <s ' \ ¦] H X ¦ ¸ Há Ô Ð[ jÛ ¼ þ j _ X <s ' \ ¦% ` 3 ¦Ã ºe ¸2 ¤K ô Ç . s ë H] j H × æá Ô Ð[ j" fr Û ¼% \ 7 " f 8¹ ¤d ¡ y .
2.5.3
¤M W ÄX ì sV ê | º Æ
• î% r
^ ò ] j 6 x HÅ Òl % 3 u © %
% ò i r É 6 x Ô á ÐÕ ªÏ Ü þ ¼ РÒ' Ð ñ÷ &# Q 9, 6 x á Ô ÐÕ ªÏ s þ 6 x HÅ Òl % 3 u © %
% ò i r É r É x 6 á Ô ÐÕ ªÏ Ü þ ¼ РÒ' Ð ñ÷ &# Q ô Ç .
– × æá Ô Ð[ j" fr Û ¼% 7 \ " f# QH r \ ° ú rX É <s ' 1 xr l \ rF > ½ ÉM + : _ H r \ " fÕ ªú כ °s
÷ â & rH É r ¸
s â Í% ø ì
÷ ò &# Q ô Ç . s ü <ú ° rë É H] j\ ¦H r { 9 a$ '
(cache coherency) ë í H] j ô Ç . s ë H] j H Ð: x × ¼J ?# Që H] js .
• Ò Ål % 3 u © \ ¦ Ð ñ l 0 AK " f H: ¤& £
á ñ Ô ÐÕ ªÏ þ ] s H X ½ Éà + ºe HÅ Òl % 3 u © %
% ò ` i ¦ &
½ ñ ÉÃ + º # e Q ô Ç . Ð: xl ï rY Ut Û ¼' (base register)ü < Ç> ô Y Ut Û ¼' (limit register)\ ¦s 6 x # s %
% ò i 3
<Õ ªa > 2.3> r Ë Û ¼% 7 ñ Ø ¦` ¦s 6 xô Ç{ Ø 9 ¦§ à 4 º ' õ &
ñ ` ¦ p · . CPU HÅ Òl % 3 u © ] X H` ¦) 6 x l \ s ¿ ºY Ut Û ¼' \ ¦s 6 x # ) 6 x# Â Ò\ ¦ &
ô ñ Ç . 2.5.4
ÞW n ú s% ê iP X sV ê | º Æ
• î% r
^ ò ] j Ó ½ ] © j# Q ¶` Ý ¦S X н Éà + ºe ¸2 ¤K ô Ç . 6 x á Ô ÐÕ ªÏ s þ Á ºô ÇÀ Òá Ô\ 4 R] j # Q¶ Ý` ¦ r î r%
^ ò ] j\ l Å t · §` ú ¦Ã ºe . • s ë H] j\ ¦K l 0 AK s Q\ ¦ 6 xô Ç . { 9
r ñ & ç s ß
õ â ÷ & s Q H ' X à O Ô\ ¦µ ÏÒ 1 t q # î r%
^ ò ] j\ j ]# Q ¶` Ý ¦ | Å . • l ç ß r É ¦&
÷ ñ &# Qe ` ¦Ã ºe ¦, & { h à 9 º ¸e . • r ì r½ É` + ¦ ½ ¨ ³ & l 0 AK " f ¸ s Q\ ¦ 6 xô Ç . s
Ä â ºr ç ½ ß ¨S (time slice)s \ ¦ H ¦
ñ & al ) ç ß ' X à O Ô\ ¦µ ÏÒ 1 tô q Ç . – r ì r½ É\ + " fl ç s ß ÷ &# Q ' X à O Ô µ ÏÒ 1 t q î r%
^ ò ] j H ³F & Ã º ' × æ á Ô Ð[ jÛ ¼ _ I © \ ¦ Ð a ' ¦, 6 § £ Y V_ á Ô Ð[ jÛ ¼ _ I © \ ¦& F h ô Çê Ê\ z ´ ' ô Ç . s õ &
` ñ ¦ HÐ ë o ¨ (context switch)s 8 ô Ç .
4
3.1.3
ø Çå m ËP ¾
c °2003, sangjin@kut.ac.kr
•
{ : Ò 9 t$ q
í \ _ K &
_ ñ a ) aº ' &
ñ Ð_ ¸6 § £
* <* Ö = å i< K: ~ ¡q ç { ¡È 03
• î% r
^ ò ] j H ô ª Ç$ B © ^ \ @ /ô Çç H{ 9 ô Ç H 7 & o  h Ó\ ¦] j/ N B
A. Silberschatz, P.B. Galvin, G. Gagne Operating System Concepts, Sixth Edition, John Wiley & Sons, 2003.
– $ © u © _ Ó to ü & : h ¤$ £
` í ¦ Ho 7 $ é © 0 ß A
{ 9 ÐÆ Ò © oK ï r . •
{ 9 ao ' ü < aº ' aî ) r%
^ ò ] j_ e Á º –
{ _ 9 Ò t$ q
õ í ] j – n Ð 7 o (e ¦ 8)_ Ò t$ q
õ í ] j –
{ õ 9 n 7 Ðo \ ¦ ¸ l 0 Aô Çl í ] ß í j/ N B – Ð ¸l % 3 u © ü <
{ ç 9 \ ß B i
ç – Ñ \ þ O
Part I. Overview
ØW U Æ Ë= _ k< g º
3 3.1 3.1.1
S y ð V Ë~ R ¿} º
3.1.4 ø Éû m ÚI s Äå í ËP ¾
³ z º: g å ËP ¾
• î% r
^ ò ] j_ Å Òe Á º× æ H ô ª Ç × ¼J ?# Q u © _ : ¤$ £
` í ¦ 6 x \ > ¸ ul n H s כ .
• è « ×T zâ «: z ´ '× æ Ô á ÐÕ ªÏ þ
• Ð : x{ 9 Ø ¦§ 4 0 Ar Û ¼% (I/O subsystem)` 7 ¦ 6 x # s l 0 x` p ¦] j/ Nô B Ç .
• á Ô Ð[ jÛ ¼ HÕ ª _ כ eÁ º\ ¦º Ã' l 0 AK CPU r ç , B ß j ¸o ,
{ 9 , { 9 ا ¦ 4 u © ü <° ú r É " ¶s é 9 כ ¹ .
• { Ø 9 ¦§ 4 0 Ar Û ¼% _ 7 ½ ¨$
כ í ¹ è – Q !( a A, H d ç
, Û ¼Û ¦a A(spooling)1 õ ° ú rl É 3 % u © ao ' ½ ¨$
כ í ¹ è – { ì 9 Í& ø h u © ½ ¨1 xl l (device driver)2 s ` Û ¼ – : ¤& £
ñ × ¼J ?# Q\ ¦0 Aô Ç u © ½ ¨1 xl l
• ¶ " é_ ½ É{ + © rá É Ô Ð[ jÛ ¼_ r õ 1 xr l \ s À Ò # Q| 9 à ºe Ü ¼9, 9 כ ¹½ ÉM + : s À Ò# Q| 9 à ºe . • á Ô Ð[ jÛ ¼ H0 x1 p x& l > h h^ ì Í ø á Ô ÐÕ ªÏ þ rÃ É º 1 x& l > h h^ s .
º W sV ê ËP 3.1.5 | ºM ÄX ì å ¾
• ôá Ç Ô ÐÕ ªÏ þ rÕ É ª s כ z ´ ' ÷ & H1 xî l # ß Q> h_ á Ô Ð[ jÛ ¼\ ¦Ò t$ q
½ í ÉÃ + ºe .
• Ò Ål % 3 u © H6 fµ Ï$ 1
s í 9 Õ ª6 x| Ós ¾ ] jô Ç& s h Ù ¼ Ð כ 9 ¹ .
• á Ô Ð[ jÛ ¼ Hr Û ¼% _ 7 \ é O 0 ß A a ) .
• Ð ¸l % 3 u © ao ' ü < aº ' aî ) r%
^ ò ] j_ e Á º
• á Ô Ð[ jÛ ¼ H ß ¼> î r%
^ ò ] j á Ô Ð[ jÛ ¼ü < 6 x á Ô Ð[ jÛ ¼ н ¨ì r a ) .
– / Nç B ß ao ' – $ / © Nç B ½ ß É{ + © – n Û ¼¼ ßÛ ¼H × ¦a A: n Û ¼ß ¼ü < aº ' aכ ) ¹' A_ õ ´' z í H" f\ ¦ &
ñ Hë H] j
• á Ô Ð[ jÛ ¼ ao ' ü < aº ' aî ) r%
^ ò ] j_ e Á º – 6 x ü <r Û ¼% 7 á Ô Ð[ jÛ ¼_ Ò t$ q
õ í ] j 3.1.6
– á Ô Ð[ jÛ ¼_ × æt ü <F > h
• î% r
^ ò ] j HW 1à Ô0 >ß ¼] X H` ¦
{ ] 9 X Hõ ° ú r É AI þ + Ð{ ì 9 Í ø oK ï r .
– á Ô Ð[ jÛ ¼1 xl l o – á Ô Ð[ jÛ ¼ç : ß x
• î% r
^ ò ] j Hy 7 x: á x á Ô Ð Ðc t` + ¦t " ¶K é 9, y 7 xW á 1à Ô0 >ß ¼ u © ½ ¨1 xl l \ ¦0 Aô Ç ' ` s ¼\ Û ¦] j/ NK B Å Ò# Q ô Ç .
– § Ì Ã I © (deadlock) % o 3.1.2
2² 5 ùÉ Ë S
¤M W ÄX ì sV ê å ËP ¾
1f ] X
Ø 9 { ¦§ ` 4 ¦ t · § ú ¦Û ¼Û ¦a An 7 Ðo \ { 9 Ø ¦§ ½ 4 ÉX + <s ' \$ ¦ © Õ ª{ 9 Ø ¦§ ` 4 ¦{ { © H daemons Û ¼Û ¦a An 7 Ðo \ e HX <s ' \ ¦{ Ø 9 ¦§ ô 4 Ç . Û ¼Û ¦a A r CPU É \ õ O { Ø 9 ¦§ ` 4 ¦#
' î Éà + ½ ºe > K Å Ò9, ° ú r{ É 9 Ø ¦§ כ 4 ¹' A_ õ Ç ©\ ¦ë [ ß tà þ ºe ¸2 ¤K ï r . 2 u © \ ¦] j# Q Há Ô ÐÕ ªÏ Ü þ ¼ Ð" fy u © H ë _ ß ¦Ä »ô Ç
§ î "
# î Q| ½ 9 Ë` + ¦ . á Ô ÐÕ ªÏ þ r{ É 9 ì Í{ ø 9 Ø ¦§ " 4
§ î
` î ¦s 6 x # r% î
^ ò ] j\ ¦: xK u © \ ¦ 6 x 9, s M : u © ½ ¨1 xl l H{ ì 9 Í" ø
§ î
î ¦ ` _ ¦Ä »_ "
§ î
Ü î ¼ Ð Ë ¨# Qz ´' K ï r .
• Å Òl % 3 u © a ' oü < aº ' aî ) r%
^ ò ] j_ e Á º – l % / 3 Nç B _ ß 6 x ³S & ! ao ' – & F h ½ Éá + Ô Ð[ jÛ ¼ × þ – l % / 3 Nç B _ ß ½ É{ + õ © rà º 1
3.1.7
| º ÆS y ð
• × æ 6 x , × æá Ô Ð[ jÛ ¼¨ 8
\ â " fî r%
^ ò ] j Hy á Ô Ð[ jÛ ¼\ ¦ rá É Ô Ð[ jÛ ¼ ÐÂ Ò' Ð ñK Å Ò# Q ô Ç .
2 process B
kernel
(a) B jr t ² ú ¸4 q S
ËI _ ã ËA [ 0V ÄM S y ð
(b) / NÄ B »B j ¸o ¸4 q S
<Õ ªa > 3.1> : Ë x ¸q 4 S • á Ô Ð[ jÛ ¼_ &
ñ 7 © x« á Ñ(end)ü < q &
ñ © 7 x« á Ñ(abort) • á Ô Ð[ jÛ ¼& F h ü <Ã º ' • á Ô Ð[ jÛ ¼_ Ò t$ q
õ í y ] © j 7 x« á Ñ(terminate) • á Ô Ð[ jÛ ¼5 q$ Å
S í 1 \ qx p 9
[ & O
ñ • r ç @ ß /l • | @ /l , | µ ÏÒ 1 t· q a ú > Ë • B j ¸o ½ É{ + õ © K ] j
– Ä »_ Û ¼\ " f H Ð: xÙ Q (shell)s ô Ç . • í Ól ½ \ Hv Ð× ¼\ ¦s 6 xô Ç"
§ î
# î Ql ì Í~ ø Ód ½ s % t 3 ë ß ³F & H@ / Òì r Ä ºÛ ¼l ì Ͷ ø û ¸Ä º~ Ó ½ s d .
ØW U Æ Ë= _ k< g" eR
• á Ô ÐÕ ªA Q_ ¼ o # $
` í ¦A 0K ] j/ N÷ B & H" fq Û ¼ – á Ô ÐÕ ªÏ z þ ´ '
–
{ 9 ao '
– { 9 Ø ¦§ à 4 º '
• • • •
–
{ 9 r Û ¼% 7 ¸ – : x : / NÄ B »B j ¸o , B jr t ² ú – ¸À Ó Ø ¦
{ 9 Ò t$ q
õ í ] j
{ 9 \ l P ü <{ l 9 { l , æ ¼l , F C u (reposition)
{ 9 5 q$ Å
S í 1 \ qx p 9
[ & O
ñ
– u © ao '
• r Û ¼% 7 _ ´ òÖ ¦& î h r%
` ò ¦A 0K ] j/ N÷ B & H" fq Û ¼
• © u 6 xכ ¹' A, õ u © K ] j • { 9 l , æ ¼l , F C u :
{ 9 õ u © HB Ä ºÄ » Ù ¼ Ð Ð: x u © ` ¦
© { 9 ÐÆ Ò © o # 6 xô Ç . • u © 5 q$ Å
S í 1 \ qx p 9
[ & O
ñ • u © _ Ho 7 & Â h Ò Ìõ Ã ] j
– ¶ " é½ É{ + © – r> (accounting) – Ð ñ
3.3
• î "§
K î $ l 3 : 6 x ü <î r%
^ ò ] jç \ ß ' ` s Û ¼ Ð 6 x ÐÂ Ò' "
§ î
` î ¦~ Î Ã z ´' K ï r . "
î
K î § $ l 3 H& V \ , í Ê÷ < &t · § ú H .
3.2
1 shared memory
• Ð ñ: ( É Ó' rÛ ¼% \ 7 " f&
_ ñ ô Ç ¶ " é\ @ /ô Çá Ô Ð[ jÛ ¼ü < 6 x _ ] X H` ¦] j# Q l 0 Aô ÇB j& m 7 § £ 3.1.8
process A
S y ð Æû Ú s
– &
ñ ÐÄ »t ÐÃ º
• r Û ¼% 7 ñØ ¦ rá É Ô Ð[ jÛ ¼ü <î r%
^ ò ] jç \ ß ' ` s Û ¼\ ¦] jB N /K ï r .
• r ç õ ß ± ú כ ¹' A õ • r ¼ Û% 7 &
ñ ÐS 1 \ qx p 9
[ & O
ñ • á Ô Ð[ j¼ Û,
{ 9 , u © 5 q$ Å
S í 1 \ qx p
[ 9 O
ñ &
• ´ § ú r É ¦/ Lá å Ô ÐÕ ªA b
ç # Q(\ V, C, C++, Java) H 6 x f ] r X Û ¼% 7 ñØ ¦` ¦½ Éà + ºe ¸2 ¤t " ¶ é Ç ô . Õ ª Q ? / Ò4 ¤¸ ô ú Çõ &
ñ r É 6 x H· ú 9 כ ¹ \ O ¸2 ¤¸ u n ï r .
– : x (B jt t ² ú ¸4 qõ S / NÄ B » B j ¸o ¸ q): Õ S 4 ªa > 3.1 Ë Ð Ã ¸
• r Û ¼% 7 ñØ ¦½ ÉM + :î r%
^ ò ] j\
{ s 9 2 §õ £ ° ú r É Æ Ò &
ñ Ð\ ¦ ² K ú ô Ç .
• • • •
• î r%
^ ò ] j\
p ' \ ¦ ² ú H~ ÓZ ½ O – Y Ut Û ¼' \ ¦: xK f ] X ² ú – B j ¸o \ $ ô © ÇÊ ê\ Õ ª _ כ r Å Ò èü < ß ¼l \ ¦Y Ut Û ¼' \ ¦: xK ² ú
3.4
– Û ¼× ½ þ ¨ ¸\ ¦s 6 x
: x Ò t$ q
x í 9
] j X <s ' 5 xx Å 9
à º I © &
ñ Ð ² ú " ¶ é u © Â Ò Ìx à 9
] j
S y ³ ð z º§ q
• rÛ ¼% á 7 Ô ÐÕ ªÏ þ rá É Ô ÐÕ ªÏ > þ hµ Ïõ 1 z ´' ` ¦0 A Ǽ ô o # ô Ǩ 8
` â ¦] j/ NK B ï r .
• r Û ¼% 7 ñØ ¦ _7 xÀ á Ó
• r Û ¼% á 7 Ô ÐÕ ªÏ _ þ 7 xÀ á Ó
– á Ô Ð[ jÛ ¼] j# Q 2
(a) q l © > ¸4 q S
(b) l © > ¸4 q S
<Õ ªa > 3.2> Ä Ë »_ Û ¼r Û ¼% 7 ½ ¨ ¸
<Õ ªa > 3.3> r Ë Û ¼% 7 ¸q 4 S 3.5.3 T ± z º& , Ç f
–
{ 9 ao ' : \ V) ÐÒ Ã ol
• s ß ¼ Ð& V : & , V \ , = G 9 כ ¹ô Çl 0 xë p t ß ¸ ¤½ 2 ¨$
í a& ) V ,
– I © &
ñ Ð: \ V) 1 x2 p ¤&
ñ Ðl 0 x p –
{ 9 ¼ | # 9 : \ V) ë H" f¼ | # l 9 – á Ô ÐÕ ªA b ç
# Qt " ¶: \ é V) (
{ 9 Q, # Q! r l ¦ ^ Q, ' á Ôo '
• / @³ ð& h s ß ¼ Ð& V , r Carnegie Mellon @ É / Æ < " \ f> hµ Ïô 1 Ç Machs .
– á Ô ÐÕ ªÏ & þ F h ü <z ´ ' : \ V) n ! Q
• s ß ¼ Ð& V _ , © & : S h X _ © 6 xs $
, Z í } rî É ß
(´ í $ § ú r É s כ 6 x ¸× ¼\ " f1 x l ), Z } r É ø @
, Z í $ } rs É d $
(portability) í
– : x
3.5 3.5.1
S y ð º
3.6
V sM ê 4
• Ô á Ð[ jÛ ¼ u ë _ ß á Ô Ð[ j" fü < B j ¸o ¦ t \ ¦e H % כ ! Ò 3 ty q ½ Éà + ºe ¸2 ¤î r%
^ ò j\ ] ¦[ > O ½ ÉÃ + ºe . s ] X H~ Ód ½ ` ¦ l © (VM, Virtual Machine) > ô Ç .
mÅ Ø U º
• @ /Â Òì r_ 6 © xî r%
^ ò ] j H¸ & ú
_ ñ a½ ) ¨ ¸\ ¦ t ¦e t · § ú . s [ t þ r% É 6 §\ £ H ¦é í ß Hô Çr Û ¼% 7 \ " fØ ¦µ Ï 1 # Õ ª _ כ l \ ¦ ÓÜ ½ ¼ Ð& h & h ¦/ Ll å 0 xs p Æ Ò ÷ &% 3 .
• l © > ~ Ód ½ \ " f ¸ Há Ô Ð[ jÛ ¼ H( É Ó' _ ¤ 4 rs : ] j/ N B a ) .
• s [ tr þ Û ¼% s 7 é í ß H½ ¨ ¸\ ¦ t > Å Ò as ) Ä »× æ H> hµ Ï{ 1 r © j ]/ N B a ) × ¼J ?# Q_ l 0 x& p ] h j ÇM ô :ë Hs . 3.5.2
• l © > \ ¦ 6 x { 9 Ø ¦§ _ 4 z ´' 5 q Å ¸ Hz ´ j l ] > \ " f s À Ò# Qt H כ Ð \ ¦ à º ¸ e ¦(Û ¼Û ¦a A) Ö ¼w n =à º ¸e (K $ ~ 3 ÓZ ½ ). O • CPU H# Q l © > s \ × æá Ô ÐÕ ªA b
ç &Ù ÷ ¼ Ð l © > _ 5 q Å ¸ H 8Ö ¼ 9| Ã 9 ºe .
4 «X ı ì É¿ n < R
• > 8 x& £ X h ]H ~ Ód ½ : î r%
^ ò ] j\ ¦# Q> 8 xÜ £ ¼ Ð ¾ º H~ Ód ½ Ü ¼ Ð, s ~ Ód ½ \ " f 0 © A> 8 x £ r É 0 A> 8 x_ £ ' ` s Û ¼\ ¦s 6 xô Ç . © 0 A> 8 x £ r É × ¼J ?# Qs ¦, © 0 © A >8 x £ r É 6 x ' ` s Û ¼ a ) .
3.6.1
ô
• Ð : xl > H 6 x ¸× ¼ü < ¸m ' ¸× ¼¿ º t ¸× ¼\ ¦] j/ Nô B Ç . • l © > \ ¦½ ¨ ³ & H èá Ôà ÔJ ?# Q Hî r%
^ ò ] js ¼ Ù Ð ¸m ' ¸× ¼\ " f1 x l 0 x p t ë z ß ´] j l © > H 6 x ¸× ¼\ " f1 x l K ô Ç .
• > 8 x& £ ] h X H~ Ód ½ _ é © & ß h – & © : h ¸Ñ t ý o` ¦: xô Ç 0 A> 8 x_ £ Æ Ò © o
• l © > \ ¦ 6 x Há Ô Ð[ jÛ ¼8 ¤ £ \ " f Ð l © > % r i l © > 6 x ¸× ¼ü < l © > ¸m ' ¸× ¼¿ º t ¸× ¼\ ¦] j/ NK B ô Ç . ª Õ X <s ¿ º ¸× ¼ H ¸¿ ºz ´] j Ð H 6 x ¸× ¼ " \ f1 x l K ô Ç .
• ` s Û ¼ë Õ ß ª@ / Ð Ä »t 0 A 8 > xÉ £ r 0 © A > 8 xõ £ Á º a ' > à º&
½ ñ É + ºe à . 7 ¤, £ 0 A> 8 x £ r É 0 A> 8 x_ £ ¤¸ 4 $ ú
` í ¦ 0 © A >8 x\ £ > ¸ u n ï r . – é & ß h
3.6.2 X sX ê È ì
• >8 x½ £ ¨ì r_ Q # 9¹ § ¡ • ´ ò Ö$ ¦
ë í H] j: y > 8 xç £ \ ß ' ` s Û ¼ ¦: \ xô Ç \ º O Ã' Ü ¼ д § ú r É ¸! QK × ¼ rF > ½ ɺ + Ãe 6 § £
• y l © > H" f Ð1 qw l & n s h Ù ¼ Ðr Û ¼% 7 " ¶ é Ð ñ8 ¤ £ \ " fÄ »o . Õ ª Q " ¶/ é NÄ B » # Q > § . 3
• r Û ¼% 7 > hµ Ï_ 1 6 xs $
: r í Û ¼% á 7 Ô ÐÕ ªA Q H ë _ ß l © > \ " f> hµ Ï 1 Ù ¼ Ðz ´] jr Û ¼% 7 \ %
ò Ó` ¾ ¦Å Òt · § ú ¦> hµ Ïs 1 0 x p .
• é & ß \ h @ /ô Çì Í ø r : – ` ¦ rX É <s ' ½ ¨ ¸ü <· o ú ¦7 §` £ ¦ 6 x H s כ r Û ¼% $ 7
0 í x\ p 8 H ¸¹ §s ¡ a ) .
• ñ¨ $ 8
ë í H] jK Hà ºé Ü ß ¼ Ð 6 x: l © > ¦ë \ [ ß t# þ Q ½ Éz + ´] jl > 4 ¤¸ ú ½ Éà + º2 ¤&
ñ Æô < Ç l © > \ ¦ë × ß ¼ H s כ # Q 90 >t 9, s כ r É l © > _ º Ã' Å q 5 ¸\ r% É
ò Ó` ¾ ¦ï r . 3.6.3
– rÛ ¼% $ 7
0 í x\ p H%
ò Ó` ¾ ¦Å Ò H Òì r rF É G è ºs à . s ` כ ¦¹ Ô 1 s  Òì rë # ß Q! r^ l ¦o # Q н ¨ ³½ & Éà + ºe .
3.8
• rÛ ¼% [ 7 u O : y : ¤& £
ñ s à Ô\ 1 x l ¸2 ¤½ ¨$
í Hõ &
ñ
• : Sun \ " f> hµ Ïô 1 ÇÌ o^ t Ó ¾ # Q • á Ô ÐÕ ªÏ þ r É © l> (JVM, Java Virtual Machine)\ ¦ 6 x 9, s M :ë H\ á Ô Ð Õ ªÏ þ r É l © > e H# Q ( " É Ó' \ " f ¸z ´ ' a ) .
• r Û ¼% [ 7 u O ½ ÉM + : &
K ñ H&
ñ Ð – CPU_ 7 xÀ á Ó, CPU_ Ã º – Å Òl % 3 u © _ ß ¼l
• (
{ 9 Q Hy 9 tA þ Û ¼ ( É Ó' ½ ¨ ¸ü < 1 qw l n & h s à Ô ï× ¼(bytecode)` ¦ Ò t$ q
í 9, s ï× ¼ H © l> \ " fz ´' a ) .
– Â Ò Ì Ã a ) u © – î% r
^ ò ] j ` v &
: CPU Û ñ ¼H × ¦a A ~ ÓZ ½ , O Q( ! _ ß ¼l 1 x p
• l © > H9 tA þ Û ¼ Ð 8(class loader), 9 t þ A Û ¼S X (class verifier) ' á Ôo ' (java interpreter) н ¨$
÷ í &# Qe .
• [ u O ~ ÓZ ½ O – ç ( ¡ 1. [ « u O 0 A&
ñ Ð\ ¦· ú p ·Ê ê\ 9 ¹ô כ Ç èÛ ¼ ï× ¼\ ¦Ã º&
ñ ¦(
{ ô 9 ÇÊ ê\ u O [
• l © > H` %
% ò i rà º(garbage collection) ÓZ ½ ~ Ü O ¼ ÐB j¸ o \ ¦ ao ' ô Ç .
– ç ( ¡ 2. « 9 כ ¹ô Ç ¸ H ï× ¼\ ¦ t ¦e Hr ¼% Û ` 7 ¦s 6 x # [ u O ô Ç . 0 A&
ñ Ð H[ u O " f1 x& l Ü h ¼ Ð &
÷ ñ & × þ a ) . ~ Ó ½ 1 O Z Ð s ~ ÓZ ½ _ O î r%
^ ò ] j_ ß ¼l ß ¼ .
• ' á Ôo ' H s à Ô ï× ¼\ ¦Õ ªM :Õ ªM :K $ 3 # z ´' H èá Ôà ÔJ ?# Q ¸Ñ ts ý s à Ô ï× ¼\ ¦ ¸¿ º3 l q& ( h É Ó' _ l > ï× ¼ Ð Ë ¨# Q z ´ ' H JIT(Just-In-Time) (
{ 9 Q{ 9 Ã ºe .
3.7 3.7.1
• î% r
^ ò ] j [ u O aÊ ) ê\ ( É Ó' \ ¦ r r ( É Ó' H& V ` , ¦Å Òl % 3 u © \ & F h ¦z ´ ô ' Ç . s õ &
` ñ ¦Â Òh A(booting)s ê Íô ø Ç . s כ ¦K ` Å Ò Há Ô ÐÕ ªÏ ` þ ¦Â Òà ÔÛ ¼à Ôê á Á Ô ÐÕ ªÏ ¢ þ ¸ H Òà ÔÛ ¼à Ôê Á Ð 8(bootstrap loader) ô Ç .
S y כ ð Ç4 r õ Í m ô Ç4 r כ × Ò »
• j þ 0 © A3 q³ l ð: 6 x H × ¼J ?# Q, r Û ¼% 7 _ 7 xÀ á Ó \ _ K &
ñ • 0 AY U 6 \_ 3 q³ l ð – 6 x 3 l q³ ð: 6 x_ ¼ o # $
, s í K _ 6 xs
, í $ ø @$
, % í o 5 q Å ¸_ 2 § £ – r Û ¼% 7 3 q³ l ð: Ä » $
(B í j& m 7 §õ £ &
Õ ñ _ þ ì r o ), ø @$
, ´ í òÖ ¦$
í • 3 #6 x& B h j& m 7 §` £ ¦ 6 x # ñ &Õ
s þ 7 Q # ¸ B j& m 7 § £ t Ü J ã ¹ 9 כ O \ ¸2 ¤ H s כ | Ðf à . 3.7.2
S y כ ð ÇV r
ô
• í Ól ½ \ H# Q! r^ l ¦o # Q Ðî r%
^ ò ] j\ ¦½ ¨ ³ & % t i ë ß ³F & H@ / Òì r C C++ü <° ú r É ¦/ Lá å Ô ÐÕ ªA b ç
Q # н ¨ ³ô & Ç . • ¦/ Lá å Ô ÐÕ ªA b
ç # Q н ¨ ³½ & ÉM + :_ é © & ß h – © & : ½ h ¨ ³_ & x 6s $
, n í ! Q^ ç
_ 6 xs $
, í ï × ¼s K _ 6 xs $
, Z í } rs É d $
í – é & ß : 5 h q Å ¸$ , $ / © Nç B 7 ß x £ 4
c °2003, sangjin@kut.ac.kr user running
* <* Ă&#x2013; = ĂĽ i< K: ~ ÂĄq ç { ÂĄĂ&#x2C6; Â&#x2018; 04
return from syscall or interrupt
syscall, interrupt
A. Silberschatz, P.B. Galvin, G. Gagne Operating System Concepts, Sixth Edition, John Wiley & Sons, 2003.
fork
initial exit
kernel running fork
wait
sleep
swtch
Part II. Process Management
zombie
swtch ready
wakeup
blocked
stop stop
Âł Â&#x17D;z Âş: g Â&#x17D;
4
Âł Â&#x17D;z Âş: g Â&#x17D;4 G Â&#x203A; Ă&#x2C6;
4.1
stop
continue
suspended ready
continue
wakeup
suspended blocked
Âł Â&#x17D;z Âş: g Â&#x17D;
4.1.1
â&#x20AC;˘ è ÂŤÂ&#x2014; Ă&#x2014;T zâ ÂŤ: z ´' Â?Ă&#x2014; Â&#x; ĂŚÂ&#x201C; ĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A; Ăž
<Ă&#x2022; ÂŞa > 4.2> Ă&#x201E; Ă&#x2039; Âť_ Ă&#x203A; Â&#x201D; Ÿå Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź_ Â&#x153;I Š Â&#x2022; ¸
â&#x20AC;˘ ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź_ ½ ¨$
Ă â&#x20AC;&#x201C; 7e
Âť(waiting): ĂĄ ä Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź # QÂ&#x2039; " | ` ÂŚ l o Â&#x201C; ÂŚe Â? Â&#x201D; H Â&#x153;I Š
â&#x20AC;&#x201C; % 7 Â&#x2DC;Ă&#x203A; Ÿà Ă&#x201D;Ă&#x201A; Ă&#x2019;ĂŹ r(text section): ĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A;Â? Ăž ĂŻĂ&#x2014; Âź â&#x20AC;&#x201C; & Â&#x2030;F Âł Â&#x153;I Š : ĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A;
Ăž ĂŽ r' \ ÂŚÂ&#x; ĂÂ&#x2020; Ă&#x160;Ă´ < Ă&#x2021;Â&#x2030; ÂłF & ĂĄ Ă&#x201D;Â&#x2013; Ă?[ j" f_ Y Ut Ă&#x203A; Âź' ° â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Ăş
â&#x20AC;&#x201C; K )j Âľ Â&#x201D;â&#x20AC;Ť×&#x203A;â&#x20AC;Ź ĂŹ Ă&#x2DC;(ready): ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź ĂĄ Ă&#x201D;Â&#x2013; Ă?[ j" f\  Ă&#x2030;{ + ½ Â&#x153;á Š &l \ ÂŚl o Â&#x201C; ÂŚe Â? Â&#x201D; H Â&#x153;I Š
â&#x20AC;&#x201C; Ă&#x203A; ÂźĂ&#x2014; Â&#x2DC;(stack): { Ăž r 9 & Â&#x201C; h X <s ' (
p ' , 4 ¤ Â&#x; ) Ă&#x2026; Ă&#x2019;Â&#x2122; è, t %  i Ă&#x192; Âş1 x)\ p ÂŚ$  Â&#x153; Š Â? H/ M B
â&#x20AC;&#x201C; 4 ¤â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Ă&#x2DC;(terminate): ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź_ z ´' Â?s Â&#x; 7 xÂŤ ĂĄ Ă&#x2018; a ) Â? Â&#x153;I Š
â&#x20AC;&#x201C; X <s ' Ă&#x201A; Ă&#x2019;ĂŹ r: F g%
 i Ă&#x192; Âş\ ÂŚ$  Â&#x153; Š Â? H/ M B
â&#x20AC;˘ Ă&#x; ĂŠ{ Â&#x2013; ĂĄ 9 Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âźr Ă&#x203A; Âź% Â&#x203A;\ 7  " fÂ? HÂ&#x2030; ÂłF & z ´' Â? Â&#x; Â&#x153;I Š \  ` Â&#x201D; e ÂŚĂ&#x192; Âşe Â? Â&#x201D; HĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? HÂ&#x161; ¸f Â&#x201D; s . t ĂŤ Â&#x2013; Ă&#x; §Â&#x201C; Ăş ´ rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź @ /l ¢ ¸Â? HĂŻ rq ¢ aÂŤ Ă&#x2018; Â&#x153;I Š \  e Â&#x201D; ÂŚĂ&#x192; ` Âşe Â&#x201D; .
â&#x20AC;˘ ĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A; Ăž ^ Â&#x2030;Â? HĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź m . ĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A; Ăž Â&#x201C; rĂ&#x192; Ă&#x2030; Âş1 x& l > h h^ Â&#x2030;s t ĂŤ Â&#x2013;ĂĄ Ă&#x; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H0 x1 p x& l > h h^ Â&#x2030; s . â&#x20AC;˘ # Â&#x152; QĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź °  Â&#x201C; Ăş rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A;Ăľ Ăž Â&#x203A; aÂş ' á &# Qe Â&#x201D; 8 Â&#x2022; ¸" fÂ&#x2013; Ă?°  Â&#x201C; Ăş r Ă&#x2030; Ă&#x153; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź ÂźÂ&#x2013; Ă?ç Â&#x2013;Ă&#x2026; Ă&#x; Ă&#x2019; t ¡ §Â? Ăş H .
â&#x20AC;˘ / @l Ă&#x2014; ĂŚÂ&#x201C; ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H Â&#x2030; ÂłF & ĂĄ Ă&#x201D;Â&#x2013; Ă?[ j" f z ´' Â?½ Â&#x; Ă&#x2030; + Ă&#x201D;Â&#x2013; ĂĄ Ă?[ jĂ&#x203A; Âź \ O 8 Â&#x2022; ¸z ´' Â?| Â&#x; cĂ&#x192; ¨ Âş\ O .
Âł Â&#x17D;z Âş: g Â&#x17D;8 ýê s V? 0
4.1.2
â&#x20AC;˘ \ V) Ă&#x201E; Âť_ Ă&#x203A; Â&#x201D; Ÿå Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź_ Â&#x153;I Š Â&#x2022; ¸: Ă&#x2022; ÂŞa > 4.2 Â&#x201A; Ă&#x2039; Ă?Â&#x203A; Ă&#x192; ¸.
â&#x20AC;˘ 0 xĂ´ p Ă&#x2021; Â&#x153;I Š : Ă&#x2022; ÂŞa > 4.1 Ă&#x2039;
â&#x20AC;&#x201C; Âť Ă&#x201E;_ Ă&#x203A; Â&#x201D; Âź\  " fĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź exit r Ă&#x203A; Âź% Â&#x203A; 7 ĂąĂ&#x2DC; ÂŚ` ÂŚ Âş' Ă&#x192; Â? Â&#x; Â&#x20AC; Ă&#x2022; ÂŞĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H7 xÂŤ ĂĄ Ă&#x2018;á &9, ĂŽ r%
^ ò Â&#x2030; jÂ? ] HĂ&#x2022; ÂŞĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź\  > ½ Ă&#x2030;{ + Â&#x153;Â? Š a ) " Âś` ĂŠ ÂŚK ] j Ă&#x2021; Ă´ . Ă&#x2022; ÂŞ Q r Ă&#x203A; Âź% Â&#x203A;\ 7  " f¢ aÂ&#x201E; y ] j Â? a ) â&#x20AC;Ť×&#x203A;â&#x20AC;Ź r Ă&#x2030; Â&#x201C; m Â&#x201C; ÂŚ, Ă&#x2022; ÂŞĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź\ ÂŚĂ&#x2019; t$ q
Ă´ Ă Ă&#x2021;ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Ă&#x2022; ÂŞĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź_ 7 xÂŤ ĂĄ Ă&#x2018; Â&#x153;I Š Ă&#x192; ÂşÂ? ' Â&#x; Ăľ \ ÂŚ ` 3 % ÂŚĂ&#x192; Âşe Â&#x2022; Â&#x201D; ¸2 ¤{ Â&#x; r 9 & Ă&#x153; h ÂźÂ&#x2013; Ă? zombie Â&#x153;I Š \  ~s Z > Â? a ) .
â&#x20AC;&#x201C; j Â&#x201C; ÂťĂ&#x2026;
] ä Âť(new): ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Ă&#x2019; t$ q
Ă&#x2014; Ă ĂŚs . â&#x20AC;˘ \ V) log on, ĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A;_ Ăž z ´Â? ' Â&#x; â&#x20AC;&#x201C; Â&#x2122;
j Â&#x161; Ă&#x;
ä Âť(running): ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź z ´Â? ' Â&#x;Ă&#x2014; ĂŚs .
new
terminated interrupt admitted
â&#x20AC;&#x201C; Ă&#x201D; ĂĄÂ&#x2013; Ă?[ jĂ&#x203A; Âź_ Â&#x153;I Š ĂŻ rq Ă&#x2014; ĂŚ, z ´Â? ' Â&#x;Ă&#x2014; ĂŚ, @ /l Ă&#x2014; ĂŚ s Â? H Â&#x201C; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Ă&#x2026; Ă&#x2019;l %  3 Â&#x153;u Š \  & h á F &# Qe 6 Â&#x201D; §` ÂŁ Ϋ Â&#x2DC;Ă´ Ăş Ă&#x2021; . Ă&#x2026; Ă&#x2019;l %  3 Â&#x153;u Š \  & F h &# á Qe Â? Â&#x201D; HĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź_ Ă&#x192; Âş\ ÂŚĂ&#x2014; ÂŚs l 0 AK Ă&#x201E; Âť Ă&#x203A; Â&#x201D; _ Âź\  " fÂ? HĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź\ ÂŚĂ&#x2014; ĂŚt (suspend)½ Ă&#x2030;Ă&#x192; + Âş Â&#x201D; e . ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Ă&#x2014; ĂŚt á &Â&#x20AC; Ă&#x2026; Ă&#x2019;l %  3 Â&#x153;u Š \  f{ " r 9 & Ă&#x153; h ÂźÂ&#x2013; Ă?] j á &# Qn Ă&#x203A; ÂźĂ&#x; Âź\  Â&#x2DC; Ă?Â&#x203A; aá ' & 9, F > h| cM ¨ : t Ă&#x203A; ÂźH Ă&#x2014; ÂŚa A@ / Â&#x153;\ Š  " f] jĂź @ a ) Â? .
exit ready
I/O or event completion
running
scheduler dispatch
I/O or event wait
waiting
<Ă&#x2022; ÂŞa > 4.1> ĂĄ Ă&#x2039; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Â&#x153;I Š Â&#x2022; ¸ 1
pointer
queue header
process state
process number
head
program counter
tail
PCB7
PCB2
register
register
registers
<Õ ªa > 4.4> ï Ë rq ¢ a« ÑÇ ©
memory limits list of open files
ready queue
I/O
<Õ ªa > 4.3> á Ë Ô Ð[ jÛ ¼] j# Q^ ¦2 ¤
CPU
I/O queue
I/O request
time slice expired
4.1.3
³ z º: g g <# a÷ § u ×
• î% r
^ ò ] j Há Ô Ð[ jÛ ¼ Õ ªa > 4.3ü Ë <° ú rè É « × T zâ «V # a¡ · ´(PCB, Process Control Block)` ¦ Ä »t ô Ç . r´ É ú ÐI Û ¼ß ¼] j# Q^ ¦2 ¤s ô Ç . • á Ô Ð[ jÛ ¼] j# Q^ ¦2 ¤\ Ä »t ÷ & H&
ñ Ð
interrupt occur
wait for an interrupt
• rì r½ É r + Û ¼% _ 7 3 q& l h r á É Ô Ð[ jÛ ¼\ ¦ > Ë ¨# Q " fz ´ ' # 6 x [ ts þ á Ô ÐÕ ªÏ õ þ © ñ 6 x½ Éà + ºe ¸2 ¤ H s כ .
– á Ô ÐÕ ªÏ
þ î r' : 6 §\ £ z ´ ' ½ É" +
§ î
# î Q_ Å Ò è – CPU Y Ut Û ¼' : z ´' × æ I © \ " f@ /l × æ¢ ¸ Hï rq × æÜ ¼ Ð
¨ â |M c : ³F & Y Ut Û ¼' _ ° `כ ú ¦# l \ Ð aô ' Ç . s כ rá É Ô ÐÕ ªÏ
þ r' î ü < Êa < r z ´' × æ I © Ð` U ´M : 9 כ ¹ .
4.2.1
> ú ÚÂ n Ë S Á
• Ô á Ð[ jÛ ¼_ Û ¼H × ¦a A` ¦ 0 AK î r%
^ ò ] j H # Q xÀ á 7 Ó_ Ç ©\ ¦Ä »t ô Ç . • © Ç H{ 9 ì Í& ø Ü h ¼ Ð o Û ¼à Ô(linked list) н ¨ ³ & &# ÷ Qe . Õ ªa > 4.4 Ë Ð Ã ¸.
– CPU Û ¼H × ¦a A&
ñ Ð: Ä º í H0 Aü <° ú rÛ É ¼H ¦a × A\ 9 כ ¹ô Ç&
ñ Ð
– © Ç_ K 8 Ho Û ¼à Ô\ e H' Í P :ü < t PCB\ } ¦ o v H í ' \ ¦ t ¦e Ü ¼ 9, y PCB H 6 § PCB\ £ ¦ o v H í ' ¦ \ × 9 ¼ Ð t ¦e .
– Å Òl % 3 u © ao ' &
ñ Ð: l ï rY Ut Û ¼' ü <ô Ç > Y Ut Û ¼' _ ° כõ ú ° ú rÅ É Òl % 3 u © ao ' \ 9 כ ¹ô Ç&
ñ Ð – r> &
ñ Ð: CPU 6 xr ç õ ß ° ú r: É x> &
ñ Ð
• Ç ©_ 7 xÀ á Ó
– 9 { Ø ¦§ 4 I © &
ñ Ð: á Ô Ð[ jÛ ¼\ ½ É{ + © a{ ) Ø 9 ¦ § 4 u © , á Ô Ð[ jÛ ¼
{ 9 3 q2 l ¤1 x p
– Ç ¼á Ð
Î ª(job queue): á Ô Ð[ jÛ ¼ r Û ¼% \ 7 6 % §[ £ t# þ Qü <" f@ /l HÇ ©
7 _©
– K )j µ כ ì Ø Î ª(ready queue): Ò Ål % 3 u © \ F h & ÷ &# Qz ´' ` ¦l o Há Ô Ðj [Û ¼\ ¦Ä » t HÇ ©
• á Ô Ð[ jÛ ¼ ¸q 4 S\ " fá Ô Ð[ jÛ ¼ Hé { ß z 9 ´' â ì2 § £ ¦ ` . s â ì2 §` £ ¦¼ ÛY U× ¼(thread) ô Ç .
– *n × Î ª(device queue): u © \ ¦ 6 x l 0 A l K o HÇ © Ð" f, y u © H ë _ ß © Ç u ©\ ¦ t ¦e .
• j þH \ H _ á Ô Ð[ jÛ ¼ # Qz ´' â ì2 §` £ ¦ | 9 à ºe ¸2 ¤ % i . " fá Ô Ð[ jÛ ¼ Hô Ç \ # Q \ ` O ¦Ã º' ½ ɺ + Ãe .
4.2
fork a child
<Õ ªa > 4.5> á Ë Ô Ð[ jÛ ¼Û ¼H × ¦a A³ ð ³ & HÇ ©e
ç ¸³ ð
– á Ô Ð[ jÛ ¼ I © : Ò t$ q
× í æ, z ´' × æ, @ /l × æ, ï r q ¢ a« Ñ, 7 x« á Ñ
4.1.4
child execute
– 7e Î ª(waiting queue): : ¤& £
ô ñ Ç | ª Õ | ` ¦l o Há Ô Ð[ jÛ ¼\ ¦Ä »t H ©\ Ç ¦ 6 x½ Éà + ºe .
³ z º: g > ú ÚÂ n Ë S
• Ô á Ð[ jÛ ¼ z ´ ' × æ I © { 9 M :µ ÏÒ 1 t½ q ÉÃ + ºe H _ | 7 xÀ á Ó
• × æá Ô ÐÕ ªA b ç
_ 3 q& l h r É Ó ½ z © ´' ½ Éá + Ô Ð[ j Û ¼ e ¸2 ¤ H s כ . s \ ¦: xK CPU 6 x ´ òÖ ¦` ¦Z }s H s כ .
– 9 {Ø ¦§ ` 4 ¦כ ¹' A õ K { © H u © Ç © Ð` . 2
– D h Ðî rá Ô Ð[ jÛ ¼\ ¦Ò t$ q
í # Õ ªá Ô Ð[ jÛ ¼ _ 7 x« á Ñ\ ¦l w n =à ºe . s
Ä â º\ H@ / l Ç ©\ ` . t ë Â ß Ò ¸á Ô Ð[ jÛ ¼ ¸ d á Ô Ð[ jÛ ¼ü < Êa < #
' î Ü ¼ Ðà º' | cà ¨ º e . s
Ä â º\ Hï rq Ç © Ð` .
Ô á Ð[ jÛ ¼ ¥½ D Ë` + ¦ Ó ¾ r © v B j ¸o כ ¹½ ¨ Ó ½ `Ø ¦ æ7 ¤r á v l 0 A Ês < . s ` כ ¦{ { © HÛ ¼H ¦ × Q × æl Û ¼H × ¦ Qs . • ß él Û ¼H × ¦ Q H l © Û ¼H × ¦ Q Ð @ © /& Ü h ¼ Ð > z ´' a ) .
– ' X à O Ô µ ÏÒ 1 t q ³F & à º' × æ á Ô Ð [ jÛ ¼\ ¦× æé ß ¦ à ÔX à O Ô\ ¦% o K ô Ç . % o = Q å à ÔX à O Ô\ Ø Ôt ß ë Ð: x ³F & á Ô Ð[ jÛ ¼\ ¦ï rq ¢ a« ÑÇ © Ð` | .
4.2.3
• K %_ c¦ 9 >» É(context switch): z . ´ ' × æ á Ô Ð[ jÛ ¼ _ I © \ ¦ Ð a ' ¦D h Ðî rá Ô Ð[ jÛ ¼_ I © \ ¦ CPU\ & F h Hõ &
` ñ ¦´ ô ú Ç .
• ¸× ¼Û ¼0 Au (mode switch)ü <á Ô Ð[ jÛ ¼Û ¼0 Au _ s & h
• Ô á Ð[ jÛ ¼_ ë HÐ o(context) r á É Ô Ð[ jÛ ¼_ PCB\ »t Ä a ) .
– ¸× ¼Û ¼0 Au : 6 x ¸× ¼\ " f& V , ¸× ¼ Ð | cM ¨ :µ ÏÒ 1 t q 9, ¢ a ë HÐ o ¨ s 8 כ 9 ¹ t · §¦ ú r Û ¼% 7 Û ¼× ` þ ¦ 6 xô Ç . \ V) r Û ¼% 7 ñØ ¦
• ëÐ H o §¨ \ 8 èכ ¹÷ & Hr ç ß rí É Hà º ¸! QK × ¼s . • s ` כ ¦F G4 ¤ l 0 Aô Ç~ Óî ½ ß
– á Ô Ð[ jÛ ¼Û ¼0 Au : ³F & z ´ ' × æ á Ô Ð[ jÛ ¼ ¦× \ æé ß ¦D há Ô Ð[ jÛ ¼\ ¦z ´ ' ½ ÉM + :µ ÏÒ 1 t q 9, ¢ a ë HÐ o ¨ 8 9 כ ¹ . 4.2.2
Ør U Ã Åò ¹ ÿ &
– : ¤Ã £ º"
§ î
# î Q – Y Ut Û ¼' | ½ 9 Ë + – Û ¼Y U× ¼ 6 x
> ú Ú n [
• y Ç © 6 £ § Y V_ á Ô Ð[ jÛ ¼\ ¦ &
ñ # Å Ò Hâ «X
ä · a(scheduler) e .
4.3 4.3.1
• á Ô Ð[ jÛ ¼_ 7 xÀ á Ó
z ³ º: g ; c6 ¢ X Å ì m V t Ë R
• Ô á Ð[ jÛ ¼ Hà º' ¸× æ\ D h Ðî r# Qá Ô Ð[ jÛ ¼ ¦Ò \ t$ q
½ í ÉÃ + ºe . s M :á Ô Ð[ jÛ ¼\ ¦Ò t$ q
í H Ô á Ð[ jÛ ¼\ ¦É Ù ¿è « ×T zâ «(parent process) ¦, Ò t$ q
í aá ) Ô Ð[ jÛ ¼\ ¦ Ð è Ï « ×T zâ «(child process) ô Ç .
–
· » ] äÐ
è Ï « ×T zâ «(I/O-bound process): > í ß Ð H{ 9 Ø ¦§ ` 4 ¦´ §s ú Há Ô Ð[ jÛ ¼ – N ñ Ñ
5 ä »Ð « Ï è ×T zâ «(CPU-bound process): 9 { Ø ¦§ 4 Ð H> í ` ß ¦´ §s ú Há Ô Ð[ jÛ ¼
• d á Ô Ð[ jÛ ¼ HÕ ª s כ כ 9 ¹ô Ç " ¶` é ¦î r%
^ ò j ] РÒ' f ] ~ X Î` à ¦Ã ºe ¦, Â Ò ¸á Ô Ð[ jÛ ¼_ ¶\ é " ô Ç&
÷ ñ &# Q~ Î` à ¦Ã º ¸e .
• * × e â «X
·a ä (long-term scheduler): ô Ç \ #
î ' Ü ¼ Ðà º' ½ Éà + ºe H \ _ O à º ] jô Ç÷ &# Qe . s
Ä â º\ ï rq ¢ a« ÑÇ ©\ à º6 x t 3 w l H O \ rn É Û ¼ß ¼\ Ä »t ÷ & H \ Û O ¦(job pool)\ Ä »t a ) . l © Û ¼H × ¦ Q H \ Û O ¦\ " fï rq ¢ a« ÑÇ © Ð` | 9 6 § £ \ ` O ¦ &
ô ñ Ç . r´ É ú Ð \ O Û ¼H × ¦ Q(job scheduler) ô Ç .
• d á Ô Ð[ jÛ ¼ % ` 3 ¦Ã ºe H ¶ " é` ¦ô Ç&
ñ Çá ô Ô Ð[ jÛ ¼ Ã º´ § ú r É d á Ô Ð[ jÛ ¼\ ¦Ò t$ q
í r # Û ¼% ` 7 ¦ q r v H ` כ ¦~ Ót ½ HX < ¸¹ § ¡ s a ) .
– s Û ¼H × ¦ Q H × æá Ô ÐÕ ªA b ç
_ &
ñ ¸(degree of multiprogramming)\ ¦ &
ô ñ Ç . r Û ¼ 7 % _ $
0 í xs p $ ÷ &t · § ú ¸2 ¤ × æá Ô ÐÕ ª A b ç
_ &
ñ ¸ H ¸] ÷ X &# Q ô Ç .
• Â Ò ¸ü < d á Ô Ð[ jÛ ¼_ z ´' + AI þ – Ò Â ¸ü < d á Ô Ð[ jÛ ¼ #
' î Ü ¼ Ðz ´' a ) .
– © l Û ¼H × ¦ Q H{ 9 ا ¦ × 4 æd õ > í × ß æd á Ô Ð[ jÛ ¼\ ¦& X h ]ô Çq Ö ¦ Ð × K þ ô Ç .
– d á Ô Ð[ jÛ ¼ ¢ a« Ñ| cM ¨ : t Â Ò ¸á Ô Ð jÛ [ ¼ Hl ; 2 .
– Ä »_ Û ¼ü <° ú rr É Û ¼% 7 r É l © Û ¼H × ¦ Q\ ¦ 6 x t · § ú H .
• d á Ô Ð[ jÛ ¼_ Å Ò è/ Nç B 8 ß ¤ £ \ " f¿ º t x$ p 0
í
• 5 í e â «X
· ä a(short-term scheduler): s Û ¼H × ¦ Q Hï rq ¢ a« ÑÇ ©\ " f 6 §\ £ CPU\ ½ É{ + © # z ´ ' ½ Éá + Ô Ð[ jÛ ¼\ ¦ &
ô ñ Ç . r´ É ú Ð CPU Û ¼ H × ¦ Q ô Ç .
– Ò Â ¸á Ô Ð[ jÛ ¼_ Å Ò è/ Nç B _ ß 4 ¤ rs : ½ É + © { a ) . – d á Ô Ð[ jÛ ¼ H _ / Nç B \ ß & F h ½ Éá + Ô ÐÕ ªÏ ` þ ¦ t ¦e .
• ä
»e â «X
· ä a(medium-term scheduler): r ì r½ É + r Û ¼% 7 \ " f Há Ô Ð[ jÛ ¼\ ¦B j ¸o \ " fn Û ¼ß ¼ Ð ` { ì © rç z ß ´ ' ÷ &t 3 w l ¸2 ¤ H
Ä â º e . s כ r É × æÔ á ÐÕ ªA b
_ ç &
ñ ¸\ ¦ ¸] X #
• \ V) Ä »_ Û ¼ – yá Ô Ð[ jÛ ¼ H1 q: l ¤ô £ Ç&
à ñ º° כ ú è « ×T zâ « ß Ï Ð
~ (process identifier)\ _ K d Z > a ) . 3
B N /Ä »B j ¸o #define BUFSIZE 10 typedef struct { ...} item; item buf[BUFSIZE]; int in=0, out=0; tí q Ò ß ï× ¼ while(1) { /* nextProduced\ 6 § £ s % 7 ` ¦Ò tí q */ ß while(((in+1) % BUFSIZE) == out); buf[in] = nextProduced; in = (in+1) % BUFSIZE; } è q ï× ¼ while(1) { while(in == out); nextConsumed = buf[out]; out = (out + 1) % BUFSIZE; /* nextConsumed\ e H s % 7 ` ¦ èq */ }
– D há Ô Ð[ jÛ ¼ H fork r Û ¼% 7 ñØ ¦\ ¦s 6 x # Ò t$ q
ô í Ç . – fork\ ¦: xK d á Ô Ð[ jÛ ¼\ ¦Ò tí q
$ s á Ô Ð[ jÛ ¼ HÂ Ò ¸á Ô Ð[ jÛ ¼_ Å Ò è/ Nç B _ ß 4 ¤ r` : ¦ ½ É{ + ~ © Î Ã H . s & h r fork r É Û ¼ 7 % ñØ ¦_ ì ͨ ø ° 8 כs ú " f Ð Ø Ô . – d á Ô Ð[ jÛ ¼ H Ð: x execlp r Û ¼% 7 ñØ ¦ ° õ ú rr É Û ¼% 7 ñØ ¦` ¦s 6 x # ½ É{ + ~ © Î Ã r É l rÅ > Ò èB N /ç \ ß D h Ðî rá Ô ÐÕ ªÏ Ü þ ¼ ÐW = # Q H 6 §\ £ Õ ªá Ô ÐÕ ªÏ ` þ ¦Ã º ' ô Ç . – Â Ò ¸á Ô Ð[ jÛ ¼ H> 5 q¢ Å ¸ rá É Ô Ð[ jÛ ¼\ ¦ t$ q Ò
½ í Éà + ºe . ë ß 8s ½ © É{ + 9 s \ Ü O ¼ wait r Û ¼% 7 ñØ ¦` ¦s 6 x # d á Ô Ð [ jÛ ¼_ 7 x« á Ñ\ ¦l w n =à ºe . • \ V) ¶ û ¸Ä ºÝ ¼ NT – d á Ô Ð[ jÛ ¼\ ¦Ò t
q í½ $ ÉM + :Â Ò ¸á Ô Ð[ jÛ ¼ _ Å Ò è/ Nç B _ ß 4 ¤ r` : ¦½ É{ + K © × ¦Ã º ¸e ¦, Â Ò ¸ d Å Ò è/ Nç B \ ß & F h ½ ÉD + há Ô ÐÕ ªÏ _ þ s 2 §` £ ¦× ¦Ã º ¸e . 4.3.2
<Õ ªa > 4.6> Ä Ë »ô Ç! Q( èq Ò tí q ß ë H] j
Þz Ò »
– a ? ¸á Ô Ð[ jÛ ¼(cooperating process): rá É Ô Ð[ jÛ ¼_ z ´ ' \ %
ò Ó` ¾ ¦Å Ò H¢ ¸ H%
ò Ó` ¾ ¦ Î Ã ~ Há Ô Ð[ jÛ ¼
• á Ô Ð[ jÛ ¼ H _ t } ë H ` © ¦Ã º' 7 x á « Ñ a ) . s M :á Ô Ð[ jÛ ¼ H exit r Û ¼% 7 ñØ ¦` ¦s 6 x # î r%
^ ò ] j\ > _ ] j\ ¦כ ¹' Aô õ Ç . s M : d rÂ É Ò ¸\ > õ X <s ' \ ¦ ² ½ ú Éà + º e . Â Ò ¸ H wait rÛ ¼% 7 ñØ ¦` ¦: xK s X <s ' ¦~ \ Î` à ¦Ã ºe .
• a ? ¸á Ô Ð[ jÛ ¼ כ 9 ¹ô Çs Ä » – ñ &
Ð/ NÄ B »: ° ú r& É
ñ Ð(\ V: / NÄ B »
{ ) 9 כ 9 ¹ Éà + ½ ºe . – > í 5 ß q Å o: Ð r É õ \ ¦% l 3 0 AK í > ` ß ¦ ¾ º# Qz ´' + ½Ã É ºe . s s כ 0 x p l 0 AK " f Hì Í× ø ¼r × æ% o l כ ¹ è(\ V: CPU, { 9 Ø ¦§ 4 u © ) e # Q ô Ç . – ¸Ñ t ý o: l 0 x_ p ì ro \ ¦0 AK – ¼ o # $
: í 6 x Hô Ç \ # Q \ ` O ¦1 xr l à \ º' ½ É + כ 9 ¹ 7 x7 á xe á .
• Â Ò ¸á Ô Ð[ jÛ ¼ H abort r Û ¼% 7 ñØ ¦` ¦s 6 x # d á Ô Ð[ j¼ Û\ ¦y ] © j Ðá x 7« Ñr ~ ´Ã ºe . • y ] © j Ð7 x« á ÑK H
Ä â º – ½ É{ + © a ) ¶ " é` ¦ íõ 6 xô Ç
Ä â º – d \ > ½ É{ + ô © Ç O \s 8s © כ 9 ¹\ O H
Ä â º
• Ô á Ð[ jÛ ¼ç \ ß a ? ¸ s À Ò# Qt l 0 AK " f H © ñ: x HB j& m 7 §õ £ 1 xl l oB j& m 7 §s £ 9 ¹ כ .
– Â Ò ¸á Ô Ð[ jÛ ¼ 7 x« á Ñ÷ & H
Ä â º: î r%
^ ò ] j HÂ Ò ¸á Ô Ð[ jÛ ¼ 7 x« á Ñ a ) d á Ô Ð[ jÛ ¼ _ à º ' ` ¦) | Ì Ã t · §` ú ¦Ã ºe . s
Ä â º \ Â Ò ¸á Ô Ð[ jÛ ¼ 7 x« á Ñ÷ & Õ ª _ כ ¸ H Há < Ô Ð[ jÛ ¼[ t þ ¸ Êa < 7 x« á Ñ÷ &# Q ô Ç . s ³ & ` © ¦; ¤ í+ A7 þ x« á Ñ(cascading termination) ô Ç .
4.4.1
• q Òí t ß á Ô Ð[ jÛ ¼ H èq á Ô Ð[ jÛ ¼ כ 9 ¹ô Ç
ñ & Ð\ ¦Ò tí q ô ß Ç . • V \) á Ô; 2' á Ô ÐÕ ªÏ (Ò þ tí q ß ), á Ô; 2' ½ ¨1 xl l ( è q )
• \ V) Ä »_ Û ¼ – ; ¤ í+ A7 þ x« á Ñ\ ¦ t · § ú ¦, inits ¦ H r Û ¼% 7 á Ô Ð[ jÛ ¼ ¦ á Ô Ð[ jÛ ¼(orphan process)_ D hÂ Ò ¸ a ) .
4.4
ºR } t m à Ø< U g
• q Òí t ß ü < èq Hs \ ¦0 AK ! Q( \ ¦/ NÄ B »K Ç ô . • q Òí t ß _ Ò tí q 5 ß q Å ¸ü < èq _ èq 5 q Å ¸\ ¦´ ú ¦Ã Ø ºe # Q ô Ç .
³ z º: g m¶ ÷I Ä í
• #
î ' à º ' ÷ & Há Ô Ð[ jÛ ¼ç _ ß a> '
• ! Q( _ : ¤$ £
\ í r É èq Ò tí q ß ë H] j_ ì rÀ Ó
– 1 qw l n á Ô Ð[ jÛ ¼(independent process): r É á Ô Ð[ jÛ ¼_ z ´ ' \ ò %
Ó` ¾ ¦Å Òt ¸~ Ît à · § ú Há Ô Ð[ jÛ ¼
– º Áô Ç! Q( : èq Hl 9 H
Ä â º t e ë Ò ß tí q ß Hl 9 H
Ä â º \ O . 4
– Ä »ô Ç! Q( : èq H! Q( q # Qe Ü ¼ l 9 ¦, Ò tí q ß H! Q( G 0 >4 Re Ü ¼ l 9 ô Ç .
– º ¿á Ô Ð[ jÛ ¼ç \ ß H ¸f _ a Aß ¼ë ß r > ô F Ç . • @ /g A~ Ód ½
• s ! Q( Há Ô Ð[ jÛ ¼ç : ß x (IPC, InterProcessCommunication) l 0 x` p ¦ s6 x # ë [ ß tà þ ºe ¦, á Ô ÐÕ ªA Q / NÄ B »B j ¸ o\ ¦s 6 x # f ] ½ X ¨ ³½ & Éà + ºe .
– send(P, msg): á Ô Ð[ jÛ ¼ P\ > msg\ ¦ 5 x Å Ç ô . – receive(Q, msg): á Ô Ð[ jÛ ¼ Q ÐÂ Ò' msg\ ¦ º Ã ô Ç .
• Ä »ô Ç! Q( èq Ò tí q ß ë H] j_ \ V: Õ ªa > 4.6 Ë
• q@ /g A~ Ód ½ : à º _ s 2 §ë £ " ß
Ñ î þ > ] jr K H~ Ód ½
– s \ V\ " f Hþ j@ / BUF-1> h_ s % s 7 ! Q ( \ rF > ½ ÉÃ + ºe .
4.5
– send(P, msg): á Ô Ð[ jÛ ¼ P\ > msg\ ¦ 5 x Å Ç ô .
³ z º: g m ÞÞ Å Ã
– receive(id, msg): e _ _ # Q Ô " á Ð[ jÛ ¼ Ð Ò' Â msg\ ¦ Ã º ô Ç . 5 x Å ô Ç á Ô Ðj [Û ¼_ 2 s §s £ id\ $ © a ) .
• IPC Há Ô Ð[ jÛ ¼ ° ú rÅ É Ò è/ Nç B ` ß ¦/ NÄ B » t · § ú ¸á Ô Ð[ jÛ ¼ç \ ß : x ¦Õ ª[ t_ þ ' 1 x` l ¦1 x l l oK × ¦Ã ºe Hj B& m 7 §` £ ¦] j/ Nô B Ç . 4.5.1
4.5.2.2 ë Ñâ 5
§ é >
8 cS U Å« ¹ oS y ð
• ß ç] : X x \ " fB jr t HB j{ ~ 9 ÌÛ Ã ¼ íà Ô Ð ú ² a ) .
• B jr t ² r ú Û ¼% 7 rX É <s ' _ / NÄ B »\ s O á Ô Ð [ jÛ ¼ç \ ß : x ` ¦½ Éà + ºe ¸2 ¤K ï r .
• s~ Ód ½ \ " f¿ ºá Ô Ð[ jÛ ¼ H# Q> h_ B j{ ~ 9 ÌÛ Ã ¼ ¦s \ 6 x # : x ½ Éà + ºe .
• B jr t ² ~ ú Ód ½ _ IPC H l r& : Ü h ¼ Ð 6 §õ £ ° ú r¿ É º t í ` ß ¦] j/ Nô B Ç .
• º ¿á Ô Ð[ jÛ ¼ç \ ß : x s s À Ò# Qt l 0 AK " f H j{ B ~ 9 ÌÛ Ã ¼\ ¦" f Ð/ NÄ B »K ô Ç .
– send(msg) – receive(msg)
• ç ] ß : X x _ : ¤f £
ç
• B jr t _ ß ¼l H & { h à 9 ºe ¦ ¦&
÷ ñ &# Qe ¦Ã ` ºe .
– º ¿á Ô Ð[ jÛ ¼ B j{ ~ 9 ÌÛ Ã ¼\ ¦/ NÄ B »½ É +
Ä â º\ s ß ë ¿ ºá Ô Ð[ jÛ ¼ç \ ß a Aß ¼ [ & O
ñ a ) .
– B jr t ß ¼l & s h á Ô ÐÕ ªA b
ç r É / '0 >t ½ ¨ ³s & # Q 90 > .
– Aß a¼ H# Q> h_ á Ô Ð[ jÛ ¼ü < a| ' cà ¨ ºe .
• ¿ ºá Ô Ð[ jÛ ¼ç \ ß : x l 0 AK " f H¿ ºá Ô Ð[ j Û ¼ç \ ß : x a Aß ¼ כ 9 ¹ . s a Aß ¼ H ª > ½ ¨ ³| & cà ¨ ºe t ë # ß l " f H Ho 7 & ½ h ¨ ³8 & ¤ £ \ " f] H X ô Ç .
– º ¿á Ô Ð[ jÛ ¼ç \ ß H# Q> h_ a Aß ¼ rF > Éà + ½ ºe . • ] j/ N B í _ ß + AI þ
– f ] ¢ X ¸ Hç ] ß : X x
– send(A, msg): B j{ ~ 9 ÌÛ Ã ¼ A Ð msg\ ¦ ² ô ú Ç .
– @ /g A¢ ¸ Hq @ /g A: x
– receive(A, msg): B j{ 9 ~ ÌÛ Ã ¼ A ÐÂ Ò' msg\ ¦ º Ã ô Ç .
– 1 x¢ l ¸ H"
r î & ! h Q( a A – 4 ¤ r : ² ¢ ú ¸ HÅ Ò è ² ú
• Ô á Ð[ jÛ ¼ P1 , P2 , P3 B j{ 9 ~ ÌÛ Ã ¼ A\ ¦/ NÄ B »ô Ç ¦ . P1 s A ÐB jr t \ ¦ ² ú % ` i ¦M :, P2 , P3 ¸¿ º receive` ¦z ´' # Qb G> | c ¨ ? õ H 6 x H~ Ód ½ \ Ø Ô . 0 xô p Ç~ Ód ½ r É 6 §õ £ ° ú .
– ¦&
¢ ñ ¸ H ß ¼l 4.5.2
Ëã _ ã Ë _
4.5.2.1 Ò â Ï
§ é > • f] : X x \ " f Hy á Ô Ð[ jÛ ¼ HÃ º ¢ ¸ H5 x Å _ s 2 §` £ ¦"
Ñ î þ > ] jr # ô Ç .
– j B{ ~ 9 ÌÛ Ã ¼\ ¦ ¸f ¿ ºá Ô Ð[ jÛ ¼ç \ ß ë / ß NÄ B » Éà + ½ ºe ¸2 ¤] jô Çô Ç .
• f ] : X x _ : ¤f £
ç
– ô Ç \ ô Çá Ô Ð[ jÛ ¼ë receive\ ß ¦z ´ ' ½ Éà + º e ¸2 ¤] jô Çô Ç .
– : x ` ¦ ¦ Há Ô Ð[ jÛ ¼ç \ ß 1 xÜ l ¼ Ð a Aß ¼ [ & O
ñ a ) . 7 ¤, £ @ © /~ Ó_ ½ s £ 2ë § ß · ú ¦e Ü ¼ a ) .
– rÛ ¼% s 7 ¿ ºá Ô Ð[ jÛ ¼× æe _ Ð × þ # ë z ß ´' ¸2 ¤ô Ç .
– Aß a¼ H&
S ñ X > ¿ º> h_ á Ô Ð[ jÛ ¼ë ß a ' a ) .
• j B{ ~ 9 ÌÛ Ã ¼ Há Ô Ð[ jÛ ¼ èÄ »½ Éà + º ¸e ¦î r%
ò ] ^ j èÄ »½ Éà + º ¸e . 5
• á Ô Ð[ jÛ ¼ B j{ ~ 9 ÌÛ Ã ¼\ ¦è Ä » H
Ä â º
– Â Ëø £ 5 % ×: 5 x Å Ha Aß ¼ G 0 >4 Re H
â º\ Ä ë @ ß /l K ô Ç . – È Áø £ 5 % ×: 5 x Å @ /l H
Ä â º \ O .
– èÄ » ü <Õ ª _ כ 6 x \ ¦½ ¨ì rô Ç . – èÄ » HÕ ªj B{ ~ 9 ÌÛ Ã ¼ РÒ' à º ë ½ ß Éà + º e ¦, 6 x HÕ ªB j{ 9 ~ ÌÛ Ã ¼ ÐB jr t \ ¦ ² ë ú ½ ß Éà + ºe .
• » Äô Ç6 x| Ó¢ ¾ ¸ HÁ ºô Ç6 x| Ó_ ¾ ! Q( \ ¦ 6 x H כ ¦ ` r´ É ú Ð 1 x! l Q( a As ô Ç .
• î r%
^ ò ] j B j{ ~ 9 ÌÛ Ã ¼\ ¦è Ä »½ É +
Ä â º
4.5.5 ; d: Ì Ry © ¢ ¤כ 2000
– B j{ 9 ~ ÌÛ Ã ¼ H: ¤& £
á ñ Ô Ð[ j" f\ a÷ ' &t · § ú H .
• û ¶ ¸Ä ºÝ ¼ 2000 r É × æî r%
¨ ò 8
(Win32, Win16, â MSDOD, OS/2, POSIX)` ¦ ] j/ Nô B Ç . s \ ¦ 0 AK ¨ y 8
_ â á Ô ÐÕ ªÏ õ þ & V ç , \ ß ' ` s Û ¼ ½ i % É` + ¦ H 0 Ar Û ¼% (subsystem)` 7 ¦ 6 xô Ç . s כ r CMU\ É " f] jî ô ß Ç Mach î r%
^ ò ] j 6 x Ç~ ô Ód ½ s .
– á Ô Ð[ jÛ ¼ 6 §õ £ ° É ú r ` כ ¦½ Éà + ºe ¸2 ¤ Õ ª _ כ 9 כ ¹ô ÇB j& m 7 §` £ ¦] j/ NK B ô Ç . • h DÐ î rj B{ ~ 9 ÌÛ Ã ¼_ Ò t$ q
í • B j9 { ~ ÌÛ Ã ¼\ ¦ : xô Ç B jr t _ Ã º õ ú ² • B j{ Ã 9 Ì ~Û ¼_ ] j
• û ¶ ¸Ä ºÝ ¼ 2000_ á Ô Ð[ jÛ ¼ H 0 Ar Û ¼% õ 7 t % i Ô á Ðr $ ñØ ¦(LPC, Local Procedure Call)` ¦s 6 x # : x ô Ç . s M :á Ô Ð[ jÛ ¼ H9 t þ s à Ô, Ar 0 Û ¼% 7 r" É f! Q a ) . LPC HB jr t ² ~ ú Ó ½ _ d á Ô Ð[ jÛ ¼ç : ß x B j& m 7 §s £ .
– s
Ä â ºB j{ ~ 9 ÌÛ Ã ¼\ ¦Ò t$ q
ô í Çá Ô Ð[ jÛ ¼ l r& : Ü h ¼ Ð èÄ » ÷ &9, s á Ô Ð[ jÛ ¼ë s ß s B j{ 9 ~ ÌÛ Ã ¼ РÒ' j Br t \ ¦Ã º ½ Éà + ºe .
4.5.3
– r Û ¼% 7 ñØ ¦` ¦ s6 x # èÄ » ¶õ Ý Ã º ¶ Ý Ç` ô ¦ rá É Ô Ð[ jÛ ¼\ > × ¦Ã ºe .
• LPC H RPC(Remote Procedure Call)ü <Ä » t LPC ß ë H° ú rl É > \ " fz ´' ÷ & Há Ô Ð[ jÛ ¼ç ß : \ x ` ¦½ ÉM + : 6 x a ) .
ÞM Ò × D
• û ¶ ¸Ä ºÝ ¼ 2000 r É 6 §õ £ ° ú r[ É j7 xÀ á Ó_ LPC\ ¦ j/ ] Nô B Ç .
• B jr t ² ` ú ¦½ ¨ ³ & H~ ÓZ ½ O
– 256 s à Ô Ð & h rB É jr t ë _ ß §¨ : 8 í Ô_ à B jr t Ç ©\ ¦ 6 x – 256 s à Ô Ð HB jr t _ §¨ 8 • section Ì o^ (/ NÄ B »B j ¸o )\ ¦ 6 x • íà Ô_ B jr t Ç © Ð H section Ì o^ \ @ /ô Ç í ' ü <B jr t _ ß ¼l ë ß ² ú – callback B j& m 7 § £ 6 x: B jr t ß ¼l ü < © a ' s O \ 6 x½ Éà + ºe Ü ¼9, q 1 xl l d Ü ¼ ÐB jr t ² s ú s À Ò# Q .
– ¡ tÌ C(blocking): f r´ É ú Ð âe Ð (synchÏ ronous) • l 1l x d send: 5 x Å á Ô Ð[ jÛ ¼ H à º B jr t \ ¦Ã º B j{ ~ 9 ÌÛ Ã ¼ Î Ã ~ [ t{ þ M 9 : t @ /l ô Ç . • 1 x l ld receive: º à ½ ÉB + jr t e ` ¦ : M t @ /l ô Ç . – j ¡ tÌ C(nonblocking): f r´ É ú Ðj âe (asynchronous) Ï Ð
• LPC H íà Ô(port) Ì o^ \ ¦s 6 x # á Ô Ð[ jÛ ¼ç ß ` ¦s À Ò ¦Ä »t ô Ç . íà Ô H ~ ª Ó ½ Ó: ¾ x G s , V .
• q1 xl l d send: 5 x Å á Ô Ð[ jÛ ¼ HÁ º ¸ j | Br t \ ¦ 5 x Å ¦ r É \ ` O ¦ô Ç . • q 1 xl l d receive: Ã º HÄ »´ òô ÇB j t r \ ¦ Ã º V B , jr t \ ¦ Ã º Ç ô .
• íà Ô_ 7 xÀ á Ó – íà Ô(connection port): ¸ Há Ô Ð[ jÛ ¼ ] X H½ ÉÃ + ºe Hs 2 §` £ ¦ t H íà Ô – : x íà Ô(communication port): y : x s À s Ò# Q| M 9 :½ É{ + ÷ © & H íà Ô
• # Q ¸½ ËÜ + ¼ Ð 6 x½ Éà + ºe . \ V) 1 xl l d send, q 1 xl l d receive 4.5.4
• á Ô Ð[ jÛ ¼ç : ß x r É 6 §õ £ ° s ú s À Ò# Q .
! a( aË Â S
– þ 9 t s à Ô H 0 Ar Û ¼% _ 7 íà ÔÌ o _ ^ [ ½ t` þ ¦> h~ Óô ½ Ç . – 9 t þ s à Ô H כ ¹' A` õ ¦ ² ô ú Ç . – " f! Q H¿ º> h_ > h 6 x: x íà Ô\ ¦Ò t$ q
í ¦s × æ \ @ /ô Ç ½[ t` þ ¦9 t þ s à Ô\ > ² ô ú Ç . – 9 t þ s à Ôü <" f! Q HK { © íà Ô_ [ ½ t` þ ¦ 6 s x # B jr t ¢ ¸ H callback` ¦ ² ú ¦ x² £ 6 ` ú ¦l ; 2 .
• f] , ç X ] ß : X x ¸¿ º §¨ ÷ 8 & HB jr t He r Ç © \ Ð a ' a ) . • e r Ç ©\ ¦½ ¨ ³ & H~ ÓZ ½ O – È Á£ × % (zero capacity): a Aß ¼ H@ /l HB j r t \ ¦ | º 9 Ã\ O . " f5 x Å Hì Í ø × ¼r à º j Br t \ ¦Ã º ½ ÉM + : t @ / l K ô Ç . 6
client computer
server computer client process
local call
marshal argument
server process
send request
receive request
umarshal arguments
select procedure
execute procedure return
local return
client
unmarshal results
client stub procedure
receive reply
send reply
marshal results
service procedure communication server stub module dispatcher procedure
communication module
<Ă&#x2022; ÂŞa > 4.7> Âś Ă&#x2039; " ĂŠ ĂĄ Â? Ă&#x201D;Â&#x2013; Ă?r $  ùĂ&#x2DC; ÂŚ_ ½ ¨$
Ă
4.6 4.6.1
z Ăź > T Â&#x17D; Ă&#x2026;² š Â&#x17D;-" e! aS  Â&#x17D;y ; Ă° c" eÂ&#x2014; Ă&#x17E;Ă&#x17E; Ă&#x192; Ă&#x2026;
â&#x20AC;˘ ĂŠ " Âś \ Â? Â e Â? Â&#x201D; H9 t Ăž s Â&#x192; Ă Ă&#x201D;Â? H# QÂ&#x2039; ĂĄ " Ă&#x201D;Â&#x2013; Ă?r $ \ ÂŚ] j N B / Â? Ht Ă&#x2019; Â&#x17D; oK Â? ^ ÂŚĂ&#x192; Âşe Â&#x201D; .
} ÂşÂ&#x201D;
â&#x20AC;˘ RPCÂ? H stub procedure\ ÂŚs 6 x  # Â&#x152;4 ¤¸ Â&#x; Â&#x161;Ă´ Ăş Ă&#x2021;? /Ă&#x201A; Ă&#x2019;: x Â&#x; ` Â&#x2019; ÂŚ 6 x  Â&#x2013; Ă?Ă&#x201A; Ă&#x2019;' ¸ u n ĂŻ r . 9 t Ăž s Â&#x192; Ă Ă&#x201D;_ stub Ă&#x201D;Â&#x2013; ĂĄ Ă?r $ Â? H" Âś ĂŠ \ Â?  Â&#x201E; ² Â&#x2DC; Ăş Â? H
p ' \ ÂŚ RPC\  Â?Â? Ăş ´ H+ AI Ăž Â&#x2013; Ă? Ă&#x2039; ¨# Q" f! Q\  Â&#x201E; ² Â&#x2DC;K Ăş Ă&#x2026; Ă&#x2019;Â&#x201C; ÂŚ, " f! Q\  f~ " Ă&#x17D;Â&#x201C; Ă&#x192; r6 Ă&#x2030; x² ÂŁ Â&#x161;` Ăş ÂŚ9 t Ăž s Â&#x192; Ă Ă&#x201D; s K ½ Ă&#x2030;Ă&#x192; + Âşe Â? Â&#x201D; H+ A Ăž Â&#x2013; I Ă?4 ¤œ Â&#x; " ĂŠK ĂŻ r . Ă&#x201E; Âť Ă´ Ă&#x2021;l 0 x` p ÂŚ Â? H stub ĂĄ Ă&#x201D;Â&#x2013; Ă? $ r " f! Q\  Â&#x2022; ¸Â&#x201D; rF > Ă´ Ă&#x2021; .
â&#x20AC;˘ Â&#x161; Âż3 i(socket)Â&#x201C; 1 r: Ă&#x2030; x Â&#x; Â&#x2019; _ = Q` ĂĽ ÂŚ&
_ Ăą Â? H Ă&#x153; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź ÂźÂ&#x2013; Ă?" f, W 1Ă Ă&#x201D;0 >Ă&#x; Âź\ ÂŚ: xK Â&#x; : x Â&#x; Â&#x2019; Â? HÂż ºå Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? Hy Â&#x2022; Â&#x152; Â&#x2122; èĂ&#x2013; ` Âż ÂŚĂŤ Â&#x2013;[ Ă&#x; t# Ăž Qs ` â&#x20AC;Ť×&#x203A;â&#x20AC;Ź ÂŚs 6 x  # Â&#x152;: xÂ&#x2019; Â&#x; Ă´ Ă&#x2021; . â&#x20AC;˘ Â&#x2122; èĂ&#x2013; Â&#x201C; Âż r IP Ă&#x2026; Ă&#x2030; Ă&#x2019;Â&#x2122; èß <Â&#x; ĂĂ Ă&#x201D;  ù\  _ K d Z Â&#x201D; Â? > a ) . â&#x20AC;˘ : ¤& ÂŁ
" Ăą fq Ă&#x203A; Âź\ ÂŚ ] j/ N B Â? H " f! QÂ? H ¸ Â&#x2DC; ¡ Ăş Â&#x2DC; Ăş 9 Â&#x201D; Â&#x; Ă Ă Ă&#x201D;   ù(well-known port)Â&#x2013; Ă? 9 t Ăž s Â&#x192; Ă Ă&#x201D;_ â&#x20AC;Ť×&#x203A;â&#x20AC;Ź š' A Ăľ ÂŚl ` ; Â? 2 . \ V) HTTP: 80
â&#x20AC;˘ l> ç Â&#x2013;_ Ă&#x; Âł Ă°Â&#x2030; Âł_ & s Â&#x2022; ¸s ĂĄ Ă&#x201D;Â&#x2013; Ă?r $ K K r ĂŻ .
â&#x20AC;˘ Ă&#x2026; Ă&#x2019;Â&#x2122; è 166.104.226.74Â&#x201C;  ùĂ&#x203A; Ÿà Ă&#x201D;_ 9 t Ăž s Â&#x192; Ă Ă&#x201D; Ă&#x2026; Ă&#x2019;Â&#x2122; è 210.119.189.173Â&#x201C; Ă&#x203A; R / " f! Q\  > Â&#x192; ÂŚâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź ` š' A Ăľ Â&#x201C; ÂŚz ¡Ă&#x153; ÂźÂ&#x20AC; 9 t Ăž s Â&#x192; Ă Ă&#x201D;_  ùĂ&#x203A; Ÿà Ă&#x201D;Â? H9 t Ăž s Â&#x192; Ă Ă&#x201D;\  > Â&#x; ĂĂ Ă&#x201D;\ ÂŚ ½ Ă&#x2030;{ + Â&#x153;K Š ĂŻ r . s Â&#x; Ă Ă Ă&#x201D;_   ùÂ? H 1024Â&#x2DC; Ă? H   ùs . \ V\ ÂŚ [ t# Ăž Q 1625 ` Œ½ Ă&#x2030;{ + Â&#x153; Š % i Â&#x201C; ÂŚ . Ă&#x2022; ÂŞ QÂ&#x20AC; 9 t Ăž s Â&#x192; Ă Ă&#x201D;Ăź <" f! Qç Â&#x2013;\ Ă&#x;  Â&#x192; Â&#x201C; r (166.104.226.74:1625) Â&#x2122; Ă&#x2030; è Ăľ Âż Ă&#x2013; (210.119.189.173:80) Â&#x2122; èĂ&#x2013; ç Âż Â&#x2013;\ Ă&#x;  s Ă&#x20AC; Ă&#x2019;# QÂ&#x201D; .
â&#x20AC;˘ Â? H RPCĂź < Ă&#x201E; Âť Ă´ Ă&#x2021; RMI(Remote Method In vocation)` ÂŚ] j/ NĂ´ B Ă&#x2021; . s & Â&#x201C; h r RMIÂ? Ă&#x2030; HĂ&#x152; o^ Â? Â&#x2030;t Â&#x2020; Ă&#x201C; ž Ă&#x201D;Â&#x2013; ĂĄ Ă?Ă&#x2022; ÂŞA b
` ç ÂŚt " Âś(Ă&#x152; ĂŠ o^ Â? Â&#x2030;Â&#x201E; ² Â&#x2DC; 0 Ăş x)Ă´ p Ă&#x2021; .
â&#x20AC;˘ Â? H[ j7 xĂ&#x20AC; ĂĄ Ă&#x201C;_ Â&#x2122; èĂ&#x2013; ` Âż ÂŚ] j/ NĂ´ B Ă&#x2021; . â&#x20AC;&#x201C; connection-oriented (TCP, Transmission Control Protocol) socket: Â&#x201E; or Ă&#x203A; Âź% Â&#x203A;Ăľ 7 Ă&#x201E; Âť Ă´ Ă&#x2021; Ă&#x201C;d ½ ~ , Ă Â&#x201D; H" fĂ&#x201E; Âťt â&#x20AC;&#x201C; connectionless (UDP, User Datagram Protocol) socket: Ă&#x201E; ºŸ r # Ă&#x203A; Âź% 7 Â&#x203A;Ăľ Ă&#x201E; Âť Ă´ Ă&#x2021;~ Ă&#x201C;Â&#x201D; ½ d, Ă H " f Â&#x2DC; Ă? Â&#x153;á Š &t ¡ §6 Ăş § ÂŁ â&#x20AC;&#x201C; multicast socket: UDP sockets t ĂŤ Â&#x2013; Ă&#x; Ă&#x2014; ĂŚĂ&#x192; Âş Â&#x2019; \ ÂŚt Âś " ĂŠĂ´ Ă&#x2021; . 4.6.2
Ă&#x152; RĂ&#x; ÂŚ Ă&#x201E;Âł f Â&#x17D;z ÂşS $ [Ă&#x2020; Â&#x201E;Ăť Ă&#x161; s
â&#x20AC;˘ x S~ j è Ă&#x160; ÂŤÂ&#x2014; Ă&#x2014;k $ ÂĄ þ¡ (RPC, Remote Procedure Call)Â&#x201C; r Ă&#x2030; " Âś ĂŠ \ Â?  e Â? Â&#x201D; HĂĄ Ă&#x201D;Â&#x2013; Ă?r $ \ ÂŚ u t % ĂĄ i Ă&#x201D;Â&#x2013; Ă?r $ \ ÂŚ  ùĂ&#x2DC; ÂŚ 1 ws p Ăą  Ă&#x2DC; Œ½ Ă&#x2030;Âş + Ă&#x192;e Â&#x2022; Â&#x201D; ¸2 ¤K Â&#x; ĂŻ r . â&#x20AC;˘ " Âś ĂŠ ĂĄ Â? Ă&#x201D;Â&#x2013; Ă?r $  ùĂ&#x2DC; ÂŚÂ&#x201C; rÂ&#x2122; Ă&#x2030; èĂ&#x2013; Â&#x2DC; Âż Ă? Â? H Â&#x153;0 Š AY U6 Â&#x161;_ \ : x Â&#x; Â&#x2019; B j& m 7 §s ÂŁ . â&#x20AC;˘ " Âś ĂŠ \ Â?  " fĂĄ Ă&#x201D;Â&#x2013; Ă?r $ \ ÂŚĂą  Ă&#x2DC; Œ½ Ă&#x2030;Ă&#x192; + Âşe Â&#x2022; Â&#x201D; ¸2 ¤ Â&#x; l 0 A K " fÂ? HĂ&#x2022; ÂŞ ` â&#x20AC;Ť×&#x203A;â&#x20AC;Ź ÂŚ 6 x½  Ă&#x2030;Âş + Ă&#x192;e Â&#x2022; Â&#x201D; ¸2 ¤1 Â&#x; x2 p ¤K Â&#x; Z ~ Ă&#x2021; Ă´ . 7
c °2003, sangjin@kut.ac.kr
5.1.1
Ă&#x17E;M Ă&#x2019; Â&#x17D;
â&#x20AC;˘ Ă´6 Ă&#x2021; x6 ÂŁ xĂĄ  Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A;\ Ăž  " f# Â&#x152; Q t { 9 ` ÂŚ1 xr l \  Ă&#x192; Âş Â?½ Â&#x; ' Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . y Â&#x2022;{ Â&#x152; ` 9 ÂŚ% Â&#x192;o l 0 AK d ĂĄ Â&#x201D; Ă&#x201D;Â&#x2013; Ă? jĂ&#x203A; [ Âź\ ÂŚĂ&#x2019; t$ q
Ă # Â&#x152;% Â&#x192;o ½ Ă&#x2030;Ă&#x192; + Âşe t Â&#x201D; ĂŤ Â&#x2013;ĂĄ Ă&#x; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź_ t$ q Ă&#x2019;
Â&#x201C; Ă rq Ă&#x2030; 6 xs  Ă&#x; Âź9, " Âś/ ĂŠ NĂ&#x201E; B Âť ~ t 1 ¡ § Ăş .
* <* Ă&#x2013; = ĂĽ i< K: ~ ÂĄq ç { ÂĄĂ&#x2C6; Â&#x2018; 05 A. Silberschatz, P.B. Galvin, G. Gagne Operating System Concepts, Sixth Edition, John Wiley & Sons, 2003.
â&#x20AC;˘ sq 6 x  Œ `Ă&#x2014; ÂŚs Â&#x201C; ÂŚ " Âś/ ĂŠ NĂ&#x201E; B Âť\ ÂŚ~ > 1 l 0 AK Â&#x2022; ¸ Â? 9 { a> ) hÂĽ s Ă&#x2020; Ă&#x203A; ÂźY UĂ&#x2014; Âźs . Ă&#x201E; Âť_ Ă&#x203A; Â&#x201D; Ÿ½ ¨Â&#x2030; Âł_ &
Ă&#x201E; â Âş\  ŸY Ă&#x203A; UĂ&#x2014; ÂźĂ&#x2019; t$ q
q Ă 6 xÂ&#x201C;  rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ&#x2DC; Ă? @ /| Ă&#x152; 10C Ă&#x201E; &
Ăą ¸ Â&#x2022; Ă&#x2DC; Ă&#x201D; .
Part II. Process Management
spawn
finished
 Â&#x17D;7 _Š Â&#x17D;
5
ready
5.1
running
4 ~ Âż
â&#x20AC;˘ â ÂŤQ cĂ&#x17E; ÂŤ(thread)Â? H ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Ÿß < Ă° Ă? t ø Â&#x2013; Ă? CPU _  Â&#x2022;\ Â&#x152; ĂŠ O Â&#x2013;0 Ă&#x; As . Ă&#x2022; ÂŞ Q Ă&#x203A; ÂźY UĂ&#x2014; ÂźÂ? H{ ĂŹ 9 Ă?ĂĄ ø Ă&#x201D;Â&#x2013; Ă?[ j Ă&#x203A; Âź(
Âť% ä Ă&#x2014;è Â&#x2019; ÂŤÂ&#x2014; Ă&#x2014;T zâ ÂŤ(heavyweight process))Ăź <² Â&#x2DC;o Ăş Ă&#x2014; R Âż % Â&#x2019;è ÂŤÂ&#x2014; Ă&#x2014;T zâ ÂŤ(lightweight process) Ă´ Ă&#x2021; .
blocked
<Ă&#x2022; ÂŞa > 5.2> Ă&#x203A; Ă&#x2039; ÂźY UĂ&#x2014; Âź_ Â&#x153;I Š  o
â&#x20AC;˘ ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H ĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A;\ Ăž  Ă&#x192; ÂşÂ? ' Â&#x;Ăľ Ă&#x2022; ÂŞ \ â&#x20AC;Ť×&#x203A;â&#x20AC;Ź  Â&#x20AC; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź 9 šô Ă&#x2021; Âś " ĂŠ` ÂŚ _ > h^ Â&#x2030;\  " fÂ&#x203A; ao ' l 0 AĂ´ Ă&#x2021;~ Ă&#x201C;Z ½ s O t ĂŤ Â&#x2013; Ă&#x203A; Ă&#x; ÂźY UĂ&#x2014; ÂźÂ? H " Âś_ ĂŠ Â&#x203A; ao ' Â&#x2DC; Ă? Â? H ĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A;_ Ăž _ z ´' Â?â Â&#x; ĂŹ2 §Ă&#x153; ÂŁ ÂźÂ&#x2013; Ă?" f CPU_ z ´Â? ' Â&#x;á &l 0 AK Ă&#x203A; ÂźH Ă&#x2014; · &# Q Â? H> h^ Â&#x2030;s .
5.1.2
Â&#x17D;7  _Š Â&#x17D;8 Ă˝Â&#x2014; ¤V Ă&#x2039; R
â&#x20AC;˘ Âź Ă&#x203A;Y UĂ&#x2014; ÂźÂ&#x2022; ¸å Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Ÿß < Ă° Ă? t ø Â&#x2013; Ă?°  Â&#x201C; Ăş r Ă&#x2030; Â&#x153;I Š  o\ ÂŚĂ´ Ă&#x2021; . Ă&#x2022; ÂŞa > 5.2 Â&#x201A; Ă&#x2039; Ă?Â&#x203A; Ă&#x192; ¸.
â&#x20AC;˘ Ă&#x203A; ÂźY UĂ&#x2014; ÂźÂ? HĂ&#x203A; ÂźY UĂ&#x2014; Âźd Z Â&#x201D; > , ĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A;
Ăž ĂŽ r' , Y Ut Ă&#x203A; Âź' | ½ 9 Ă&#x2039;, Ă&#x203A; + ÂźĂ&#x2014; Â&#x2DC;(Â&#x2020; Ăž Ă&#x160;Ă&#x192; < º ùĂ&#x2DC; ÂŚÂ&#x192; %o \  Â&#x20AC; 9 â&#x20AC;Ť×&#x203A;â&#x20AC;Ź šô Ă&#x2021;B jÂ&#x2014; ¸ o )ĂŤ Â&#x2013;` Ă&#x; ÂŚ t 9, % 7 Â&#x2DC;Ă&#x203A; Ÿà Ă&#x201D;Ă&#x201A; Ă&#x2019;ĂŹ r, X <s ' Ă&#x201A; Ă&#x2019;ĂŹ r, Â? r Ă&#x2030; r% ĂŽ
^ ò Â&#x2030;] j " ÂśÂ&#x201C; ĂŠ r° Ă&#x2030;  Â&#x201C; Ăş rĂ&#x201D; Ă&#x2030; ĂĄÂ&#x2013; Ă?[ jĂ&#x203A; Âź\  5 qĂ´ Ă&#x2026; Ă&#x2021; Â? rĂ&#x203A; Ă&#x2030; Âź Y UĂ&#x2014; Ÿß </ NĂ&#x201E; B ô Ă&#x2021; .
â&#x20AC;˘ Ă&#x201D; ĂĄÂ&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? HĂ&#x201A; Ă&#x2019;Â&#x2014; ¸ß < d ĂĄ Â&#x201D; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź\ Œ½ ¨Ï r t ĂŤ Â&#x2013; Ă&#x;  Â&#x201C; Ăş ° rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź? /\  Ă&#x203A; ÂźY UĂ&#x2014; ÂźÂ? HÂ&#x2DC; Ă?: xs Â&#x; ½ ¨Ï r` ÂŚ t ¡ §Â? Ăş H .
â&#x20AC;˘ _ ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Ÿ \" f #
Â? ĂŽ ' Â&#x; Ă&#x192; ÂşÂ? ' Â&#x;á &Â? H Ă&#x203A; ÂźY UĂ&#x2014; ÂźÂ? H Ă&#x2026; Ă&#x2019;Â&#x2122; è/ Nç B Â&#x2013;Ăľ Ă&#x; °  Â&#x201C; Ăş r Ă&#x2030; Âś " ĂŠ` ÂŚ" fÂ&#x2013; Ă?/ NĂ&#x201E; B Âť Â? HĂŹ Ă?Â&#x20AC; ø , _ ( Ă&#x2030; Â&#x17D; Ă&#x201C;' \  " f#
Â? ĂŽ ' Â&#x;Ă&#x192; ÂşÂ? ' Â&#x;á &Â? HĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? HĂ&#x201C; t Ăź o & B h jÂ&#x2014; ¸o , n Ă&#x203A; ÂźĂ&#x; Âźp x 1` ÂŚ/ NĂ&#x201E; B ô Ă&#x2021; .
I/O request request complete
time quantum expires
thread A (process 1) thread B (process 1)
â&#x20AC;˘ Â&#x2014; ¸Â&#x17D; HĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A;` Ăž ÂŚ Ă&#x2014; ĂŚĂ&#x203A; ÂźY UĂ&#x2014; Âź\ ÂŚ 6 x  Â&#x2022; ¸2 ¤ Â&#x; H Ăľ Â&#x201C; ÂŚ # Â&#x152;$
0 Ă xs p Â&#x2020; Ă&#x201C; ž Â&#x153;á Š &Â? H Â&#x201C; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź r Ă&#x2030; m .
thread C (process 2)
process created
â&#x20AC;&#x201C; % aÂ&#x201C; ~ r\ Ă&#x2030; V) Ă&#x203A; R /" f! Q(â&#x20AC;Ť×&#x203A;â&#x20AC;Ź š' A Ăľ Â? rĂ&#x203A; Ă&#x2030; ÂźY UĂ&#x2014; Âź % Â&#x192;o ), R Ă&#x203A; Ă&#x201D; / Ă&#x161; Ă&#x201E; Âş$ (Ă&#x2022; ÂŞa >Ăľ Ă&#x2039; % 7 Â&#x2DC;Ă&#x203A; Ÿà Ă&#x201D;\ ÂŚ Z Â&#x2022; > ¸ Ă&#x203A; ÂźY UĂ&#x2014; Âź % Â&#x192;o )
blocked
registers
data
files
code
data
files
stack
registers
registers
registers
stack
stack
stack
(a) ĂŠ Â&#x2013;{ Ă&#x; Ă&#x203A; 9 ÂźU YĂ&#x2014; Âź
ready
running
<Ă&#x2022; ÂŞa > 5.3> ĂŠ Ă&#x2039; Â&#x2013;{ Ă&#x; 9 ĂĄ Ă&#x201D;Â&#x2013; Ă?[ j" fr Ă&#x203A; ÂźĂ&#x2014; Â&#x203A;\ Ăž  " f Ă&#x2014; ĂŚĂ&#x203A; ÂźY UĂ&#x2014; Âź _Ă&#x192; Âş' Â? Â&#x;
â&#x20AC;&#x201C; Â&#x153; r\ Ă&#x2030; V) ĂŠ Â&#x2013;{ Ă&#x; ĂĄ 9 Ă&#x201D;Â&#x2013; Ă?[ j" f¨ Â&#x160; 8
\ â  " f> Ă Â&#x2013;Ă&#x2014; Ă&#x; ĂŚd Â&#x201D; ĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A; Ăž code
time quantum expires
5.1.3
sX ĂŞ X Ă&#x2C6; ĂŹ
â&#x20AC;˘ ÂŁI Ă&#x2022;Ă&#x2026; Âą (responsiveness): ] Ă&#x2014; ĂŚ Ă&#x203A; ÂźY UĂ&#x2014; Âź ĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A; Ăž rĂ&#x2022; Ă&#x2030; Â&#x201C; ÂŞ _ â&#x20AC;Ť×&#x203A;â&#x20AC;Ź { Ă&#x201A; 9 Ă&#x2019; ^ ÂŚ2 ¤á Â&#x; &# QÂ&#x2022; ¸ Qt Ă&#x201A; Ă&#x2019;ĂŹ rÂ&#x201C; r> Ă&#x2030; qz Ă&#x2026; 5 ´' Â?| Â&#x; cĂ&#x192; ¨ Âşe Â&#x201D; . â&#x20AC;˘ x S Â&#x153; j ÂťĂ&#x2039; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Ă&#x201A;(resource sharing): l Â&#x2018; r& : Ă&#x153; h ÂźÂ&#x2013; Ă? °  Â&#x201C; Ăş r Ă&#x2030; Ă&#x201D;Â&#x2013; ĂĄ Ă?[ jĂ&#x203A; Âź_ Ă&#x203A; ÂźY UĂ&#x2014; ÂźÂ? HB jÂ&#x2014; ¸o Ăź <Ă&#x2022; ÂŞÂľ Ă&#x161;\ 1  å Ă&#x201D;Â&#x2013; Ă?[ j Âź_ Ă&#x203A; " Âś` ĂŠ ÂŚ/ NĂ&#x201E; B ô Ă&#x2021; . Ă&#x203A; ÂźY UĂ&#x2014; ÂźÂ? H°  Â&#x201C; Ăş rĂ&#x2026; Ă&#x2030; Ă&#x2019;Â&#x2122; è/ Nç B Â&#x2013; Ă&#x; ÂŚ/ ` NĂ&#x201E; B Âť Ă&#x2122; ÂźÂ&#x2013; Ă?Ă&#x203A; ÂźY UĂ&#x2014; Ÿç Â&#x2013;: Ă&#x; xÂ&#x2019; Â&#x; s 86 xs  .
(b) Ă&#x2014; ĂŚĂ&#x203A; ÂźY UĂ&#x2014; Âź
â&#x20AC;˘ R ÂżV  Ă&#x2026; (economy): ĂĄ ] Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź B jÂ&#x2014; ¸o Ăź < " Âś ĂŠ Œ½ ` Ă&#x2030;{ + Â&#x153; Š Â&#x20AC; ´ §Â&#x201C; Ăş rÂ&#x161; Ă&#x2030; ¸! QK Â&#x2030;Ă&#x2014; Âź Âľ Ă?Ă&#x2019; 1 tĂ´ q Ă&#x2021; . Ă&#x2022; ÂŞ Q
<Ă&#x2022; ÂŞa > 5.1> ĂŠ Ă&#x2039; Â&#x2013;{ Ă&#x; Ăľ 9 Ă&#x2014; ĂŚÂź Ă&#x203A;Y UĂ&#x2014; Ÿå Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź 1
process
thread
user space
k
run-time system
thread table
(a) @ /{ 9 ¸q 4 S
kernel space
kernel
k
process table
k
k
(b) { @ 9 /{ 9 ¸4 q S
k
k
k
(b) @ / ¸4 q S
<Õ ªa > 5.5> Ë × æÛ ¼Y U× ¼ ¸4 q S
(a) 6 x Û ¼Y U× ¼ process
– î% r
^ ò ] j Û ¼Y U× ¼l 0 x` p ¦t " ¶ é t · §Ü ú ¼ s s כ Ä »{ ô 9 Ç~ ÓZ ½ s O . ì Í@ ø / ÐÒ ty q î r%
^ ò ] j
\ â s O Û ¼Y U× ¼\ ¦t ¶ " é½ ÉÃ + º e .
thread
– V \) POSIX_ Pthread, Mach_ C-thread, Solaris_ UI-thread • & Û
â y «Q cÞ «(kernel thread) kernel thread table
– î r%
^ ò ] j f ] t X " ¶ô é Ç .
process table
(b) & V Û , ¼Y U× ¼
– &V s , Û ¼Y U× ¼_ Ò t$ q
, Û í ¼H × ¦a A, ao ' \ ¦{ ô © { Ç .
<Õ ªa > 5.4> Ë 6 x ü <& V Û , ¼Y U× ¼
– ¸ × ¼
s â 9 כ ¹ l M :ë H\ Û ¼Y U× ¼_ Ò t q
õ í $ ao ' 6 x Û ¼Y U× ¼ Ð Ö ¼o . – _ Û ¼Y U× ¼ ^ ¦2 ¤÷ &# Q ¸° ú rá É Ô Ð[ j ¼\ Û e H rÛ É ¼Y U× ¼\ ¦> 5 qz Å ´ ' ½ Éà + ºe .
á Ô Ð[ jÛ ¼? /_ Û ¼Y U× ¼ H " ¶` é ¦/ NÄ B » Ù ¼ ÐÒ t q
q í $ 6 xs $ § 4 9, Û ¼Y U× ¼ç \ ß ë HÐ o ¨ s 8 6 x s .
– V \) ¶ û ¸Ä ºÝ ¼ NT, ¶ û ¸Ä ºÝ ¼ 2000, Solaris 2 H ¸¿ º& V Û , ¼Y U× ¼\ ¦t " ¶ô é Ç .
•
ä »è « ×T z" Ä © ¿ + Ë£ ` 5.1.4
Þ Ó Ñ ÷ &, Ç f 7 _©
5.2
ú Þ n 7 _© { ¢¨ |
• Û ¼Y U× ¼ H 6 x / Nç B \ ß ½ ¨ ³½ & ÉÃ + ºe ¦, & V / , N B \ ß ç ½ ¨ ³½ & ÉÃ + ºe . ¢ ¸ô Ç ¥½ D Ë + # ¿ º/ Nç B ß ¸ ¿ º\ " f½ ¨ ³½ & ÉÃ + ºe .
• Ð : xî r%
^ ò ] j H 6 x Û ¼Y U× ¼ü <& V Û , ¼Y U× ¼ ¦ \ ¸¿ º] j/ Nô B Ç .
• £ â «Q cÞ «(user thread)
• &V , r& É V Û , ¼Y U× ¼_ rF > ë ß d 9, & V , r É V & Û , ¼Y U× ¼\ ¦Û ¼H × ¦ # z ´' ô Ç .
– 6 x / Nç B \ ß " fÛ ¼Y U× ¼ s Ú Ô Qo \ ¦: x K ] j/ Nô B Ç . 5.2.1
– s s Ú Ô Qo H& , V_ t " ¶\ é s O Û ¼Y U× ¼ _ Ò t$ q
, Û í ¼H × ¦a A, ao ' \ ¦] j/ Nô B Ç . 7 ¤, & £ , V r É ) a# ' t · § ú H . " f ¸× ¼
s â 9 כ ¹\ # O Q¼ ÛY U× ¼_ Ò t$ q
õ í ao ' \ ¦ Ø Ô> ½ ÉÃ + ºe .
6 ø Ç{ m ¢¨ |
• # Q 6 x Û ¼Y U× ¼\ ¦ _ & V Û , ¼Y U× ¼ ÐB
ô ç i Ç . • © & : Û h ¼Y U× ¼_ ao ' 6 x ¸× ¼\ " fs À Ò# Q Ù t ¼ Ð% o Ø Ô .
– á Ô Ð[ jÛ ¼ ^ & Û h ¼H × ¦a A · ú ¦o 7 § £ ¦ | ` 9 à ºe . Õ ª Q & V , rÛ É ¼Y U× ¼é ß 0 A Ðr ì r½ É` + ¦ t · § ú H .
• ß é& : h _ Û ¼Y U× ¼ ^ ¦2 ¤÷ & ^ á Ô Ð[ jÛ ¼ ^ ¦2 ¤ a ) . ¢ ¸ô Ç × æá Ô Ð[ jÛ ¼\ " f × æÛ ¼Y U ¼ 1 × xr l \ à º' | cà ¨ º\ O .
– & V s , é { ß 9 ¼ ÛY U× ¼9 {M :á Ô Ð[ jÛ ¼_ _ Û ¼Y U× ¼ ^ ¦2 ¤÷ & ^ á Ô Ð[ jÛ ¼ ^ ¦ 2 ¤ a ) . ¢ ¸ô Ç × æá Ô Ð[ j" f_ & © ` h ¦s 6 x Éà + ½ º\ O .
5.2.2
• ^2 ¦ ¤÷ &t · § ú H{ 9 Ø ¦§ (q 4 1 xl l d )` ¦ x 6 s ` כ ¦G F4 ¤½ Éà + ºe .
Ç6 m ø ø Ç{ m ¢¨ |
• y 6 x Û ¼Y U× ¼ H _ & V Û , ¼Y U× ¼ ÐB i
ç a ) . 2
• © & : h _ Û ¼Y U× ¼ ^ ¦2 ¤÷ &# Q ¸ Qt Û ¼Y U × ¼ H> 5 qz Å ´ ' a ) . ¢ ¸ô Ç × æá Ô Ð[ j" f\ " f1 x l r \ à º ' | cà ¨ ºe .
• ¼ ÛY U× ¼2 [ è_ # Q 9¹ §: q ¡ 1 xl l d 2 [ è\ " f HÛ ¼ U× Y ¼\ > ½ É{ + © a ) " ¶s é ¸¿ º 1 xÜ l ¼ ÐK ] j÷ & · t §` ú ¦Ã ºe .
• ß é& : q h 6 xs q . " f Ð: xÛ ¼Y U× ¼_ Ã º\ ¦ ] jô Çô Ç .
5.3.3
• » Ä_ Û ¼\ " f H ñ\ ¦s 6 x # : ¤& £
ñ | s { 9 Qz # ¤6 §` £ ¦á Ô Ð[ jÛ ¼\ > : x Ðô Ç . ñ H èá Ô ÔJ à ?# Q à ÔX à O Ôs .
• \ V) ¶ û ¸Ä ºÝ ¼ NT, ¶ û ¸Ä ºÝ ¼ 2000, OS/2 5.2.3
6 { ¢¨ |
• ñ H1 xl l d ¢ ¸ Hq 1 xl l d Ü ¼ ÐÃ º a ) . 1 x l d l ñê Í ø \ _ K Ò t$ q
í a ) ñ\ ¦´ ú 9, s ñ HÕ ª ` כ ¦Ò t$ q
ô í Çá Ô Ð[ jÛ ¼\ ² ú a ) . 1 q xl l d ñ Hü @Â Ò\ _ K Ò t$ q
í a ) ñ\ ¦´ ú 9, Õ ª _ כ Ò t$ q
í r É Ð: x\ V8 ¤½ £ Éà + º\ O .
• # Q 6 x Û ¼Y U× ¼\ ¦1 x{ l 9 à º¢ ¸ HÕ ªs _ à º _ & V Û , ¼Y U× ¼ ÐB i
ô ç Ç . • & V Û , ¼Y U× ¼_ à º H6 x6 £ xá Ô ÐÕ ªÏ \ þ ¢ ¸ H l > _ : ¤$ £
\ í ] jô Ç| cº ¨ Ãe .
• ñ% o õ &
ñ
• © & : q h 6 xs { @ 9 /{ 9 ¸q 4 S Ð $ § 4 9, @ /{ 9 ¸q 4 Sõ ² o ú Û ¼Y U× ¼ _1 xr l à º' s 0 x p .
– ÿ ·4 1. : ¤& £
ñ | _ µ ÏÒ 1 t\ q _ K ñ Ò t q
í $ a ) .
• \ V) Solaris 2
5.3 5.3.1
– ÿ ·4 2. Ò t$ q
í a ) ñ Há Ô Ð[ jÛ ¼\ > ² ú a ) .
7 _© v X È ì
– · 4 ÿ 3. á Ô Ð[ jÛ ¼ H ñ\ ¦% o ô Ç .
forkÑ ÷ exec S y ð Æû Ú s
• 1 xl l d ñ_ \ V: Ô ¦Z & O B h j ¸o ] H X
• Û ¼Y U× ¼> h¥ ` Æ ¦ 6 x l r forkü > < exec r Û ¼ 7 % ñØ ¦` ¦
K â ô Ç .
– ñµ ÏÒ 1 t_ q " ¶ é ` ¦] j/ Nô B Çá Ô Ð[ jÛ ¼\ > ú ) . ñ ² a
• s \ ¦0 AK Ð: xÄ »_ Û ¼ H¿ º7 xÀ á Ó_ fork r Û ¼% 7 ñØ ¦` ¦] j/ Nô B Ç .
• q 1 xl l d ñ_ \ V: CTRL+C
– ¶ ø B© ¼ 1. á Ô Ð[ jÛ ¼_ _ Û ¼Y U× ¼ fork r Û ¼% 7 ñØ ¦` ¦ á Ô Ð[ jÛ ¼_ ¸ HÛ ¼Y U × ¼ 4 ¤ a ) .
– ñ Ã º' × æ á Ô Ð[ jÛ ¼_ ü @Â Ò& כ h ¹ _ \ K µ ÏÒ 1 tô q Ç
Ä â º • ñ% o l _ 7 xÀ á Ó
– ¶ ø B© ¼ 2. á Ô Ð[ jÛ ¼ _ _ Û ¼Y U× ¼ fork r Û ¼% 7 ñØ ¦` ¦ Õ ªÛ ¼Y U× ¼ë 4 ß ¤ a ) .
– l r : ñ% o l : ¸ H ñ Õ ª ` כ ¦% o Hl r : ñ% o l e . s % o l H& V s , Ã º' ô Ç .
• á Ô Ð[ jÛ ¼_ _ Û ¼Y U× ¼ exec r Û ¼% 7 ñØ ¦ ¦ ` ^ á Ô Ð[ jÛ ¼ D há Ô ÐÕ ªÏ Ü þ ¼ Ð §^ a ) .
– 6 x &
_ ñ ñ% o l : 6 x ñ% l o \ ¦&
_ ñ l r : ñ% o l @ / \ % s o l ñ\ ¦% o ô Ç .
• ¿ º7 xÀ á Ó_ fork × æ# QÖ ¼ ` כ ¦ × þ Ö ¼ H6 x6 £ x á Ô ÐÕ ªÏ \ þ _ K &
ñ a ) . ë ß forkô Ç 6 §\ £ Ð exec\ ¦ ñØ ¦½ É + s כ 7 xÀ á Ó 1_ fork` ¦ 6 x H כ rz É q © s . 5.3.2
Å Ã Þ Æ% iP
• Û ¼Y U× ¼\ " f ñ% o H# Qb G> ? – ç ( ¡ 1. « ñ\ K { © HÛ ¼Y U× ¼\ > ë ß ú ²
} º
– ¡( ç 2. á « Ô Ð[ jÛ ¼_ ¸ HÛ ¼Y U× ¼\ > ² ú
• Û ¼Y U× ¼2 [ è(thread cancellation) Hz ´' × æ Û ¼ Y U× ¼\ ¦y ] © j Ð7 x« á Ñ H ` כ ¦´ ô ú Ç . s M :2 [ è½ ÉÛ + ¼Y U× ¼\ ¦7 x7 á x3 á q³ l ðÛ ¼Y U× ¼(target thread) Ç ô .
– ç ( ¡ 3. á « Ô Ð[ jÛ ¼_ {  9 ÒÛ ¼Y U× ¼\ > ë ß ú ² – ç ( ¡ 4. á « Ô Ð[ jÛ ¼_ ¸ H ñ\ ¦Ã º H ¤& £ :
Û ñ ¼Y U× ¼\ ¦¿ º# Q% o
• Û ¼Y U× ¼2 [ è_ ¿ º t + AI þ
• l 1l x d ñ H~ ÓZ ½ 1s O & ½ h Ë + 9, CTRL+Cü <° ú r É ñ H~ ÓZ ½ 2 & O ½ h Ë + .
– q 1 xl l d 2 [ è: l q 3³ ðÛ ¼Y U× ¼ Ð7 x« á Ñ a ) .
• Ð : x UNIX\ " f HÛ ¼Y U× ¼ Ã º ½ É + ñü <Á ºr É + ½ ñ\ ¦t &
½ ñ Éà + ºe ¸2 ¤ô Ç . { ì 9 Í& ø Ü h ¼ Ð ñ µ ÏÒ 1 t÷ q & Õ ª ñ\ ¦Á ºr t · § ú H' Í P : е Ï| 1
aÛ ) ¼Y U× ¼\ > ² ú a ) .
– t a 2 ) [ è: 3 q³ l ð Û ¼Y U× ¼ H 2 [ è "
§ î
` î ¦ ~ Î Ã ¦ Ðá x 7« Ñ t · § ú ¦Å Òl & Ü h ¼ Ð s 7 x« á Ñ÷ &# Q Ht \ ¦ # & ] h ô X Ç r l (Pthread\ " f Hs r l \ ¦2 [ è& (canh cellation point) ô Ç )\ 7 x« á Ñô Ç .
• Solaris H~ ÓZ ½ 4\ O ¦t " ¶ô é Ç . 3
#include <pthread.h> #include <stdio.h> int sum; /* Â&#x2014; ¸Â&#x17D; HĂ&#x203A; ÂźY UĂ&#x2014; Âź / NĂ&#x201E; B Âť Â?X H <s ' */ void *runner(void *param); main(int argc, char *argv[]){ pthread t tid; /* Ă&#x203A; ÂźY UĂ&#x2014; Âźd Z Â&#x201D; > */ pthread attr t attr; /* Ă&#x203A; ÂźY UĂ&#x2014; Âź_ 5 q$ Ă&#x2026;
*/ Ă ... /* l Â&#x2018; r5 : q$ Ă&#x2026;
4 Ă RÂ&#x161; ¸l */ pthread attr init(&attr); /* Ă&#x203A; ÂźY UĂ&#x2014; ÂźĂ&#x2019; t$ q
*/ Ă pthread create(&tid,&attr,runner,argv[1]); /* Ă&#x2019; t$ q
Ă´ Ă Ă&#x2021;Ă&#x203A; ÂźY UĂ&#x2014; Âź ĂĄ x 7ÂŤ Ă&#x2018;| cM ¨ : t @ /l */ pthread join(tid,NULL); ... } void *runner(void *param){
task 1
lightweight process
kernel thread
kernel
CPU
<Ă&#x2022; ÂŞa > 5.7> _ Ă&#x2039; t " o Ă&#x203A; Âź2Ă&#x203A; ÂźY UĂ&#x2014; Âź â&#x20AC;˘ Pthread API_ 6 x_  \ V: Ă&#x2022; ÂŞa > 5.6 Ă&#x2039; â&#x20AC;&#x201C; sĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A;s Ăž z ´' Â?á Â&#x; &Â&#x20AC; Â&#x153; Ăl \  Â? H _ ÂźY Ă&#x203A; UĂ&#x2014; Âź\ ÂŚs 6 x  # Â&#x152;Ă&#x192; Âş' Â?Â? Â&#x; a ) .
}
â&#x20AC;&#x201C; pthread create  ùĂ&#x2DC; ÂŚ` ÂŚs 6 x  # Â&#x152;Ă&#x203A; ÂźY UĂ&#x2014; Âź\ ÂŚ t$ q Ă&#x2019;
Ă Â&#x20AC; Âż Âş> h_ Ă&#x203A; ÂźY UĂ&#x2014; Âź #
' ĂŽ Â?Ă&#x153; Â&#x; ÂźÂ&#x2013; Ă?Ă&#x192; Âş' Â? Â&#x; a ) Â? .
<Ă&#x2022; ÂŞa > 5.6> Pthread API Ă&#x2039; 6 x_  \ V  Â&#x17D;7 _Š Â&#x17D;Ăž Ă&#x161; s
â&#x20AC;&#x201C; pthread join  ùĂ&#x2DC; ÂŚ` ÂŚs 6 x  # Â&#x152;Ă&#x2019; t$ q
Ă´ Ă Ă&#x2021;Ă&#x203A; ÂźY U Âź_ Ă&#x2014; 7 xÂŤ ĂĄ Ă&#x2018;\ ÂŚl w =Ă&#x192; n Âşe Â&#x201D; .
â&#x20AC;˘ Ă&#x203A; ÂźY UĂ&#x2014; ÂźĂ&#x203A; ÂŚ(thread pool)Â&#x201C; rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Ă&#x2019; t$ q
½ Ă Ă&#x2030;Ă&#x192; + Âş Â? Â&#x201D; e HĂ&#x203A; ÂźY UĂ&#x2014; Âź_ Ă&#x192; Âş\ ÂŚh &] X > Â&#x203A; ao ' l 0 AK 6 xá  &Â? HB j& m7 §s ÂŁ .
â&#x20AC;&#x201C; Âź Ă&#x203A;Y UĂ&#x2014; ÂźÂ? H pthread exit  ùĂ&#x2DC; ÂŚ` ÂŚs 6 x  # Â&#x152;7 x ĂĄ Ă&#x2018;Ă´ ÂŤ Ă&#x2021; .
â&#x20AC;˘ Ă&#x203A; ÂźY UĂ&#x2014; Âź\ ÂŚÂ&#x20AC; 9 â&#x20AC;Ť×&#x203A;â&#x20AC;Ź š½ Ă&#x2030;M + : Ă&#x2019; t$ q
Ă t ¡ §Â&#x201C; Ăş ÂŚĂĄ Ă&#x201D;Â&#x2013; Ă?[ j Ă&#x203A; Âź r  Â&#x2022;| Â&#x152; cM ¨ :h &&
Ă´ Ăą Ă&#x2021;Ă&#x192; Âş_ Ă&#x203A; ÂźY UĂ&#x2014; Âź\ ÂŚĂ&#x2019; t$ q
Ă # Â&#x152; Ă&#x203A; ÂźY UĂ&#x2014; ÂźĂ&#x203A; ÂŚ\  @ /l Â&#x2022; ¸2 ¤ô Â&#x; Ă&#x2021; . Ă&#x203A; ÂźY UĂ&#x2014; Âź Â&#x20AC; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź 9 š s Â&#x20AC; Ă&#x203A; ÂŚ\  e Â? Â&#x201D; H Ă&#x203A; ÂźY UĂ&#x2014; Âź\ Œ ¸$ Ă&#x2013;
Ă o # Â&#x152;z ´' Â? Â&#x; &9, z á ´Â? ' Â&#x;s = Q ĂĽ Â&#x20AC; r Ă&#x203A; ÂźY UĂ&#x2014; ÂźĂ&#x203A; ÂŚ\  " f@ /l Ă´ Ă&#x2021; . ĂŤ Â&#x2013;Â&#x20AC; Ă&#x; Â&#x2022;Ă&#x203A; Â? ÂźY UĂ&#x2014; ÂźĂ&#x203A; ÂŚ\  8 s Â&#x153; Š ¸$ Ă&#x2013;
Ă o½ Ă&#x2030;Ă&#x203A; + ÂźY UĂ&#x2014; Âź Ă&#x153; O \ ÂźÂ&#x20AC; % Â&#x192;o â&#x20AC;Ť×&#x203A;â&#x20AC;Ź š' AÂ&#x201C; Ăľ re Ă&#x2030; ` Â&#x201D; ÂŚ: M t @ /l > Â? a ) .
5.5
â&#x20AC;˘ _ t " o Ă&#x203A; Âź 2Â? H @ / Â&#x2014; ¸4 q` S ÂŚ 6 xĂ´  Ă&#x2021; . â&#x20AC;˘ _ ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H LWP Ă&#x203A; ÂŚ` ÂŚ Â&#x201D; . ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź y _ Â&#x2022; Â&#x152; 6 x  Ă&#x203A; ÂźY UĂ&#x2014; ÂźÂ? H LWP\ ÂŚ: xK Â&#x; Ă&#x192; Âş' Â?á Â&#x; &9, y Â&#x2022; Â&#x152; LWPÂ? H _ & V Ă&#x203A; , ÂźY UĂ&#x2014; Ÿß <Â&#x192; Â&#x203A; aá ' &# Qe Â&#x201D; .
â&#x20AC;&#x201C; Â&#x2DC; Ă? Ă&#x2DC; Ă&#x201D;> % Â&#x192;o ½ Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . â&#x20AC;&#x201C; Ă&#x203A; ÂźY UĂ&#x2014; ÂźĂ&#x192; Âş\ ÂŚ] jĂ´ Ă&#x2021; Â? H´ òþ & h Â&#x201C; ~ Ă&#x201C;Z ½ s O .
â&#x20AC;˘ 6 x  Ă&#x203A; ÂźY UĂ&#x2014; ÂźÂ? H%
½ ò ¨& Ă&#x153; h ÂźÂ&#x2013; Ă? _ LWPĂź <Â&#x192; aá ' Â&#x203A; &# Q z ´' Â?| Â&#x; c Ă&#x192; ¨ Âş e Â&#x201C; Â&#x201D; ÂŚ, Ă&#x2022; ÂŞX t O ¡ §` Ăş ÂŚ Ă&#x192; Âş e Â&#x201D; . Â&#x201E; Ăź < °  Â&#x201C; Ăş r Ă&#x203A; Ă&#x2030; ÂźY UĂ&#x2014; Âź\ ÂŚ ĂŞ >Ă&#x17E; ÂŤĂ&#x203A; S â Ă&#x2013; ÂŤQ cĂ&#x17E; ÂŤ(bound thread) Â&#x201C; ÂŚ Ă&#x160; ĂŞ \ ÂŚ ĂŞ >Ă&#x17E; ÂŤb Cm N âĂ&#x2013; à â R ÂŤQ c ÂŤ(unbound thread) Ă&#x17E; Ă´ Ă&#x2021; .
 Â&#x17D;7 _Š Â&#x17D;Â? Ă&#x2026;Â&#x201C; š Ă&#x17E;6 Ă&#x201C; KT ' [
â&#x20AC;˘ Ă&#x203A; ÂźY UĂ&#x2014; ÂźÂ? HÂ&#x2DC; Ă?: Â&#x; x°  Â&#x201C; Ăş rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź\  5 qĂ´ Ă&#x2026; Ă&#x2021;Ă&#x203A; ÂźY UĂ&#x2014; Ÿß < X <s ' \ ÂŚ/ NĂ&#x201E; B ô Ă&#x2021; . â&#x20AC;˘ Ă&#x203A; ÂźY UĂ&#x2014; Âź Â&#x2019; ĂŤ Â&#x2013;_ Ă&#x; X <s ' Â&#x20AC; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź 9 š½ Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . s X <s ' \ ÂŚĂ&#x203A; ÂźY UĂ&#x2014; ÂźÂ&#x201E; 6 xX  <s ' (thread-specific data) 9, @ /Ă&#x201A; Ă&#x2019;ĂŹ rĂ&#x203A; ÂźY UĂ&#x2014; Âź s Ă&#x161; Ă&#x201D; Qo Â? Hs \ ÂŚ t Âś " ĂŠĂ´ Ă&#x2021; .
5.4
Ă&#x161; v ø P  Â&#x17D;2 Â&#x17D;7 _Š Â&#x17D;
â&#x20AC;˘ " _ t o Ă&#x203A; Âź 2Â? H 6 x  Ă&#x203A; ÂźY UĂ&#x2014; Ÿß <& V Ă&#x203A; , ÂźY UĂ&#x2014; Âź s  LWP(LightWeight Process) \ Â&#x201C; ÂŚ Â? HĂ&#x2014; Ìç Â&#x2013;Ă&#x203A; Ă&#x; ÂźY U Âź\ Ă&#x2014; ÂŚ 6 xĂ´  Ă&#x2021; .
â&#x20AC;˘ Ă&#x203A; ÂźY UĂ&#x2014; ÂźĂ&#x203A; ÂŚ_  Â&#x153;& Š h
5.3.5
task 3 user-level thread
... pthread exit(0);
5.3.4
task 2
â&#x20AC;˘ lÂ&#x2018; r& : Ă&#x153; h ÂźÂ&#x2013; Ă? 6 x  Ă&#x203A; ÂźY UĂ&#x2014; ÂźÂ? H Â&#x201C; Ă&#x2014; Ÿá &t ¡ §Â? Ăş H . â&#x20AC;˘ LWP Ă&#x203A; ÂŚ\  e Â? Â&#x201D; H LWP_ Ă&#x192; ÂşÂ? H1 x& l Ă&#x153; h ÂźÂ&#x2013; Ă? o 9, ¸A Â&#x161; 1 xĂŽ l Â&#x2013; Ă&#x; 6 xá  &t ¡ §Â? Ăş H LWPÂ? Hr Ă&#x203A; Âź% 7 Â&#x203A;\  " f] j Ă´ Ă&#x2021; .
Pthread
â&#x20AC;˘ PthreadÂ? H thread Ă&#x2019; t$ q
Ăľ Ă Â&#x203A; ao ' \ ÂŚ0 AĂ´ Ă&#x2021; API\ ÂŚ&
_ Ăą Â? H POSIX Âł Ă°ĂŻ r(IEEE 1003.1c)s .
5.6
â&#x20AC;˘ s Âł Ă°ĂŻ rÂ&#x201C; r API_ Ă&#x2030; Â? ' Â&#x;0 AĂŤ Â&#x2013;& Ă&#x;
_ Ăą Â&#x201C; ÂŚe Ă&#x153; Â&#x201D; Âź9, s â&#x20AC;Ť×&#x203A;â&#x20AC;Ź _ ½ ¨Â&#x2030; ÂłÂ&#x201C; & rĂŽ Ă&#x2030; r%
^ ò Â&#x2030;] j_ Ă&#x2DC; Ă&#x201D; .
Ry Š Ă&#x152; ¢Â&#x2013; ¤â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Â&#x17D; 2000  Â&#x17D;7 _Š Â&#x17D;
â&#x20AC;˘ Ăť Â&#x2DC;Â&#x2022; Âś ¸Ă&#x201E; ÂşĂ? Âź 2000Â&#x201C; r{ Ă&#x2030; @ 9 /{ 9 Ă&#x2014; ĂŚĂ&#x203A; ÂźY UĂ&#x2014; ÂźÂ&#x2014; ¸q 4 S` ÂŚ xĂ´  6 Ă&#x2021; . 4
• ¶ û ¸Ä ºÝ ¼ 2000 r É l r& : Ü h ¼ Ð{ 9 @ /{ 9 ¸4 qs S t ë ß fiber s Ú Ô Qo \ ¦: xK @ / ¸4 q_ S l 0 x p ¸ ] j/ Nô B Ç .
5.7
P × Ô 7 _©
• o ³ qÛ n ¼ Hl r& : Ü h ¼ ÐÛ ¼Y U× ¼\ ¦t ¶ " é t H· § ú H . Õ ª Q Û ¼Y U× ¼ü <Ä » ô Ç+ AI þ _ á Ô Ð[ jÛ ¼\ ¦ t$ q Ò
í # x 6½ Éà + ºe ¸2 ¤ô Ç . • l r fork r > Û ¼% 7 ñØ ¦@ / \ clone r Û ¼% 7 ñØ ¦ ¦ ` 6 x Å Ò è/ Nç B ` ß ¦Â Ò ¸á Ô Ð[ jÛ ¼ü </ NÄ B » Éà + ½ ºe .
5.8
7 _©
• Û ¼Y U× ¼ H l © > \ " f% o Ù ¼ Ð Û ¼Y U× ¼\ ¦ 6 x ¼ ÛY U× ¼¢ ¸ H& V Û , ¼Y U× ¼ Ðì rÀ Ó H s כ Q #§ > . • Û ¼Y U× ¼_ Ò t$ q
í – Thread 9 tA þ Û ¼\ ¦ 5 © q~ Å Î Ã HD h9 tA þ Û ¼\ ¦&
ñ _ # 6 x – z ´] jÛ ¼Y U× ¼_ Ò t$ q
í r É s9 tA þ Û ¼_ start B j è× ¼\ ¦ ñØ ¦½ ÉM + :s À Ò# Q . – start B j è× ¼ ñ Ø ¦÷ & 6 §õ £ ° ú r{ É s 9 à º ' a ) . • h DB j¸ o \ ¦½ É{ + © ¦D hÛ ¼Y U× ¼\ ¦ í l oô Ç . • 9 tA þ Û ¼_ run j B è× ¼\ ¦ ñØ ¦ô Ç . • Û ¼Y U× ¼ H JVM\ _ K & V Û , ¼Y U× ¼ ÐB i
ç a ) . ¶ û ¸Ä ºÝ ¼6 x JVM r{ É @ 9 /{ 9 ¸4 q` S ¦ 6 x 9, _ t " o Û ¼ H @ / ¸4 q` S ¦ 6 xô Ç .
5
c °2003, sangjin@kut.ac.kr
160 140 120 frequency
* <* Ö = å i< K: ~ ¡q ç { ¡È 06 A. Silberschatz, P.B. Galvin, G. Gagne Operating System Concepts, Sixth Edition, John Wiley & Sons, 2003.
100 80 60 40 20 0
Part II. Process Management
0
8
16
24
32
40
burst duration (millisecond)
<Õ ªa > 6.2> CPU ! Ë QÛ ¼à Ôr ç _ ß ¸³ ð
CPU > ú ÚË n  S
6
– ç % ¡ n 1. á · Ô Ð[ jÛ ¼ z ´' × æ I © \ " f@ /l æ × I © Ð ¨ | 8 cM ¨ :(\ V: { 9 Ø ¦§ כ 4 ¹' A) õ – ¡% ç n 2. á · Ô Ð[ jÛ ¼ z ´' × æ I © \ " fï rq a« ¢ Ñ I © Ð ¨ | 8 cM ¨ :(\ V: à ÔX à O Ôµ ÏÒ 1 t) q – ¡% ç n 3. á · Ô Ð[ jÛ ¼ @ /l × æ I © \ " fï rq a« ¢ Ñ I © Ð ¨ | 8 cM ¨ :(\ V: { 9 Ø ¦§ ¢ 4 a« Ñ) – ¡% ç n 4. á · Ô Ð[ jÛ ¼ 7 x« á Ñ| cM ¨ :
M Ä Ø4 ] G È
6.1
• × æá Ô ÐÕ ªA b ç
_ l q 3& h r É Ó ½ z © ´' ½ ÉÃ + ºe H á Ô Ð[ jÛ ¼ e ¸2 ¤ # CPU 6 x´ òÖ ¦` ¦F G@ / o HX <e . 6.1.1
CPU-I/O ! a ² ¤M
• j¤ > n (nonpreemptive) â \ «X
·ÿ ä ' b × Ð : s Ï ~ Ód ½ " \ f Há Ô Ð[ jÛ ¼ CPU\ ½ É{ + ÷ © & Õ ªá Ô Ð[ j ¼ 7 Û x« á Ñ÷ & @ /l × æ I © Ð ¨ | 8 cM ¨ : t CPU\ ¦& Ä h »ô Ç . S © 1õ ! S © 4\ ! " fë Û ß ¼H × ¦ As a { # 9 Q q & ~ h Ód ½ s .
• á Ô Ð[ jÛ ¼ Hz ´' ÷ & H1 xî l CPU z ß ´ ' õ { Ø 9 ¦§ 4 @ /l ¿ ºÅ Òl \ ¦ì Í4 ø ¤ô Ç . • > í × ß æd á Ô Ð[ jÛ ¼ H& h rÃ É º_ B Ä º| CPU ! Q Û ¼à Ô\ ¦ t 9, { 9 Ø ¦§ × 4 æd á Ô Ð[ jÛ ¼ H´ § ú rÃ É º _  ª ú r CPU ! É QÛ ¼à Ô\ ¦ . Õ ªa > 6.1 Ë Ð Ã ¸.
• n ¤ > (preemptive) ' \ ×Ð : # Ï Q " ¸| s ë 7 ß ¤÷ á & ³ & z F ´' × æ á Ô Ð[ jÛ ¼_ _ ü < © a\ ' s O Õ ª כ z _ ´ ' ` ¦× æé ß ¦ rá É Ô Ð[ jÛ ¼\ ¦ CPU\ ½ É + ô © { Ç . z ´ ' × æ á Ô Ð[ jÛ ¼\ ¦× æé ß # Q ë t H] j µ ÏÒ 1 t½ q Éà + ºe Ü ¼Ù ¼ Ð & ~ h Ód ½ rs É ` כ ¦@ /% ½ Éà + ºe # Q ô Ç .
• á Ô Ð[ jÛ ¼_ CPU ! QÛ ¼à Ô H á Ô Ð[ jÛ ¼_ : ¤$ £
õ í r Û ¼% 7 ª t ë ß Ð: xÕ ªa > 6.2ü Ë <° ú r É ¸Ã º\ ¦ p · . Ó t ü r : rÛ ¼% 7 s He ` ¦ à ºe t ë @ ß /^ л Ä ô Ç ¸Ã º\ ¦ p · . 7 ¤, £  ª ú r CPU ! É QÛ ¼à Ô_ ¸ ´ § ú ¦, 8 ms s _ © CPU ! QÛ ¼à Ô H _ \ O .
6.1.4 Dispatcher
• CPU $
0 í xs p µ ϲ 1 ½ ú Éà + º2 ¤á Ô Ð[ jÛ ¼ H{ 9 Ø ¦§ × 4 æ á d Ô Ð[ jÛ ¼ ÷ & H
â Ós ¾ Z } . 6.1.2
• ¼ ÛH × ¦ Q × ô þ Çá Ô Ð[ jÛ ¼\ ¦ CPU\ ½ É{ + K © Å Ò Hכ ¹ è\ ¦g â «A % (dispatcher) ô Ç . • n Û ¼J % _ e Á º
CPU > ú Ú n [
– ë HÐ o ¨ 8 – ¸× ¼ ¨ 8
• CPU Ä »Ê ë I © ÷ & ï rq ¢ a« Ñ Ç ©\ e H á Ô Ð[ jÛ ¼\ ¦ × K þ " fz ´' ô Ç . s × þ r É CPU Û ¼H × ¦ Q(¢ ¸ Hé l ß ¼ ÛH × ¦ Q) ô Ç . 6.1.3
• nÛ ¼J % _ á Ô Ð[ jÛ ¼\ ¦ × æé ß ¦ r É Ô á Ð[ jÛ ¼\ ¦z ´' l t èכ ¹÷ & Hr ç ` ß ¦n Û ¼ u J t (dispatch lantency)s ô Ç .
ÅX Ò È ì > ú ÚÂ n Ë S
• CPU Û ¼H × ¦a A &
ñ rW É 1 t S © \ ! " f{ # 9 Qè ß .
6.2
> ú ÚÂ n ËM S Ç Ø U
• CPU Û ¼H × ¦a A· ú ¦o 7 §` £ ¦ × ½ þ ÉM + : ¦ 9÷ & H ï l r CPU-bound process short CPU burst
long CPU burst
I/O wait
– CPU £ ¹ ô· (CPU utilization): 0 xô p Ç CPU > 5 qÄ Å »6 xô Ç \ ` O ¦ ¸2 ¤K ô Ç . ë ß # Q & "
K ñ r ç 1 ß xî l > ß 5 q CPU Å Ä »6 xô Ç \ ` O ¦ % Ü i ¼ CPU 6 x´ òÖ ¦ r 100% É a ) .
I/O-bound process time
<Õ ªa > 6.1> > Ë í × ß æd õ { 9 Ø ¦§ × 4 æd á Ô Ð[ jÛ ¼ 1
– % h · (throughput): r ç { ß ¢ © a« Ñ÷ & Há Ô Ð [ jÛ ¼_ à º
6.3.2
SJF > ú ÚË n  S
• SJF(Shortest-Job-First) Û ¼H × ¦a A· ú ¦o 7 § £ r É § CPU ! £ 6 QÛ ¼à Ôr ç s ß Â © ª ú rá É Ô Ð[ jÛ ¼í HÜ ¼ ÐÛ ¼H × ¦a Aô Ç .
– 5 ð » Ék . ë Ñ(turnaround time): 5 _ á Ô Ð[ j Û ¼ ] jr ar ) & \ h " fÕ ªá Ô Ð[ jÛ ¼ 7 x« á Ñ cM ¨ | : t ; 2r ç ß – 7 e k ë Ñ(waiting time): ô 5 Çá Ô Ð[ jÛ ¼ ï r q ¢ a« ÑÇ ©\ " f@ /l ô Ç8 xr ú ç ß
• ß ë á Ô Ð[ jÛ ¼ ° ú r CPU ! É QÛ ¼à Ôr ç ` ß ¦ t FCFS &
Õ ñ ` þ ¦ r É .
– £Õ I ±k ë Ñ(response time): " 5 fq Û ¼\ ¦כ ¹' Aô õ Ç Ê ê\ Õ ª" fq Û ¼\ @ /ô Ç' ì Í Í6 ø xs £ ¸l t ; 2r ç ß
• V \) 6 §õ £ ° ú rá É Ô Ð[ jÛ ¼ e ` ¦M :Û ¼H × ¦a A \ õ ¦ a¹ ' Ï 1 # Ð . á Ô Ð[ jÛ ¼ P1 P2 P3 P4
• 0 Al ï r r É 6 x a& ' (ì h ͨ ø r 8 ç , 6 ß x² £ r ú ç 1 ß x) p r õ Û ¼% 7 a& ' h (CPU 6 x´ òÖ ¦, % o Ö ¦)Ü ¼ Ð Ð tà ü ºe . • CPU 6 x´ òÖ ¦õ % o Ö ¦ rþ É j@ / o ¦ì ͨ ø r 8 , @ ß ç /l r ç , £ ß x 6² r ú ç ß rþ É j è o H· ú ¦o 7 § £ s s © & © s h .
Aá 0 Ô Ð[ jÛ ¼ ¸¿ º ³F & ï rq ¢ a« ÑÇ ©\ e ¦ &
ñ ( ¸¿ º ¸ Ìr à ç s ß 0 ms) Û ¼H × ¦a A õ H 6 §õ £ ° ú .
• 6 x² £ r ú ç _ ß
Ä â º\ H¨
î ç6 H x² £ r ú ç ` ß ¦þ j è o H כ Ð ¼ # \ ¦þ j è o H s כ 8Ä ºÃ ºô Ç· ú ¦o 7 §s £ ¦Å Ò © H s ¸e .
3 P4
6.3.1
9 P1
16
24
P3
P2
ç î ¨ H@ /l r ç ß r (3 + 16 + 9 + 0)/4 = 7 mss É . ë ß P1 , P2 , P3 , P4 í H" f Ð FCFS · ú ¦o 7 §Ü £ ¼ Ð ¼H Û × ¦a A % i ¨
ç î H@ /l r ç ß r 10.25 mss É .
> ú ÚÂ n Ë° S ow P ¨ Ö
6.3
! QÛ ¼à Ôr ç ß 6 ms 8 ms 7 ms 3 ms
FCFS > ú ÚË n  S
• FCFS(First-Come First-Served) Û ¼H × ¦a A · ú ¦ o 7 § £ r É $ כ ¹' Aô õ Çá Ô Ð[ jÛ ¼í HÜ ¼ ÐÛ ¼H × ¦a A Ç ô .
• SJF · ú ¦o 7 § £ r¨ É
ç î H@ /l r ç 8 ß ¤ £ \ " f Hþ j& h \ © Ö ¦ s כ .
• s · ú ¦o 7 § £ rq É & ~ h Ód ½ s .
• SJF · ú ¦o 7 §_ £ © H# Q 9¹ § ¡ rá É Ô Ð[ jÛ ¼_ § CPU ! £ 6 QÛ ¼à Ôr ç ` ß ¦\ V8 ¤ £ H s כ .
• FCFS · ú ¦o 7 § £ r FIFO Ç É ©\ ¦s 6 x # ~ > 1 ½ ¨ ³ & ÉÃ + ½ ºe .
• Ð : x 6 § CPU ! £ QÛ ¼à Ôr ç ß rs É _ CPU ! QÛ ¼ Ô[ à t_ þ U ´s \ ¦t à º¨
ç î H(exponential average) ½ # ¨ô Ç .
• \ V) 6 §õ £ ° ú rá É Ô Ð[ jÛ ¼ e ` ¦M :Û ¼H × ¦a A \ õ ¦ a¹ ' Ï 1 # Ð . Ô á Ð[ jÛ ¼ P1 P2 P3
¸ Ìr à ç ß 0 ms 1 ms 2 ms
• t à º¨
ç î H r É 6 §õ £ ° s ú &
_ ñ a ) .
! QÛ ¼à Ôr ç ß 24 ms 3 ms 3 ms
τn+1 = αtn + (1 − α)τn #l " f tn r n É P : CPU ! QÛ ¼à Ôr ç s ß ¦, τn r É V8 \ ¤ô £ Ç n P : CPU ! QÛ ¼à Ô r ç s ß . α H 0õ 1 s _ à ºs 9, × æu \ ¦ &
ô ñ Ç . α = 0.5\ ¦ V © o , 6 xô Ç .
á Ô Ð[ jÛ ¼_ ¸ Ìí à H" f P1 , P2 , P3 s Û ¼H × ¦ a A õ _ Gantt ¸³ ð H 6 §õ £ ° ú . 24 P1
27 P2
• Q # " ¦&
ñ a° ) כ¢ ú ¸ H ^ r Û ¼% ¨ 7
ç î H` ¦ τ0 Ð xô 6 Ç .
30 P3
• V \) α = 0.5s ¦ τ0 = 10 ms ¦ &
½ ñ ÉM + :\ V8 ¤ £ ç r õ ß z ´] jr ç ` ß ¦q § 6 §õ £ ° ú .
P1 _ @ /l r ç ß r 0 ms, P2 É H 24−1 = 23 ms, P3 H 27 − 2 = 25 mss Ù ¼ Ш
ç î H@ /l r ç ß r 16 mss É . ë ß ¸ Ìí à H" f P2 , P3 , P1 s s M : Gantt ¸³ ð H 6 §õ £ ° Ü ú ¼9, 3 P2
6 P3
CPU ! QÛ ¼r ç ß V8 \ ¤r £ ç ß
30 P1
10
6 8
4 6
6 6
4 5
13 9
13 11
• & SJF · h ú ¦o 7 §\ £ " fD há Ô Ð[ jÛ ¼ ï rq ¢ a« Ñ ©\ Ç ¸ Ì Ã s á Ô Ð[ jÛ ¼_ 6 § CPU ! £ QÛ ¼à Ô ç r õ ß ³F & à º ' × æ á Ô Ð[ jÛ ¼_ z r CPU ! É Q ¼à Û Ôr ç ` ß ¦q §ô Ç . s M :D há Ô Ð[ jÛ ¼_ 6 § £ ç r s ß Ã º ' × æá Ô Ð[ jÛ ¼_ z rr É ç ß Ð & Ü h ¼ l rá > Ô Ð[ jÛ ¼\ ¦y ] © j Ð7 x« á Ñ ¦D há Ô Ð[ j ¼\ Û ¦½ É{ + ô © Ç .
ç î ¨ H@ /l r ç ß r 2 mss É . • FCFS_ é & ß É h r ñ0 A´ òõ (convoy effect) µ ÏÒ 1 t q Éà + ½ ºe H s כ . ñ0 A´ òõ ê Í ø _ H á Ô Ð[ jÛ ¼ CPU\ ¦ ª н ÉM + : t r É ¸ Há Ô Ð [ jÛ ¼ l o H ³ & ` © ¦´ ô ú Ç . 2
• & SJF · h ú ¦o 7 § £ r É r´ É ú Ð SRTF(ShortestRemaining-Time-First) · ú ¦o 7 §s £ ô Ç .
• º Ä í H0 A H ? /Â Òכ ¹ \ _ K &
(î ñ r%
^ ò ] j Íé ø ó )| ß cà ¨ ºe ¦ü @ Òכ ¹ \ _ K &
( ñ 6 x & t
)| ñ cà ¨ ºe .
• \ V) 6 §õ £ ° ú rá É Ô Ð[ jÛ ¼ e ` ¦M :Û ¼H × ¦a A \ õ ¦ a¹ ' Ï 1 # Ð . á Ô Ð[ jÛ ¼ P1 P2 P3 P4
¸ Ìr à ç ß 0 ms 1 ms 2 ms 3 ms
• & Ä h º í H0 A~ Ód ½ \ " f H & SJF · h ú ¦o 7 § £ õ ð Í t ø Ð ¸ Ìô Ã Çá Ô Ð[ jÛ ¼ ³F & Ã º' × æ á Ô Ð[ jÛ ¼ Ð Ä º í H0 A Z }Ü ¼ ³F & á Ô Ð jÛ [ ¼ H× æé ÷ ß & ¦D há Ô Ð[ jÛ ¼ CPU\ ½ É{ + ÷ © & Qz # ´' a ) .
QÛ ! ¼à Ôr ç ß 8 ms 4 ms 9 ms 5 ms
• V \) 6 §õ £ ° ú rá É Ô Ð[ jÛ ¼ e ` ¦M :Û ¼H × ¦a A \ õ ¦ a¹ ' Ï 1 # Ð .
Û ¼H × ¦a A õ H 6 §õ £ ° ú . 0 1 P 1
5 P2
10
17
P4
26
P1
P3
ç î ¨ H@ /l r ç ß r É 6 §õ £ ° Ü ú ¼9, ((10 − 1) + (1 − 1) + (17 − 2) + (5 − 3))/4 = 6.5 ms
ç î ¨ Hì ͨ ø r 8 ç ß r É 6 §õ £ ° ú . ((17−0)+(5−1)+(26−2)+(10−3))/4 = 13 ms
8 P1
12 P2
17
QÛ ! ¼à Ôr ç ß
Ä º í H0 A
0 ms 1 ms 2 ms 3 ms 4 ms
10 ms 1 ms 2 ms 1 ms 5 ms
3 1 4 4 2
0 1 2
26
P4
¸ Ìr à ç ß
P1 P2 P3 P4 P5
5> h_ á Ô Ð[ jÛ ¼ ° ú rr É ç \ ß ¸ ÌÙ Ã ¡ þ ¦ . ÛH ¼ × ¦a A õ H 6 §õ £ ° ú .
q & ~ h Ód ½ _ SJF · ú ¦o 7 §Ü £ ¼ ÐÛ ¼H × ¦a A % i ¦ `
Ä â º\ Û ¼H × ¦a A õ H 6 §õ £ ° ú . 0
á Ô Ð[ jÛ ¼
P P 1 2
P3
4 P1
9
16
P5
P1
18 19 P3
P 4
ç î ¨ H@ /l r ç ß r É 6 §õ £ ° ú .
ç î ¨ H@ /l r ç ß r É 6 §õ £ ° Ü ú ¼9, (0 + (8 − 1) + (17 − 2) + (12 − 3))/4 = 7.75 ms
(6 + 0 + (16 − 2) + (18 − 3) + 0)/5 = 7 ms
ç î ¨ Hì ͨ ø r 8 ç ß r É 6 §õ £ ° ú . • º Ä í H0 A· ú ¦o 7 §_ £ ë H] j& h r% É
½ ò ¨@ /l (indefinite blocking) ¢ ¸ HÏ UÅ ã Òa >(starvation) Ë ³ & s © µ Ï 1 t½ q Ò ÉÃ + ºe H s כ . Ä º í H0 A ± ú rá É Ô Ð[ j ¼ Û H¨
Ò î tz q ´' ÷ &t · §` ú ¦Ã ºe .
((8−0)+(12−1)+(26−2)+(17−3))/4 = 14.25 ms 6.3.3
¤ ÅÅ Ò Ø U ü > ú ÚÂ n Ë S
• Ë Á¤ >' n K DÛ ¼H × ¦a A rÄ É º í H0 A Z } rá É Ô Ð[ jÛ ¼ \ > $ CPU\ ¦½ É{ + ô © Ç . Ä º í H0 A ° Ü ú ¼ FCFS &
Õ ñ Ü þ ¼ н É{ + ô © Ç .
• s ` כ ¦ F G4 ¤ l 0 AK aging l Z ` O ¦ 6 xô Ç . aging l Z O r@ É /l Há Ô Ð[ jÛ ¼_ Ä º í H0 A\ ¦ h & & Ü h ¼ Ð7 x r £ & ï r .
• SJF ¸Ä º í H0 A¼ ÛH × ¦a A× æ s . • Ä º í H0 A H Ð x : &
à ñ º° כÜ ú ¼ Ð ? /9, 0\ " f 7 t ü <° ú r É ¦&
ñ a# ) 0 3 A\ ¦ . s M : Ð: x ± ú rÃ É º{ 9 à º ¤ 2Z } rº É Ä í H0 A\ ¦ p · .
6.3.4
• ( Þ P « ×è >(RR, Round-Robin) Û ¼H × ¦a A· ú ¦ 7 o § £ rr É ì r½ Ér + Û ¼% 7 \ " f 6 x H· ú ¦o 7 §s £ .
• \ V) 6 §õ £ ° ú rá É Ô Ð[ jÛ ¼ e ` ¦M :Û ¼H × ¦a A \ õ ¦ a¹ ' Ï 1 # Ð . á Ô Ð[ jÛ ¼ P1 P2 P3 P4 P5
QÛ ! ¼à Ôr ç ß 10 ms 1 ms 2 ms 1 ms 5 ms
• s· ú ¦o 7 §\ £ " f Hk ë Ñ 5 ¿´ Ð(time quantum, tiÇ me slice)s ¦ H rr É ç ` ß ¦&
_ ñ # s ç r s ß
õ â | cM ¨ : ³F & á Ô Ð[ jÛ ¼\ ¦× æé ß ¦ 6 §á £ Ô Ð[ jÛ ¼\ ¦z ´' ô Ç .
º Ä í H0 A 3 1 4 5 2
• Ð : xï rq ¢ a« ÑÇ ©\ ¦í H¨ ! 8 Q( Ðë [ ß t# þ Q½ ¨ ³ô & Ç .
5> h_ á Ô Ð[ jÛ ¼ ¸ ¿ º 0 ms\ ¸ ÌÙ Ã ¡ þ ¦ . Û ¼H × ¦a A õ H 6 §õ £ ° ú . 0 1 P 2
6 P5
16 P1
Æ Ø© U z ºÝ Å Ã > ú ÚË n  S
• V \) 6 §õ £ ° ú rá É Ô Ð[ jÛ ¼ e ` ¦M :Û ¼H × ¦a A \ õ ¦ a¹ ' Ï 1 # Ð .
18 19 P3
P 4
á Ô Ð[ jÛ ¼ P1 P2 P3
ç î ¨ H@ /l r ç ß r É 6 §õ £ ° ú . (6 + 0 + 16 + 18 + 1)/5 = 8.2 ms 3
! QÛ ¼à Ôr ç ß 24 ms 3 ms 3 ms
0 Aá Ô Ð[ jÛ ¼ ¸¿ ºú ° rr É ç \ ß ¸ ÌÙ Ã ¡ þ ¦r ç ß ¸y s 4 mss ¦ &
ñ Û ¼H × ¦a A õ H 6 §õ £ ° ú . 0
4 P1
7
10
P2 P3
14 P1
18 P1
22 P1
26 P1
time out ready queue CPU
30 P1
auxiliary queue
ç î ¨ H@ /l r ç ß r (6 + 4 + 7)/3 = 5.66 mss É . • \ V) 6 §õ £ ° ú rá É Ô Ð[ jÛ ¼ e ` ¦M :Û ¼H × ¦a A \ õ ¦ a¹ ' Ï 1 # Ð . á Ô Ð[ jÛ ¼ P1 P2 P3 P4
¸ Ìr à ç ß 0 ms 1 ms 2 ms 13 ms
QÛ ! ¼à Ôr ç ß 10 ms 2 ms 6 ms 4 ms
I/O 2 queue
<Õ ªa > 6.3> Ë RR Û © ¼H × ¦ Q
Û ¼H × ¦a A õ H 6 §õ £ ° ú . 0
4 6 P1
P 2
10 P3
14 16 P1
P 3
á Ô Ð[ jÛ ¼ P1 P2 P3 P4
20 22 P4
P 1
ç î ¨ H@ /l r ç ß r É 6 §õ £ ° ú . (12 + 3 + 8 + 3)/4 = 6.5 ms
4 6 P1
P 2
10 P3
14 P1
0
3
9
15
17
P P P P P P P P P P P P P P P P P 1 2 3 4 1 2 4 1 2 4 1 4 1 4 1 4 4
18 20 22 P4
! QÛ ¼à Ôr ç ß 6 ms 3 ms 1 ms 7 ms
ç r ß ¸y s 1 ms{ 9 M : H 6 §õ £ ° ú .
ë ß P4 _ ¸ Ìr à ç s ß 9 mss Û ¼H × ¦a A õ H 6 §õ £ ° ú . 0
I/O wait
I/O 1 queue
P P 3 1
M s :¨
ç î Hì ͨ ø r 8 ç ß r É 6 §õ £ ° ú .
ç î ¨ H@ /l r ç ß r É 6 §õ £ ° ú .
(15 + 9 + 3 + 17)/4 = 11 ms
(12 + 3 + 12 + 1)/4 = 7 ms
ͨ ø ì r 8 ç @ ß / \ &
½ ñ © o aì ) ͨ ø r 8 ç (normalized ß turnaround time)` ¦8 ¤& £
ñ H
Ä â º ¸e . &
½ ñ ©¨ 8 aì ) ͨ ø r 8 ç ß rr É Û ¼% \ 7 Që H ^ r ç õ ß z ´' ç r _ ß q Ö ¦ Ð8 ¤& £
ñ a ) . P1 = 15/6 = 2.5, P2 = 9/3 = 3, P3 = 3/1 = 3, P4 = 17/7 = 2.4s Ù ¼ Ð
ç î ¨ H&
½ ñ © o aì ) ͨ ø r 8 ç ß r 2.725s É .
• RR · ú ¦o 7 § £ rl É r& : Ü h ¼ Ð & ~ h Ód ½ s . • RR · ú ¦o 7 §_ £ $
0 í x p rr É ç ß ¸y \ ß ¼> _ rô > Ç . s ß ¼l B Ä ºß ¼ RR · ú ¦o 7 § £ r FCFS · É ú ¦o 7 §õ £ H s \ O . ì Í@ ø / ÐB Ä º Ü ¼ ë H o Ð ¨ s 8 ´ §s ú µ ÏÒ 1 tô q Ç .
ç r ß ¸y s 2 ms{ 9 M : H 6 §õ £ ° ú .
• RR · ú ¦o 7 §_ £ ë H] j& h r> É í × ß æd á Ô Ð[ jÛ ¼ 9 { Ø ¦§ × 4 æd á Ô Ð[ jÛ ¼Ð ´ § ú rr É ç ` ß ¦½ É{ + ~ © Î Ã > a ) H s כ (/ N& B
ñ t l w 3 Ê). <
0
5 P1
P2
P 3
10 P4
P1
P 2
14 P4
P1
17 P4
P 4
M s :¨
ç î Hì ͨ ø r 8 ç ß r É 6 §õ £ ° ú .
– > í × ß æd á Ô Ð[ jÛ ¼ H _ r ç ß ¸y ` ¦ 6 xô Ç 6 §\ £ Ð r ï rq ¢ a« ÑÇ ©\ " f@ /l ô Ç . ì Í ø \ { 9 Ø ¦§ × 4 æd á Ô Ð[ jÛ ¼ H _ rç ß ¸ ` ¦ Ð: x 6 x t 3 w l ¦{ 9 Ø ¦§ Ç 4 ©\ " f/ @l > a ) . s @ / l s \ > í × ß æd Ô á Ð[ jÛ ¼ H> 5 q CPU Å r ç ` ß ¦½ É{ + ~ © Î> à a ) .
(14 + 10 + 5 + 17)/4 = 11.5 ms ç r ß ¸y s 3 ms{ 9 M : H 6 §õ £ ° ú . 0
6 7 P1
13
P 3
P2
P4
P1
17 P 4
P4
M s :¨
ç î Hì ͨ ø r 8 ç ß r É 6 §õ £ ° ú .
– s ë H] j\ ¦K l 0 AK { Ø 9 ¦§ ` 4 ¦¢ a« Ñô Ç á Ô Ð[ jÛ ¼ Hï rq ¢ a« ÑÇ © Ð` l t · § ú ¦Z > ¸_ Ç © Ð` | . ³F & à º' × æ á Ô Ð[ jÛ ¼ _ r ç ¸ ß y s = Q å ï rq ¢ a« ÑÇ © Ð $ s Ç ©\ e Há Ô Ð[ jÛ ¼\ > r ç ß ¸y ` ¦ É{ + ½ K © ï r . Õ ªa > 6.3 Ë Ð Ã ¸.
(13 + 6 + 7 + 17)/4 = 10.75 ms ç r ß ¸y s 4 ms{ 9 M : H 6 §õ £ ° ú . 0
7 8 P1
P2
P 3
14 P4
P1
17 P4
M s :¨
ç î Hì ͨ ø r 8 ç ß r É 6 §õ £ ° ú .
• ì ͨ ø r 8 ç ß ¸r ç ¸ ß y _ ß ¼l \ _ rô > Ç .
(14 + 7 + 8 + 17)/4 = 11.5 ms
• \ V) 6 §õ £ ° ú rá É Ô Ð[ jÛ ¼ e ` ¦M :r ç ß ¸y _ 7 x \ £ rì É Í¨ ø r 8 ç ` ß ¦ a¹ ' Ï 1 # Ð .
ç r ß ¸y s 5 ms{ 9 M : H 6 §õ £ ° ú . 4
0
8 9 P1
15
P 3
P2
P 1
P4
17
6.3.6
• 9 {ì Í ø × æY U6 Ç \ ©Û ¼H × ¦a A rÄ É » $
s í b # Q .
s M :¨
ç î Hì ͨ ø r 8 ç ß r É 6 §õ £ ° ú .
• × æY U6 x \ × ¼Ñ Ç þ ©Û ¼H × ¦a A rá É Ô Ð[ jÛ ¼ Ç © \ ß ç s 1 x½ l Éà + ºe ¸2 ¤K ï r .
(15 + 8 + 9 + 17)/4 = 12.25 ms r ç ß ¸y s 6 ms{ 9 M : H 6 §õ £ ° ú . 0
6 P1
9 10
• sÛ ¼H × ¦a A_ Å Ò3 q³ l ð H CPU ! QÛ ¼à Ôr ç : ß ¤$ £
í s rá É Ô Ð[ jÛ ¼[ t` þ ¦ì ro # Ï UÅ ã Òa > Ë ³ & õ © ñ0 A´ òõ ³ & ` © ¦] j H s כ .
17
P 3
P2
P 4
P4
s M :¨
ç î Hì ͨ ø r 8 ç ß r É 6 §õ £ ° ú .
• / @ od á Ô Ð[ jÛ ¼ü <{ Ø 9 ¦§ × 4 æd á Ô Ð[ jÛ ¼ H © AÇ 0 ©\ ½ É{ + ÷ © & ¦ CPU × æd á Ô Ð[ jÛ ¼ H 0 AÇ © ½ \ É{ + © a ) .
(6 + 9 + 10 + 17)/4 = 10.5 ms s s r © ç ß ¸y ` ¦7 x £ # ¸ì ͨ ø r 8 ç ß r É t · § ú H .
• × æY U6 x \ × ¼Ñ Ç þ ©\ ¦ &
ñ H
p ' – Ç ©_ > hà º
• 0 A\ V\ " f Hë HÐ o ¨ \ 8 èכ ¹÷ & Hr ç ß r É ¦ 9 t · § ú ¤ . ë HÐ o ¨ \ 8 1 ms èכ ¹ a ) r ß ç ¸y s 2 ms{ 9 M :ü < 4 ms{ M 9 :ì ͨ ø r 8 ç ` ß ¦> ß í # Ð . $ r ç ¸ ß y s 2 ms{ M 9 : H 6 § £ ° õ ú . 0
7 P1
P2
P 3
14 P4
P 2
P1
19 P4
P1
– y Ç ©_ Û ¼H × ¦a A· ú ¦o 7 § £ – Ô á Ð[ jÛ ¼\ ¦Z } rÄ É º í H0 AÇ © Ð` ¦ 9Å Ò H l r \ ¦ &
ñ H~ ÓZ ½ O – Ô á Ð[ jÛ ¼\ ¦± ú rÄ É º í H0 AÇ © Ð? / 9Å Ò H l r \ ¦ &
ñ H~ ÓZ ½ O
22
P4
P 4
– Ô á Ð[ jÛ ¼ ï rq ¢ a« ÑÇ ©\ [ t# þ Q` ¦M :# Q " ©\ Ç ½ É{ + ½ © Ét + \ ¦ &
ñ H~ ÓZ ½ O
s M :¨
ç î Hì ͨ ø r 8 ç ß r É 6 §õ £ ° ú . (19 + 14 + 7 + 22)/4 = 15.5 ms
6.4
8 P1
P2
9 P 3
16 P4
P1
19
– &
: á ñ Ô Ð[ jÛ ¼ H1 x{ l 9 .
P4
– ß ë : ¤& £
{ ñ 9 Ø ¦§ 4 u © _ á Ô Ð[ j" f r _ Û ¼% 7 ! QÛ ¼\ ë ß ÷ &# Qe Õ ª © \ u ¦ 6 xK Há Ô Ð[ jÛ ¼ HÕ ªá Ô Ð[ j f\ " ½ É{ + ÷ © &# Q ô Ç .
s M :¨
ç î Hì ͨ ø r 8 ç ß r É 6 §õ £ ° ú . (16 + 8 + 9 + 19)/4 = 13 ms
– yá Ô Ð[ j" f Z > ¸_ ï rq ¢ a« ÑÇ ©\ ¦¿ º ô ÇÇ © Hq # Qe ¦ rÇ É ©\ H´ § ú rá É Ô Ð[ jÛ ¼ @ /l × æ{ 9 à ºe . " f Ð: x r É N: B / x aï ) rq ¢ a« ÑÇ ©\ ¦ 6 xô Ç .
• 9 { ì Í& ø Ü h ¼ Ð CPU ! QÛ ¼à Ôr ç _ ß 80% Hr ç ß ¸ y Ð & # h Q © | Ðf à . 6.3.5
ú Þ³ n z º: g" e > ú ÚË n  S
• 7 xá £ Ô Ð[ jÛ ¼\ " fÛ ¼H × ¦a A½ ÉM + : ¦ 9 Ó ½
r ç ß ¸y s 4 ms{ 9 M : H 6 §õ £ ° ú . 0
ú Þ7 n _« Y © s Á > ú ÚË n  S
P4
ú Þ7 n _« Á > ú ÚÂ n Ë S
– yá Ô Ð[ j" f Û ¼Û ¼ ÐÇ ©\ " f × þ ¿ º Ô á Ð[ j" f ° ú rá É Ô Ð[ jÛ ¼\ ¦ × þ H1 x p ë _ H] j µ ÏÒ 1 t½ q Éà + ºe . s ` כ ¦K 0 l AK _ á Ô Ð[ j" f HÛ ¼H × ¦a Aë { ß © { ¸2 ¤½ Éà + ºe .
• × æY U 6 \Ç ©Û ¼H × ¦a A\ " f Hï rq ¢ a« ÑÇ ©\ ¦# Q> h_ Ç © Ð ¾ º# Q 6 xô Ç . • á Ô Ð[ jÛ ¼ HÕ ª _ כ : ¤$ £
\ í : ¤& £
Ç ñ ©\ ½ É{ + © a ) .
6.5
• y Ç © H1 q l & h Û ¼H × ¦a A· ú ¦o 7 §` £ ¦ 6 xô Ç .
ÇS m ÷ m > ú ÚË n  S
• zr ´ ç r ß Û ¼% 7 × æ\ % 3 ô Çz ´r ç r ß Û ¼% 7 rì É Í ø ¼r × &
K ñ r ç ? ß /\ á Ô Ð[ jÛ ¼_ à º ' ` ¦¢ a« Ñ K ô Ç .
• Ç ©ç \ ß HZ > ¸¼ ÛH × ¦a A· ú ¦o 7 §` £ ¦ 6 xô Ç .
• Ð : xá Ô Ð[ jÛ ¼ H] jØ ¦½ ÉM + := Q? å / Hr ç ` ß ¦ Êa < ] jØ ¦ô Ç . Û ¼H × ¦ Q Hs r ç ? ß /\ s á Ô Ð jÛ [ ¼_ à º' ` ¦¢ a« ѽ Éà + º\ Ü O ¼  Òô Ç .
– ç ( ¡ 1. « 0 © AÄ º í H0 AÇ © H 0 AÄ º í H0 A Ç © Ð ] @ X /& Ä h º í0 H A\ ¦ t ¸2 ¤½ Éà + º e . s
Ä â º\ H 0 AÇ ©\ e Há Ô Ð[ jÛ ¼ H 0 © A\ e H ¸ HÇ © q # Qe ` ¦
Ä â º\ Û ß ë ¼H × ¦a A a ) .
• 9 {ì Í# ø 6 3 x( É Ó' \ " fy \ _ O þ j@ / èכ ¹r ç ß ¦\ ` V8 ¤ £ H s כ # Q§ > . " f% 3 ô Çz ´r ç ß Û r ¼% 7 r: É ¤Ã £ º èá Ôà ÔJ ?# Qü <z ´r ç ß \ \ O ´ ú ] > j a: ) ¤Ã £ º × ¼J ?# Q\ ¦ 6 x # ½ ¨ ³ & a ) .
– ç ( ¡ 2. Ç « ©ç \ ß { 9 ñ
&q Ö ¦ Ð CPU r ç ` ß ¦½ É + K © { × ¦Ã ºe . 5
• ¢ a o az ) ´r ç r ß Û ¼% 7 rW É ] = jô Ç& s h Ù ¼ Ðz ´r á ß ç Ô Ð[ jÛ ¼\ > Z } rÄ É º í H0 A\ ¦Å Ò# Qz ´' a ) .
6.7 6.7.1
Ú v ø P 2
• Ä º í H0 AÛ ¼H × ¦a A· ú ¦o 7 §` £ ¦ 6 xô Ç .
• ¢ a o a z ) ´r ç r ß Û ¼ 7\ % " f Û ¼H × ¦ Q H 6 §õ £ ° ú r: É ¤$ £
` í ¦ t ¦e # Q ô Ç .
• º Ä í H0 A\ ¦ z ´r ç , r ß Û ¼% 7 , r ì r½ É, @ + / od W 1 t Ä »+ AÜ þ ¼ Ðì rÀ Óô Ç .
– Ä º í H0 A Û ¼H × ¦a A · ú ¦o 7 §` £ ¦ 6 xK 9, z ´r ç á ß Ô Ð[ jÛ ¼\ > H Z © } rÄ É º í H0 A\ ¦Â Ò# K Å Ò# Q ô Ç .
• Ô á Ð[ jÛ ¼ Hl r& : Ü h ¼ Ðr ì r½ ÉÄ + »+ AÜ þ ¼ Ðì rÀ Ó a ) . r ì r½ ÉÄ + »+ A\ þ @ /ô ÇÛ ¼H × ¦a A· ú ¦o 7 § £ r É æY × U6 x \ × ¼Ñ Ç þ ©\ ¦ 6 x 9, y Ç © rU É ´ _ s r ç ß ¸y ` ¦ 6 xô Ç .
– z ´r ç á ß Ô Ð[ jÛ ¼ H Ä º í H0 A ± ú 4 R" f Hî ß a ) . – n Û ¼J u t s # Q ô Ç .
– º Ä í H0 Aü <r ç ß ¸y r% É i a> ' $
w í ô n Ç . Ä º í H0 A Z }` ¦Ã º2 ¤r ç ß ¸y r É .
• n Û ¼J u t ` ¦þ j è o H~ ÓZ ½ O – r Û ¼% 7 ñ Ø ¦ ¸× æç \ ß × æé r ß . s \ ¦0 A K × æé t ß & (preemption point)` h ¦ 6 xô Ç . 7 ¤, | £ r ¼ Û% 7 ñØ ¦7 xç £ \ ß î ß > × æé ½ ß É + à ºe Ht & ` h ¦t &
ñ # s t & \ h " f H× æ r ß é ~ ´Ã ºe ¸2 ¤ô Ç .
– © ñ 6 xá Ô Ð[ jÛ ¼ HÄ º í H0 A Z } ¦, > × ß í æd á Ô Ð[ jÛ ¼ HÄ º í H0 A ± ú . f " © ñ 6 xá Ô Ð[ jÛ ¼\ > HZ } r6 É x² £ $ ú
í ¦] ` j/ N B 9, > í × ß æd á Ô Ð[ jÛ ¼ HZ } r% É Ö o ¦` ¦] j/ Nô B Ç .
– ± ú rÄ É º í H0 Aá Ô Ð[ jÛ ¼ z ´r ç á ß Ô Ð[ j Û ¼ כ 9 ¹ Ð H ¶ " é` ¦ 6 x ¦e ` ¦Ã º e . s
Ä â ºÄ º í H0 A 5 © qá Å Ô Ð Ðc t(pri+ ority-inheritance protocol)` ¦ s 6 x # ± ú r É Ä º í H0 A ¸Z } rÄ É º í H0 A\ ¦° ú ¸2 ¤ # Ïo 1 À ¢ a« Ñ ¸2 ¤½ Éà + ºe .
6.6
z ³ º: g > ú Ú n Ë{ S ¢¨ |
• " _ t o Û ¼ Hr Û ¼% 7 Ä »+ A` þ ¦s 6 x # Û ¼H × ¦ Qü < ú ° r& É V á , Ô Ð[ jÛ ¼\ ¦z ´ ' ô Ç . r Û ¼% Ä 7 »+ A\ þ É{ + ½ © aá ) Ô Ð[ jÛ ¼ Hr ì r½ É~ + Ód ½ ` ¦ 6 x t · § ú ¼9, @ Ü /l I © ÷ & 0 © AÄ º í H0 Aá Ô Ð[ j ¼ Û & ½ h ÉM + : t z ´' a ) .
ow ° P ¨ç Ö Ë g 6.7.2
• Û ¼H × ¦a A· ú ¦o 7 §` £ ¦ þ × l \ · ¡" ú fr Û ¼% _ 7 כ ¹½ ¨ Ó` ½ ¦ì r$ 3 # ô Ç . s \ ¦: xK · ú ¦o 7 §` £ ¦q §½ Él + ï r` ¦&
K ñ ô Ç .
Ry © Ì ¢ ¤כ 2000
• & ~ h Ód ½ _ Ä º í H0 AÛ ¼H × ¦a A· ú ¦o 7 §` £ ¦ 6 x Ç ô .
• l ï r_ \ V
• CPU\ ½ É{ + © aÛ ) ¼Y U× ¼ H 6 § £ S © s ! µ ÏÒ 1 t½ q ÉM + : t > 5 qz Å ´' a ) .
– j þ@ /6 x² £ r ú ç s ß 1 í H] j ¸| \ " f CPU 6 x´ òÖ ¦` ¦þ j@ / o H· ú ¦o 7 § £
– Ð Z } rÄ É º í H0 Aá Ô Ð[ jÛ ¼\ _ K & h a )
Ä â º
– ôá Ç Ô Ð[ jÛ ¼_ ì ͨ ø r 8 ç s ß Õ ªá Ô Ð[ jÛ ¼_ ^ z ´ ' r ç \ ß + A& þ Ü h ¼ Ðq Y V ¸2 ¤ % o Ö ¦` ¦F G@ / o H· ú ¦o 7 § £
– @ /l K Hr Û ¼% 7 ñØ ¦` ¦ H
Ä â º – r ç ß ¸y s = Qè å ß
Ä â º
• l ï rs &
K ñ & Ü ¼ # Qì r$ ~ 3 ÓZ ½ ` O ¦s 6 x # Õ ªl ï r\ h © &½ Ëô + Ç· ú ¦o 7 §` £ ¦ × ô þ Ç .
• û ¶ ¸Ä ºÝ ¼ 2000 r8 É x 32Y ú U6 _ \ Ä º í H0 A\ ¦ 6 x Ç ô . s Ä º í H0 AY U6 \ rß É ¼> 9 tA þ Û ¼(1\ f 15)ü " <z ´r ç 9 ß tA þ Û ¼(16\ " f 31) н ¨ì r a ) .
• ì r$ ~ 3 ÓZ ½ _ O 7 xÀ á Ó – &
& ñ h ¸4 q: Å S Ò# Q X <s ' \ ¦ t ¦z ´] j > í ß # q § H~ ÓZ ½ s O . s ~ ÓZ ½ O r> É ß í õ 6 xô ÇX <s ' \ ë & ß 6 h x a ) H H] ë j& s h e .
• yÄ º í H0 AY U 6 \ Ç © e Ü ¼9, ë ß ¸ HÇ © q # Qe Ü ¼ Û ¼H × ¦ Q H “idle thread”` ¦z ´' Ç ô .
– Ç ©e ç
¸4 q: Ã S º Æ& < Ü h ¼ Ðì r$ 3 H~ ÓZ ½ s O . t ë Ã ß º Æ& < Ü h ¼ Ðì r$ 3 l 0 AK " f H# Q &
` ñ ¦ K 9, &
ñ aX ) <s ' ³ & z ´õ o e ` ¦Ã ºe .
• 9 tA þ Û ¼\ 5 qô Å ÇÛ ¼Y U× ¼_ z ´' s r ç ß ¸y _
õ â Ð à ÔX à O Ô÷ & s Û ¼Y U× ¼_ Ä º í H0 A ¦ô \ ÇY U 6 \± ð ú r . ¢ ¸ô Ç@ /l × æs ~ Û ¼Y U× ¼ ï r rq ¢ a« Ñ I © Ð 7 Û ¼H × ¦ Q HÛ ¼Y U× ¼ @ /l ~ | \ Û ¼Y U× ¼_ Ä º í H0 A\ ¦ }# Z ï r . s \ ¦: xK @ / od Û ¼Y U× ¼ HZ } rÄ É º H0 í A Ðz ´' | cà ¨ ºe .
– r Ó tY ý Us : & ©
S ñ ô X Çì r$ ~ 3 ÓZ ½ s O t ë ß ´ § ú rr É ç s ß èכ ¹÷ &9, r Ó tY ý Us ' \ ¦[ > O ¦½ ¨ ³ & H s כ ~ t 1 · §` ú ¦Ã ºe . 6
6.7.3
P × Ô
• o ³ qÛ n ¼ H/ N& B
ô ñ Ç & ~ h Ód ½ _ r ì r½ É· + ú ¦o 7 § £ ] õ @ X /& Ä h º í H0 A\ ¦ 6 x Hz ´r ç á ß Ô Ð[ j Û ¼\ ¦0 Aô Ç· ú ¦o 7 §¿ £ º t \ ¦ 6 xô Ç . • o ³ qÛ n ¼\ " f Hz ´r ç Ô ß á Ð[ jÛ ¼ 8 ¸& V , á Ô Ð[ jÛ ¼\ ¦ & ½ h ɺ + Ã\ O . • o ³ qÛ n ¼ Hr ì r½ É` + ¦0 AK Ä º í H0 A\ ¦ t H cre dit l ì Í· ø ú ¦o 7 §` £ ¦ 6 xô Ç . – y á Ô Ð[ jÛ ¼ H : ¤& £
ô ñ Ç Ã º_ Û ¼H × ¦a A credit` ¦ t ¦e . – ´ © § ú rÛ É ¼H × ¦a A credit` ¦ t ¦e Há Ô Ð[ jÛ ¼í HÜ ¼ ÐÛ ¼H × ¦a Aô Ç . – s Q ' X à O Ô 1 µÒ Ï t½ q ÉM + : ³F & z ´ ' × æ á Ô Ð[ jÛ ¼ H _ credit` ¦{ > 9 a ) . Credits 0s ÷ & ³F & á Ô Ð[ jÛ ¼\ ¦× æé ß ¦ 6 §á £ Ô Ð[ jÛ ¼\ ¦z ´ ' ô Ç . – z ´ ' 0 xô p Ç ¸ H á Ô Ð[ jÛ ¼_ credits Â Ò 0s r Û ¼% 7 \ e H ¸ Há Ô Ð[ jÛ ¼\ > credit` ¦ 6 §½ £ ©g :\ Ë F ½ É{ + ô © Ç . credits =
credits + priority 2
7 ¤, á £ Ô Ð[ jÛ ¼ _% i ü <Õ ª _ כ Ä º í H0 A\ ¦ Êa < ¦ 9ô Ç . • o ³ qÛ n ¼ H¿ º> h_ ´ r z ç Û ß ¼H × ¦a A9 tA þ Û ¼\ ¦] j / Nô B Ç . H FCFS ~ Ód ½ s ¦, r É H RR Ód ½ ~ s . s ¿ º~ Ód ½ _ s H FCFS H & ÷ h & t · §Ü ú ¼ RR ~ Ód ½ \ " f Hú ° rÄ É º í H0 A\ ¦ t Há Ô Ð[ jÛ ¼ CPU r ç ` ß ¦/ N& B
ñ > ¾ º# Q 6 x > a ) .
7
c °2003, sangjin@kut.ac.kr
T0 T1 T2 T3 T4 T5
* <* Ă&#x2013; = ĂĽ i< K: ~ ÂĄq ç { ÂĄĂ&#x2C6; Â&#x2018; 07 A. Silberschatz, P.B. Galvin, G. Gagne Operating System Concepts, Sixth Edition, John Wiley & Sons, 2003.
register1 = counter; register1 = register1 + 1; register2 = counter; register2 = register2 â&#x2C6;&#x2019; 1; counter = register1 ; counter = register2 ;
{register1 = 5} {register1 = 6} {register2 = 5} {register2 = 4} {counter = 6} {counter = 4}
â&#x20AC;˘ V \2)  Ă&#x192; Âş_ ° â&#x20AC;Ť×&#x203A;â&#x20AC;Źs Ăş Â&#x2020; Ă&#x201C; ½ Â&#x153;° Š  ú Â? HÂż Âş> h_  Ă&#x192; Âş aĂź < b\ ÂŚ# Â&#x152; QĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź / NĂ&#x201E; B ô Ă&#x2021; Â&#x201C; ÂŚ &
Ăą . M s : 6 §þ ÂŁ °  Â&#x201C; Ăş rÂż Ă&#x2030; Âş> h_ ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź e Â&#x201D; Â&#x201C; ÂŚ .
Âł Â&#x17D;z Âş: g Â&#x17D;Â&#x17D; Ă&#x17E;M Ă&#x2019; Ă&#x2014; D
7.1
Ă&#x2019;Ă t q Â&#x2013; Ă&#x; tĂ q Ă&#x2019; Â&#x2013; Ă&#x; èq Â&#x2122; èq Â&#x2122; tĂ q Ă&#x2019; Â&#x2013; Ă&#x; èq Â&#x2122;
<Ă&#x2022; ÂŞa > 7.1> â&#x20AC;&#x153;counter++â&#x20AC;?Ăź Ă&#x2039; < â&#x20AC;&#x153;counterâ&#x2C6;&#x2019;â&#x2C6;&#x2019;â&#x20AC;?_ #
' ĂŽ Â?Ă&#x192; Â&#x; Âş Â? Â&#x; ' Ăľ
Part II. Process Management
7
: : : : : :
9 0Ă&#x; Ă&#x2039; O
â&#x20AC;&#x201C; P1 a = a + 1; b = b + 1;
â&#x20AC;˘ \ V1) Ă&#x2019; tĂ q Â&#x2013; Ă&#x; Â&#x2122; èq ĂŤ H] j\  " fĂ&#x2019; tĂ q Â&#x2013; Ă&#x; Ăź <Â&#x2122; èq ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? HB N /Ă&#x201E; ÂťB jÂ&#x2014; ¸o \ ÂŚs 6 x  # Â&#x152;/ N: B xÂ? Â&#x; a ) Ă&#x192; Âş <! Ăź Q( \ ÂŚ/ NĂ&#x201E; B ô Ă&#x2021; . Â&#x152; #l " fÂ? H
ĂŽ r' \ ÂŚs 6 x  # Â&#x152;! Q( _ Â&#x2014; ¸Â&#x17D; H/ Nç B Â&#x2013;` Ă&#x; ÂŚ 6 x  Â? HK Ă&#x2022; Â&#x2DC;` Ăž ÂŚĂ&#x2019; ty q Â&#x2022; Â&#x152; # Â&#x152;Â&#x2DC; Ă? .
â&#x20AC;&#x201C; P2 b = b * 2; a = a * 2;
â&#x20AC;&#x201C; s [ tĂĄ Ăž Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H1 qw l n & Ă&#x153; h ÂźÂ&#x2013; Ă?Ă&#x192; ÂşÂ? ' Â&#x;á &Â&#x20AC; ` ÂŚ Ă&#x2DC; Ă&#x201D;> 1 x l Â&#x2022; Â&#x152; B N /Ă&#x201E;  Ă&#x192; Âş_ ° â&#x20AC;Ť×&#x203A;â&#x20AC;Źs Ăş Ăľ \ Â
Â&#x2020; ò % Ă&#x201C;` ž ÂŚĂ&#x2026; Ă&#x2019;Ă&#x2122; ÂźÂ&#x2013; Ă?#
Â? ĂŽ ' Â&#x;Ă&#x153; ÂźÂ&#x2013; Ă?Ă&#x192; ÂşÂ? ' Â&#x;á &Â&#x20AC; z ´' Â?á Â&#x; & HĂ Â? H" f\  ` ÂŚ Ă&#x2DC; Ă&#x201D;> 1 x l Â&#x2022; Â&#x152; t ¡ §` Ăş ÂŚĂ&#x192; Âş Â&#x201D; e .
Â&#x2022; ĂĄ Â&#x152; y Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź 1 qw l n & Ă&#x153; h ÂźÂ&#x2013; Ă? Ă&#x192; Âş' Â?á Â&#x; &Â&#x20AC; { Â&#x203A; 9 a$ '
Â&#x201C; Ă r Ă&#x2030; Ă&#x201E;t Âť Â? a ) . Ă&#x2022; ÂŞ Q #
Â? ĂŽ ' Â&#x;Ă&#x153; ÂźÂ&#x2013; Ă?Ă&#x192; ÂşÂ? ' Â&#x;á &Â&#x20AC; 6 §þ ÂŁ °  ú { s Â&#x203A; 9 a$ '
s Ă L :| Ă&#x192; 9 Âşe Â&#x201D; . a = a + 1; b = b * 2; b = b + 1; a = a * 2;
â&#x20AC;&#x201C; Â&#x201C; ÂŚ/ LĂĄ ĂĽ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞA b ç
Â&#x192; # Q_ Ă´ Ă&#x2021;ĂŤ H Â&#x153;Â&#x201C; Š r( Ă&#x2030;
Â&#x17D; { 9 Q\ Â _ K # Â&#x152; Q> h_ l > "
§ Î
# ĂŽ QÂ&#x2013; Ă? % | i c ¨ Ă&#x192; Âşe Â&#x201D; . Â&#x201C; ' X Ă O Ă&#x201D;Â? HĂ´ Ă&#x2021;l > "
§ Î
# ĂŽ Q_ "
§ Î
ĂŽ # QĂ&#x2026; Ă&#x2019;l = Qè ĂĽ Â&#x2013;r Ă&#x; & \ h  " f% Â&#x192;o Â? a ) .
V 1Ăľ \ ² Â&#x2DC;o Ăş Ă´ Ă&#x2021;Â&#x201C; ÂŚ/ LĂĄ ĂĽ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞA b ç
ĂŤ H Â&#x153;s Š " Âś ĂŠ & h Ă&#x153;Â&#x2013; Âź Ă?Ă&#x192; ÂşÂ? ' Â&#x;á &# QÂ&#x2022; ¸" Âś ĂŠ t ¡ §Â? Ăş H Ăľ Âľ Ă?Ă&#x2019; 1 t½ q Ă&#x2030;Ă&#x192; + Âş Â&#x201D; e .
â&#x20AC;&#x201C; / NĂ&#x201E; B ÂťB jÂ&#x2014; ¸o \  e Â? Â&#x201D; H Ă&#x192; Âş counter_ ° â&#x20AC;Ť×&#x203A;â&#x20AC;Źs Ăş 5{ 9 M :, Ă&#x2019; tĂ q Â&#x2013; Ă&#x; Ăź <Â&#x2122; èq y Â&#x2022;y Â&#x152; Â&#x2022; â&#x20AC;&#x153;counter++;â&#x20AC;?Ăź Â&#x152; < â&#x20AC;&#x153;counter--;â&#x20AC;?\ ÂŚ#
Â? ĂŽ ' Â&#x;Ă&#x153; ÂźÂ&#x2013; Ă?Ă&#x192; Âş' Â? Â&#x; Â&#x20AC; Ăľ Â? H 5 á &# Q t ĂŤ Â&#x2013;Ă&#x2022; Ă&#x; ÂŞX t O ¡ §` Ăş ÂŚĂ&#x192; Âşe Â&#x201D; .
â&#x20AC;˘ Â&#x152; # Q ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź #
Â? ĂŽ ' Â&#x;Ă&#x153; ÂźÂ&#x2013; Ă? Ă&#x192; Âş' Â?á Â&#x; &# Q Âľ Ă?Ă&#x2019; 1 t q Â? H H] ĂŤ j\ ÂŚK Â? H ` â&#x20AC;Ť×&#x203A;â&#x20AC;Ź ÂŚĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź1 xl l o Ă´ Ă&#x2021; .
â&#x20AC;˘ â&#x20AC;&#x153;counter++â&#x20AC;?\ ÂŚ 0 Al > # QÂ&#x2013; Ă?Âł Ă°Â&#x2030; Âł & Â&#x20AC; 6 §þ ÂŁ °  Ă&#x153; Ăş Âź9,
7.2
register1 = counter; register1 = register1 + 1; counter = register1 ;
Ă&#x2C6;4 k Ă&#x2020; Â? Â&#x152;W Ă&#x201E;Ă&#x192;
Ă&#x2DC;< U g
â&#x20AC;˘ Ă? Ă&#x2018;N Ă&#x201E; ŠÂ&#x2026; (critical section): ĂĄ ] Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź_ Â? ĂŻĂ&#x2014; Âź_ Ă&#x201A; 9 { Ă&#x2019;ĂŹ rĂ&#x153; ÂźÂ&#x2013; Ă?" f, Â? rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Ÿß </ N1 B xĂ&#x153; l ÂźÂ&#x2013; Ă? 6 x  Â? H Ă&#x192; Âş, _ Â&#x2026;s ^ ÂŚ,
{ 9 1 x` p ÂŚÂ
â Â? HĂ&#x201A; Ă&#x2019;ĂŹ rs .
â&#x20AC;&#x153;counter--â&#x20AC;?Â? H 6 §þ ÂŁ °  ú . register2 = counter; register2 = register2 â&#x2C6;&#x2019; 1; counter = register2 ;
â&#x20AC;˘ Â&#x201D; e> ½ ¨% _ i z ´' Â?Â&#x201C; Â&#x; r Ă&#x2030; Â&#x153; Š ĂąC & (mutually excluh sive)Ă&#x153; ÂźÂ&#x2013; Ă?z ´' Â?á Â&#x; &# Q Ă´ Ă&#x2021; . 7 ¤, Ă´ ÂŁ Ă&#x2021;ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź e Â&#x201D; ½ > ¨% ` i ÂŚz ´' Â? Â&#x; Â&#x201C; ÂŚe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC; Â? rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? He Â&#x201D; ½ > ¨% \ i  Â&#x201D; { ½ 9 Ă&#x2030;Ă&#x192; + Âş\ # O Q Ă´ Ă&#x2021; .
#l Â&#x152; " f register1 Ăľ register2 Â? H CPU ? / Ă&#x2019;Y Ă&#x201A; Ut Ă&#x203A; Âź' s 9, °  Â&#x201C; Ăş rY Ă&#x2030; Ut Ă&#x203A; Âź' { Ă&#x192; 9 Âş Â&#x201D; e .
â&#x20AC;˘ " fy Â&#x2022;ĂĄ Â&#x152; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? He > Â&#x201D; ½ ¨% \ i  Â&#x201D; { 9 l Â&#x201E;  ) \ Â&#x2021; \ ÂŚ~ Ă&#x17D; Ă&#x192; Ă´ Ă&#x2021; . s ) Â&#x2021; \ ÂŚâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź š' A Ăľ Â? HÂ? ĂŻ Âź\ Ă&#x2014; ÂŚĂŤ > Â&#x2122;
Ă&#x201E; ŠÂ&#x2026; (entry section)s ] Ă´ Ă&#x2021; . ) Â&#x2021; \ ÂŚ Ă&#x17D; Ă&#x192; ~ e > Â&#x201D; ½ ¨% ` i ÂŚz ´' Â?Ă´ Â&#x; Ă&#x2021; 6 §\ ÂŁ  Â? H Â? rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ j Âź[ Ă&#x203A; ts Ăž Â&#x201D; { ½ 9 Ă&#x2030;Ă&#x192; + Âşe Â&#x2022; Â&#x201D; ¸2 ¤K Â&#x; Ă&#x2026; Ă&#x2019;# Q Ă´ Ă&#x2021; . s ` â&#x20AC;Ť×&#x203A;â&#x20AC;Ź ÂŚ Â? HÂ? ĂŻĂ&#x2014; Âź\ ÂŚ ¡Ă&#x201E; ŠĂ&#x201E; ŠÂ&#x2026; (exit section)s ] Ă´ Ă&#x2021; .
â&#x20AC;&#x201C; Âż ºÍ H Â&#x153;s Š #
' ĂŽ Â?Ă&#x153; Â&#x; ÂźÂ&#x2013; Ă?Ă&#x192; Âş' Â?á Â&#x; &Â&#x20AC; Ă&#x2022; ÂŞa > 7.1Ăľ Ă&#x2039; °  ú s Ă&#x192; ÂşÂ? ' Â&#x;| cĂ&#x192; ¨ Âşe Â&#x201D; . â&#x20AC;˘ s % Â&#x192;! # 3
Â? ĂŽ ' Â&#x;Ă&#x153; ÂźÂ&#x2013; Ă?Ă&#x192; Âş' Â?á Â&#x; &Â? H# Â&#x152; QĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź / N B : xÂ? Â&#x; aX ) <s ' \ ÂŚÂ&#x203A; ¸ Â&#x2022;½ Â&#x152; Ă&#x2030;M + : Ăľ ] X HĂ H" f\  _ K &
á Ăą &Â&#x20AC; Âż T R Âź( Ă&#x2019; Ă&#x2014;@ Â&#x2018; (race condition) Â&#x201D; rF > Ă´ Ă&#x2021; Â&#x201C; ÂŚĂ´ Ă&#x2021; .
â&#x20AC;˘ Â&#x201D;{ ½ 9 ¨% , e i > Â&#x201D; ½ ¨% , Ă&#x2DC; i Œ½ ¨½ ¨% s i Â? Â? ĂŻĂ&#x2014; ÂźĂ&#x201A; Ă&#x2019; r` ĂŹ ÂŚĂł Ă&#x2018;Ă&#x2021; 5 Ă&#x161;Ă&#x201E; ŠÂ&#x2026; (remainder section)s ] Ă´ Ă&#x2021; . 1
â&#x20AC;˘ e > Â&#x201D; ½ ¨% s i Â&#x; ĂÂ&#x2020; Ă&#x160;Â? < aĂĄ ) Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź_ { ĂŹ 9 Ă?½ ø ¨Â&#x203A; ¸
â&#x20AC;˘ N Ă&#x201C;Â&#x201D; Âą §h ¤ ¸ 2. Dekker_ ĂŚ ¡ Â&#x2DC;Â&#x201C; Ăş ÂŚo 7 § ÂŁ
do {
â&#x20AC;&#x201C; / NĂ&#x201E; B  Ă&#x192; Âş: boolean flag[2];
entry section
â&#x20AC;&#x201C; Â&#x153; Ăl ° â&#x20AC;Ť×&#x203A;â&#x20AC;Ź: flag[0]=flag[1]=false; Ăş
critical section
â&#x20AC;&#x201C; flag[i] trues Â&#x20AC; Pi Â&#x201D; { 9 ½ Ă&#x2030;ĂŻ + rq á &% 3 §` ÂŁ 6 ÂŚ p ¡ .
exit section remainder section } while(1);
Ă&#x201D;Â&#x2013; ĂĄ Ă?[ jĂ&#x203A; Âź Pi _ ½ ¨Â&#x203A; ¸Â? H 6 §þ ÂŁ °  ú . do {
# Â&#x152;l " f do while ½ ¨Â&#x203A; ¸Â&#x2013; Ă?Âł Ă°Â&#x2030; ³ô & Ă&#x2021; Â&#x201C; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź r: Ă&#x2030; ¤Z ÂŁ Ă´ > Ă&#x2021;s Ă&#x201E; Âť e Â? Â&#x201D; H Â&#x201C; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź r Ă&#x2030; m .
flag[i]=true; while(flag[j]);
â&#x20AC;˘ Â&#x201D; e> ½ ¨% ĂŤ i H] j\ ÂŚK Â? HB j& m 7 §Â&#x201C; ÂŁ r Ă&#x2030; 6 §[ ÂŁ j t â&#x20AC;Ť×&#x203A;â&#x20AC;Ź š| ` ÂŚĂ&#x2DC; ĂŚ7 ¤K ĂĄ Ă´ Ă&#x2021; .
critical section flag[i]=false;
â&#x20AC;&#x201C; ( Ă&#x2014; Â&#x2018;ÂĄ Ăľ: V  (mutual exclusive): Ă´ Ă&#x2021;ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź e > Â&#x201D; ½ ¨% \ i  " fz ´Â? ' Â&#x; Â&#x201C; ÂŚe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC; # QÂ&#x2039; ĂĄ " Ă&#x201D; Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ&#x2022; ¸e > Â&#x201D; ½ ¨% \ i  Â&#x201D; { 9 ½ Ă&#x2030;Ă&#x192; + Âş\ # O Q Ă´ Ă&#x2021; . â&#x20AC;&#x201C; ĂŤ >j Â&#x161; Ă&#x;(progress): e > Â&#x201D; ½ ¨% ` i ÂŚz ´Â? ' Â&#x; Â&#x201C; ÂŚe Â? Â&#x201D; H ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź \ ` O ÂŚ: M, Y
> > h_ ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź e Â&#x201D; > ½ ¨% \ i  Â&#x201D; { 9 Â&#x201C; ÂŚ Â&#x20AC; s [ t_ Ăž Â&#x201D; { Ă 9 H " fÂ? Hs [ t\ Ăž  _ K " fĂŤ Â&#x2013; Ă&#x; &
á Ăą &# Q Ă´ Ă&#x2021; . ¢ ¸ Ă&#x2021;s Ă´ Â&#x201A; Ă&#x2014; Â&#x2DC;Ă&#x2030; Ăž r Â&#x201C;à ºô Ă&#x2021;&
Â&#x192; Ăą l á &# Q" fÂ? HĂŽ Â&#x2013;Â? Ă&#x; a ) . â&#x20AC;&#x201C; ø 5 N 7 e (bounded waiting): Ă´ Ă&#x2021;ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Â&#x2019; _ e > Â&#x201D; ½ ¨% \ i  Â&#x201D; { 9 Â&#x201C; ÂŚ â&#x20AC;Ť×&#x203A;â&#x20AC;Ź š' A` Ăľ ÂŚ Ă&#x2021;Ă&#x160; Ă´ ĂŞĂ&#x201A; Ă&#x2019;' sâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź š' As Ăľ ) Â&#x2021;6 x|  cM ¨ : t Â? rĂĄ Ă&#x2030; Ă&#x201D; Â&#x2013; Ă?[ jĂ&#x203A; Âź Ă&#x2022; ÂŞ[ t_ Ăž e > Â&#x201D; ½ ¨% \ i  Â&#x201D; { 9 ½ Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; H Â? rĂ&#x192; Âş ] jĂ´ Ă&#x2021;á &# Q Ă´ Ă&#x2021; .
remainder section } while(1); â&#x20AC;&#x201C; Š  Â&#x153; ĂąC ] jÂ? HĂŤ Â&#x2013;7 Ă&#x; ¤ ĂĄ t ĂŤ Â&#x2013; Ă&#x; Â&#x201D; Â? ' Â&#x;â&#x20AC;Ť×&#x203A;â&#x20AC;Ź š½ ¨Â&#x203A; ¸| Â&#x201C; r Ă&#x2030; ĂŚ7 Ă&#x2DC; ¤ ĂĄ t 3 wĂ´ l Ă&#x2021; . : ¤y ÂŁ 6 §þ ÂŁ °  s Ăş z ´' Â?á Â&#x; & 3 % Â&#x20AC; P0 Ăź < P1 Â&#x201C; rÂ&#x2014; Ă&#x2030; ¸¿ Âş%
Âś ò " ĂŠy l o > Â? a ) . T0 : P0 flag[0] = true; T1 : P1 flag[1] = true; â&#x20AC;&#x201C; Ă&#x201D; ĂĄÂ&#x2013; Ă?[ jĂ&#x203A; Âź e > Â&#x201D; ½ ¨% ? i /\  " f¢ ¸Â? H Â&#x2019; _ flag ° â&#x20AC;Ť`×&#x203A;â&#x20AC;Ź Ăş ÂŚ trueÂ&#x2013; Ă?[ & O
Ă´ Ăą Ă&#x2021; 6 §\ ÂŁ  \ Vl u ¡ §> Ăş xÂŤ ĂĄ 7 Ă&#x2018;á &Â&#x20AC; Â? rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H%
" ò Âśy ĂŠ Â&#x201D; { ½ 9 Ă&#x2030; + Âş\ Ă&#x192; O . â&#x20AC;&#x201C; s¡ Â&#x2DC;Â&#x201C; Ăş ÂŚo 7 §_ ÂŁ Â&#x201D; { ½ 9 ¨% ` i ÂŚ 6 §þ ÂŁ °  s Ăş ¨Â&#x20AC; Ă&#x2039; # Qb G> Â? | c ¨ ? while(flag[j]); flag[i]=true; s
Ă&#x201E; â Âş\  Â? H Â&#x153; Š ĂąC ] j ĂŤ Â&#x2013;7 Ă&#x; ¤á ĂĄ &t ¡ §Â? Ăş H .
} º³ Â&#x17D;² Â&#x17D; Ăş# aÂą Ă&#x2030;Âż n <U R s0 ĂŞ Ă&#x2030; n
7.3 7.3.1
Â&#x2018; ¤4 8 ý³ Â&#x17D;z Âş: g Â&#x17D;Ăľ § u ĂźÂ&#x201D; ¢A X 0+ Ă&#x2021;w s Â&#x153;
â&#x20AC;˘ Âż Âş> h_ ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźĂ&#x2014; ĂŚ \ ÂŚ P0 Â&#x201C; ÂŚ Â? r Ă&#x2030; H P1 s Â? . ¢ ¸ô Ă&#x2021;[ " O
_ ĂŽ Âź o # $
` Ă ÂŚ0 AK ÂŚ Pi \ Â&#x20AC; Â? r Ă&#x2030; Â? H Pj Â? a ) .
â&#x20AC;&#x201C; s¡ Â&#x2DC;Â&#x201C; Ăş ÂŚo 7 §_ ÂŁ Â&#x201D; { ½ 9 ¨% ` i ÂŚ 6 §þ ÂŁ °  s Ăş ¨Â&#x20AC; Ă&#x2039; # Qb G> Â? | c ¨ ? flag[i]=true; while(flag[j]){ flag[i]=false; /* delay */; flag[i]=true; } s
Ă&#x201E; â Âş\  Â? H 6 §þ ÂŁ °  s Ăş Ă&#x192; Âş' Â?| Â&#x; cĂ&#x192; ¨ Âşe Â&#x201D; .
â&#x20AC;˘ Ă&#x201C; N ÂąÂ&#x201D; §h ¤ ¸ 1. Dekker_ ĂŚ ¡ Â&#x2DC;Â&#x201C; Ăş ÂŚo 7 § ÂŁ â&#x20AC;&#x201C; / NĂ&#x201E; B  Ă&#x192; Âş: int turn; â&#x20AC;&#x201C; Â&#x153; Ăl ° â&#x20AC;Ť×&#x203A;â&#x20AC;Ź: turn=1; /* or 0 */ Ăş â&#x20AC;&#x201C; turns is Â&#x20AC; Pi e > Â&#x201D; t % \ i  Â&#x201D; { ½ 9 Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; Â&#x201C; ÂŚ, js Â&#x20AC; Pj Â&#x201D; { 9 ½ Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Pi _ ½ ¨Â&#x203A; ¸Â? H 6 §þ ÂŁ °  ú . do {
T0 T1 T2 T3 T4 T5 T6 T7
while(turn != i); critical section turn=j; remainder section } while(1); â&#x20AC;&#x201C; Š  Â&#x153; ĂąC ] jÂ? HĂŤ Â&#x2013;7 Ă&#x; ¤ ĂĄ t ĂŤ Â&#x2013;Â&#x201D; Ă&#x; ' Â?â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Â&#x; š½ ¨Â&#x203A; ¸| Â&#x201C; r Ă&#x2030; ĂŚ7 Ă&#x2DC; ¤ ĂĄ t 3 wĂ´ l Ă&#x2021; . 7 ¤, % ÂŁ 3 Â? > Â&#x201C; §@ /Â&#x2013; Ă?Â&#x201D; { 9 Ă&#x2122; ÂźÂ&#x2013; Ă? Â? rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Â&#x201D; { 9 Â&#x201C; ÂŚ 8 Â&#x2022; ¸Ă&#x2022; ÂŞĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź _ Y V m Â&#x20AC; Ă ÂşÂ&#x203A; ¸| l 9 Ă´ Ă&#x2021; . : ¤y ÂŁ Ă´ Ă&#x2021;ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź \ Vl u ¡ §> Ăş 7 xÂŤ ĂĄ Ă&#x2018;á &Â&#x20AC; 7 xÂŤ ĂĄ Ă&#x2018;á &Â? H0 Au Ăź < Â&#x153;Â&#x203A; Š a\ ' s O Â? rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H%
Âś ò " ĂŠy Â&#x201D; { 9 ½ Ă&#x2030;Ă&#x192; + Âş\ O .
: : : : : : : :
P0 P1 P0 P1 P0 P1 P0 P1
flag[0]=true; flag[1]=true; checks flag[1] checks flag[0] flag[0]=false; flag[1]=false; flag[0]=true; flag[1]=true;
s s â&#x20AC;Ť×&#x203A;â&#x20AC;Ź %
½ ò ¨& Ă&#x153; h ÂźÂ&#x2013; Ă?ĂŹ Ă?4 ø ¤| Â&#x; cĂ&#x192; ¨ Âşe Â&#x201D; . Ă&#x2022; ÂŞ Q ¿å Âş Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź_ z ´Â? ' Â&#x;5 qÂ&#x2022; Ă&#x2026; ¸ Â&#x203A; ¸F KĂŤ Â&#x2013;# Ă&#x; QF M ¸& Â&#x2022;
Ăą Â&#x153;& Š Ă&#x153; h ÂźÂ&#x2013; Ă?Ă&#x192; Âş' Â?| Â&#x; cĂ&#x192; ¨ Âşe l Â&#x201D; M :ĂŤ H\  Â&#x201C; §Â&#x201A; Ă&#x152; Ă&#x192; Â&#x153;I Š Â? H m . s Â&#x2030; Âł & Â&#x153;` Š ÂŚ livelocks Ă´ Ă&#x2021; . 2
â&#x20AC;˘ Ă&#x201C; N ÂąÂ&#x201D; §h ¤ ¸ 3. Dekker_ ĂŚ ¡ Â&#x2DC;Â&#x201C; Ăş ÂŚo 7 § ÂŁ
â&#x20AC;&#x201C; Š  Â&#x153; ĂąC ] j: Âż ºå Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Â&#x2014; ¸¿ ÂşÂ&#x201D; { 9 Â&#x201C; ÂŚ 8 Â&#x2022; ¸ Â&#x201D; { 9 ½ ¨% _ i Âż º P :ĂŤ H Â&#x153;_ Š z ´' Â? Â&#x; H" Ă f\  turn_ ° â&#x20AC;ŤÂ&#x201C;×&#x203A;â&#x20AC;Ź Ăş ri¢ Ă&#x2030; ¸Â? HjĂ&#x2014; ĂŚ _ â&#x20AC;Ť`×&#x203A;â&#x20AC;Ź Ăş ° ÂŚ t > á &Ă&#x2122; ÂźÂ&#x2013; Ă?Âż ºå Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźĂ&#x2014; ĂŚ ĂŤ Â&#x2013; Ă&#x; while ĂŤ H` ÂŚ: xĂľ Â&#x; ½ Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . ¢ ¸ô Ă&#x2021; Â? rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă? jĂ&#x203A; [ ÂźÂ? He > Â&#x201D; ½ ¨% \ i  Â&#x201D; { 9 Ă´ Ă&#x2021;ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź _ Â&#x2019; flag ° â&#x20AC;Ť`×&#x203A;â&#x20AC;Ź Ăş ÂŚ falseÂ&#x2013; Ă?[ & O
Ăą l Â&#x201E; t e Â&#x201D; ½ > ¨% \ i  Â&#x201D; { ½ 9 Ă&#x2030;Ă&#x192; + Âş\ O .
â&#x20AC;&#x201C; / NĂ&#x201E; B  Ă&#x192; Âş boolean flag[2]; int turn; â&#x20AC;&#x201C; Â&#x153; Ăl ° â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Ăş flag[0]=flag[1]=false; turn=0; /* or 1 */
â&#x20AC;&#x201C; Â&#x201D;' Â?Ăľ Â&#x; Ă´ Ă&#x2021;> @ /l : Pi Â&#x201D; { 9 ` ÂŚr Â&#x2022; ¸ t ¡ § Ăş ÂźÂ&#x20AC; Ă&#x153; flag[i] ° â&#x20AC;Ť×&#x203A;â&#x20AC;Źs Ăş falses Ă&#x2122; ÂźÂ&#x2013; Ă? Pj Â? He > Â&#x201D; ½ ¨ \ i %  Â&#x201D; { ½ 9 Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . Ă&#x2018; t Ăź 1 xr l \  Â&#x201D; { 9 ÂŚ Â&#x201C; Â&#x20AC; Â&#x153; Š ĂąC ] j Ă&#x2DC; ĂŚ7 ¤á ĂĄ &Ă&#x2122; ÂźÂ&#x2013; Ă?# QĂ&#x2013; Âź ĂŤ Â&#x2013; Ă&#x; Â&#x201D; { 9 ½ Ă&#x2030;Ă&#x192; + Âşe Ă&#x153; Â&#x201D; Âź9 Â&#x201D; { Â? 9 aĂĄ ) Ă&#x201D;Â&#x2013; Ă?[ j" f > Â&#x201D; e ½ ¨% ` i ÂŚ 4 R Â&#x161; ¸Â&#x20AC; flag ° â&#x20AC;Ť`×&#x203A;â&#x20AC;Ź Ăş ÂŚ falseÂ&#x2013; Ă? ¨Ă&#x2122; Ă&#x2039; ÂźÂ&#x2013; Ă? Â? rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ j" fÂ? H Â&#x201D; { 9 ½ Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . " fĂž j@ / Â? rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Ă´ Ă&#x2021; Â&#x201D; { 9 Ă´ Ă&#x2021;Ă&#x160; ĂŞ  Â? \ HÂ&#x201D; { ½ 9 Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; .
ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Pi _ ½ ¨Â&#x203A; ¸Â? H 6 §þ ÂŁ °  ú . do { flag[i]=true; while(flag[j]) if(turn==j){ flag[i]=false; while(turn==j); flag[i]=true; }
7.3.2 Ăş Ă&#x17E;Âł n Â&#x17D;z Âş: g Â&#x17D;Ăľ § u ĂźÂ&#x201D; ¢A X 0+ Ă&#x2021;w s Â&#x153; â&#x20AC;˘ s¡ Â&#x2DC;Â&#x201C; Ăş ÂŚo 7 §Â&#x201C; ÂŁ r Ă&#x2030; Â? r´ Ă&#x2030; Â&#x2DC;Â&#x2013; Ăş Ă?] jĂľ & ¡ h Â&#x2DC;Â&#x201C; Ăş ÂŚo 7 §(bakeÂŁ ry algorithm)s Ă´ Ă&#x2021; .
critical section turn=j; flag[i]=false;
â&#x20AC;˘ lÂ&#x2018; rĂ&#x2019; : ty q Â&#x2022;: > Â&#x152; \  [ t# Ăž QÂ&#x161; ¸Â? HÂ&#x2019; H_ < [ Â&#x201D; tÂ&#x201C; Ăž r Ă&#x2030;  ù\ ÂŚ ~ Ă&#x17D;Ă&#x153; Ă&#x192; Âź9,  Â&#x153;Âą Š Â?Â&#x201C; Ăş r Ă&#x2030;  ù\ ÂŚ~ Ă&#x17D;Â&#x201C; Ă&#x192; rÂ&#x2019; Ă&#x2030; H_ < Ă Â&#x201D; HĂ&#x153; ÂźÂ&#x2013; Ă? fq " Ă&#x203A; Âź\ ÂŚ~ Ă&#x17D;Â? Ă&#x192; H . Ă&#x2022; ÂŞ X <Â&#x2014; ¸Â&#x17D; HÂ&#x2019; H_ < s Â&#x201D; Â? r Ă&#x2030;  ù ÂŚ~ \ Ă&#x17D;Â&#x2022; Ă&#x192; ¸2 ¤Â&#x2DC; Â&#x; Ă? Â&#x153;½ Š Ă&#x2030;Ă&#x192; + Âş\ O . ĂŤ Â&#x2013;Â&#x20AC; Ă&#x; Â&#x2022;Âż Â? ÂşÂ&#x2019; H_ < s Â&#x201D; °  Â&#x201C; Ăş r Ă&#x2030;   ù\ ÂŚ~ Ă&#x17D;Ă&#x153; Ă&#x192; ÂźÂ&#x20AC; s 2 §à £ HĂ&#x153; ÂźÂ&#x2013; Ă?" fq Ă&#x203A; Âź\ ÂŚ~ Ă&#x17D;Â? Ă&#x192; H .
remainder section } while(1); Ă&#x2018; tĂ&#x2014; Ăź ĂŚ ĂŤ Â&#x2013; Ă&#x; Â&#x201D;{ 9 Â&#x201C; ÂŚ Â&#x20AC; Â? rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź_ flag ° â&#x20AC;Ť×&#x203A;â&#x20AC;Źs Ăş falses Ă&#x2122; ÂźÂ&#x2013; Ă? Â&#x201D;{ ½ 9 Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . Âż ºå Ă&#x201D;Â&#x2013; Ă?[ j Ă&#x203A; Âź Â&#x2014; ¸¿ ÂşÂ&#x201D; { 9 Â&#x201C; ÂŚ Â&#x20AC; turn ° â&#x20AC;Ť×&#x203A;â&#x20AC;Źs Ăş Â&#x201D; { 9 Â? H ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź\ ÂŚ &
Â? Ăą a ) . s ¡ Â&#x2DC;Â&#x201C; Ăş ÂŚo 7 §Â&#x201C; ÂŁ r[ Ă&#x2030; j t â&#x20AC;Ť×&#x203A;â&#x20AC;Ź š ½ ¨Â&#x203A; ¸| ` ÂŚÂ&#x2014; ¸¿ ÂşĂ&#x2DC; ĂŚ7 ¤ô ĂĄ Ă&#x2021; .
â&#x20AC;&#x201C; ¸ Â&#x2014;Âż Âş Â? r Ă&#x2030;  ù\ ÂŚ~ Ă&#x17D;Â&#x2022; Ă&#x192; ¸2 ¤ Â&#x; l 0 AK " fÂ? H ù\  Œ~ Ă&#x17D;Â? Ă&#x192; H â&#x20AC;Ť×&#x203A;â&#x20AC;Ź ^ Â&#x2030; e > Â&#x201D; ½ ¨% s i Â? a ) . â&#x20AC;&#x201C; Â&#x17D; (Ă&#x2030; Ă&#x201C;' \  " fĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? HÂ&#x2014; ¸¿ Âş Â? rs Ă&#x2030; 2 §(ĂĄ ÂŁ Ă&#x201D; Ă?[ Â&#x2013; jĂ&#x203A; Ÿ  ù)` ÂŚ Â&#x201D; .
â&#x20AC;˘ Ă&#x201C; N ÂąÂ&#x201D; §h ¤ ¸ 4. Peterson_ ĂŚ ¡ Â&#x2DC;Â&#x201C; Ăş ÂŚo 7 § ÂŁ
â&#x20AC;˘ / NĂ&#x201E; B  Ă&#x192; Âş
â&#x20AC;&#x201C; / NĂ&#x201E; B  Ă&#x192; Âş
boolean choosing[n]; int num[n];
boolean flag[2]; int turn;
choosingÂ&#x201C; rÂ&#x2014; Ă&#x2030; ¸¿ Âş falseÂ&#x2013; Ă?Â&#x153; Ăl oá &9, numÂ&#x201C; rÂ&#x2014; Ă&#x2030; ¸¿ Âş 0Ă&#x153; ÂźÂ&#x2013; Ă?Â&#x153; Ăl oÂ? a ) .
â&#x20AC;&#x201C; Â&#x153; Ăl ° â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Ăş flag[0]=flag[1]=false; turn=0; /* or 1 */
â&#x20AC;˘ Âł Ă°l Z O â&#x20AC;&#x201C; (a, b) < (c, d): a < cs a == cs Â&#x201C; ÂŚ b < ds Â&#x20AC; Â&#x201A; Ă?s Ă&#x192; .
ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Pi _ ½ ¨Â&#x203A; ¸Â? H 6 §þ ÂŁ °  ú . do {
â&#x20AC;&#x201C; max(a0 ,a1 ,. . .,anâ&#x2C6;&#x2019;1 ): ai (i = 0, . . . , n â&#x2C6;&#x2019; 1) Ă&#x2014; ĂŚ  Â&#x153; Š H° â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Ăş
flag[i]=true; turn=j; while(flag[j] && turn==j);
â&#x20AC;˘ ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Pi _ ½ ¨Â&#x203A; ¸Â? H 6 §þ ÂŁ °  ú . do {
critical section
choosing[i]=true; num[i]=max(num[0], num[1], . . ., num[n-1])+1; choosing[i]=false; for(j=0; j<n; j++){ while(choosing[j]); while((num[j]!=0)&& ((num[j],j)<(num[i],i))); }
flag[i]=false; remainder section } while(1); e> Â&#x201D; ½ ¨% \ i  Â&#x201D; { 9 l Â&#x201E; \  Pi Â? H flag[i]\ ÂŚ trueÂ&#x2013; Ă? & O [
Ăą # Â&#x152; Â&#x2019; s Â&#x201D; { 9 Â&#x201C; ÂŚ Â&#x2020; Ă&#x160;` < ÂŚ ? /Â&#x201C; ÂŚ, Ă&#x2022; ÂŞ 6 § turn_ ÂŁ ° â&#x20AC;Ť`×&#x203A;â&#x20AC;Ź Ăş ÂŚ jÂ&#x2013; Ă?[ & O
Ăą # Â&#x152; Â? rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Â&#x201D; { 9 Â&#x201C; ÂŚ Â&#x20AC; s\ ÂŚ ) Â&#x2021;6 xĂ´ Â Ă&#x2021; . Pi Â? H flag[j] falses turns i{ 9
Ă&#x201E; â Âş\  Í Â&#x2013;Â&#x201D; Ă&#x; { ½ 9 Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . 3
Ă&#x2014; ĂŚĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞA b
\ ç  H%
Â&#x2020; ò Ă&#x201C;` ž ÂŚĂ&#x2026; Ă&#x2019;Ă&#x2122; ÂźÂ&#x2013; Ă?´ òĂ&#x2013; ÂŚ& Â&#x201C; h K Ă&#x2022; Â&#x2DC;Â&#x201C; Ăž r Ă&#x2030; m .
critical section num[i]=0;
â&#x20AC;˘ Ă&#x2014; ĂŚĂĄ Ă&#x201D;Â&#x2013; Ă?[ j" fr Ă&#x203A; Âź% 7 Â&#x203A;\  " fÂ? HÂ&#x201C; ' X Ă O Ă&#x201D; Âľ Ă?Ă&#x2019; 1 t½ q Ă&#x2030; + Âş\ Ă&#x192; Â&#x2022; O ¸2 ¤ Â&#x; 8 Â&#x2022; ¸# Â&#x152;Â&#x201E; y Âż ºå Ă&#x201D;Â&#x2013; Ă?[ j" f\  " fÂż Âş Ă&#x201D;Â&#x2013; ĂĄ Ă?[ jĂ&#x203A; Âź 1 xr l \  z ´Â? ' Â&#x;| cĂ&#x192; ¨ Âşe # Â&#x201D; Qe > Â&#x201D; ½ ¨% ĂŤ i H j\ ] ÂŚK ½ Ă&#x2030;Ă&#x192; + Âş\ O .
remainder section } while(1); â&#x20AC;˘ ¡ Â&#x2DC;Â&#x201C; Ăş ÂŚo 7 §_ ÂŁ &
S Ăą Â&#x2030;$ X
Ă â&#x20AC;&#x201C; Â&#x153; Š ĂąC ] j
â&#x20AC;˘ sM :ĂŤ H\  Â&#x201C; ' X Ă O Ă&#x201D;\ ÂŚ% ] 3 j Â? H~ Ă&#x201C;Z ½ @ O / Â&#x2019; @ /Ă&#x201A; Ă&#x2019; r_ ĂŹ r Ă&#x203A; Âź% 7 Â&#x203A;Â&#x201C; rs Ă&#x2030; ĂŤ H] j\ ÂŚK ½ Ă&#x2030;M + : 6 x½  Ă&#x2030;Ă&#x192; + Âş Â? Â&#x201D; e H: ¤Ă&#x192; ÂŁ ºô Ă&#x2021; Ă&#x2014; ÂźJ ?# Q"
§ Î
# ĂŽ Q\ ÂŚ] j/ NĂ´ B Ă&#x2021; . s "
ĂŽ
# ĂŽ § QÂ? H" Âś ĂŠ & Ă&#x153; h ÂźÂ&#x2013; Ă?(s "
§ Î
# ĂŽ Q\ ÂŚĂ&#x192; Âş' Â? Â&#x; Â? H1 xĂŽ l Â&#x2013; Ă&#x;  Â? \ H Â&#x201C; ' X Ă O Ă&#x201D;á &t ¡ §6 Ăş §) Ă´ ÂŁ Ă&#x2021;0 >Ă&#x2014; Âź\ ÂŚ Â&#x17D; Â&#x201C; ÂŚĂ&#x192; Âş
½ Ăą & Ă&#x2030;Ă&#x192; + Âşe Â&#x2022; Â&#x201D; ¸2 ¤K Â&#x; Ă&#x2026; Ă&#x2019; Âż Âş0 >Ă&#x2014; Âź_ ° â&#x20AC;Ť`×&#x203A;â&#x20AC;Ź Ăş ÂŚÂ&#x201C; §¨ Â&#x160;½ 8 Ă&#x2030; + Âşe Ă&#x192; Â&#x2022; Â&#x201D; ¸2 ¤K Â&#x; ĂŻ r .
â&#x20AC;˘ Pi   ù\ ÂŚÂ&#x201A; Ă&#x2014; Â&#x2DC;Ă´ Ăž Ă&#x2021;Ă&#x160; ĂŞ\  Pk Â&#x201A; Ă&#x2014; Â&#x2DC; Ăž i % Â&#x20AC; (num[i],i)<(num[k],k) $
w Ă Ă´ n Ă&#x2021; . " f Pk Â? H Pi e > Â&#x201D; ½ ¨% \ i  4 R Â&#x161; ¸Â&#x20AC; " f num[i]=0` Œ½ Ă&#x2030;M + : t Â&#x201D; { ½ 9 Ă&#x2030; + Âş\ Ă&#x192; O . â&#x20AC;˘ q 5 wĂ´ p Ă&#x2021;r l \    ù\ ÂŚ~ Ă&#x17D; Ă&#x192; °  Â&#x201C; Ăş r Ă&#x2030;  ù ÂŚĂ&#x192; \ Ă&#x17D; ~ 8 Â&#x2022; ¸¿ ºå Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź_ s 2 §s ÂŁ °  ú ÂŚĂ&#x192; ` Âş\ Ă&#x153; O ÂźĂ&#x2122; ÂźÂ&#x2013; Ă?s Ă&#x2014; ĂŚ Â&#x20AC; $ e > Â&#x201D; ¨% ½  i \Â&#x201D; { 9 9, Â? r Ă&#x2030; Â? HĂ&#x2022; ÂŞĂĄ Ă&#x201D;Â&#x2013; Ă? jĂ&#x203A; [ Âź e > Â&#x201D; ½ ¨% \ i  4 R ` ÂŚ M : t HÂ&#x201D; Â? { ½ 9 Ă&#x2030;Ă&#x192; + Âş\ O . â&#x20AC;˘ choosing  Ă&#x192; Âş Â&#x20AC; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź 9 šô Ă&#x2021;s Ă&#x201E; Âť: °  Â&#x201C; Ăş r Ă&#x2030; Ăą\  Œ~ Ă&#x17D;Â&#x201C; Ă&#x192; rÂż Ă&#x2030; ºå Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Ă&#x2018; t Ăź e > Â&#x201D; ½ ¨ \ i %  Â&#x201D; { 9 Â? H
Ă&#x201E; â Âş\ ÂŚ ] j l 0 AK â&#x20AC;Ť×&#x203A;â&#x20AC;Ź 9 Â&#x20AC; š . \ V\ ÂŚ[ t# Ăž Q°  Â&#x201C; Ăş r Ă&#x2030;  ù\ ÂŚ~ Ă&#x17D;> Ă&#x192; &Â? á HÂż ºå Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Pi Ăź < Pk Ă&#x2014; ĂŚ Pi Â? H  ù ÂŚ~ \ Ă&#x17D;Â? Ă&#x192; HÂ&#x2022; ¸Ă&#x2014; ĂŚ\  Ă&#x201D; ĂĄÂ&#x2013; Ă?[ jĂ&#x203A; ÂźĂ&#x203A; Âź0 Au { 9 Qz # ¤Â&#x201C; Â&#x152; ÂŚ, Â? rĂ&#x201D; Ă&#x2030; ĂĄÂ&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H> 5 qÂ&#x201D; Ă&#x2026; ' Â?` Â&#x; ÂŚ # Â&#x152; for ĂŤ H` ÂŚĂ&#x192; ÂşÂ? ' Â&#x; Â&#x201C; ÂŚe Â&#x201D; . s
Ă&#x201E; â Âş while(choosing[j]); ĂŤ Hs \ Ă&#x153; O ÂźÂ&#x20AC; Pk Â? He Â&#x201D; ½ > ¨% \ i  à º j ]F \ s O Â&#x201D; { 9 > a ) Â? . Pi r z ´Â? ' Â&#x;á &Â&#x20AC; Pk Ăź <  ù  Â&#x201C; Ăş ° ÂŚ s2 §s ÂŁ 8 Â&#x2022;Ă&#x153; Â&#x152; ÂźĂ&#x2122; ÂźÂ&#x2013; Ă?s ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź ¸Â&#x201D; Â&#x2022; { 9 > Â? a ) .
â&#x20AC;˘ TestAndSet "
§ Î
# ĂŽ Q boolean TestAndSet(boolean &target){ boolean rv = target; target = true; return rv; } " s
§ Î
# ĂŽ QÂ? H" Âś ĂŠ & Ă&#x153; h ÂźÂ&#x2013; Ă?z ´' Â?á Â&#x; &Ă&#x2122; ÂźÂ&#x2013; Ă?Âż ºå Ă&#x201D;Â&#x2013; Ă?[ j Ă&#x203A; s Âź "
§ Î
# ĂŽ Q\ ÂŚ#
' ĂŽ Â?Ă&#x153; Â&#x; ÂźÂ&#x2013; Ă?Ă&#x192; ÂşÂ? ' Â&#x; 8 Â&#x2022; ¸(Âż ºå Ă&#x201D; Ă?[ Â&#x2013; j" f\  " f1 xr l \  Ă&#x192; ÂşÂ? ' Â&#x;á & 8 Â&#x2022; ¸) e _ Â&#x201D; Ă H" fÂ&#x2013; Ă? H Ă & Ă&#x153; h ÂźÂ&#x2013; Ă? Ă&#x192; ÂşÂ? ' Â&#x;Â? a ) . r Ă&#x203A; Âź% Â&#x203A;s 7 TestAndSet "
ĂŽ
` ĂŽ § ÂŚ] j/ N B Â&#x20AC; locks Â? HĂ&#x201D; ÂŚ(boolean)+ A Þ Ă&#x192; Âş\ ÂŚ Â&#x192; Â&#x201A; Â&#x201C; ÂŚ, s ` â&#x20AC;Ť×&#x203A;â&#x20AC;Ź ÂŚ falseÂ&#x2013; Ă?Â&#x153; Ăl o # Â&#x152; Â&#x153; Š ĂąC ] j ÂŚ \ 6 §þ ÂŁ °  s Ăş ~ > 1 ½ ¨Â&#x2030; ³½ & Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . do { while(TestAndSet(lock)); critical section lock=false;
â&#x20AC;&#x201C; Â&#x201D; Â? ' Â&#x;:   ù\ ÂŚÂ&#x201A; Ă&#x2014; Â&#x2DC; Ăž Â&#x201C; ÂŚe t Â&#x201D; ¡ §Â? Ăş HĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź H num[i]=0s Â? Ă&#x2122; ÂźÂ&#x2013; Ă? Â? rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź_ Â&#x201D; { ` 9 ÂŚ } Â&#x2022;t Â&#x152; 3 wĂ´ l Ă&#x2021; .
remainder section } while(1);
â&#x20AC;&#x201C; Ă´> Ă&#x2021; @ / l: Â&#x201D; { 9 Â&#x201C; ÂŚ Â? HÂż ºå Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Pi Ăź < Pk Ă&#x2014; ĂŚ Pk Â&#x20AC; $   ù\ ÂŚ~ Ă&#x17D; Ă&#x192; Â&#x201D; { ` 9 ÂŚ % i # QÂ&#x2022; ¸ Pk l Â&#x201C; ÂŚe Â? Â&#x201D; H Pi Â&#x2DC; Ă? Â&#x20AC; $ r Â&#x201D; { 9 ` Œ½ Ă&#x2030;Âş + Ă&#x192;\ O . 7 ¤, P i Â? ÂŁ HĂž j@ /y Â&#x2022;ĂĄ Â&#x152; Ă&#x201D;Â&#x2013; Ă?[ j Ă&#x203A; Âź y Â&#x2022;Ă´ Â&#x152; Ă&#x2021; m Â&#x201D; Â&#x201D; { 9 Ă´ Ă&#x2021;Ă&#x160; ĂŞ\  Â? H Â&#x201D; { 9 ½ Ă&#x2030;Ă&#x192; + Âş Â&#x201D; e .
7.4
â&#x20AC;˘ Swap "
§ Î
# ĂŽ Q void Swap(boolean &a, boolean &b){ boolean temp = a; a = b; b = temp; } Ă&#x203A; r Âź% Â&#x203A;s 7 Swap "
§ Î
` ĂŽ ÂŚ] j/ N B Â&#x20AC; locks Â? HF g
%Ă&#x201D; i ÂŚ+ A Þ Ă&#x192; Âş(/ NĂ&#x201E; B  Ă&#x192; Âş)Ăź <ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź key Ht Â? %  i Ă&#x192; Âş\ ÂŚÂ&#x201A; Â&#x192; # Â&#x152; Â&#x153; Š ĂąC ] j\ ÂŚ 6 §þ ÂŁ °  ú ½ s ¨Â&#x2030; ³½ & Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . s M : lockÂ&#x201C; r falseÂ&#x2013; Ă&#x2030; Ă?Â&#x153; Ăl oĂ´ Ă&#x2021; .
Â&#x17D; Ă&#x17E;M Ă&#x2019; Ă&#x2014; D Š Â&#x17D; Ăş# a
â&#x20AC;˘ Ă&#x; ĂŠ{ Â&#x2013; 9 ĂĄ Ă&#x201D;Â&#x2013; Ă?[ j" fr Ă&#x203A; Âź% Â&#x203A;_ 7
Ă&#x201E; â Âş/ NĂ&#x201E; B ÂťÂ? a ) Ă&#x192; Âş\ ÂŚÂ
â Â? H1 xĂŽ l Â&#x2013;\ Ă&#x;  Â&#x201C; ' X Ă O Ă&#x201D;\ ÂŚÂľ Ă?Ă&#x2019; 1 t½ q Ă&#x2030;Ă&#x192; + Âş\ Â&#x2022; O ¸2 ¤ Â&#x; 0 Â&#x20AC; AĂź <°  Â&#x201C; Ăş rĂŤ Ă&#x2030; H] j\ ÂŚĂ? Â&#x2DC; ~ > 1 K ½ Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; .
do {
â&#x20AC;˘ Â&#x201C; ' X Ă O Ă&#x201D;% ] 3 j~ Ă&#x201C;Z ½ ` O ÂŚs 6 xĂ´  Ă&#x2021;e > Â&#x201D; ½ ¨% ĂŤ i H] j_ K Ă&#x2022; Â&#x2DC; Ăž
key=true; while(key==true) Swap(lock,key);
do {
critical section
disable interrupt
lock=false;
critical section
remainder section } while(1);
enable interrupt
ÂŞ Ă&#x2022; Q TestAndSetĂľ Swap` ÂŚs 6 x  Â? HÂż º¡ Â&#x2DC;Â&#x201C; Ăş ÂŚ o7 §Â&#x201C; ÂŁ rÂ&#x2014; Ă&#x2030; ¸¿ Âş Â&#x153; Š ĂąC ] jĂŤ Â&#x2013;Ă&#x2DC; Ă&#x; ĂŚ7 ¤½ ĂĄ Ă&#x2030;á + rĂ´ Ă&#x2021;> @ /l Â? H
remainder section } while(1); 4
8 x7 ú ¤á å &t ¡ §� ú H . s ¿ º"
§ Î
s ĂŽ z ´Â? ' Â&#x;á &Â? HĂ H" f\  ô Ă&#x2021;ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H%
½ ò ¨& Ă&#x153; h ÂźÂ&#x2013; Ă?e > Â&#x201D; ½ ¨% \ i  Â&#x201D; 9 { ` ÂŚ3 w½ l Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; .
S--; } â&#x20AC;˘ signal Â&#x192; Ă Â&#x2013; Ă&#x;
â&#x20AC;˘ TestAndSet` ÂŚs 6 xĂ´  Ă&#x2021;e > Â&#x201D; ½ ¨% ĂŤ i H] j_ Â&#x2014; ¸Â&#x17D; Hâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź š ½ ¨ Â&#x2020; Ă&#x201C;` ½ ÂŚĂ&#x2DC; ĂŚ7 ¤ ĂĄ Â? H¡ Â&#x2DC;Â&#x201C; Ăş ÂŚo 7 § ÂŁ
signal(S){ S++; }
do { waiting[i]=true; key=true; while(waiting[i] && key) key = TestAndSet(lock); waiting[i]=false;
â&#x20AC;˘ j [ Â&#x; Ă# Q\ ÂŚs 6 xĂ´  Ă&#x2021;nĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âźe > Â&#x201D; ½ ¨% ĂŤ i H] j  @ \ /Ă´ Ă&#x2021;K Ă&#x2022; Â&#x2DC; Ăž
critical section
do {
j=(i+1) % n; while((j != i) && !waiting[j]) j = (j+1) % n; if(j==i) lock=false; else waiting[j]=false;
wait(mutex); critical section signal(mutex) remainder section } while(1);
remainder section } while(1);
¸Â&#x17D; Â&#x2014; HĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H mutex Â? H[ j Â&#x; Ă# Q\ ÂŚ/ NĂ&#x201E; B Âť 9, mutexÂ? H 1Â&#x2013; Ă?Â&#x153; Ăl oÂ? a ) .
â&#x20AC;&#x201C; Š  Â&#x153; ĂąC ] j: lockÂ&#x201C; r falseÂ&#x2013; Ă&#x2030; Ă?Â&#x153; Ăl oÂ? a ) . " f TestAndSet` ÂŚj ]{ 9 Â&#x20AC; $ z ´Â? ' Â&#x;Ă´ Ă&#x2021;ĂĄ Ă&#x201D;Â&#x2013; Ă?[ j Ă&#x203A; ÂźÂ? H Â&#x2019; _ t %  i Ă&#x192; Âş key ° â&#x20AC;Ť×&#x203A;â&#x20AC;Źs Ăş false á & # QÂ&#x201D; { Ă´ 9 Ă&#x2021; . Â? rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź[ tÂ&#x201C; Ăž rÂ&#x201D; Ă&#x2030; { Ă´ 9 Ă&#x2021;ĂĄ Ă&#x201D; Â&#x2013; Ă?[ jĂ&#x203A; Âź e > Â&#x201D; ½ ¨% i `= ÂŚ Q? ĂĽ /Â&#x201C; ÂŚĂ&#x2DC; Œ½ ¨t % \ i  " f lock` ÂŚ falseÂ&#x2013; Ă? waiting[j]\ ÂŚ falseÂ&#x2013; Ă? Â
K â Ă&#x2014; ÂŚM : t Â&#x201D; { 9 ½ Ă&#x2030;Ă&#x192; + Âş\ Ă&#x153; O ÂźĂ&#x2122; ÂźÂ&#x2013; Ă? Â&#x153; Š Ăą C ] j Ă&#x2DC; ĂŚ7 ¤Â? ĂĄ a ) .
â&#x20AC;&#x201C; wait Â&#x192; Ă Â&#x2013;` Ă&#x; ÂŚ] j{ Â&#x20AC; 9 $ z ´Â? ' Â&#x; Â? HĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź H mutex ° Â? â&#x20AC;Ť×&#x203A;â&#x20AC;Źs Ăş 1s Ă&#x2122; ÂźÂ&#x2013; Ă?s ° â&#x20AC;Ť`×&#x203A;â&#x20AC;Ź Ăş ÂŚ 0Ă&#x153; ÂźÂ&#x2013; Ă? Ă&#x2039; ¨ ÂŚe Â&#x201C; > Â&#x201D; ½ ¨% \ i  Â&#x201D; { ½ 9 Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . s ĂĄ Ă&#x201D;Â&#x2013; Ă?[ j Âź Ă&#x2DC; Ă&#x203A; Œ½ ¨t % \ i  " f mutex ° â&#x20AC;Ť`×&#x203A;â&#x20AC;Ź Ăş ÂŚ 1Â&#x2013; Ă? r ¨# Ă&#x2039; QĂ&#x2026; Ă&#x2019;Â&#x20AC; Â? rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Â&#x201D; { ` 9 Œ½ Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . â&#x20AC;&#x201C; s~ Ă&#x201C;Z ½ Â&#x2022; O ¸¡ ÂĄ" Ăş fÂ&#x2018; r TestAndSetĂľ : Swap "
§ Î
ĂŽ Q\ # ÂŚs 6 xĂ´  Ă&#x2021;~ Ă&#x201C;Z ½ Ăľ O Ă° Ă? t ø Â&#x2013; Ă?Ă´ Ă&#x2021;> @ /l HĂ&#x2DC; Â? ĂŚ7 ¤ ĂĄ t 3 wĂ´ l Ă&#x2021; .
â&#x20AC;&#x201C; Â&#x201D; Â? ' Â&#x;: e > Â&#x201D; ½ ¨% ` i ÂŚ= Q ĂĽ pĂĄ ¡ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? HĂ&#x2DC; Œ½ ¨t % \ i  " f Â? rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Â&#x201D; { ½ 9 Ă&#x2030;Ă&#x192; + Âşe Â&#x2022; Â&#x201D; ¸2 ¤ Â&#x; lock` ÂŚ falseÂ&#x2013; Ă? waiting[j]\ ÂŚ falseÂ&#x2013; Ă?Â
K â Ă&#x2026; Ă&#x2019;Ă&#x2122; ÂźÂ&#x2013; Ă? Â? rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H ² G\ D  Â? HÂ&#x201D; 9 { ½ Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; .
â&#x20AC;˘ ĂŽ #'
Â?Ă&#x153; Â&#x; ÂźÂ&#x2013; Ă?Ă&#x192; ÂşÂ? ' Â&#x;á &Â? HÂż Âş> h_ ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź P1 Ăľ P2 Â? H Â&#x2022;y Â&#x152; y Â&#x2022; S1 Ăľ Â&#x152; S2 ĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞA b
ĂŤ ç H Â&#x153;` Š ÂŚ t Â&#x201C; ÂŚe Â&#x201D; Â&#x201C; ÂŚ . ¢ ¸ô Ă&#x2021; S1 s z ´' Â?Â? Â&#x; a ) 6 §\ ÂŁ  S2 z ´' Â?á Â&#x; &# Q Ă&#x2021; Ă´ . s 1 xl l oĂŤ H] jÂ? H[ j Â&#x; Ă# Q\ ÂŚs 6 x  # Â&#x152; > 1 ~ K ½ Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . Âż ºå Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H 0Ă&#x153; ÂźÂ&#x2013; Ă?Â&#x153; Ăl oÂ? a synch ) Â? H[ j Â&#x; Ă# Q\ ÂŚ/ NĂ&#x201E; B ô Ă&#x2021; .
â&#x20AC;&#x201C; Ă´> Ă&#x2021; @ /l : e > Â&#x201D; ½ ¨% ` i ÂŚ= Q ĂĽ pĂĄ ¡ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? HĂ&#x2DC; ÂŚ ½ ¨t % \ i  f " i+1Ă&#x201A; Ă&#x2019;' iâ&#x2C6;&#x2019;1 t Ă H¨ Â&#x160;Ă 8 H" fÂ&#x2013; Ă? Â? rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź_ waiting` ÂŚÂ&#x203A; ¸ Ă´ Ă&#x2021; . s M :  Ă? ' P :Â&#x2013; Ă? waiting ° â&#x20AC;Ť×&#x203A;â&#x20AC;Źs Ăş trueÂ&#x201C; ` â&#x20AC;Ť×&#x203A;â&#x20AC;Ź ÂŚ falseÂ&#x2013; Ă? Â
K â ĂŻ r . ¢ ¸ô Ă&#x2021; l o Â&#x201C; ÂŚe Â? Â&#x201D; HĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź \ Ă&#x153; O ÂźÂ&#x20AC; lock` ÂŚ falseÂ&#x2013; Ă?Â
K â ĂŻ r . " fĂž j@ / Â? rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Ă´ Ă&#x2021; m Â&#x201D; Â&#x201D; { Ă´ 9 Ă&#x2021;Ă&#x160; ĂŞ \  Â? He > Â&#x201D; ½ ¨% \ i  Â&#x201D; { 9 ½ Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; .
â&#x20AC;&#x201C; P1 S1 ; signal(synch); â&#x20AC;&#x201C; P2 wait(synch); S2 ;
â&#x20AC;˘ 1 xl l o Ă&#x2014; ÂźJ ?# Q Â&#x2122; èå Ă&#x201D;Ă Ă&#x201D;? J# Q] X H~ Ă&#x201C;d ½ _ Â&#x201D; / N B : xÂ? Â&#x; aĂŤ ) H] j& : Â&#x2014; h ¸¿ Âş# QĂ&#x2013; Ÿô Ă&#x2021;ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź e > Â&#x201D; ½ ¨ % \ i  e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC; Â&#x201D; { 9 Â&#x201C; ÂŚ Â? H Â? rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H â&#x20AC;&#x153;busy waitingâ&#x20AC;?` ÂŚK Ă´ Ă&#x2021; .
7.5
Â&#x201C; Ă&#x17E;0 Ă&#x201C; Ă&#x2030; n
7.5.1
7.5.2
: g Â&#x192; Âş# a
Â&#x152;Â&#x201D; Â? Ă´
â&#x20AC;˘ busy waiting` ÂŚ Â? H[ j Â&#x; Ă# Q\ ÂŚ spinlocks Ă´ Ă&#x2021; . spinlockÂ&#x201C; rĂŤ Ă&#x2030; HĂ? oÂ&#x201E; Â? ¨ Â&#x160;s 8 Â&#x20AC; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź 9 š\ # O QÂ&#x161; ¸A 1 xĂŽ l Â&#x2013; Ă&#x; busy waiting` ÂŚ t ¡ §Â? Ăş H Â&#x20AC; ´ òþ & Â&#x201C; h ~ Ă&#x201C;Z ½ s O .
â&#x20AC;˘ T z  ï# a(semaphore) SÂ? H&
Ă&#x192; Ăą º Ă&#x192; ÂşÂ&#x2013; Ă?" fÂ&#x153; Ăl o ÂŚ] \ jĂź @ Â&#x201C; ÂŚÂ? HÂż Âş t Â&#x192; Ă Â&#x2013; waitĂź Ă&#x; < signal` ÂŚ: xK Â&#x; " fĂŤ Â&#x2013;] Ă&#x; H X ½ Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . sÂż ÂşÂ&#x192; Ă Â&#x2013;Â&#x201C; Ă&#x; r" Ă&#x2030; Âś ĂŠ & s h . â&#x20AC;˘ wait Â&#x192; Ă Â&#x2013; Ă&#x;
â&#x20AC;˘ busy waiting` ÂŚ ] j l 0 AK " fÂ? H wait Â&#x192; Ă Â&#x2013;` Ă&#x; ÂŚ Âş' Ă&#x192; Â? Â&#x; % ` i ÂŚM :[ j Â&#x; Ă# Q° â&#x20AC;Ť×&#x203A;â&#x20AC;Źs Ăş Â&#x20AC; Â&#x153;Ă&#x192; ÂŞ Âş m Â&#x20AC; Ă&#x203A; Âź ÂźÂ&#x2013; Ă&#x203A; Ă?^ ÂŚ2 ¤ Â&#x; Â&#x2022; ¸2 ¤K Â&#x; Ă´ Ă&#x2021; .
wait(S){ while(S <= 0); 5
â&#x20AC;˘ busy waitings \ Â? O H[ j Â&#x; Ă# Q½ ¨Â&#x203A; ¸
â&#x20AC;˘ busy waitings \ Â? O Hs Â&#x201D; signal Â&#x192; Ă Â&#x2013; Ă&#x; void signal(semaphore S){ if(S.L is empty) S.value = 1; else { remove a process P from S.L; wakeup(S.L); } }
typedef struct { int value; struct process *Lâ&#x20AC;&#x2122;; } semaphore; â&#x20AC;˘ busy waitings \ Â? O H wait Â&#x192; Ă Â&#x2013; Ă&#x; void wait(semaphore S){ S.value--; if(S.value < 0){ add this process to S.L; block(); } }
â&#x20AC;˘
ĂŽ rh A[ j Â&#x; Ă# QÂ? HÂż Âş> h_ s Â&#x201D; [ j Â&#x; Ă# Q S1 Ăľ S2 \ ÂŚs 6 x  # Â&#x152;½ ¨Â&#x2030; ³½ & Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . s M :Ă&#x2020; Ă&#x2019; Â&#x2013; Ă?
rh ĂŽ A[ j Â&#x; Ă# Q_ Â&#x153; Ăl ° â&#x20AC;Ť×&#x203A;â&#x20AC;ŹĂ&#x153; Ăş ÂźÂ&#x2013; Ă?Â&#x153; Ăl oÂ? a& )
Ă&#x192; Ăą º º C\ Ă&#x192; ÂŚ 6 xĂ´  Ă&#x2021; . â&#x20AC;&#x201C; wait Â&#x192; Ă Â&#x2013; Ă&#x; void wait(semaphore S){ wait(S1); C--; if(C < 0){ signal(S1); wait(S2); } signal(S1); }
# Â&#x152;l " fĂ&#x2021; ŠÂ? H FIFO ~ Ă&#x201C;d ½ s Â&#x201D; . â&#x20AC;˘ busy waitings \ Â? O H signal Â&#x192; Ă Â&#x2013; Ă&#x; void signal(semaphore S){ S.value++; if(S.value <= 0){ remove a process P from S.L; wakeup(S.L); } }
â&#x20AC;&#x201C; signal Â&#x192; Ă Â&#x2013; Ă&#x; void signal(semaphore S){ wait(S1); C++; if(C <= 0) signal(S2); else signal(S1); }
â&#x20AC;˘ busy waitings e Â? Â&#x201D; H[ j Â&#x; Ă# Q_
Ă&#x201E; â Âş\  Â? H[ j Â&#x; Ă# Q° â&#x20AC;Ť×&#x203A;â&#x20AC;Źs Ăş 6 §Ă&#x192; ÂŁ Âş á &t ¡ §Â? Ăş H . Ă&#x2022; ÂŞ Q busy waitings \ Â? O H[ j Â&#x; Ă# Q_
Ă&#x201E; â Âş\  Â? H[ j Â&#x; Ă# Q° â&#x20AC;Ť×&#x203A;â&#x20AC;Źs Ăş 6 §Ă&#x192; ÂŁ Âş | cĂ&#x192; ¨ Âşe Ă&#x153; Â&#x201D; Âź9, 6 §Ă&#x192; ÂŁ Âşs Â&#x20AC; s Â&#x201C; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź r[ Ă&#x2030; j Â&#x; Ă# Q ÂŚl \ o Â? HĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź _Ă&#x192; Âş\ ÂŚ p ¡ . â&#x20AC;˘ [ j Â&#x; Ă# Q ` ÂŚ Ă&#x2DC; Ă&#x201D;> 1 x l Â&#x2022; Â&#x152; l 0 AK " fÂ? H waitĂź < signal Â&#x192; Ă Â&#x2013;Â&#x201C; Ă&#x; rĂŹ Ă&#x2030; Ă?Ă&#x2014; ø Âźr ĂŠ " Âś & Ă&#x153; h ÂźÂ&#x2013; Ă?Ă&#x192; Âş' Â?á Â&#x; &# Q Ă´ Ă&#x2021; . s \ ÂŚ0 AK ĂŠ Â&#x2013;{ Ă&#x; 9 ĂĄ Ă&#x201D;Â&#x2013; Ă?[ j" fr Ă&#x203A; Âź% 7 Â&#x203A;\  " fÂ? HÂ&#x201C; ' Ă O X Ă&#x201D;% ] 3 j~ Ă&#x201C;Z ½ ` O ÂŚ 6 x½  Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . Ă&#x2022; ÂŞ Q Ă&#x2014; ĂŚ ĂĄ Ă&#x201D;Â&#x2013; Ă?[ j" fr Ă&#x203A; Âź% 7 Â&#x203A;\  " fÂ? Hs ~ Ă&#x201C;Z ½ s O 0 x p t ¡ § Ăş . " f: ¤Ă&#x192; ÂŁ ºô Ă&#x2021; Ă&#x2014; ÂźJ ?# Q"
§ Î
` ĂŽ ÂŚ] j/ N B t ¡ § Ăş Ă&#x153; ÂźÂ&#x20AC; 7.2] \ X  ] jr Â? aÂ&#x2122; ) èå Ă&#x201D;Ă Ă&#x201D;J ?# QK Z ` O ÂŚ 6 x  K Ă´ Ă&#x2021; . 7.5.3
T Ă Ă&#x192; Ă&#x2026;: g Â&#x192; Âş# a
â&#x20AC;˘ t F K t 6 xĂ´  Ă&#x2021;[ j Â&#x; Ă# QÂ? H | 9 Ă&#x192; Âşe Â? Â&#x201D; H° â&#x20AC;Ť_×&#x203A;â&#x20AC;Ź Ăş # 0 3 A &
K Ăą 4 Re t Â&#x201D; ¡ §Â&#x201C; Ăş r
Ă&#x2030; ĂŽ rh A[ j Â&#x; Ă# Qs . â&#x20AC;˘ [ j Â&#x; Ă# Q | 9 Âş Ă&#x192;e Â? Â&#x201D; H° â&#x20AC;Ť_×&#x203A;â&#x20AC;Ź Ăş # 0 3 A 0 ¢ ¸Â? H 1Â&#x2013; Ă? ] jĂ´ Ă&#x2021;á &# Qe Âź Â&#x201D; Ă&#x153;Â&#x20AC; l ĂŤ >T z  ï# a Ă´ Ă&#x2021; . â&#x20AC;˘ busy waitings \ Â? O Hs Â&#x201D; wait Â&#x192; Ă Â&#x2013; Ă&#x; void wait(semaphore S){ if(S.value == 1) S.value = 0; else { add this process to S.L; block(); } } 6
â&#x20AC;˘ ! Q( _ Ă&#x; Âźl : n
c °2003, sangjin@kut.ac.kr
â&#x20AC;˘ mutex [ j Â&#x; Ă# Q: s Â&#x201D; [ j Â&#x; Ă# QÂ&#x2013; Ă? 1Â&#x2013; Ă?Â&#x153; Ăl oá & 9, ! Q( ] X H\  @ /Ă´ Ă&#x2021; Â&#x153; Š ĂąC ] j\ ÂŚ] j/ NĂ´ B Ă&#x2021; .
* <* Ă&#x2013; = ĂĽ i< K: ~ ÂĄq ç { ÂĄĂ&#x2C6; Â&#x2018; 08
â&#x20AC;˘ empty [ j Â&#x; Ă# Q: > Ă&#x192; Âş[ j Â&#x; Ă# QÂ&#x2013; Ă? nĂ&#x153; ÂźÂ&#x2013; Ă?Â&#x153; Ăl o &9, q á # Qe Â? Â&#x201D; H! Q( _ Ă&#x192; Âş\ ÂŚ p ¡ .
A. Silberschatz, P.B. Galvin, G. Gagne Operating System Concepts, Sixth Edition, John Wiley & Sons, 2003.
â&#x20AC;˘ full [ j Â&#x; Ă# Q: > Ă&#x192; Âş[ j Â&#x; Ă# QÂ&#x2013; Ă? 0Ă&#x153; ÂźÂ&#x2013; Ă?Â&#x153; Ăl oá & 9, G 0 >4 Re Â? Â&#x201D; H! Q( _ Ă&#x192; Âş\ ÂŚ p ¡ .
Part II. Process Management
â&#x20AC;˘ mutexÂ? H Â&#x153; Š ĂąC ] j\ ÂŚ 0 AK 6 xá  &% Â&#x201C; 3 ÂŚ, emptyĂź < fullÂ&#x201C; r1 Ă&#x2030; xl l o\ ÂŚ0 AK 6 xá  &% 3 . 7.5.2
Âł Â&#x17D;z Âş: g Â&#x17D;Â&#x17D; Ă&#x17E;M Ă&#x2019; Ă&#x2014; D
7 7.5 7.5.1
Ă&#x2014;M m ø ¸ Â&#x17D;M Ă&#x192; Ă&#x2DC;< U g
â&#x20AC;˘ Â&#x152; # QĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź X <s ' Ă&#x152; o^ Â? Â&#x2030;(
{ , / 9 NĂ&#x201E; B ÂťB jÂ&#x2014; ¸o  e \ Â? Â&#x201D; H½ ¨Â&#x203A; ¸)\ ÂŚ/ NĂ&#x201E; B ô Ă&#x2021; . # QÂ&#x2039; ĂĄ " Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź[ tÂ&#x201C; Ăž rs Ă&#x2030; o^ Â? Ă&#x152; Â&#x2030;_ ? /6 x`  Œ{ Â&#x201C; 9 ÂŚz ¡Â&#x201C; ÂŚ, # QÂ&#x2039; ĂĄ " Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź[ tÂ&#x201C; Ăž rs Ă&#x2030; o^ Â? Ă&#x152; Â&#x2030;_ ? /6 x`  ŒĂ&#x152; tÂ&#x2019; q Â&#x201C; ÂŚz ¡ . Â&#x201E; Ăź <°  Â&#x201C; Ăş rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă? jĂ&#x203A; [ Âź\ ÂŚ{ 9 l ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź(reader) Â&#x201C; ÂŚ, Ă&#x160; ĂŞ Ăź <°  ú rĂĄ Ă&#x2030; Â&#x201C; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź\ ÂŚĂŚ Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź(writer) Ă´ Ă&#x2021; .
w Â&#x160;Â? Ă&#x2026;Â&#x17D; š Ă&#x17E;M Ă&#x2019; Ă&#x2014; DĂ&#x192; Ă&#x2DC;< U g ¢4 X Â&#x201D; ! a( at Â? m Â&#x2DC; Ă&#x2018; Ạ}R Ă&#x192; Ă&#x2DC;< U g
â&#x20AC;˘ q Ă&#x2019;Ă t Â&#x2013; Ă&#x; Â? H! Q( e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC; @ /l # Â&#x152; Â&#x201C; ÂŚ, Â&#x2122; è q Â? H! Q( q # Qe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC; @ /l # Â&#x152; Ă´ Ă&#x2021; . ¢ ¸ Ă&#x2021;! Ă´ Q( \  @ /Ă´ Ă&#x2021;] X HÂ&#x201C; r Ă&#x2030; Â&#x153; Š ĂąC ] j á &# Q Ă´ Ă&#x2021; .
â&#x20AC;˘ Âş Âż{ l 9 ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź #
' ĂŽ Â?Ă&#x153; Â&#x; ÂźÂ&#x2013; Ă?Ă&#x192; Âş' Â?á Â&#x; &# QÂ&#x2022; ¸Ă&#x201A; Ă&#x2019;&
Ăą Â&#x201C; h & Ăľ Âľ Ă?Ă&#x2019; 1 t q t ¡ §Â? Ăş H . Ă&#x2022; ÂŞ Q _ ĂŚ Âź ĂĄ l Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Ÿß < Â? rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź #
' ĂŽ Â?Ă&#x153; Â&#x; ÂźÂ&#x2013; Ă?Ă&#x192; Âş' Â? Â&#x; &Â&#x20AC; á Ă&#x201A; Ă&#x2019;&
& Ăą Â&#x201C; h Ăľ Âľ Ă?Ă&#x2019; 1 t½ q Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; .
â&#x20AC;˘ [ j Â&#x; Ă# Q\ ÂŚs 6 xĂ´  Ă&#x2021;Ă&#x2019; tĂ q Â&#x2013; Ă&#x; è Â&#x2122;q ĂŤ H] j â&#x20AC;˘ Ă&#x2019; tĂ q Â&#x2013; Ă&#x; ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź: Ă&#x2022; ÂŞa > 7.1 Ă&#x2039;
aÂŚ ! > 1. Â&#x2021; e Â&#x2122; Ă&#x2039; à ¤ > n Â&#x2122; e Ă ÂŤe % V K Â
do { ... nextp\  6 § item` ÂŁ ÂŚĂ&#x2019; tĂ q Â&#x2013; Ă&#x; ... wait(empty); wait(mutex); ... nextp\ ÂŚQ !( \  Ă&#x2019; Ă&#x2020; ... signal(mutex); signal(full); } while(1);
â&#x20AC;˘ s! QÂ&#x201E; \  " f{ l 9 ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? HĂŚ Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź NĂ&#x201E; B / ÂťĂ&#x152; o^ Â? Â&#x2030;\ ÂŚ] X H Â&#x201C; ÂŚe t Â&#x201D; ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC; @ /l t ¡ § Ăş H Â? . â&#x20AC;˘ s ! QÂ&#x201E; _ ĂŤ H] j& : ĂŚ h Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź_ Ă? UĂ&#x2026; ĂŁ Ă&#x2019;a > Ă&#x2039; â&#x20AC;˘ ĂŚ Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź: Ă&#x2022; ÂŞa > 7.3 Ă&#x2039; wait(wsem); ... ĂŚ Âźl Ă&#x192; ÂşÂ? ' Â&#x; ... signal(wsem);
<Ă&#x2022; ÂŞa > 7.1> Ă&#x2019; Ă&#x2039; tĂ q Â&#x2013; Ă&#x; ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź
<Ă&#x2022; ÂŞa > 7.3> { Ă&#x2039; 9 l Ă&#x201E; ÂşÂ&#x201A; ĂŚ Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź â&#x20AC;˘ Â&#x2122; èq ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź: Ă&#x2022; ÂŞa > 7.2 Ă&#x2039; â&#x20AC;˘ { l 9 ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź: Ă&#x2022; ÂŞa > 7.4 Ă&#x2039;
do { wait(full); wait(mutex); ... Q( ! \  e Â? Â&#x201D; H item` ÂŚ nextcÂ&#x2013; Ă?` Â&#x2026;^ Â&#x201D; ... signal(mutex); signal(empty); ... nextc\ ÂŚÂ&#x2122; èq ... } while(1);
wait(mutex); readcount++; if (readcount == 1) wait(wsem); signal(mutex); ... 9 { l Ă&#x192; ÂşÂ? ' Â&#x; ... wait(mutex); readcountâ&#x2C6;&#x2019;â&#x2C6;&#x2019;; if (readcount == 0) signal(wsem); signal(mutex);
<Ă&#x2022; ÂŞa > 7.2> Â&#x2122; Ă&#x2039; èq ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź
<Ă&#x2022; ÂŞa > 7.4> { Ă&#x2039; 9 l Ă&#x201E; ÂşÂ&#x201A; { 9 l ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź
1
wait(w); writecount++; if (writecount==1) wait(rsem); signal(w); wait(wsem); ... ĂŚ Âźl Ă&#x192; ÂşÂ? ' Â&#x; ... signal(wsem); wait(w); writecountâ&#x2C6;&#x2019;â&#x2C6;&#x2019;; if (writecount==0) signal(rsem); signal(w);
wait(rw); wait(rsem); wait(r); readcount++; if (readcount == 1) wait(wsem); signal(r); signal(rsem); signal(rw); ... 9 { l Ă&#x192; ÂşÂ? ' Â&#x; ... wait(r); readcountâ&#x2C6;&#x2019;â&#x2C6;&#x2019;; if (readcount==0) signal(wsem); signal(r);
<Ă&#x2022; ÂŞa > 7.5> ĂŚ Ă&#x2039; Âźl Âş Ă&#x201E;Â&#x201A; 9l { ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź â&#x20AC;˘ wsem [ j Â&#x; Ă# Q: s Â&#x201D; [ j Â&#x; Ă# QÂ&#x2013; Ă? 1Â&#x2013; Ă?Â&#x153; Ăl oá & 9, ĂŚ Âźl ] X H\  @ /Ă´ Ă&#x2021; Â&#x153; Š ĂąC ] j\ ÂŚ] j/ NĂ´ B Ă&#x2021; .
<Ă&#x2022; ÂŞa > 7.6> ĂŚ Ă&#x2039; Âźl Ă&#x201E; ÂşÂ&#x201A; { 9 l ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź
â&#x20AC;˘ mutex [ j Â&#x; Ă# Q: s Â&#x201D; [ j Â&#x; Ă# QÂ&#x2013; Ă? 1Â&#x2013; Ă?Â&#x153; Ăl oá & 9, readcount  Ă&#x192; Âş] X H\  @ /Ă´ Ă&#x2021; Â&#x153; Š ĂąC ] j\ ÂŚ] j/ N B Ă&#x2021; Ă´ .
â&#x20AC;˘ rw [ j Â&#x; Ă# Q: s Â&#x201D; [ j Â&#x; Ă# QÂ&#x2013; Ă? 1Â&#x2013; Ă?Â&#x153; Ăl oá &9, ¸Â&#x17D; Â&#x2014; H{ l 9 ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź rsem\  @ /l t ¡ §Â&#x2022; Ăş ¸2 ¤ Â&#x; Ă&#x2021; Ă´ . s Â&#x201C; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź r Ă&#x2030; t } Â&#x2022;ĂŚ Â&#x152; Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź ¢ aÂŤ Ă&#x2018;á &# Q _ { 9 l ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź r  Â&#x2022;Â? Â&#x152; aĂ&#x160; ) ĂŞ\  r ĂŚ Âźl Ă&#x201D;Â&#x2013; ĂĄ Ă?[ jĂ&#x203A; Âź ĂŻ rq á &Â&#x20AC; l Â&#x201D; r\ >  @ /l Â&#x201C; ÂŚe ~ Â&#x201D; { 9 ĂĄ l Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź[ tÂ&#x2DC; Ăž Ă? ĂŚ Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź\  > Ă&#x201E; ÂşÂ&#x201A; Ă H0 A ÂŚĂ&#x2026; \ Ă&#x2019;l 0 AK Â&#x20AC; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź 9 š .
â&#x20AC;˘ readcount  Ă&#x192; Âş: &
Ă&#x192; Ăą º Ă&#x192; ÂşÂ&#x2013; Ă? 0Ă&#x153; ÂźÂ&#x2013; Ă?Â&#x153; Ăl oá &9, 9 { l Â&#x192; Ă Â&#x2013;` Ă&#x; ÂŚĂ&#x192; ÂşÂ? ' Â&#x; Â&#x201C; ÂŚe Â? Â&#x201D; HĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź_ Ă&#x192; Âş\ ÂŚ p ¡ . â&#x20AC;˘ 9 { l Â&#x192; Ă Â&#x2013;` Ă&#x; ÂŚĂ&#x192; ÂşÂ? ' Â&#x; Â&#x201C; ÂŚe Â? Â&#x201D; HĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź \ ` O ÂŚM : 9 { l Â&#x192; Ă Â&#x2013;` Ă&#x; ÂŚĂ&#x192; Âş' Â? Â&#x; Â? HĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H wsem [ j Â&#x; Ă # Q\ ÂŚ Â&#x17D; # Â&#x152;ĂŚ Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź ĂŚ Âźl Â&#x192; Ă Â&#x2013;` Ă&#x; ÂŚĂ&#x192; Âş ' Â? Â&#x; Â&#x201C; ÂŚe Â? Â&#x201D; Ht S Â&#x2030; X Â&#x201C; Ă´ Ă&#x2021; . ĂŤ Â&#x2013;Â&#x20AC; Ă&#x; Â&#x2022;\ Â? Ă&#x153; O ÂźÂ&#x20AC; ĂŚ Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă? [ jĂ&#x203A; Âź ĂŚ Âźl Â&#x192; Ă Â&#x2013;` Ă&#x; ÂŚ t l w 3 Â&#x2022; ¸2 ¤ô Â&#x; Ă&#x2021; .
â&#x20AC;˘ writecount  Ă&#x192; Âş: &
Ă&#x192; Ăą º Ă&#x192; ÂşÂ&#x2013; Ă? 0Ă&#x153; ÂźÂ&#x2013; Ă?Â&#x153; Ăl oá &9, Âźl ĂŚ Â&#x192; Ă Â&#x2013;` Ă&#x; ÂŚĂŻ rq Â&#x201C; ÂŚe Â? Â&#x201D; HĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź_ Ă&#x192; Âş\ ÂŚ p ¡ . â&#x20AC;˘ readcount  Ă&#x192; Âş: &
Ă&#x192; Ăą º Ă&#x192; ÂşÂ&#x2013; Ă? 0Ă&#x153; ÂźÂ&#x2013; Ă?Â&#x153; Ăl oá &9, l 9 { Â&#x192; Ă Â&#x2013;` Ă&#x; ÂŚĂ&#x192; Âş' Â? Â&#x; Â&#x201C; ÂŚe Â? Â&#x201D; HĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź_ Ă&#x192; Âş\ ÂŚ p ¡ .
â&#x20AC;˘ 9 { l Â&#x192; Ă Â&#x2013;` Ă&#x; ÂŚp Âą t } Â&#x2022;\ Â&#x152;  Ă&#x192; ÂşÂ? ' Â&#x; Â? HĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H ĂŚ Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź ĂŚ Âźl Â&#x192; Ă Â&#x2013;` Ă&#x; Œ½ Ă&#x2030;Ă&#x192; + Âşe Â&#x2022; Â&#x201D; ¸2 ¤ wsem Â&#x; [ j Â&#x; Ă# Q\ ÂŚ7 x r ÂŁ & ĂŻ r .
â&#x20AC;˘ ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźĂ&#x2021; Š_ Â&#x153;I Š : Âł Ă° 7.1
! aÂŚ > 2. Ă Â&#x2021; ÂŤe Ă&#x2039; à ¤ > n e Â&#x2122; ÂŤ Ăe K %V Â
7.6
â&#x20AC;˘ s ! QÂ&#x201E; \  " fĂŚ Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź ĂŻ rq á &% Ă&#x153; 3 ÂźÂ&#x20AC; 8 s Â&#x153;D Š hÂ&#x2013; Ă?ĂŽ r{ 9 l Ă&#x201D; ĂĄÂ&#x2013; Ă?[ jĂ&#x203A; Âź { l 9 Â&#x192; Ă Â&#x2013;` Ă&#x; ÂŚĂ&#x192; Âş' Â? Â&#x; Ă&#x2030;Ă&#x192; + ½ Âş\ O .
Ă&#x2021;] v ² ÂĄ K Ă´ §8 p Ă˝Â&#x2039; mÂ? Â&#x2DC; mĂ&#x192; Â&#x2DC; Ă&#x2DC;< U g
â&#x20AC;˘ s ! QÂ&#x201E; _ ĂŤ H] j& : h 9l { Ă&#x201D; ĂĄÂ&#x2013; Ă?[ jĂ&#x203A; Âź_ Ă? UĂ&#x2026; ĂŁ Ă&#x2019;a > Ă&#x2039; â&#x20AC;˘ ĂŚ Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź: ÂŞ Ă&#x2022;a > 7.5 Ă&#x2039; â&#x20AC;˘ { 9 l ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź: Ă&#x2022; ÂŞa > 7.6 Ă&#x2039; â&#x20AC;˘ wsem [ j Â&#x; Ă# Q: s Â&#x201D; [ j Â&#x; Ă# QÂ&#x2013; Ă? 1Â&#x2013; Ă?Â&#x153; Ăl oá & 9, ĂŚ Âźl ] X H\  @ /Ă´ Ă&#x2021; Â&#x153; Š ĂąC ] j\ ÂŚ] j/ NĂ´ B Ă&#x2021; . â&#x20AC;˘ rsem [ j Â&#x; Ă# Q: s Â&#x201D; [ j Â&#x; Ă# QÂ&#x2013; Ă? 1Â&#x2013; Ă? Â&#x153; Ăl oá & 9, ĂŚ Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź ĂŻ rq á &% ` 3 ÂŚM :D hÂ&#x2013; Ă?ĂŽ r{ l 9 ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź_ ) Â&#x2021;6 x`  Œ} Â&#x2022;l Â&#x152; 0 AK 6 xÂ?  a ) . â&#x20AC;˘ w [ j Â&#x; Ă# Q: s Â&#x201D; j [ Â&#x; Ă# QÂ&#x2013; Ă? 1Â&#x2013; Ă? Â&#x153; Ăl oá &9, writecount  Ă&#x192; Âş\  @ /Ă´ Ă&#x2021; Â&#x153; Š ĂąC ] j] X H` ÂŚ] j/ NĂ´ B Ă&#x2021; .
<Ă&#x2022; ÂŞa > 7.7> ^ Ă&#x2039; =Â&#x2020; o Ă&#x2020; < [ t_ Ăž ĂŤ Â&#x2013;Ă° Ă&#x; Ă?ĂŤ ø H] j
â&#x20AC;˘ r [ j Â&#x; Ă# Q: s Â&#x201D; [ j Â&#x; Ă# QÂ&#x2013; Ă? 1Â&#x2013; Ă? Â&#x153; Ăl oá &9, readcount  Ă&#x192; Âş\  @ /Ă´ Ă&#x2021; Â&#x153; Š ĂąC ] j] H X ` ÂŚ] j/ NĂ´ B Ă&#x2021; .
â&#x20AC;˘ 1965¸ \  Dijkstra ] jĂŽ Â&#x2013; Ă&#x; 2
<Âł Ă° 7.1> ĂŚ Âźl Ă&#x201E; ÂşÂ&#x201A; { 9 l ĂŚ Âźl ĂŤ H] j_ ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźĂ&#x2021; Š[ t_ Ăž Â&#x153;I Š 9 { l ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ŸÍ Â&#x2013;Â&#x201D; Ă&#x; rF >
â&#x20AC;˘ wsem=0 ({ l 9 ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź\  _ K ) â&#x20AC;˘Â&#x2014; ¸Â&#x17D; HĂ&#x2021; Š empty
ĂŚ Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ŸÍ Â&#x2013;Â&#x201D; Ă&#x; rF >
â&#x20AC;˘ wsem=0 (ĂŚ Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź\  _ K ) â&#x20AC;˘ rsem=0 (ĂŚ Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź\  _ K ) â&#x20AC;˘ wsem Ă&#x2021; Š\  Qt ĂŚ Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź[ t@ Ăž /l
{ 9 l Ăź <ĂŚ Âź lĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Â&#x2014; ¸¿ ÂşÂ&#x201D; rF > 9 { l ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Â&#x20AC; $ Â&#x201D; { 9
â&#x20AC;˘ wsem=0 ({ l 9 ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź\  _ K ) â&#x20AC;˘ rsem=0 (ĂŚ Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź\  _ K ) â&#x20AC;˘ wsem Ă&#x2021; Š\  Â&#x2014; ¸Â&#x17D; HĂŚ Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź[ t@ Ăž /l â&#x20AC;˘ rsem Ă&#x2021; Š\  ô Ă&#x2021;{ l 9 ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź @ /l â&#x20AC;˘ rw Ă&#x2021; Š\  Qt { l 9 ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź[ t@ Ăž /l
{ 9 l Ăź <ĂŚ Âź lĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Â&#x2014; ¸¿ ÂşÂ&#x201D; rF > ĂŚ Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Â&#x20AC; $ Â&#x201D; { 9
â&#x20AC;˘ wsem=0 (ĂŚ Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź\  _ K ) â&#x20AC;˘ rsem=0 (ĂŚ Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź\  _ K ) â&#x20AC;˘ wsem Ă&#x2021; Š\  Qt ĂŚ Âźl ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź[ t@ Ăž /l â&#x20AC;˘ rsem Ă&#x2021; Š\  ô Ă&#x2021;{ l 9 ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź @ /l â&#x20AC;˘ rw Ă&#x2021; Š\  Qt { l 9 ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź[ t@ Ăž /l
â&#x20AC;˘ Ă&#x2022; ÂŞs Ă&#x160; ĂŞ] jĂŽ Â&#x2013;Â? Ă&#x; aÂ&#x2014; ) ¸Â&#x17D; H1 xl l o¸ Â&#x2022;½ ¨Â? Hs ĂŤ H] j\ ÂŚ\ O ´ òĂ&#x2013; ÂŚ& Ă&#x153; h ÂźÂ&#x2013; Ă?K ½ Ă&#x2030;Ă&#x192; + Âşe Â? Â&#x201D; Ht \ ÂŚÂ&#x2DC; Ă?e Ă&#x153; Â&#x201D; ÂźÂ&#x2013; Ă? + Â&#x2039;Ă&#x2022; ÂŞ _ â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Ă&#x201E; ÂşĂ&#x192; Âş$
` Ă ÂŚÂŁ x 7"
ĂŽ % i .
(Â&#x2014; I ¸¿ Âş& | Ă&#x2021; Ă&#x152;` Ă&#x192; ÂŚ m ĂŤ Â&#x201D; Â&#x2013;| Ă&#x; ` 9 ÂŚĂ&#x192; Âşe Â&#x201D; ) Âľ Ă?Ă&#x2019; 1 t½ q Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . â&#x20AC;˘ I AÂ&#x192; BĂ? l v 1. Ă&#x152; _ & | Ă&#x2021; Ă&#x152;` Ă&#x192; ÂŚ| 9 Â&#x201C; r Ă&#x2030; 6 §\ ÂŁ  Â? r Ă&#x2030; \ ÂŚ| 9 ` ÂŚĂ&#x192; Âş\ Ă&#x153; O ÂźÂ&#x20AC; | Â&#x201C; 9 r& Ă&#x2030; | Ă&#x2021; Ă&#x152;` Ă&#x192; ÂŚ? / 9Z ~Â&#x201C; ÂŚÂ Â&#x2122; Â&#x152; l r Â? ;Ă&#x160; 2 ĂŞ\  r r Â&#x2022; ¸ô Ă&#x2021; .
â&#x20AC;˘ Â? ĂŁÂ&#x161;
Ă Ăž Â&#x17E; ¡Â&#x2DC; ĂŚ +ĂŻ Ă&#x2018;Ă´ 5 5 % V K  (dining-philosopher problem): $ " Ă
_ ĂŽ ^ =Â&#x2020; o Ă&#x2020; < e Â&#x201D; . s [ tÂ&#x201C; Ăž rĂ&#x2019; Ă&#x2030; ty q Â&#x2022;\ Â&#x152;   Â&#x2122; Â&#x152; l " Â? 3 H Ăź â&#x20AC;Ť×&#x203A;â&#x20AC;Ź @\  Â? H Ă Âş Â&#x2022; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź ¸ t ¡ §Â? Ăş H . ^ = o Ă&#x2020; < Â&#x2020; [ tÂ&#x201C; Ăž rÂś Ă&#x2030; " ĂŠ+ A_ Ăž Â&#x2026;s ^ ÂŚ\  ¡ ÂŚ Ăş e Ă&#x153; Â&#x201D; Âź9, _ Â&#x2026;s ^ ÂŚĂ&#x2014; ĂŚ Â&#x153;\ Š Â&#x20AC;  ¾ Ă&#x2018;s 1 e Â&#x201D; . Ă&#x2022; ÂŞ X <& | Ă&#x2021; Ă&#x152;s Ă&#x192; $ > Ă hÂľ Ă&#x161;\ 1  \ O . C Â&#x201C; ÂŚĂĄ Ă&#x201D;Â&#x20AC; ^ =Â&#x2020; o Ă&#x2020; < Â? H  Â&#x153; Š s e Â? Â&#x201D; HÂż Âş > h_ & | Ă&#x2021; Ă&#x152;` Ă&#x192; ÂŚ| 9 Â? H . ^ =Â&#x2020; o Ă&#x2020; < Â? HĂ´ Ă&#x2021; \  _ | Ă&#x2021; & Ă&#x152;ĂŤ Ă&#x192; Â&#x2013;| Ă&#x; 9 ` ÂŚĂ&#x192; Âşe Ă&#x153; Â&#x201D; Âź9, \ P | Ă?s Ă&#x192; | Â&#x201C; 9 ÂŚe Â? Â&#x201D; H | Ă&#x2021; & Ă&#x152;Â&#x201C; Ă&#x192; r| Ă&#x2030; 9 ` ÂŚĂ&#x192; Âş\ Ă&#x153; O Âź9, Âż Âş> h_ & | Ă&#x2021; Ă&#x152;` Ă&#x192; ÂŚÂ&#x2014; ¸ Âż Âş| # 9 Q d Â&#x201D; \ Œ½ Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . d Â&#x201D; \ ÂŚĂ´ Ă&#x2021;Ă&#x160; ĂŞ\  Â? H r Âż Âş> h_ & | Ă&#x2021; Ă&#x152;` Ă&#x192; ÂŚÂ&#x2014; ¸¿ Âş/ ? 9Z ~Â&#x201C; ÂŚĂ&#x2019; ty q Â&#x2022;\ Â&#x152;   Â&#x2122; Â&#x152; | . Ă&#x2022; ÂŞa > 7.7 Â&#x201A; Ă&#x2039; Ă?Â&#x203A; Ă&#x192; ¸.
â&#x20AC;&#x201C; ĂŤ] H j& : livelocks h Âľ Ă?Ă&#x2019; 1 t½ q Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . â&#x20AC;&#x201C; K Ăž Ă&#x2022;: e Â&#x2DC; _ Â&#x201D; _ r ç Â&#x2013;` Ă&#x; ÂŚl Â? ; 2 . (Ethernet Ă&#x201C;d ½ ~ ) Â&#x201D; â&#x20AC;˘ I AÂ&#x192; BĂ? l v 2. [ Ă&#x152; j Â&#x; Ă# Q\ ÂŚ 8 6 x  # Â&#x152;Â&#x201E; ^ Â&#x2030;Ăľ
` Ăą & ÂŚe > Â&#x201D; ½ ¨% Ă&#x153; i ÂźÂ&#x2013; Ă?[ & O
Ă´ Ăą Ă&#x2021; . Ă&#x2022; ÂŞa > 7.9 Ă&#x2039; do { wait(mutex); wait(chopstick[i]); wait(chopstick[(i+1)%5]); ... Â&#x201D; d ... signal(chopstick[i]); signal(chopstick[(i+1)%5]); signal(mutex); } while(1);
â&#x20AC;˘ ĂŠ Â&#x2013;Ă Ă&#x; HK Ă&#x2022; Â&#x2DC;: Ă&#x2022; Ăž ÂŞa > 7.8 Ă&#x2039; do { wait(chopstick[i]); wait(chopstick[(i+1)%5]); ... Â&#x201D; d ... signal(chopstick[i]); signal(chopstick[(i+1)%5]); } while(1);
<Ă&#x2022; ÂŞa > 7.9> ^ Ă&#x2039; =Â&#x2020; o Ă&#x2020; < [ t_ Ăž ĂŤ Â&#x2013;Ă° Ă&#x; Ă?ĂŤ ø H] j\  @ /Ă´ Ă&#x2021;K Ă&#x2022; Â&#x2DC; 02 Ăž â&#x20AC;&#x201C; ĂŤ H] j& : Ă´ h Ă&#x2021; \  ô Ă&#x2021;^ =Â&#x2020; o Ă&#x2020; < ĂŤ Â&#x2013;d Ă&#x; Â&#x201D; 0 x p
<Ă&#x2022; ÂŞa > 7.8> ^ Ă&#x2039; =Â&#x2020; o Ă&#x2020; < [ t_ Ăž ĂŤ Â&#x2013;Ă° Ă&#x; Ă?ĂŤ ø H] j\  @ /Ă´ Ă&#x2021;ĂŠ Â&#x2013;Ă Ă&#x; HK Â&#x2DC; Ăž Ă&#x2022;
â&#x20AC;˘ I AÂ&#x192; BĂ? l v 3. j Ă&#x152; [ Â&#x; Ă# Q\ ÂŚ 8 6 x  # Â&#x152; & Ă&#x2021; Ă&#x152;` Ă&#x192; | ÂŚ | Â? 9 H Ă&#x201A; Ă&#x2019;ĂŹ rĂ&#x; ĂŤ e Â&#x2013; > Â&#x201D; ½ ¨% Ă&#x153; i ÂźÂ&#x2013; Ă? [ & O
Ă´ Ăą Ă&#x2021; . Ă&#x2022; ÂŞ > 7.10 Ă&#x2039; a
â&#x20AC;&#x201C; / NĂ&#x201E; B ÂťX <s '
â&#x20AC;&#x201C; ĂŤ H] j& : Â&#x201C; h §Â&#x201A; Ă&#x152; Ă&#x192; Â&#x153;I Š Âľ Ă?Ă&#x2019; 1 t½ q Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; .
semaphore chopstick[5];
7.7
s [ j Â&#x; Ă# Q[ tÂ&#x201C; Ăž rÂ&#x2014; Ă&#x2030; ¸¿ Âş 1Â&#x2013; Ă?Â&#x153; Ăl o Ă&#x2021; Ă´ . â&#x20AC;&#x201C; ĂŤ] H j& : h Â&#x153;Ăą Š  C ] jÂ? HĂ&#x2DC; ĂŚ7 ¤(s ĂĄ Ă&#x2013; Š Â? H^ =Â&#x2020; o Ă&#x2020; < H# Â?
Â? ĂŽ ' Â&#x;Ă&#x153; ÂźÂ&#x2013; Ă?d Â&#x201D; ½ Ă&#x2030;Ă&#x192; + Âş\ 6 O §)á ÂŁ &t ĂŤ Â&#x2013;Â&#x201C; Ă&#x; §Â&#x201A; Ă&#x152; Ă&#x192; Â&#x153; Š
Ă&#x2C6;4 k Ă&#x2020; W Ă&#x2039;W _ Ă&#x201E;
â&#x20AC;˘ j [ Â&#x; Ă# Q\ ÂŚ 6 x  Â&#x20AC; Â&#x153; Š ĂąC ] j\ ÂŚ~ > 1 Ă&#x2DC; ĂŚ7 ¤r ĂĄ ~ ´ Âşe Ă&#x192; Â&#x201D; . 3
â&#x20AC;˘ s Ă&#x192; Âş\  @ /Ă´ Ă&#x2021;] H X Â&#x201C; r region ĂŤ Ă&#x2030; H Â&#x153;` Š ÂŚ? /\  " fĂ&#x192; Âş Â?K Â&#x; ' Ă´ Ă&#x2021; . region ĂŤ H Â&#x153;_ Š + AI Ăž Â? H 6 §þ ÂŁ °  ú .
do { wait(mutex); wait(chopstick[i]); wait(chopstick[(i+1)%5]); signal(mutex); ... Â&#x201D; d ... wait(mutex); signal(chopstick[i]); signal(chopstick[(i+1)%5]); signal(mutex); } while(1);
region v when (B) S; ĂŤ s H Â&#x153;_ Š _ p : B Â&#x203A; ¸| s Â&#x201A; Ă?s Ă&#x192; # Q SĂŤ H Â&#x153;` Š ÂŚĂ&#x192; Âş '½ Â? Â&#x; Ă&#x2030;Ă&#x192; + Âşe Ă&#x153; Â&#x201D; Âź9, s p Ă´ Ă&#x2021;ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź S\ ÂŚĂ&#x192; Âş' Â? Â&#x; ÂŚe Â&#x201C; Ă&#x153; Â&#x201D; ÂźÂ&#x20AC; Â? rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? Hl Â? ; 2 . â&#x20AC;˘ 6 §¿ ÂŁ ºÍ H Â&#x153;s Š #
' ĂŽ Â?Ă&#x153; Â&#x; ÂźÂ&#x2013; Ă?Ă&#x192; Âş' Â?á Â&#x; &Â&#x20AC; region v when (true) S1; region v when (true) S2; ÂŞ Ă&#x2022; Ăľ Â? H S1` ÂŚĂ&#x192; ÂşÂ? ' Â&#x; Â&#x201C; ÂŚ S2\ ÂŚĂ&#x192; ÂşÂ? ' Â&#x; S2\ ÂŚ Ă&#x192;' Âş Â? Â&#x; Â&#x201C; ÂŚ S1` ÂŚĂ&#x192; Âş' Â?Ă´ Â&#x; Ă&#x2021; Ăľ Ăź <°  ú . 7 ¤, " ÂŁ Âś ĂŠ & h ÂźÂ&#x2013; Ă&#x153; Ă?Ă&#x192; Âş' Â?Â? Â&#x; a ) .
<Ă&#x2022; ÂŞa > 7.10> ^ Ă&#x2039; =Â&#x2020; o Ă&#x2020; < [ t_ Ăž ĂŤ Â&#x2013;Ă° Ă&#x; Ă?ĂŤ ø H] j\  @ /Ă´ Ă&#x2021;K Ă&#x2022; Â&#x2DC; Ăž 03
â&#x20AC;˘ Â&#x201D; e> %
% ò ` i ÂŚs 6 xĂ´  Ă&#x2021;Ă´ Ă&#x2021;> ! Q( Ă&#x2019; tĂ q Â&#x2013; Ă&#x; Â&#x2122; èq ĂŤ H j ]
â&#x20AC;˘ Ă&#x2022; ÂŞ Q ĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A;` Ăž ÂŚz ´Ă&#x192; ÂşÂ&#x2013; Ă?¸ Â&#x2DC;3 Ăş w½ l ¨$
Ă Â&#x20AC; Â&#x2022; Â&#x152; _ & h Â&#x201C; ĂĄ Ă&#x201D;Â&#x2013; Ă?ÂŞ Ă&#x2022;A Q\  _K Â&#x152; Â&#x2022; Â&#x20AC;6 x|  cĂ&#x192; ¨ Âşe Â&#x201D; .
â&#x20AC;&#x201C; B /Ă&#x201E; N ÂťX <s ' typedef { item pool[n]; int count, in, out; } bufferT; buffer: shared bufferT;
â&#x20AC;˘ [ j Â&#x; Ă# Q\ ÂŚ s 6 xĂ´  Ă&#x2021; { ĂŹ 9 Ă?& ø h Â&#x201C; Â&#x153; Š ĂąC ] j ½ ¨Â&#x203A; ¸Â? H 6 §þ ÂŁ °  ú . wait(mutex); ... critical section ...
â&#x20AC;&#x201C; q Ă&#x2019;Ă t Â&#x2013; Ă&#x; ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź region buffer when (count<n) { pool[in]=nextp; in = (in+1) % n; counter++; }
signal(mutex); â&#x20AC;˘ waitĂź < signal_ Ă H" f\ ÂŚ Ă&#x2039; ¨Â&#x20AC; Â&#x153; Š ĂąC ] j Ă&#x2DC; ĂŚ7 ¤ ĂĄ &t á ¡ §Â? Ăş H .
â&#x20AC;&#x201C; è Â&#x2122;q ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź region buffer when (count>0) { nextc=pool[out]; out = (out+1) % n; counter--; }
signal(mutex); ... critical section ... wait(mutex); â&#x20AC;˘ 6 §þ ÂŁ °  Â&#x201C; Ăş r½ Ă&#x2030; ¨Â&#x203A; ¸\ ÂŚ 6 x  Â&#x20AC; Â&#x201C; §Â&#x201A; Ă&#x152; Ă&#x192; Â&#x153;I Š Âľ Ă?Ă&#x2019; 1 t q Ă&#x2030;Ă&#x192; + ½ Âşe Â&#x201D; .
7.8
wait(mutex);
¢N { ' [
â&#x20AC;˘ ¸ Â&#x2014;m ' ? /\  Â&#x201A; Â&#x192; Â? a ) Ă&#x192; ÂşÂ? HÂ&#x2014; ¸m ' ? /\  &
_ Ăą Â? a ) Ă&#x160;Ă&#x192; < Â&#x2020; Âş\ ÂŚ: xK Â&#x; " fĂŤ Â&#x2013;] Ă&#x; X H½ Ă&#x2030;Ă&#x192; + Âşe Ă&#x153; Â&#x201D; Âź9, Â&#x2014; ¸m ' ? /\ Â
_ Ăą & Â? aÂ&#x2020; ) Ă&#x160;Ă&#x192; < ÂşÂ? HÂ&#x2014; ¸m ' ? /\  Â&#x201A; Â&#x192; Â? a ) Ă&#x192; ºÍ Â&#x2013; Ă&#x; 6 x  Ă&#x2030;Ă&#x192; + ½ Âşe Â&#x201D; .
... critical section ... wait(mutex);
â&#x20AC;˘ Ă´Â Ă&#x2021; \  ô Ă&#x2021;ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ŸÍ Â&#x2013;s Ă&#x; Â&#x2014; ¸m ' ? /Ă&#x201A; Ă&#x2019;Â&#x2020; Ă&#x160;Ă&#x192; < Âş\ ÂŚz ´ Â?½ Â&#x; ' Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; .
â&#x20AC;˘ s ĂŤ H] j\ ÂŚ] j l 0 AK [ j Â&#x; Ă# QÂ&#x2DC; Ă? Â? H Â&#x153; Š 0 A> hÂĽ _ Ă&#x2020; 1 xl l o K ¸ Â&#x2022;½ ¨\ ÂŚ] j/ NĂ´ B Ă&#x2021; .
â&#x20AC;˘ sl 0 xĂŤ p Â&#x2013;Ă&#x153; Ă&#x; ÂźÂ&#x2013; Ă?4 ¤¸ Â&#x; Â&#x161;Ă´ Ăş Ă&#x2021;1 xl l oĂŤ H] j\ ÂŚK l  Ă&#x201A; \ Ă&#x2019;7 ¤ ĂĄ . Â&#x2014; ¸m ' ? /\  &
_ Ăą Â? aÂ&#x2020; ) Ă&#x160;Ă&#x192; < Âş\ ÂŚ 6 x½  Ă&#x2030; + Âş\ Ă&#x192; ` O ÂŚM :@ /l ½ Ă&#x2030;Ă&#x192; + Âşe Â&#x2022; Â&#x201D; ¸2 ¤K Â&#x; Ă&#x2026; Ă&#x2019;# Q Ă´ Ă&#x2021; . " fÂ&#x2014; ¸m ' Â? Hs \ ÂŚ0 AK Ă&#x2020; Ă&#x2019; Â&#x2013; Ă?Â&#x203A; ¸| (condition) { _ 9  Ă&#x192; Âş\ ÂŚ] j/ NĂ´ B Ă&#x2021; .
â&#x20AC;˘ @ /Âł Ă°& h Â&#x201C; Â&#x153;0 Š A> hÂĽ 1 Ă&#x2020; xl l o¸ Â&#x2022;½ ¨ â&#x20AC;&#x201C; Ă&#x2018; N Ă? Ă&#x2020; Â&#x2026; Z ](critical region) â&#x20AC;&#x201C; Â&#x2DC; Âżf ' a(monitor)
condition x, y; â&#x20AC;˘ Â&#x201D; e> %
% ò Â&#x2022; i ¸½ ¨\  " fÂ? H/ NĂ&#x201E; B  Ă&#x192; ÂşÂ? H 6 §þ ÂŁ °  s Ăş Â&#x192; Â&#x201A; Ă´ Ă&#x2021; . v: shared T;
â&#x20AC;˘ ¸ Â&#x203A;|  Ă&#x192; ÂşÂ? H 6 §¿ ÂŁ ÂşÂ&#x192; Ă Â&#x2013;\ Ă&#x;  _ K " fĂŤ Â&#x2013;Â&#x203A; Ă&#x; ¸ Â&#x2022;| Â&#x152; cĂ&#x192; ¨ Âş Â&#x201D; e . 4
monitor dp { enum {thinking, hungry, eating} state[5]; condition self [5]; void picking(int i) { state[i] = hungry; test(i); if(state[i]!=eating) self [i].wait(); } void putdown(int i) { state[i] = thinking; test((i+4)%5); test((i+1)%5); } void test(int i) { if ((state[(i+4)%5] != eating) && (state[i] == hungry) && (state[(i+1) % 5] != eating)){ state[i] = eating; self [i].signal(); } } void init() { for(int i=0; i<5; i++) state[i]=thinking; } }
x y
<Ă&#x2022; ÂŞa > 7.11> ¸ Ă&#x2039; Â&#x203A;|  Ă&#x192; Âş\ ÂŚ Â&#x201D; Â&#x2014; ¸m ' â&#x20AC;&#x201C; wait Â&#x192; Ă Â&#x2013; Ă&#x; x.wait(); s Â&#x192; Ă Â&#x2013;` Ă&#x; ÂŚĂ&#x192; ÂşÂ? ' Â&#x; Â? HĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H@ /l > a ) Â? . â&#x20AC;&#x201C; signal Â&#x192; Ă Â&#x2013; Ă&#x; x.signal();
<Ă&#x2022; ÂŞa > 7.12> Â&#x2014; Ă&#x2039; ¸m ' \ ÂŚs 6 xĂ´  Ă&#x2021;^ =Â&#x2020; o Ă&#x2020; < [ t_ Ăž ĂŤ Â&#x2013;Ă° Ă&#x; Ă?ĂŤ ø H ]\ j  @ /Ă´ Ă&#x2021;K Ă&#x2022; Â&#x2DC; Ăž
s Â&#x192; Ă Â&#x2013;` Ă&#x; ÂŚĂ&#x192; Âş' Â? Â&#x; Â&#x20AC; @ /l Ă&#x2014; ĂŚ Â&#x201C; _ ĂĄ Ă&#x201D;Â&#x2013; Ă? [ jĂ&#x203A; Âź F > hĂ´ Ă&#x2021; . â&#x20AC;˘ Â&#x2014; ¸m ' \ ÂŚ s 6 xĂ´  Ă&#x2021; Â&#x201C; §Â&#x201A; Ă&#x152; Ă&#x192; Â&#x153;I Š \ Â? O H ^ =Â&#x2020; o Ă&#x2020; < [ t_ Ăž Â&#x2013;Ă° Ă&#x; ĂŤ Ă?ĂŤ ø H] j\  @ /Ă´ Ă&#x2021; K Ă&#x2022; Â&#x2DC;: Ă&#x2022; Ăž ÂŞa > 7.12 Ă&#x2039; â&#x20AC;&#x201C; y Â&#x2022;^ Â&#x152; =Â&#x2020; o Ă&#x2020; < Â? H 6 §] ÂŁ X \  d Â&#x201D; \ ÂŚĂ´ Ă&#x2021; . dp.pickup(i); ... Â&#x201D; d ... dp.putdown(i);
â&#x20AC;&#x201C; ¸ Â&#x2014;m ' ? /Ă&#x201A; Ă&#x2019;\  Â&#x201A; Â&#x192; Â? ay ) Â&#x2022;Â&#x2020; Â&#x152; Ă&#x160;Ă&#x192; < ÂşÂ? H[ j Â&#x; Ă# Q Ă?½ Â&#x2013; ¨Â&#x2030; Âł & Â&#x20AC; z ´] j 6 §þ ÂŁ °  ú . wait(mutex); ... Ă&#x160;Ă&#x192; < Â&#x2020; Âş_ z ´] jÂ&#x2018; r^ : Â&#x2030; ... if (next count>0) signal(next); else signal(mutex);
â&#x20AC;&#x201C; Â&#x203A; ¸|  Ă&#x192; Âş self \ ÂŚs 6 x  # Â&#x152; Â&#x2019; s C Â&#x201C; ÂŚĂĄ Ă&#x201D;t Â&#x2013;& Ă&#x; ĂŤ | Ă&#x2021; Ă&#x152;` Ă&#x192; ÂŚ| ` 9 ÂŚĂ&#x192; Âş\ Ă&#x153; O ÂźÂ&#x20AC; Ă&#x203A; ÂźĂ&#x203A; ÂźÂ&#x2013; Ă?l Â? ; 2 .
â&#x20AC;&#x201C; Â&#x152; yÂ&#x203A; Â&#x2022; ¸|  Ă&#x192; Âş x s Â&#x201D; [ j Â&#x; Ă# Q x semĂľ
Ă&#x192; Ăą & º Ă&#x192; Âş x count\ ÂŚÂ&#x192; Â&#x203A; aĂ´ ' Ă&#x2021; . s Ă&#x2018; tÂ&#x201C; Ăź rÂ&#x2014; Ă&#x2030; ¸¿ Âş 0Ă&#x153; ÂźÂ&#x2013; Ă?Â&#x153; Ăl oÂ? a ) . â&#x20AC;&#x201C; x.wait x count++; if (next count>0) signal(next); else signal(mutex); wait(x sem); x count--;
â&#x20AC;˘ [ j Â&#x; Ă# Q\ ÂŚ s6 xĂ´  Ă&#x2021;¸ Â&#x2014;m ' _ ½ ¨Â&#x2030; Âł & â&#x20AC;&#x201C; y Â&#x2022; Â&#x2014; Â&#x152; ¸m ' 1Â&#x2013; Ă? Â&#x153; Ăl oÂ? a mutex [ ) j Â&#x; Ă# Q\ ÂŚÂ&#x192; Â&#x203A; aĂ´ ' Ă&#x2021; . Â&#x2014; ¸Â&#x17D; HĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? HÂ&#x2014; ¸m ' ÂŚ \ 6 x  l Â&#x201E; \  wait(mutex)\ ÂŚ 6 xK  9, Â&#x2014; ¸ m' _ 6 x`  Œ = Q? ĂĽ /l Â&#x201E; \  signal(mutex)\ ÂŚ 6 xK  ô Ă&#x2021; .
â&#x20AC;&#x201C; x.signal if (x count>0) { next count++; signal(x sem); wait(next); next count--; }
â&#x20AC;&#x201C; Â&#x203A; ¸|  Ă&#x192; º \@ /Ă´ Ă&#x2021; signal` ÂŚÂ&#x2DC; Ă? pĂĄ ¡ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H F > hÂ? aĂĄ ) Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Â&#x2014; ¸m ' 6 x  Œ `¢ aÂŤ Ă&#x2018; ~ Â? r[ Ă&#x2030; j Â&#x; Ă# Q\  _ K @ /l ½ Ă&#x2030;M + : t @ /l K Ă´ Ă&#x2021; . ĂŤ Â&#x2013;Â&#x20AC; Ă&#x; Â&#x2022;s Â? X > O t ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC; Âż Âş ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Â&#x2014; ¸m ' ? /\  #
Â? ĂŽ ' Â&#x;Ă&#x153; ÂźÂ&#x2013; Ă?Â&#x201D; rF > ½ Ă&#x2030; + Ă&#x192; Âşe Â&#x201D; . s\ ÂŚ0 AK 0Ă&#x153; ÂźÂ&#x2013; Ă?Â&#x153; Ăl oÂ? a[ ) j Â&#x; Ă # Q next\ ÂŚ 6 x  9, next\  @ /l Â? HĂĄ Ă&#x201D;Â&#x2013; Ă? [ jĂ&#x203A; Âź_ Ă&#x192; Âş\ ÂŚĂ&#x201E; Âťt l 0 AK 0Ă&#x153; ÂźÂ&#x2013; Ă?Â&#x153; Ăl oÂ? a ) Ă&#x192; Âş\ ÂŚ 6 xĂ´  Ă&#x2021; . next count Â
â&#x20AC;˘ ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź F > há &Â? HĂ H" f â&#x20AC;&#x201C;  Â&#x153;ĂŠ Š Â&#x2013;Ă Ă&#x; HĂ´ Ă&#x2021;~ Ă&#x201C;Z ½ : FCFS O 5
<Âł Ă° 7.2> Â&#x2014; ¸m ' \ ÂŚs 6 xĂ´  Ă&#x2021;^ =Â&#x2020; o Ă&#x2020; < [ t Ăž_ ĂŤ Â&#x2013;Ă° Ă&#x; Ă?ĂŤ ø H] j_ K Ă&#x2022; Â&#x2DC; Ăž state[0]
state[1]
state[4]
sem[0]
cnt[0]
sem[1]
cnt[1]
sem[4]
cnt[4]
mutex
next
n cnt
Ăl Â&#x153;
thinking
thinking
thinking
0
0
0
0
0
0
1
0
0
P0 pickup r  Â&#x2022; Â&#x152;
hungry
thinking
thinking
0
0
0
0
0
0
0
0
0
P0 pickup ¢ aÂŤ Ă&#x2018;
eating
thinking
thinking
0
0
0
0
0
0
1
0
0
P1 pickup r  Â&#x2022; Â&#x152;
eating
hungry
thinking
0
0
0
0
0
0
0
0
0
P1 pickup @ /l
eating
hungry
thinking
0
0
/l @
1
0
0
1
0
0
P4 pickup r  Â&#x2022; Â&#x152;
eating
hungry
hungry
0
0
/l @
1
0
0
0
0
0
P4 pickup @ /l
eating
hungry
hungry
0
0
/l @
1
/l @
1
1
0
0
P0 putdown r  Â&#x2022; Â&#x152;
thinking
hungry
hungry
0
0
/l @
1
/l @
1
0
0
0
P0 putdown @ /l
thinking
hungry
eating
0
0
/l @
1
 Â&#x2019; Ăą
1
1
/l @
1
P4 pickup ¢ aÂŤ Ă&#x2018;
thinking
hungry
eating
0
0
/l @
1
0
0
0
 Â&#x2019; Ăą
0
P0 putdown F > h
thinking
hungry
eating
0
0
 Â&#x2019; Ăą
1
0
0
0
/l @
1
P0 putdown @ /l
thinking
eating
eating
0
0
 Â&#x2019; Ăą
1
0
0
0
/l @
1
P1 pickup ¢ aÂŤ Ă&#x2018;
thinking
eating
eating
0
0
0
0
0
0
0
 Â&#x2019; Ăą
0
P0 putdown ¢ aÂŤ Ă&#x2018;
thinking
eating
eating
0
0
0
0
0
0
1
0
0
Pi : ^ =Â&#x2020; o Ă&#x2020; < i, sem[i]: self[i] sem, cnt[i]: self[i] count, n cnt: next count
ÂşÂ&#x201A; H0 Ă&#x201C;Z O Ă&#x201A; x  â&#x20AC;&#x201C; Ă&#x201E; Ă A~ ½ : Â&#x203A; ¸| Ă&#x2019; wait 6
Â&#x152;l # f tÂ? H ĂŠ ÂŚ x½  + /r Â&#x2013;s . " " Âś` 6 Ă&#x2030;Ăž j@ ç Ă&#x; # Â&#x152; QĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź @ /l Ă&#x2014; ĂŚ{ 9 M : signals Âľ Ă? 1 t q Ă&#x2019; Â&#x20AC;  Â&#x153; Š Â&#x2022;Â&#x201C; Â&#x152; rr Ă&#x2030; ç Â&#x2013;_ Ă&#x; ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź\ ÂŚÂ&#x20AC; $ > F hÂ? a ) .
x.wait(c); # Â&#x152;l " f cÂ? HĂ&#x201E; ÂşÂ&#x201A; Ă H0 A° â&#x20AC;Ť×&#x203A;â&#x20AC;Źs Ăş .
â&#x20AC;&#x201C; ĂŤ H] j& h â&#x20AC;˘ ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H ) Â&#x2021; \ ÂŚ ~ Ă&#x17D;t Ă&#x192; ¡ §Â&#x201C; Ăş ÂŚ " Âś` ĂŠ ÂŚ H X ] ½ Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . â&#x20AC;˘ ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H " Âś` ĂŠ ÂŚ ½ Ă&#x2030;{ + Â&#x153; ~ Š Ă&#x17D;Â&#x201C; Ă&#x192; r Ă&#x2030; 6 §\ ÂŁ  K ] j t ¡ §` Ăş ÂŚĂ&#x192; Âşe Â&#x201D; . â&#x20AC;˘ ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H ½ Ă&#x2030;{ + Â&#x153; ~ Š Ă&#x17D;t Ă&#x192; Â&#x2022; ¸ ¡ §Â&#x201C; Ăş r Ă&#x2030; " Âś\ ĂŠ  @ /Ă´ Ă&#x2021;K ] j\ ÂŚr Â&#x2022; ¸½ Ă&#x2030;Ă&#x192; + Âşe Â&#x201D; . â&#x20AC;˘ ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H ½ Ă&#x2030;{ + Â&#x153; ~ Š Ă&#x17D;Â&#x201C; Ă&#x192; r Ă&#x2030; Âś " ĂŠ` ÂŚ K ] j t ¡ §Â&#x201C; Ăş ÂŚ r °  Â&#x201C; Ăş r Ă&#x2030; " Âś_ ĂŠ ½ Ă&#x2030;{ + Â&#x153;` Š ÂŚâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź š' A Ăľ Ă&#x2030;Ă&#x192; + ½ Âşe Â&#x201D; .
monitor R { boolean busy; condition x; void acquire(int time) { if(busy) x.wait(time); busy = true; } void release() { busy = false; x.signal(); } void init() { busy = false; } }
â&#x20AC;&#x201C; K Ă&#x2022; Â&#x2DC; Ăž â&#x20AC;˘ ç Â&#x192;( ÂĄ 1. ÂŤ Âś " ĂŠ 6 xÂ?  ïĂ&#x2014; Âź\ ÂŚÂ&#x2014; ¸m ' ? /Ă&#x201A; Ă&#x2019; \  Â&#x; ĂÂ&#x2020; Ă&#x160;Ă´ < Ă&#x2021; . Â&#x2014; ¸m ' ? /\  " fĂź @Ă&#x201A; Ă&#x2019;X <s ' \ ÂŚ 6 x  9, Ă&#x203A; ÂźH Ă&#x2014; ÂŚa As Â&#x2014; ¸m ' \  _ K s Ă&#x20AC; Ă&#x2019;# Qt Ă&#x2122; ÂźÂ&#x2013; Ă? & X h ]Ă´ Ă&#x2021; ~ Ă&#x201C;Z ½ s O . Â&#x201D; _ â&#x20AC;˘ Â&#x192; ÂĄ( ç 2. Â&#x2014; ÂŤ ¸Â&#x17D; HÂ? ĂŻĂ&#x2014; Âź\ ÂŚ Â&#x17D; Ă´ Ă&#x2021; .
<Ă&#x2022; ÂŞa > 7.13> Â&#x2014; Ă&#x2039; ¸m ' \ ÂŚs 6 xĂ´  Ă&#x2021;ĂŠ Â&#x2013;{ Ă&#x; 9 Âś " ʽ Ă&#x2030;{ + Â&#x153;ĂŤ Š H] j \  @ /Ă´ Ă&#x2021;K Ă&#x2022; Â&#x2DC; Ăž â&#x20AC;˘ Â&#x203A; ¸| Ă&#x201A; Ă&#x2019; wait\ ÂŚ 6 x  Â? H\ V: Ă&#x2022; ÂŞa > 7.13 Â&#x201A; Ă&#x2039; Ă?Â&#x203A; Ă&#x192; ¸. â&#x20AC;&#x201C; y Â&#x2022;ĂĄ Â&#x152; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; ÂźÂ? H 6 §] ÂŁ X \  " Âś` ĂŠ Œ½ Ă&#x2030; + Â&#x153;~ Š { Ă&#x17D;Â? Ă&#x192; H . R.acquire(t); ... Âś " ĂŠ 6 x  ... R.release(); 6
c °2003, sangjin@kut.ac.kr
R1
R3
* <* Ö = å i< K: ~ ¡q ç { ¡È 09 P1
P2
P3
A. Silberschatz, P.B. Galvin, G. Gagne Operating System Concepts, Sixth Edition, John Wiley & Sons, 2003.
Part II. Process Management
R2 R4
<Õ ªa > 8.1> Ë " ¶½ é É{ + Õ © ªA á Ô
w Y lV c s? ê 0
8 8.1
R1
R3
S y { 𠢨 |
• r Û ¼% 7 ½ ¨$
כ í ¹è
P1
P2
P3
– ¶ " é • » Äô Çh >_ ¶ " és rF > 9, s " ¶ é r É
t > Y Ä »+ AÜ þ ¼ Ðì rÀ Ó a ) . ° ú rÄ É »+ A þ _ " ¶s é # Q> he ` ¦Ã ºe . • \ V) Å Òl % 3 u © / Nç B , CPU r ß ç ,
ß { , 9 Ø 9 { ¦§ 4 u ©
R2 R4
– á Ô Ð[ jÛ ¼: # QÔ á Ð[ jÛ ¼ # Q ¶ " é\ @ / K
Ô â tô q Ç .
<Õ ªa > 8.2> Ë § Ì Ã I © e H " ¶½ é É{ + Õ © ªA á Ô
• á Ô Ð[ jÛ ¼ Ä »+ A A_ þ ¶ " é` ¦כ ¹' A õ Õ ªÄ »+ A þ _ # Q " " ¶` é ¦½ É{ + © # ¸Õ ªכ ¹' A õ rë É 7 ß ¤ á a ) .
8.2 8.2.1
• á Ô Ð[ jÛ ¼ כ ¹' A½ õ Éà + ºe H " ¶_ é à º H] jô Çs Ü O \ ¼ , r Û ¼% 7 \ rF > H " ¶ é Ð ´ § ú rÃ É º_ ¶ " é` ¦כ ¹' A½ õ Éà + º\ O . \ V) sr Û ¼% \ 7 á Ô ;' 2 ¿ º> he Ü ¼ á Ô Ð[ jÛ ¼ Hº ¿> hs Ðë כ ß ¹' A õ Éà + ½ ºe .
Y w lV c s? ê 08 ý ¤Ë Ç S Ç~ m ý ¿ ºü Å g
• 6 §W £ 1> h_ כ ¹½ ¨ ¸| s ¸¿ ºØ æ7 ¤÷ á &# Q § Ì Ã I © µ ÏÒ 1 tô q Ç . – (¡ × õ: V : þ j èô Ç Hq / NÄ B »~ Ód ½ Ü ¼ Ð Ä h & »÷ &# Q ô Ç . q / NÄ B »~ Ód ½ _ & Ä h »ê Íô ø Ç \ _ á Ô Ð[ jÛ ¼ë ß ¶ " é` ¦ 6 x½ Éà + º 6 e §` £ ¦´ ô ú Ç .
• á Ô Ð[ jÛ ¼ H ¶ " é` ¦ 6 x l \ כ ¹' A` õ ¦K 9, 6 xs = Q å K ] jK ô Ç . á Ô Ð[ jÛ ¼ H 6 §í £ H" f Ð " ¶` é ¦ s6 xô Ç .
– \ Ë Âÿ ?7 e : á Ô Ð[ jÛ ¼ Hþ j èô Ç _ ¶` é " ¦& Ä h » ¦e ¦, rá É Ô Ð[ jÛ ¼ & Ä h » ¦e H rá É Ô Ð[ jÛ ¼\ ¦l o ¦e # Q ô Ç .
– · 4 ÿ 1. ³ ÀÈ C(request): e Ðכ ¹' A` õ ¦) 6 x½ É + Ã º\ Ü O ¼ ¹ 'כ Aô õ Çá Ô Ð[ jÛ ¼ Hl 9 ô Ç .
– j¤ > n : & \ Ä h » a ) ¶ " é ry É ] © j ÐK ] j| cà ¨ º\ O ¦, á Ô Ð[ jÛ ¼ " ¶_ é 6 x ¦ `= Q å u ¦ 1 Ü h ÐK j½ + : ª é ¦% ¦ Ï& µ ¼ ] ÉM t HÕ " ¶` ` 3 º\ à # O Q ô Ç .
– · 4 ÿ 2. £ (use) – · 4 ÿ 3. B V (release): S 1 \ qô p Ç " ¶_ é 6 x s = Q å rá É Ô Ð[ jÛ ¼[ ts þ 6 x½ ÉÃ + ºe ¸2 ¤K ] jô Ç .
– K '» É 7 . e : 6 §` £ ¦ ë 7 ß ¤ á H @ /l H á Ô Ð[ jÛ ¼_ | 9 ½ Ë {P0 , P1 , . . . , Pn }s + rF > K ô Ç . P0 H P1 s & Ä h »ô Ç ¶ " é` ¦l o ¦e ¦, P1 r P2 & É Ä h »ô Ç ¶ " é` ¦l o ¦e ¦, Pn r P0 & É Ä h »ô Ç " ¶` é ¦l o ¦e .
• ¶ " é_ כ ¹' Aõ õ K ] j Hr Û ¼% 7 ñØ ¦` ¦s 6 xô Ç . \ V) open, close • ¶ " é\ @ /ô Ç@ /l H[ j í# Q\ ¦s 6 x # ½ ¨ ³ & Éà + ½ ºe . • # Q | " ½ 9 Ë? + /\ e H ¸ Há Ô Ð[ jÛ ¼ @ /l I © s 9, s | ½ 9 Ë? + /\ e Hy á Ô Ð[ jÛ ¼ s | ½ 9 Ë + ? /\ rá É Ô Ð[ jÛ ¼ t ¦e H ¶ " é` ¦l o ¦e Ü ¼ § Ì Ã I © \ e ¦ô Ç .
8.2.2 x ST j »$ Ò ×Ü «8 è « • " ¶½ é É{ + Õ © ªA á Ô_ ½ ¨$
כ í ¹ è 1
R1
• ¨ ¬½ Ð( Ç ×@ ¿ Ôm Ç (detection) ' ×ß
: § Ì Ã I © \ V~ Ó ½ ¸ ¢ H rx · ú ¦o 7 §` £ ¦ 6 x t · §Ü ú ¼ § Ì Ã © µ I ÏÒ 1 t½ q Éà + ºe . s
Ä â º § Ì Ã I © \ ¦µ Ï| 1
H· ú ¦o 7 §õ £ § Ì Ã I © РÒ' r Û ¼% ` 7 ¦4 ¤½ ¨ H· ú ¦o 7 §` £ ¦] j/ N B # § Ì Ã I © ë H] j\ ¦K Éà + ½ ºe .
P2
P3 P1
P4
• § Ì Ã I © \ ¦Á ºr ½ É +
Ä â º\ H ² G\ D Hr Û ¼% ` 7 ¦ r F K ô Ç .
R2
<Õ ªa > 8.3> Å Ë Òl He t ë ß § Ì Ã I © \ O H ¶ " é½ É + Õ © { ªA á Ô
8.4
– ¸× ¼
8.4.1
• Ô á Ðj [Û ¼ ¸× ¼: P = {P1 , P2 , . . . , Pn }, ¶Ü é " ¼Ð ³ ðr • ¶ " é ¸× ¼: R = {R1 , R2 , . . . , Rm }, f y + AÜ þ ¼ Ð ³ ðr 9, f y + A ? þ /Â Ò h \ &Ü ¼ а ú rÄ É »+ A_ þ " ¶_ é Û ¼ ¼\ Û ¦ p · .
s ê V Æ9 0< g
• © ñC ] j ¸| ` ¦: xK § Ì Ã I © \ ¦\ V~ Ó ½ H כ r# É Q§ > . # Q " ¶ " é rH É r& : Ü h ¼ Ð/ NÄ B »\ ¦½ Éà + º O \ . 8.4.2
–
È ì X ¥Ñ ÷6 M
• ô Ç ¶ " é` ¦& Ä h » " f r É " ¶` é ¦@ /l ½ ÉÃ + º\ O ¸2 ¤ H¿ º t ~ ÓZ ½ O
• Pi → Rj : ³ ÀÈ C¤ e >(requesting edge)Ü n ¼ Ð Pi Rj \ ¦כ ¹' A õ % 6 i §` £ ¦ p · . • Rj → Pi : T »× Ò $ ¤ >(assignment edge)Ü n ¼ Ð Rj Pi \½ É{ + ÷ © &% 6 3 §` £ ¦ p · .
– z' ´ ÷ &l \ 9 כ ¹ô Ç ¸ H " ¶` é ¦& Ä h » ¸2 ¤ H~ ÓZ ½ O – ô Ç ¶ " é` ¦& Ä h »ô Ç I © \ " f r É ¶ " é` ¦כ ¹ A½ õ ' ÉÃ + º\ O ¸2 ¤ H~ ÓZ ½ O
כ ¹' A õ É rá Ô Ð[ jÛ ¼ ¸× ¼\ " f ¶ " é ¸× ¼\ ¦ ? / Hf y + A` þ ¦ o v Hì Í ø \ ½ É + © { rá É Ô Ð[ jÛ ¼ ¸× ¼\ " f " ¶ é ¸× ¼\ ¦ ? / Hf y + A? þ / Ò\ e H& õ h a ) .
• ë H] j& h – + ½{ É ~ © Î Ã r É ¶ " é` ¦ ¸A 1 xî l ß 6 x t · §` ú ¦ ºe Ã Ü ¼Ù ¼ Ð " ¶_ é 6 x´ òÖ ¦s ± ú .
• \ V) Õ ªa > 8.1 Ë Ð¸ à . • Å Ò# Q ¶ " é½ É{ + Õ © ªA á Ô\ Å Òl (cycle) \ Ü O ¼ § Ì Ã I © \ O H s כ ¦, e Ü ¼ § Ì Ã I © r > F ½ Éà + ºe . Õ ªa > 8.2ü Ë <ª Õa > 8.3 Ë Ð Ã ¸.
– # Q " ¶s é כ 9 ¹ô Çá Ô Ð[ jÛ ¼ H%
½ ò ¨½ ¨& h ¼ Ü Ðl w =à n ºe .
• ß ë y ¶ " és _ Û ¼ Û ¼ë t ß ¦e Ü ¼ Å Òl H § Ì Ã I © _ כ 9 ¹Ø æì r ¸| s .
8.3
Y w lV c s? ê 0; dU s ê
8.4.3 R ÅX Ò È ì • 6 x½ ÉÃ + ºe H~ ÓZ ½ O
w Y lV c s? ê 0õ §% u iP À ¥U W s0 ê É n
– ç ( ¡ 1. á « Ô Ð[ jÛ ¼ " ¶` é ¦& Ä h » ¦e Ü ¼ " f н É{ + | © cà ¨ º\ O H ¶ " é` ¦כ ¹' A õ ªá Õ Ô Ð[ jÛ ¼ & Ä h » ¦e H ¸ H " ¶` é ¦ ] K j H~ ÓZ ½ . O
• § Ì Ã I © \ ¦% o H[ j t ~ ÓZ ½ O – á Ô Ð Ðc t` + ¦ 6 x # § Ì Ã I © p o { 9 # Q t · § ú ¸2 ¤ H~ ÓZ ½ . O
– ç ( ¡ 2. á « Ô Ð[ jÛ ¼ Pi # Q " " ¶ Ri \ é ¦כ ¹ A õ ' % ` i ¦M : Ri \ ¦¢ ¸ r É ¶ " é Rj \ ¦l o ¦e Há Ô Ð[ jÛ ¼ Pj & Ä h » ¦e Ü ¼ Ri \ ¦ Pj РÒ' K ] j ¦Õ ª ` כ ¦ Pi \ > ½ É + © { H~ ÓZ ½ O
– § Ì Ã I © \ ¦ ) 6 x t ë Å ß Òl & Ü h ¼ Ð # § Ì Ã I © \ ¦] j H~ ÓZ ½ . O – § Ì Ã I © \ ¦Á ºr H~ ÓZ ½ . \ O V) Ä »_ Û ¼ • ¬ ¨½ Ð× Ç ( @ U d× ' (prevention) ' ×ß
: § Ì Ã I © _ W 1 t 9 כ ¹ ¸| × æô Ç t µ ÏÒ 1 t q t · § ú ¸2 ¤ # \ V~ Óô ½ Ç . s ~ ÓZ ½ O r É " ¶כ é ¹' A` õ ¦] jô Ç # § Ì Ã I © \ ¦\ V~ Óô ½ Ç .
8.4.4
Øò U Å ÿ6 & M
• í¨ H @ 8 /l { 9 # Q t · § ú ¸2 ¤ H~ ÓZ ½ : y O " ¶ é \ ñ\ ¦Â Ò# ¦± ú r É ñ_ ¶ " é Ò' ½ É{ + © ¦~ ` Î Ã ¸2 ¤ô Ç .
• ¬ ¨½ Ð× Ç ( @ m ¬q (avoidance) ' ×ß
: î r%
^ ò ] j \ á Ô Ð[ jÛ ¼ # Q " ¶ " é[ t` þ ¦כ ¹' A½ õ Ét + · ú ô Ç . î r%
^ ò ] j Hs &
ñ Ð\ ¦s 6 x # á Ô Ð[ j Û ¼ " ¶` é ¦כ ¹' A õ % ` i ¦M :s ` כ ¦) 6 x½ Ét + # Â Ò\ ¦ &
ô ñ Ç .
– R = {R1 , R2 , . . . , Rm }s " ¶_ é | ½ 9 Ës + F :R→N ÊÃ < º\ ¦&
_ ñ # y " ¶_ é Ä » 2
AZ þ + > Ð ñ\ ¦½ É{ + ô © Ç . \ V) F (tape drive) = F (disk drive) = F (printer drive) =
R1
1 5 12
P1
P2
R2
– ç ( ¡ 1. á « ÔÐ [ jÛ ¼ Pi Ri " ¶` é ¦& Ä h » ¦ Ü e ¼ s Ô á Ð[ jÛ ¼ H F (Rj ) > F (Ri ) " ¶ éë כ ß ¹' A½ õ ÉÃ + ºe .
<Õ ªa > 8.4> Ë " ¶½ é É{ + Õ © ªA á Ô· ú ¦o 7 §_ £ \ V
– ç ( ¡ 2. á « Ô Ð[ jÛ ¼ Pi Rj ¶ " é` ¦כ ¹' A õ l \ s á Ô Ð[ jÛ ¼ H F (Rj ) < F (Ri ) ¸ H ¶ " é Ri \ ¦K ] jK ô Ç .
• £ 7, Pi ¤ H ¶ " é` ¦½ É{ + ~ © Î Ã 6 x Pj ¸¿ º Qè å = ß 6 §\ £ 6 x½ Éà + ºe . • rÛ ¼% s 7 î ß ô Ç I © \ e Ü ¼ § Ì Ã I © µ Ï 1 t q Ò t · § ú H . r Û ¼% 7 s î ß t · § ú r É I © \ Ü e ¼ ì Í× ø ¼r § Ì Ã I © µ ÏÒ 1 t q H כ r É m ë t µ ß ÏÒ 1 t½ q Éà + ºe .
• ~ ÓZ ½ _ O &
S ñ $ X
\ í aô ' Ç7 x" £
( î ¸í H\ _ ô Ç7 x" £
) î – {P0 , P1 , . . . , Pn } r í É H8 ¨ @ /l H á Ô Ð[ j [ t_ þ | ½ 9 Ës + . £ ¤ 7, Pi H Pi+1 s & Ä h » ¦e H Ri \ ¦כ ¹' A õ Há Ô Ð[ jÛ ¼s .
• V \) r Û ¼% 7 \ 12> h_ _ s á Ô× ¼ s Ú Ô rF > 9, t0 r ç M ß : 6 §õ £ ° ú rá É Ô Ð[ jÛ ¼ e .
– 7 ¤, Pi+1 £ r Ri \ É ¦ & Ä h » ¦ e Ü ¼9 Ri+1 ` ¦ כ ¹' A õ ¦e . s M : F (Ri ) < F (Ri+1 )s . – Õ ª X < F (R0 ) < F (R1 ) < · · · < F (Rn ) < F (R0 )s Ù ¼ Ð F (R0 ) < F (R0 )s . " f {P0 , P1 , . . . , Pn }s í H¨ @ 8 /l Há Ô Ð [ j[ t_ þ | 9 ½ Ës + H כ r É ¸í Hs .
8.5
P0 P1 P2
³F & Ã ºכ ¹ 5 2 2
< P1 , P 0 , P 2 > í H" f Hî ß ô Çí H" fs Ù ¼ Ðs r Û% ¼ 7 r É ³F & î ß ô Ç I © \ e . t1 r ç \ ß P2 \ > _ s á Ô 8½ É{ + ÷ © &% 3 ¦ . Õ ª Q Û r ¼% 7 rî É ß t 3 wô l Ç I © a ) . P1 r½ É É{ + © &# ÷ Qz ´ ' | cà ¨ ºe t ë s ß á Ô Ð[ jÛ ¼ = Qè å Ê ß ê\ P0 ü < P2 9 כ ¹ô Çþ j@ /ë ß uכ p ¹' A õ § Ì Ã I © a ) .
w Y lV c s? ê 0> HY
• § Ì Ã I © rx ~ ÓZ ½ O r É \ á Ô Ð[ jÛ ¼ כ 9 ¹ Ç ô " ¶_ é &
ñ Ð\ ¦ s6 x # Õ ªá Ô Ð[ jÛ ¼[ ts þ " ¶ é` ¦כ ¹' A õ % ` i ¦M : § Ì Ã I © µ ÏÒ 1 t q t · § ú ¸ 2 ¤t ½ É{ + K © Å Ò H~ ÓZ ½ s O . • rx ~ ÓZ ½ \ O " fá Ô Ð[ jÛ ¼ " ¶` é ¦כ ¹' A õ 1) ³F & 6 x 0 xô p Ç " ¶, 2) y é á Ô Ð[ jÛ ¼\ > ½ É{ + © a ) ¶ " é, 3) y á Ô Ð[ jÛ ¼_ p A כ ¹' Aõ õ K ] j\ ¦ ¦ 9 # ½ É{ + ¢ © ¸ Ht ` ¦ &
ô ñ Ç . 8.5.1
j@ þ /Ã ºכ ¹ 10 4 9
8.5.2
Ì R¶ ¦ £R s§ ê 7 0³ ° ow P ¨ Ö
• yÄ »+ A_ þ " ¶ é _ Û ¼ Û ¼ rF > 6 x½ ÉÃ + ºe H· ú ¦o 7 § £
m Å ¹ ¢V X s? ê 0
• l r > ¶ " é½ É{ + Õ © ªA á Ô\ & h Ü ¼ г ðr H³ À C e È æ¤ >(claim edge)` n ¦Æ Ò ô Ç .
• 9 { ì Í& ø Ü h ¼ Ð § Ì Ã I © rx · ú ¦o 7 § £ r ò É Ñ¦ 5 >ø 5 ( × @ (safe state)\ ¦&
_ ñ ¦, á Ô Ð[ jÛ ¼ " ¶` é ¦ כ ¹' A õ r Û ¼% s 7 î ß ô Ç I © ( § Ì Ã I © µ Ï 1 t½ q Ò Éà + º\ O H I © )\ ¦Ä »t Ht ô Ç 6 §\ £ É{ + ½ K © ï r .
– Pi 99K Rj : p A \ Pi Rj \ ¦כ ¹' A½ õ Éà + ºe H ` כ ¦ p · . • Pi Rj \ ¦כ ¹' A õ כ ¹' A õ Pi 99K Rj ` ¦½ É{ + © Rj → Pi Ð Ë ¨# QÅ Òl \ O Ht # \ O H
Ä â º\ ë כ ß ¹' A` õ ¦) 6 xô Ç . s Å Òl \ ¦ ½ ÉM + : rá É Ô Ð[ jÛ ¼_ כ ¹' A 0 õ x p ¸ Êa < ¦ 9 a ) .
• s \ ¦0 AK y á Ô Ð[ jÛ ¼ Hp o y Ä »+ A_ þ " ¶ é 9 כ ¹ô Çþ j@ /º Ã\ ¦ K Å Ò# Q ô Ç . • r Û ¼% 7 \ ò Ѧ 5 >ø ' 5 " K (safe sequence) rF > Õ ªr Û ¼% 7 rî É ß ¦ô Ç .
8.5.3 Ö R j N ß Ó ± §h ¤ ¸ æ
• & F ³ ½ É{ + í © H" f\ @ /K 6 § £ ¦ `ë 7 ß ¤ á Há Ô Ð[ j Û ¼_ í H" f < P1 , P2 , . . . , Pn >s rF > s í H " f\ ¦î ß ô Çí H" f ô Ç .
• 9 {ì Í& ø h
Ä â º\ 6 x½ ÉÃ + ºe H § Ì Ã I © rx ú · ¦o 7 § £
y Pi \ @ /K Pi _ כ ¹' As õ ³F & 6 x 0 xô p Ç " ¶ é j < i õ Pj & Ä h » ¦e H ¶ " é\ _ K ë 7 ß ¤ á cà ¨ | ºe # Q ô Ç .
• yá Ô Ð[ jÛ ¼ HÒ t$ q
÷ í &l \ y ¶ " é_ Ä »+ A þ כ 9 ¹ô Çþ j@ / Û ¼ Û ¼Ã º\ ¦ K ô Ç . s º à Hr Û ¼% _ 7 ^ ¶ " é_ à º\ ¦ íõ ½ Éà + º\ O . 3
â&#x20AC;˘ ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź " Âś` ĂŠ ÂŚ â&#x20AC;Ť×&#x203A;â&#x20AC;Ź š' A Ăľ Â&#x20AC; r Ă&#x203A; Âź% 7 Â&#x203A;s ĂŽ Â&#x2013;Â&#x201E; Ă&#x; Ă´ Ă&#x2021; Â&#x153;I Š \ ÂŚĂ&#x201E; Âťt Â? Ht Â&#x17D; Ă´ Ă&#x2021; .
â&#x20AC;&#x201C; Ăż ¡4 Â&#x203A; 1. â&#x2C6;&#x20AC;j = 1, . . . , m\  @ /K reqi [j] â&#x2030;¤ need[i, j]s Â&#x20AC; ĂŠ Â&#x2013;> Ă&#x; 2Â&#x2013; Ă?s 1 x l Â&#x201C; ÂŚ, Ă&#x2022; ÂŞX t O ¡ § Ăş ÂźÂ&#x20AC; Ă&#x153; Â&#x161; ¸Ă&#x20AC; Ă&#x201C;s .
â&#x20AC;˘ r Ă&#x203A; Âź% 7 Â&#x203A;\  " fĂ&#x201E; Âťt Â? HX <s ' ½ ¨Â&#x203A; ¸: ns ĂĄ Ă&#x201D;Â&#x2013; Ă?[ j Ă&#x203A; Âź_ Ă&#x192; Âşs Â&#x201C; ÂŚ, ms Âś " ĂŠ_ Ă&#x201E; Âť+ AĂ&#x192; Ăž Âşs .
â&#x20AC;&#x201C; Ăż ¡4 Â&#x203A; 2. â&#x2C6;&#x20AC;j = 1, . . . , m\  @ /K reqi [j] â&#x2030;¤ avail[i, j]s Â&#x20AC; ĂŠ Â&#x2013;> Ă&#x; 3Ă&#x153; ÂźÂ&#x2013; Ă?s 1 x l Â&#x201C; ÂŚ, Ă&#x2022; ÂŞX t O §Ă&#x153; Ăş ¡ ÂźÂ&#x20AC; @ /l Ă´ Ă&#x2021; .
â&#x20AC;&#x201C; 6 x 0  x(avail): U p ´s mÂ&#x201C; 7 Â&#x2DC;' Â&#x2013; Ă?y Â&#x2022; Â&#x152; " Âś ĂŠ _ Ă&#x201E; Âť+ A Ăž 6 x 0  xĂ´ p Ă&#x2021; Âś " ĂŠ_ Ă&#x192; Âş\ ÂŚ p ¡ .
â&#x20AC;&#x201C; ¡ Â&#x203A;4 Ăż 3. 6 § ÂŁ ÂŚ `e r Â&#x201D; Â&#x2013; Ă?> Ă Â&#x2013; Ă&#x; Â&#x201C; ÂŚ, â&#x20AC;˘ ¡ Â&#x203A;4 Ăż 3.1. â&#x2C6;&#x20AC;j = 1, . . . , m\  @ /K
â&#x20AC;&#x201C; j Ăž@ /Ă&#x192; Âşâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź š(max): n Ă&#x2014; m Â? ' Â&#x;§ =Â&#x2013; > Ă?y Â&#x2022;ĂĄ Â&#x152; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź _ y Â&#x2022; Â&#x152; Âś " ĂŠ\  @ /Ă´ Ă&#x2021;Ăž j@ /Ă&#x192; Âşâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź š\ ÂŚ p ¡ .
avail[i, j] := avail[i, j] â&#x2C6;&#x2019; reqi [j]
â&#x20AC;&#x201C; + ½{ Ă&#x2030; Â&#x153;(alloc): n Ă&#x2014; m Â? Š ' Â&#x;§ =Â&#x2013; > Ă?y Â&#x2022;ĂĄ Â&#x152; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź\  > Ă&#x2030;{ + ½ Â&#x153;á Š &# Qe Â? Â&#x201D; Hy Â&#x2022; Â&#x152; Âś " ĂŠ_ Â&#x201C; Ă&#x203A; ÂźÂ&#x2021; Ă&#x203A; ÂźĂ&#x192; Âş\ ÂŚ p ¡ .
â&#x20AC;˘ ¡ Â&#x203A;4 Ăż 3.2. â&#x2C6;&#x20AC;j = 1, . . . , m\  @ /K alloc[i, j] := alloc[i, j] + reqi [j]
â&#x20AC;&#x201C; z Â&#x2122;Â&#x201C; Â&#x152; rĂ&#x192; Ă&#x2030; Âşâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź š(need): n Ă&#x2014; m Â? ' Â&#x;§ =Â&#x2013; > Ă?y Â&#x2022;ĂĄ Â&#x152; Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź _ y Â&#x2022; Â&#x152; Âś " ĂŠ\  @ /Ă´ Ă&#x2021;z Â&#x2122;Â&#x201C; Â&#x152; rĂ&#x192; Ă&#x2030; Âşâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź š\ ÂŚ p ¡ .
â&#x20AC;˘ ¡ Â&#x203A;4 Ăż 3.3. â&#x2C6;&#x20AC;j = 1, . . . , m\  @ /K need[i, j] := need[i, j] â&#x2C6;&#x2019; reqi [j]
need[i, j] = max[i, j] â&#x2C6;&#x2019; alloc[i, j]
s Â&#x153;I Š ĂŽ Â&#x2013;Â&#x201E; Ă&#x; Ă´ Ă&#x2021; Â&#x153;I Š Â&#x201C; t ĂŽ Â&#x2013;Â&#x201E; Ă&#x; Â&#x153;I Š Â&#x17D; ¡ Â&#x2DC;Â&#x201C; Ăş ÂŚo 7 §` ÂŁ ÂŚs 6 x  # Â&#x152; Â&#x17D; Ă´ Ă&#x2021; . ĂŽ Â&#x2013;Â&#x201E; Ă&#x; ½ Â&#x20AC; Ă&#x2030;{ + Â&#x153; Š Â&#x201C; ÂŚ, ĂŽ Â&#x2013;Â&#x201E; Ă&#x; t ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC; e r Â&#x201D; Â&#x2013; Ă?½ Ă&#x2030;{ + Â&#x153; Š Ă&#x2021; Ă´ ` â&#x20AC;Ť×&#x203A;â&#x20AC;Ź ÂŚ2 [Â&#x2122; èô Ă&#x2021; .
â&#x20AC;˘ Âł Ă°l Z : XĂź O < Y ¸ Â&#x2014;Âż Âş U ´s nÂ&#x201C; 7 Â&#x2DC;' { 9 M : X â&#x2030;¤ Y{ Â&#x20AC; 9 9 â&#x20AC;Ť×&#x203A;â&#x20AC;Ź šĂ&#x2DC; ĂŚĂŹ rÂ&#x203A; ¸| Â&#x201C; r â&#x2C6;&#x20AC;i = 1, . . . , n, X[i] â&#x2030;¤ Ă&#x2030; Y [i]s . Ă&#x2018;ÂŚ 5 ò >Ă&#x2014; Â&#x2021; ( Â&#x2018;@ ~ Ă&#x2030; N Ă&#x201C;Â&#x201D; Âą §h ¤ ¸ ĂŚ
Â&#x161; R Ă&#x2013; j N Ă&#x; Ă&#x201C;Â&#x201D; Âą §h ¤ ¸Â&#x2DC; ĂŚ +U d
â&#x20AC;˘ 6 x  Â? HĂ&#x2020; Ă&#x2019; _ Â&#x2026;s ' ½ ¨Â&#x203A; ¸
â&#x20AC;˘ r Ă&#x203A; Âź% Â&#x203A;_ 7 ½ ¨$
Ă
â&#x20AC;&#x201C; workĂź < finÂ&#x201C; rU Ă&#x2030; ´s y Â&#x2022;y Â&#x152; Â&#x2022; mĂľ Â&#x152; nÂ&#x201C; 7 Â&#x2DC;' s .
â&#x20AC;&#x201C; ĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź: P0 , . . ., P4 ( $ ĂĄ Ă Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź) â&#x20AC;&#x201C; " Âś: A : 10, B : 5, C : 7 ([ ĂŠ j t Ă&#x201E; Âť+ AĂľ Ăž y Â&#x2022; Â&#x152; Âť+ Ă&#x201E; A_ Ăž Â&#x201C; Ă&#x203A; ÂźÂ&#x2021; Ă&#x203A; ÂźĂ&#x192; Âş)
â&#x20AC;˘ ¡ Â&#x2DC;Â&#x201C; Ăş ÂŚo 7 § ÂŁ
â&#x20AC;˘ r ç Â&#x2013; t0 M Ă&#x; :r Ă&#x203A; Âź% Â&#x203A;_ 7 Â&#x153;I Š 6 §þ ÂŁ °  ú Â&#x201C; ÂŚ .
â&#x20AC;&#x201C; ¡ Â&#x203A;4 Ăż 1. â&#x2C6;&#x20AC;i = 1, . . . , m, work[i] := avail[i]Â&#x2013; Ă? Â&#x153; Ăl o Â&#x201C; ÂŚ, â&#x2C6;&#x20AC;i = 1, . . . , n fin[i] := falseÂ&#x2013; Ă? Â&#x153; Ăl o Ă&#x2021; Ă´ . â&#x20AC;&#x201C; ¡ Â&#x203A;4 Ăż 2. 6 §` ÂŁ ÂŚĂŤ Â&#x2013;7 Ă&#x; ¤ ĂĄ Â? H i\ Œš Ă&#x201D;Â? 1 H .
P0 P1 P2 P3 P4
â&#x20AC;˘ fin[i] = false â&#x20AC;˘ â&#x2C6;&#x20AC;j = 1, . . . , m, need[i, j] â&#x2030;¤ work[j] s i \ Ă&#x153; O ÂźÂ&#x20AC; ĂŠ Â&#x2013;> Ă&#x; 4Â&#x2013; Ă?s 1 xĂ´ l Ă&#x2021; . â&#x20AC;&#x201C; ¡ Â&#x203A;4 Ăż 3. 6 §` ÂŁ ÂŚĂ&#x192; Âş' Â? Â&#x; Â&#x201C; ÂŚ â&#x20AC;˘ ¡ Â&#x203A;4 Ăż 3.1. â&#x2C6;&#x20AC;j = 1, . . . , m\  @ /K
A 0 2 3 2 0
alloc B 1 0 0 1 0
C 0 0 2 1 2
A 7 3 9 2 4
max B 5 2 0 2 3
C 3 2 2 2 3
A 3
avail B C 3 2
ÂŞ Ă&#x2022; QÂ&#x20AC; need[i, j]Â? H max[i, j]-avail[j]s Ă&#x2122; ÂźÂ&#x2013; Ă? 6 § ÂŁ þ°  ú .
work[i] := work[i] + alloc[i, j] â&#x20AC;˘ ¡ Â&#x203A; Ăż 4 3.2. fin[i] = true Â&#x2013;> Ă&#x; ĂŠ 2Â&#x2013; Ă?s 1 xĂ´ l Ă&#x2021; .
P0 P1 P2 P3 P4
â&#x20AC;&#x201C; ¡ Â&#x203A;4 Ăż 4. â&#x2C6;&#x20AC;i = 1, . . . , n\  @ /K fin[i] = trues r Â&#x20AC; Ă&#x203A; Âź% 7 Â&#x203A;Â&#x201C; rĂŽ Ă&#x2030; Â&#x2013;Â&#x201E; Ă&#x; Ă´ Ă&#x2021; Â&#x153;I Š \  e Â? Â&#x201D; H s â&#x20AC;Ť×&#x203A;â&#x20AC;Ź . â&#x20AC;˘ s ¡ Â&#x2DC;Â&#x201C; Ăş ÂŚo 7 §Â&#x201C; ÂŁ r m Ă&#x2014; n2 Â&#x192; Ă&#x2030; Ă Â&#x2013;s Ă&#x; Â&#x20AC; 9 â&#x20AC;Ť×&#x203A;â&#x20AC;Ź š .
A 7 1 6 0 4
need B 4 2 0 1 3
C 3 2 0 1 1
â&#x20AC;˘ Â&#x20AC;$ s r Ă&#x203A; Âź% Â&#x203A;s 7 ĂŽ Â&#x2013;Â&#x201E; Ă&#x; Ă´ Ă&#x2021; Â&#x153;I Š Â&#x201C; t Â&#x17D; # Â&#x152;Â&#x2DC; Ă? .
x SÂł j Ă&#x20AC;Ă&#x2C6; CĂ&#x201C; e N ÂąÂ&#x201D; §h ¤ ¸ ĂŚ â&#x20AC;˘ 6 x  Â? HĂ&#x2020; Ă&#x2019; Â&#x2026; _s ' ¨ ½Â&#x203A; ¸
â&#x20AC;&#x201C; work = {3, 3, 2}s Ă&#x2122; ÂźÂ&#x2013; Ă? P1 Ăľ P3 Â&#x201C; rĂŠ Ă&#x2030; Â&#x2013;> Ă&#x; 2\ ÂŚ Â&#x2013;7 Ă&#x; ĂŤ ¤ô ĂĄ Ă&#x2021; .
â&#x20AC;&#x201C; reqi : U ´s mÂ&#x201C; 7 Â&#x2DC;' Â&#x2013; Ă?" fĂĄ Ă&#x201D;Â&#x2013; Ă?[ jĂ&#x203A; Âź Pi â&#x20AC;Ť×&#x203A;â&#x20AC;Ź š' A Ăľ Â? H Âś " ĂŠ_ Ă&#x192; Âş\ ÂŚ p ¡ .
â&#x20AC;&#x201C; P1 ` ÂŚÂ&#x20AC; $ Ă&#x192; ÂşÂ? ' Â&#x; Â&#x20AC; work = {5, 3, 2} Â? a ) .
â&#x20AC;˘ ¡ Â&#x2DC;Â&#x201C; Ăş ÂŚo 7 § ÂŁ 4
– P3 ¢ ¸ H P4 ` ¦Ã º' ½ ɺ + Ãe .
P5
– P4 ` ¦Ã º ' work = {5, 3, 4} a ) . – P3 µ Ú\ 1 à º ' ½ Éà + º\ O .
R1
R4 R3
– P3 ` ¦Ã º ' work = {7, 4, 5} a ) . – P0 ¢ ¸ H P1 ` ¦Ã º' ½ ɺ + Ãe . – P0 ` ¦Ã º ' work = {7, 5, 5} a ) .
P1
P2
P3
– P1 ` ¦Ã º ' ½ Éà + ºe . – 7 ¤ < P1 , P4 , P3 , P0 , P1 > £ rî É ß ô Çí H" fs Ù ¼ Ðs r Û ¼% 7 r É ³F & î ß ô Ç I © s .
P4 R2
• s M : P1 s reqi = {1, 0, 2}` ¦כ ¹' A õ % i ¦ . s כ ¹' A` õ ¦ )6 x½ Éà + ºe Ht # Ð . s כ ¹' A õ r need[1] É Ð & h ¦, avail Ð & Ü h ¼Ù ¼ Ð r e н É{ + © 6 §õ £ ° ú .
P0 P1 P2 P3 P4
A 0 3 3 2 0
alloc B 1 0 0 1 0
C 0 2 2 1 2
A 7 0 6 0 4
need B 4 2 0 1 3
C 3 0 0 1 1
A 2
R5
(a) " ¶½ é É{ + Õ © ªA á Ô P5
avail B C 3 0
P1
P2
P3
P4
(b) @ /l Õ ªA á Ô <Õ ªa > 8.5> Ë " ¶½ é É{ + Õ © ªA á Ôü <Õ ª \ כ @ /6 x÷ £ & H@ / lÕ ªA á Ô
– work = {2, 3, 0}s Ù ¼ Ð P1 µ Ú\ 1 à º ' ½ Éà + º O \ . – P1 ` ¦Ã º ' work = {5, 3, 2} a ) .
– " ¶½ é É{ + Õ © ªA á Ô\ כ ¹' A õ Pi → Ri ü <½ É + © { Ri → Pj rF > @ /6 x÷ £ & H@ /l ªA Õ á Ô\ Pi → Pj \ ¦Æ Ò ô Ç .
– s s Ê ê Hl rõ > ° ú rí É H" f Ðz ´' s 0 x p . " fs ½ É{ + © r) É 6 x a ) .
8.6
• § Ì Ã I © r@ É /l Õ ªA á Ô\ Å Òl e Ht # µ Ï| 1 ô
Ç .
w Y lV c s? ê 0[ pU c
• § Ì Ã I © Ðt à ~ ÓZ ½ s O ê Í ø § Ì Ã I © \ ¦ ) 6 x ¦ Å Òl & Ü h ¼ Ч Ì Ã I © \ ¦1 µ| Ï
# r Û ¼% 7 ` ¦4 ¤½ ¨ H~ ÓZ ½ s O .
8.6.2
• s ~ ÓZ ½ ` O ¦ 6 x l 0 AK " f H § Ì Ã I © \ ¦µ Ï| 1
l 0 AK 9 כ ¹ô Ç&
ñ Ð\ ¦r Û ¼% 7 \ " fÄ »t K Ç ô . ÷ rë ß m § Ì Ã I © ÐÂ Ò' r4 ¤ Hõ
\ ñ & " f r| : h 9 &Ü ¼ Ð Hz < ´s µ ÏÒ 1 tô q Ç . 8.6.1
l c P Ì R8 ¦ ý ¥] ùT k # b [ß Å Ã Å ¹ z º V Ëc R Ü Rß Ë O ¤
• É ' r · ú ¦o 7 §õ £ Ä » ô Ç 6 §õ £ ° ú rX É <s ' ¨ ½ ¸\ ¦s 6 xô Ç . – 6 x 0 x(avail): U p ´s m 7 ' Ðy " ¶ é Ä _ »+ A þ 6 x 0 xô p Ç ¶ " é_ Ã º\ ¦ p · .
P l c Ì R8 ¦ ý ¥] ù k mÇ ø mß Ã Å Å ¹ z º V Ëc R R Ü Ë O ß ¤
– + ½{ É (alloc): n × m ' © § = > Ðy á Ô Ð[ jÛ ¼\ > É{ + ½ ÷ © &# Qe Hy ¶ " és Û ¼ Û ¼_ Ã º\ ¦ p · .
• y ¶ " é_ Ä »+ A þ é { ß 9 Û ¼ Û ¼ Ðë ¨ ß ½$
í a )
Ä â º\ H ¶ " é½ É{ + Õ © ªA á Ô\ ¦s 6 x # §Ã Ì © I \ ¦µ Ï| 1 ½
ÉÃ + ºe .
– req: n × m ' § = > Ðy á Ô Ð[ jÛ ¼ y " ¶_ é »+ Ä A þ כ ¹' A õ ¦e H ¶ " é_ Ã º\ ¦ p · .
• ¶ " é ½ É{ + Õ © ªA á Ô\ ¦ $ 7 e Ü «8 è «(wait-for graph) Ð
ô â Ç .
â H~ ÓZ ½ O r É 6 §õ £ ° ú .
– workü < fin rU É ´s y y mõ n 7 ' s . • Ðt à · ú ¦o 7 § £
– Pi → Pj _ _ p : Pi H Pj & Ä h » ¦e H ¶ " é` ¦l ; 2 .
– ÿ ·4 1. ∀i = 1, . . . , m\ @ /K work[i] := avail[i] Ð íl o ¦, ∀i = 1, . . . , n\ @ /K alloc[i] 0s m (7 ¤, ∀j = 1, . . . , m\ £
– ¶ " é½ É{ + Õ © ªA á Ô\ e Há Ô Ð[ jÛ ¼ë ` ß ¦s 6 x # @ /l Õ ªA á Ô\ ¦ $
ô í Ç . 5
@ /K alloc[i, j] 6= 0) fin[i] := false Ð íl o ¦, Õ ªX t O · §Ü ú ¼ fin[i] := true Ð íl o Ç ô .
• sM : P2 ¶ " éÄ »+ A C` þ ¦כ ¹' A õ # ô Ç Û ¼ Û ¼ ¦½ \ É{ + ~ © Î Ã 6 §õ £ ° s ú I ©
÷ â &% 3 ¦ .
– · 4 ÿ 2. 6 §` £ ¦ë 7 ß ¤ á H i\ ¦¹ Ô 1 H . • fin[i] = false • ∀j = 1, . . . , m\ @ /K
P0 P1 P2 P3 P4
req[i, j] ≤ work[j] s i \ Ü O ¼ é > ß 4 Ðs 1 xô l Ç . – · 4 ÿ 3. 6 §` £ ¦Ã º' ¦
• · ÿ 4 3.2. fin[i] = true
A 0 2 0 1 0
req B C 0 0 0 2 0 1 0 0 0 2
A 0
avail B C 0 0
– " f P0 ë é ß > ß 2\ ¦ë 7 ß ¤ô á Ç . – P0 \ ¦ $ à º ' work = {0, 1, 0}s a ) .
> ß é 2 Ðs 1 xô l Ç . – · 4 ÿ 4. fin[i] = false i = 1, . . . , ns rF > r Û ¼% 7 r É § Ì Ã I © \ e .
– ss Ê ê\ Hz ´' ½ ÉÃ + ºe Há Ô Ð[ jÛ ¼ \ O . – " f P1 , P2 , P3 , P4 r É § Ì Ã I © \ e .
¬ ¨½ Ð× Ç ( @ ¿ Ôm Ç N Ó ± §h ¤ ¸ æ +U d • r Û ¼% 7 _ ½ ¨$
í
8.6.3 [ pU c ° ow P ¨8 Ö ý Þ Ó
– á Ô Ð[ jÛ ¼: P0 , . . ., P4 ( $ á Á Ô Ð[ jÛ ¼)
• Ðt à · ú ¦o 7 §_ £ 6 x ¸\ ¦ &
ñ Hכ ¹ è
– ¶ " é: A : 7, B : 2, C : 6 ([ j t Ä »+ Aõ þ y Ä »+ A_ þ Û ¼ Û ¼Ã º)
– Ü+ |
1. 8 § Ì Ã I © µ ÏÒ 1 t q H ¸ § Ì Ã I © Å Òµ ÏÒ 1 t q Ðt à · ú ¦o 7 § £ ¦ ` Å Òz ´' K ô Ç .
• r ç t0 M ß :r Û ¼% 7 _ I © 6 §õ £ ° ú ¦ .
A 0 2 3 2 0
C 0 0 3 1 2
– work = {0, 0, 0}s ¦, ¸ H i\ @ /K fin[i] = falses .
work[i] := work[i] + alloc[i, j]
P0 P1 P2 P3 P4
alloc B 1 0 0 1 0
• s r Û ¼% s 7 § Ì Ã I © t # Ð .
• · 4 ÿ 3.1. ∀j = 1, . . . , m,
alloc B 1 0 0 1 0
A 0 2 3 2 0
C 0 0 3 1 2
req A B C 0 0 0 2 0 2 0 0 0 1 0 0 0 0 2
– Ü+ |
2. 8 § Ì Ã I © µ ÏÒ 1 t q % ` i ¦M :%
ò Ó` ¾ ¦ Î Ã ~ Há Ô Ð[ jÛ ¼_ à º § Ì Ã I © \ ¦ ¸A 1 xî l ~ ß Óu ½ § Ì Ã I © \ í Ê÷ < & Há Ô Ð[ jÛ ¼_ à º H7 x ô £ Ç .
avail A B C 0 0 0
• § Ì Ã I © Há Ô Ð[ jÛ ¼ н É{ + ~ © Î` à ¦Ã º\ O H " ¶` é ¦כ ¹' A õ % ` i ¦M :µ ÏÒ 1 tô q Ç . • G Fé & ß h
Ä â º H н É{ + | © cà ¨ º\ O H " ¶` é ¦כ ¹ A½ õ ' ÉM + : Ðt à · ú ¦o 7 §` £ ¦Ã º ' ½ Éà + ºe . s > O X § Ì Ã I © \ í Ê÷ < & H ¸ Há Ô Ð[ jÛ ¼ ¦· \ à ú ºe ` ¦÷ rë ß m § Ì Ã I © \ ¦{ 9 Ü ¼ á Ô Ð[ jÛ ¼\ ¦· à ú ºe . (´ s ú ¸í H& e h ) Õ ª Q s ÓZ ½ ~ O rq É 6 xM :ë H\ ³z & ´í
$s \ Ü O ¼9 \ V~ Ó\ ½ î r~ ÓZ ½ s O .
• s r Û ¼% 7 s § Ì Ã I © t # Ð . – work = {0, 0, 0}s ¦, ¸ H i\ @ /K fin[i] = falses . – " f P0 õ P2 é > ß 2\ ¦ë 7 ß ¤ô á Ç . – P2 \ ¦ $ º Ã' work = {3, 0, 3}s a ) .
• " ¶_ é Ä »+ As þ ´ §Ü ú ¼ _ כ ¹' As õ # QÅ Òl ¦ë \ [ ß tà þ ºe .
– P0 , P1 , P3 , P4 ` ¦Ã º ' ½ Éà + ºe .
• 9 {ì Í& ø Ü h ¼ Ð Ðt à · ú ¦o 7 §z £ ´ ' ¸\ ¦ô Çr ç ß ô \ Ç &
ñ ¸ Ð× ¦ . ¢ ¸ H CPU 6 x´ òÖ ¦s 40% s Ðb # Q
Ä â º\ z ´ ' ô Ç .
– P3 ` ¦Ã º ' work = {5, 1, 4} a ) . – P0 , P1 , P4 ` ¦Ã º' ½ Éà + ºe . – P4 ` ¦Ã º ' work = {5, 1, 6}s a ) . – P0 ¢ ¸ H P1 ` ¦Ã º' ½ ɺ + Ãe .
8.6.4
– P1 ` ¦Ã º ' work = {7, 1, 6}s a ) .
Y w lV c s? ê 0z º ¼' [8 ý> H ×
• § Ì Ã I © \ ¦µ Ï| 1
r Û ¼% 7 î r%
ò \ > : x Ð Ã # º1 xÜ l ¼ Ð% o H~ ÓZ ½ s O e ¦, r Û ¼% s 7 xÜ l 1 ¼ Ð4 ¤½ ¨ H~ ÓZ ½ s O e .
– P0 ` ¦Ã º ' ½ Éà + ºe . – 7 ¤ < P2 , P3 , P4 , P1 , P0 > £ rî É ß ô Çí H" fs Ù ¼ Ðs r Û ¼% 7 r É § Ì Ã I © m .
• § Ì Ã I © ÐÂ Ò' r4 ¤ H¿ º t ~ ÓZ ½ O 6
– í¨ H @ 8 /l Há Ô Ð[ jÛ ¼\ ¦7 x« á Ñ – § Ã Ì I © \ í Ê÷ < &# Q e H á Ô Ð[ jÛ ¼\ " f s _ © ¶ " é` ¦y ] © j ÐK ] j H~ ÓZ ½ O 8.6.5
³ z º: g Þz Ò »
• ¿ º t ~ ÓZ ½ O – ç ( ¡ 1. « § Ì Ã I © \ í Ê < a ) ¸ Há Ô Ð[ jÛ ¼ ¦7 \ x« á Ñ: § Ì Ã I © H ÐK ÷ &t ë q ß 6 x s ´ §s ú èכ ¹ a ) . – ¡( ç 2. í « H¨ @ 8 /l Há Ô Ð[ jÛ ¼× æ \ ¦ 7 x« á Ñ: q 6 xÉ r & t h ë ß Ð § Ì Ã I © K &t ÷ · §` ú ¦Ã ºe # Qá Ô Ð[ jÛ ¼\ ¦Æ Ò Ð7 x« á Ñ K H
Ä â º µ ÏÒ 1 t½ q ÉÃ + ºe . • á Ô Ð[ jÛ ¼7 x« á Ñ_ ë H] j& h – \ × O æç \ ß y ] © j7 x« á Ñ { F 9 g$
ë í H] j ÏÒ 1 µ t½ q ÉÃ + ºe . \ V)
{ Ì 9 t q × æ\ 7 x« á Ñ – \ × O æç \ ß y ] © j7 x« á Ñ × ¼J ?# Q\ ¦ í l oK Å Ò# Q H
Ä â º µ ÏÒ 1 t½ q ÉÃ + ºe . \ V) á Ô ;' 2 • 0 A\ " f~ ÓZ ½ 2\ O ¦ 6 x # Q á " Ô Ð[ jÛ ¼\ ¦7 x« á Ñ Ét + ½ &
K ñ ô Ç . s &
\ ñ %
ò Ó` ¾ ¦Å Ò Hכ ¹ è H 6 §õ £ ° ú . – á Ô Ð[ jÛ ¼_ Ä º í H0 A – á Ô Ð[ jÛ ¼_ z ´ ' r ç , z ß rr É ç ß – á Ô Ð[ jÛ ¼ & Ä h » ¦e H " ¶_ é à ºü <Ä » A( þ + & h l / 'î r ¶ " é` ¦ t ¦e Há Ô Ð [ jÛ ¼\ ¦7 x« á Ñ H s כ Ä »o .) – á Ô Ð[ jÛ ¼ 9 כ ¹ H ¶ " é_ à º – § Ì Ã I © \ ¦K l 0 AK 7 x« á ÑK H á Ô Ð[ jÛ ¼_ à º – á Ô Ð[ jÛ ¼_ 7 xÀ á Ó(r Û ¼ 7, % © ñ 6 x1 x) p 8.6.6
Ì R8 ¦ ýP s< ê gA 0< g
• ¶ " é_ y ] © jK ] j~ ÓZ ½ ` O ¦ 6 x½ ÉM + : ¦ 9÷ & Hכ ¹ è – BÒ t q × : # þ Q " ¶ " é` ¦# Q á " Ô Ð[ jÛ ¼ Ð Â Ò' K ] j½ Ét + &
K ñ ô Ç . q 6 x` ¦> í ß ÉM + ½ : ¦ 9÷ & Hכ ¹ è Há Ô Ð[ jÛ ¼\ ¦7 x« á ѽ É + M :ü <Ä » . – 4 ¤) (rollback): # Q á " Ô Ð[ jÛ ¼ РÒ' " ¶ é ¦y ` ] © jK ] j Õ ªá Ô Ð[ jÛ ¼ H r &
ñ © à º ' | cà ¨ ºe ¸2 ¤s á Ô Ð[ jÛ ¼\ ¦î ß ô Ç © I Ð4 ¤) r & ô Ç . é © í ß Hô Ç~ ÓZ ½ O r É % 6 §Â £ Ò' r z ´' H s כ . ì Í@ ø / Ð s © & © h כ r É כ 9 ¹ô Çë ß uë p ÷ ß &[ to H s כ . të s ß
Ä â º\ Hr Û ¼% s 7 ´ § ú r É
ñ & Ð\ ¦Ä »t K ô Ç . – Ï UÅ ã Òa >: ° Ë ú rá É Ô Ð[ jÛ ¼ РÒ' > 5 q Å " ¶` é ¦ K ] j s á Ô Ð[ jÛ ¼ H%
½ ò ¨& Ü h ¼ Ðz ´' &t ÷ 3 w½ l Éà + ºe . s ³ & s © µ ÏÒ 1 t q t · § ú ¸2 ¤K ô Ç . Ð : x BÒ t q Ð × | þ cà ¨ º e H rà º\ ¦] jô Çô Ç .
7
c °2003, sangjin@kut.ac.kr
• z' ´ r ç ß ` ç
\ " f Ho 7 & Å h Ò èü < Ó to ü & h Ò Å èç \ ß B i ç
rÅ É Òl % 3 u © - ao ' u © (MMU, Memory-Management Unit) H × ¼J ?# Q\ K _ s À Ò# Q .
* <* Ö = å i< K: ~ ¡q ç { ¡È 10
• ß çé ô ß Ç \ V) F C u Y Ut Û ¼' (relocation register) 6 x
A. Silberschatz, P.B. Galvin, G. Gagne Operating System Concepts, Sixth Edition, John Wiley & Sons, 2003.
– FC u Y Ut Û ¼' H r´ É ú Ðl $ Y Ut Û ¼ (base register) ' 9, s Y Ut Û ¼' \ e H° כs ú bs ¦ CPU Ò t$ q
ô í Ç Ho 7 & Å h Ò è as Å Òl % 3 u © \ > Ha+b° כs ú Å Ò è&
ñ Ð Ð ² ú a ) .
Part III. Storage Management
– MSDOS HW 1> h_ l $ Y Ut Û ¼' \ ¦ 6 x i % .
¤M W ÄX ì sV ê å ËP ¾
9 9.1 9.1.1
9.1.3
9 0ß Ë O
• í Ól ½ \ Há Ô ÐÕ ªÏ s þ z ´ ' ÷ &l 0 AK " f H ^ Ô á ÐÕ ªÏ s þ ¸¿ º Å Òl % 3 u © \ & F h ÷ &# Q Ù ¡ þ .
¤} º ß ÅÁ Ã Ë S
• á Ô ÐÕ ªÏ ` þ ¦ $
½ í ÉM + :, Ô á ÐÕ ªA Q Hl ñÒ Å è ¦ \ 6 xô Ç . 7 ¤, £ à º\ ¦ ¦s à ºs £ 2 § ¦: ` xK Å Ò è\ ¦] X Hô Ç .
– ë] H j& : á h Ô Ð[ jÛ ¼_ ß ¼l Ó to ü & Å h Òl % 3 u © ß ¼l \ _ K ] jô Ç a ) .
• á Ô ÐÕ ªÏ þ rz É ´ ' ÷ &l \ s l ñÅ Ò è\ ¦z ´ ] jÅ Ò è Ð `
K ç Å Ò# Q ô Ç .
• â \ = \ (dynamic loading): À Ò; 2s ñØ ¦| cM ¨ : Òl Å % 3 u © \ & F h H~ ÓZ ½ O
• Å Ò è\ ¦ `
ç H rl
– ¸ HÀ Ò; 2 rF É C u 0 x p ï× ¼+ AI þ Ðn Û ¼ ¼\ ß Ä »t a ) .
– (
{ 9 rç : ( ß
{ 9 Q á Ô Ð[ jÛ ¼ # Qn \ & F h | ct ¨ · ú ¦e Ü ¼ (
{ 9 ½ ÉM + :Å Ò è ¦ \ ` ç
½ ÉÃ + ºe .
– main á Ô ÐÕ ªÏ s þ $ & F h ÷ &9, z ´ ' ¸× æ \ r À É Ò ;` 2 ¦ ñØ ¦K s À Ò ;s 2 ³F & Å Òl % 3 u © \ e Ht ¦\ Ü O ¼ F C u 0 x p & F h l (relocatable linking loader)\ ¦s 6 x # À Ò; 2` ¦Å Òl % 3 u © & \ F h ô Ç .
– & F h r ç : ( ß
{ ½ 9 ÉM + :á Ô Ð[ jÛ ¼ # Qn \ & F h | ct ¨ ¸Ø Ô (
{ 9 Q H= : n æ óÞ «(relocatable code)\ ¦Ò t$ q
ô í Ç . z ´] j ` ç
r& É F h ½ ÉM + : t t a ) . F C u 0 x p ï× ¼ê Íl ø ï r0 Au Å Ò è\ ¦ 6 x H ï× ¼ ¦´ \ ô ú Ç .
– ç + ¡
: 8 6 x t · § ú HÀ Ò ;( 2 ¸À Ó% o À Ò; 2) rÅ É Òl % 3 u © \ & F h ÷ &t · § ú H .
– z ´ ' r ç : z ß ´ ' ¸× æ\ á Ô Ð[ jÛ ¼_ & F h 0 A u º 1 Ãe Ü ¼ ` ç
rz É ´ ' | cM ¨ :s À Ò# Q . ³F & H@ /Â Òì rs ~ ÓZ ½ ` O ¦ 6 xô Ç . 9.1.2
ÞX Ò ÄX ì Ä< ì 0
9.1.4
ÞX Ò Ä ì Å+ ì ÇÊ s Ý « ¥ T ¬ [P
• a Ç ¥ \ >Ú o
(static linking): á r Ô ÐÕ ªA b ç
# Q\ " f j/ ] N B H s Ú Ô Qo \ ¦á Ô ÐÕ ªÏ õ þ ½ Ë + # x 6 H~ Ód ½
ØP X À VS. ö ÚP n X Ä ì ¤} º « m
– ÿ ·+
: 8 ¸ Há Ô ÐÕ ªÏ þ r É s Ú Ô Qo _ 4 ¤ r` : ¦ t ¦e . " fn Û ¼ß ¼/ Nç B õ ß Å Ò % l 3 u © / Nç B s ß ¸¿ ºz q © a ) .
• CPU\ _ K Ò tí q
$÷ & HÅ Ò è H Ð: x Ho 7 & Å h Ò è ¦, Å Òl % 3 u © ] X > ÷ & HÅ Ò è(MAR \ & F h ÷ & HÅ Ò è) HÓ to ü & Å h Ò è ô Ç .
• â ¥ \ >Ú o
(dynamic linking): r s Ú Ô Qo ü <_ s z ´' r ç ß t l ÷ & H~ Ód ½
• (
{ 9 r ç ß ` ç
s & F h r ç ß `
\ ç " f H Ho 7 & Å h Ò èü <ü t Óo & Ò h Å è ° ú .
– l 1& x h _
Ä â ºy á Ô ÐÕ ªÏ \ þ stub í Ê÷ < &9, s stub H Å Òl % 3 u © \ / NÄ B »÷ & ¦ e H s Ú Ô Qo À Ò ;\ 2 " fá Ô ÐÕ ªÏ s þ 9 ¹ כ HÀ Ò; 2` ¦¹ Ô 1 Å Ò H& h r É _ ª ï× ¼s .
• z ´ ' r ç ß ` ç
_
Ä â º\ H Ho 7 & Å h Ò èü <Ó t ü o & Å h Ò è Ø Ô9, s
Ä â º\ Ho 7 & Å h Ò è\ ¦ Å © Ò è(virtual address) ô Ç . • á Ô ÐÕ ªÏ \ þ _ K Ð Ã ¸| cà ¨ ºe H ¸ H Ho 7 & Å h Ò è\ ¦ Ho 7 & Å h Ò è/ Nç B (logical address space)s ß Ç ô . ¸ H Ho 7 & Å h Ò è\ @ /6 x÷ £ & H ¸ HÓ to ü & h Å Ò è\ ¦Ó to ü & Å h Ò è/ Nç B s ß ô Ç .
– Q # À " Ò ;` 2 ¦% 6 § £ ñØ ¦½ ÉM + :ë stub ß כ 9 ¹ 9, Õ ªÀ Ò ;` 2 ¦ r ñØ ¦ Å Ò è&
ñ Ð\ ¦ 6 s x # Ð ñØ ¦ô Ç . 1
– ¡+ ç
8
9.3
• s Ú Ô Qo Ì t q s 6 xs . • # Q ! Q _ s Ú Ô Qo \ ¦ 6 x½ É Ã + º e . s
Ä â º\ yá Ô ÐÕ ªÏ þ r É _ Q ! &
ñ Ð\ ¦ s 6 x # & ] h ô X Ç s Ú Ô Qo \ ¦ 6 x > a ) . • n Û ¼ß ¼ / Nç B õ ß Å Òl % 3 u © / Nç B ` ß ¦ ] X ½ Éà + ºe .
• Ò Ål % 3 u © H Ð: x¿ º%
% ò Ü i ¼ Ðì r½ É + a ) . ô Ç%
ò i % rî É r%
^ ò ] j 6 x 9, r% É
% ò i r É 6 x Ô á Ð[ jÛ ¼ 6 xô Ç . Ð: xî r%
^ ò ] j H 0 AÅ Ò è\ 0 Au ô Ç . • 5 q& Å / h Nç B ½ ß É{ + \ © " fy 6 x á Ô Ð[ jÛ ¼ H q Å 5 aé ) { ß % 9
% ò ` i ¦½ É{ + ~ © Î Ã H .
• 1 x& l h r É rÅ É Ò è/ Nç B ` ß ¦] X HK Ù ¼ Ð r% î
^ ò ] jt é "s ¶ כ 9 ¹ . 9.1.5
9.3.1
• ä
ȋ
(overlay) rá É Ô Ð[ jÛ ¼_ ß ¼l á Ô Ð[ jÛ ¼\ > ½ É{ + © a/ ) Nç B ß Ð 9 tà þ ºe ¸2 ¤K ï r . l r : ty q Ò r É ³F & 9 כ ¹ô Ç"
§ î
# î Q[ tõ þ X <s ' ë Å ß Òl % 3 u © \ Ä » t H s כ .
• s\ ¦0 AK l $ Y Ut Û ¼' ü <ô Ç> Y Ut Û ¼' (limit register)\ ¦ 6 xô Ç . • l$ Y Ut Û ¼' _ ° כs ú bs ¦ô Ç> Y Ut Û ¼' _ ° כ ú ls s Ho 7 & Å h Ò è a_ 0 xô p Ç# 0 3 A Hb≤a≤ b + ls . CPU\ _ K Ò t$ q
í a ) ¸ H Ho 7 & Å h Ò è H 6 x÷ &l \ # 0 3 A? /\ e Ht ô Ç .
• \ V) ¿ ºé > ß # Q! l r^ ¦ Q(2-pass assembler)ê Í# ø Q! r^ l ¦ o Ð $
í aá ) Ô ÐÕ ªÏ ` þ ¦¿ ºé > ß Ð ¾ º# Q % i H# Q! l r^ ¦ Q\ ¦´ ô ú Ç . s# Q! r^ l ¦ Q_ ½ ¨$
כ í ¹ è H 6 §õ £ ° ú .
9.3.2 70 KB 80 KB 20 KB 30 KB
¤M W ÄX ì sV ê ¶ £R s ê
• MFT (Multiprogramming with Fixed number of Tasks) ~ ÓZ ½ O – Ò Ål % 3 u © \ ¦ ¦&
ñ aß ) ¼l _ %
% ò Ü i ¼ Ðì r É + ½ # y %
% ò ` i ¦ _ á Ô Ð[ jÛ ¼\ > ½ É + ô © { Ç .
l ñ _ s ^ ¦õ / N: B x À Ò; 2 r Pass 1õ É Pass 2\ " f ¸¿ º 9 כ ¹ . ¸ H½ ¨$
כ í ¹ è\ ¦ ¸¿ º& F h 200 KB 9 כ ¹ . t ë × ß æ^ ?` o ¦ 6 x Pass 1` ¦z ´ ' ½ ÉM + :\ H 120 KBë ß כ 9 ¹ ¦, Pass 2\ ¦z ´ ' ½ ÉM + : \ H 130 KBë ß 9 כ ¹ .
– s
Ä â º × æá Ô ÐÕ ªA b
_ ç &
ñ ¸ Hì r½ É% +
ò _ i % Ã º\ _ K &
ñ a ) . – î% r
^ ò ] j H # Q % "
% ò s i 6 x 0 xô p Çt \ ¦ »t Ä l 0 AK _ s ^ ¦` ¦ 6 xô Ç .
• ×^ æ ? o rî É r%
^ ò ] jt " ¶s é 9 כ ¹\ t O ë á ß Ô ÐÕ ªA Q H× æ^ ?` o ¦ ¦ 9 # á Ô ÐÕ ªÏ ` þ ¦ $
K í Ù ¼ Ð ³F & H 6 x t ú § · H~ ÓZ ½ s O .
9.2
¤M W ÄX ì sV ê | º Æ
• î% r
^ ò ] j\ ¦ 6 x á Ô Ð[ jÛ ¼ ÐÂ Ò' Ð ñK 9, 6 x á Ô Ð[ jÛ ¼\ ¦ r É 6 x á Ô Ð[ jÛ ¼ Ð Ò' Â Ð ñK ô Ç .
Þ² n ú É v
Pass 1 Pass 2 l ñ_ s ^ ¦ / N: B xÀ Ò; 2
Å ì ×X Ò Ä ì « m¶ £R s ê
– s~ ÓZ ½ ` O ¦ MFT 9 IBM\ " f í Ól ½ \ 6 xô Ç~ Ód ½ s . Õ ª Q ³F & s ~ ÓZ ½ O r É x÷ 6 &t · § ú ¦e . • MVT (Multiprogramming with Variable number of Tasks) ~ ÓZ ½ O
ÏË t S
• á Ô Ð[ jÛ ¼ Hz ´' ¸ × æ\ { 9 r & Ü h ¼ ÐÅ Òl % 3 u © \ " fn Û ¼ß ¼ Ð` Ê ê\ × æ\ r Å Òl % 3 u © \ & F h ÷ &# Qz ´ ' ` ¦F > h½ Éà + ºe . s õ &
ñ ¦â ` « J b (swapping)s ô Ç .
– î% r
^ ò ] j H ³F & 6 x÷ & ¦e H/ Nç B õ ß x÷ 6 &t · § ú H/ Nç B ` ß ¦_ s ^ ¦\ Ä »t ô Ç . – %6 §\ £ Hî r%
^ ò ] j & F h ÷ &# Qe H/ Nç B ß ¦] ` jü @ ¦ H ¸¿ º 6 xs 0 x p 9, 6 x 0 xô p Ç%
% ò ` i ¦f Ë(hole)s . ô Ç .
• Û ¼ i כ ç
s Ä º í H0 A\ _ K µ ÏÒ 1 t÷ q & roll out, roll ins H6 x# Q\ ¦ 6 xô Ç .
– Ô á Ð[ jÛ ¼ ¸ Ì Ã Õ ªá Ô Ð[ jÛ ¼\ ¦Ã º6 x Éà + ½ ºe Hß ¼l _ f Ë` . ¦¹ Ô 1 ½ É{ + ô © Ç .
• (
{ 9 r ç ß ` ç
¢ ¸ H& F h r ç ß ` ç
` ¦ 6 x H
Ä â º\ HÛ ¼ כ Ö ©(swap out)÷ &% 3 Û ¼ כ (swap in) ÷ &% ` 3 ¦M :° ú rÓ É to ü & Å h Ò è Ð& h F ÷ &# Q ô Ç . t ë z ß ´' r ç ß `
_ ç
Ä â º \ H r0 É Au Ð& F h | cà ¨ ºe .
– Ô á Ð[ jÛ ¼ z ´' ÷ &l 0 AK ¸ Ì Ã { § 9 4 ©(ï Ç rq ¢ a« ÑÇ ©)\ ½ É{ + © a ) . – ¼ ÛH × ¦a A · ú ¦o 7 §\ £ á Ô Ð[ jÛ ¼\ > Òl Å % 3 u © \ ¦½ É{ + © 9, 8s ½ © É{ + ½ © É/ + N B s ß ç \ Ü O ¼ á Ô Ð[ jÛ ¼ H@ /l > a ) .
• Û ¼ i כ ç
` ¦ l 0 AK " f H Ð ¸l % 3 u © כ 9 ¹ 9, Ð: x r É nÛ ¼ß ¼\ ¦ ¸6 Ö xô Ç .
– Q # Å " Ò# Q r ç \ ß Å Òl % 3 u © \ ¦' ¹ a Ï 1 f Ë[ . t þ rÅ É Òl % 3 u © ì Í\ ø 5 gf # QR 4 e .
• & F ³ H Ð: x + A þ a+ ) AI þ _ Û ¼ i כ
ë ç ` ß ¦ 6 xô Ç . 2
0 OS
OS
400
400
logical address
P1
H1
CPU
800
p
d
f
1000 P3 1400
d physical address
P3
physical memory
1800
H2
H1 P4 2600 H3 3000
(a) 1 x& l l h % 3 u © ½ É{ + ë © H] j
page table
2200
2200
P4 H2
2800 3000
(b) ü @Â Òé ¼ ß # o
<Õ ªa > 9.2> ` Ë s f ç
× ¼J ?# Q
<Õ ªa > 9.1> MVT · Ë ú ¦o 7 § £ • MVT\ " f# Q á " Ô Ð[ jÛ ¼\ > l % 3 u © / Nç B ` ß ¦ É{ + ½ ô © ÇÊ ê\ Å Ò rf É Ës . z Ü ¼ s כ r É ³F & É{ + ½ ~ © Î Ã Há Ô Ð[ jÛ ¼\ > ½ É{ + © a ) Ü כ ¼ Ðç Å ß Ò ¦ Ë . f ÐÄ »t t · § ú H . s כ rf É Ë\ . aô ' Ç&
ñ Ð\ ¦ »t Ä Hq 6 x` ¦× ¦s l 0 A Ês < . s ü <° ú rz É © \ q ¦? / Òé ¼ ß # o(internal fragmentation) ô Ç . Ô á Ð[ jÛ ¼\ > ½ É{ + ÷ © &% t 3 ë ß 6 x÷ &t · § ú H/ Nç B ß ¦´ ` ô ú Ç .
• 1 x& l l h % 3 u © ½ É{ + ë © H] j: # Qf Ës . e ` ¦M :# Q f " Ë\ . á Ô Ð[ jÛ ¼\ ¦½ É{ + ½ © É + כ t \ ¦ &
ñ H H] ë j – i ¦ ï T \ Ò ¼(first-fit): Ø æì ry H ' Í P : е Ï 1 ô
| Çf Ë\ . ½ É{ + ô © Ç . Ò o r% É 6 §Â £ Ò' r Éà + ½ ºe ¦, s Ò o7 x« á Ñ0 Au  Ò' r Éà + ½ ºe .
• Ð : x½ É{ + © a% )
% ò s i N> hs 0.5N > h_ %
% ò s i ¼ ß é # oM :ë H\ z q © a ) .
– i ¦ \ T \ Ò ¼(best-fit): á Ô Ð[ jÛ ¼\ ¦Ã º6 x½ Éà + º e H © rf É Ë\ . ½ É{ + ô © Ç . f Ës . &
§ ñ =÷ > & # Qe t · §Ü ú ¼ ¸ Hf Ë` . ¦ K ô Ç .
9.4
_T @ Ë Ç S
• `s f
l ç Z \ O " f Há Ô Ð[ jÛ ¼\ > 5 q Å a/ ) Nç B ` ß ¦ É{ + ½ K © Å Òt · § ú ¸ a ) .
– i ¦» Ð Ç T \ ¼(worst-fit) Ò H © f Ë\ . ½ É{ + ô © Ç . s ~ ÓZ ½ ` O ¦ 6 x z Hf Ë_ . ß ¼l © ß ¼ . f "þ j& & h ½ h Ë + Ð Hs ` כ ¦ r ¸6 Ö x½ ÉS + Ò X ¦s Z } .
• ³F & V © o , 6 x÷ & ¦e Hl Z s O . • í Ól ½ ` s f
l ç Z O r É & Ü h ¼ Ð × ¼J ?# Q н ¨ ³ & % i . Õ ª Q þ j H\ Hî r%
^ ò ] jü < × ¼J ? Q\ # ¦x ] 9 X > ar ' & ½ ¨ ³ô & Ç .
• \ V) Õ ªa > 9.1_ Ë (a)\ " fß ¼l 300 KB á Ô Ð[ j Û ¼ ï rq ÷ & þ j íh &½ Ë +
Ä â º\ H H1\ ½ É{ + © & ÷ ¦, þ j& & h h ½ Ë +
Ä â º\ H H3\ ½ É{ + ÷ © &9, þ j & ½ h Ë +
Ä â º\ H H2\ ½ É{ + © a ) .
9.4.1
• r Ó tY ý Us õ þ j í& ½ h Ëõ + þ j& & h ½ h Ës + / Nç B ß 6 x´ òÖ ¦s ½ É{ + © rç 8 ß ¤ £ \ " fþ j & ½ h Ë + Ð HÄ ºÃ º 9, þ j í& ½ h Ë + rþ É j& & h ½ h Ë + Ð ½ É{ + © r ç 8 ß ¤ £ \ f "Ä ºÃ º .
Ä M Ø4 ] G È
• ü Óo t & l h % 3 u © H ¦&
ñ a ß ) ¼l _ è «Q cÑ (fraÏ me)Ü ¼ Ð è H . • 7 o H & Å h Ò è/ Nç B ß ¸á ÔY Ue õ ° ú rß É ¼l _ Z cl (page) m Ð è H .
• 0 A[ j· ú ¦o 7 §_ £ ë H] j& : ü h @Â Òé ¼ ß # o(external fragmentation) µ ÏÒ 1 t½ q ÉÃ + ºe .
• Ô á Ð[ jÛ ¼ z ´ ' | cM ¨ :Õ ª _ כ ` s t H 6 x xô p 0 Ç# Q á " ÔY Ue \ ¸½ É{ + | © cà ¨ ºe .
• @ ü Òé ¼ ß # o: ¸ Hf Ë` . ¦½ Ë + á Ô Ð[ jÛ ¼\ ¦Ã º6 x Éà + ½ ºe Ü ¼ 5 q/ Å Nç B s ß m l M :ë H\ á Ô Ð[ j Û ¼\ ¦½ É{ + ½ © Éà + º\ O H
Ä â º\ ¦´ ô ú Ç .
• × ¼J ?# Qt " ¶: Õ é ªa > 9.2 Ë Ð Ã ¸. – CPU Ò t$ q
í HÅ Ò è: ` s t ñ(p)ü <` t s ¸á Ô! (d), ¿ Ó º 9 × ¼ н ¨$
í a ) .
• \ V) Õ ªa > 9.1_ Ë (b)\ " f¼ ßl 500 KB á Ô Ð[ j Û ¼ ï rq ÷ & H1õ H2\ ¦½ Ë5 + g 600 KB / N B s ß ç t ë ß 5 q/ Å Nç B s ß m l M :ë H\ ½ É{ + | © cà ¨ º O \ . 7 ¤, 8 £ x 600 KB_ ú ü @ Òé ¼ ß # o e .
– `s t ñ H` s t _ s ^ ¦` ¦ Ð Ã ¸ H o Ò Ü ¼ Ð ¸6 Ö x÷ &9, s \ ¦: xK s ` s t É{ + ½ ÷ © &# Qe Há ÔY Ue ` ¦· Ã ú ºe . • V \) ` s t _ ß ¼l H4 s à Ôs ¦, Å Òl % 3 u © ß _ ¼l H 32 s à Ôs .
• @ ü Òé ¼ ß # o\ ¦K H~ ÓZ ½ \ O H compactions H~ ÓZ ½ s O e . s כ r½ É É{ + ÷ © &# Qe Há Ô Ð[ j Û ¼_ & F h 0 Au \ ¦F C u # _ Hf Ë` . ¦% 3 H~ ÓZ ½ s O .
– Ò Ål % 3 u © _ á ÔY Ue à º: 32/4 = 8(0  Ò' 7 t ) 3
– á Ô Ð[ jÛ ¼_ ` s t _ s ^ ¦s 6 §õ £ ° ú ¦ &
ñ s ` t ñ 0 1 2 3
9.4.2
© ú# aU Ì R ¦
• ` s t _ s ^ ¦_ × ¼J ?# Q½ ¨ ³~ & ÓZ ½ O
ÔY á Ue ñ 1 4 3 7
– 6 xY Ut Û ¼' | ½ 9 Ë` + ¦ 6 x H~ ÓZ ½ : ` O s _ t s ^ ¦s r É
Ä â º\ ë ß 6 x½ ÉÃ + ºe 6 § £ – Ò Ål % 3 u © _ : ¤& £
% ñ
% ò \ i ` s t _ s ^ ¦ ¦$ ` © ¦, s ` כ ¦ o v HÅ Ò èë Y ß Ut ¼' Û \ $ ô © Ç . s Y Ut Û ¼' \ ¦ PTBR(Pa ge-Table Base Register)s ô Ç .
s á Ô Ð[ jÛ ¼_ `s t 0 rá É ÔY Ue 1\ ½ É{ + © &# ÷ Qe ¦, ` s t 1 rá É ÔY Ue 4\ ½ É{ + ÷ © &# Q e .
• ë] H j& : Å h Òl % 3 u © \ ¦ ] H X l 0 AK Ó ½ ¿ © º _ ] X Hs כ 9 ¹ Ù ¼ Ð] X H 5 q Å ¸ Ö ¼o .
• ` s f ç
` ¦ 6 x ü @ Òé ¼ ß # o Hµ ÏÒ 1 t q t · § ú H . t ë / ß ? Òé ¼ ß # o Hµ ÏÒ 1 t½ q Éà + ºe . á Ô Ð[ jÛ ¼_ t } ` s t Há ÔY Ue ß ¼l Ð ¦Ã ` ºe . þ j _
Ä â ºô Çá ÔY Ue _ @ / Òì rs q © z | cà ¨ ºe .
– 6 xH r \ ¦ 6 x H~ ÓZ ½ O • s H r \ ¦ Translation Look-aside Buf fer (TLB) 9, Ð: xH r ü < ð Í ø t Ð aB ' i ç
(associative mapping) ~ Ó ½ ` d ¦ 6 xô Ç . • TLB Hß ¼l ] jô Ç& s h 9, q 6 xs q . • " f TLB\ H` s t _ s ^ ¦\ { Â 9 Ò t ß ë ¦e Ü ¼9, H r % ! 3 $ TLB ¦ \ Ò oô Ç 6 §\ £ ¹ Ô 1 ¦ H` s t
ñ & Ð \ Ü O ¼ Å Òl % 3 u © \ e H ` s t _ s ^ ¦` ¦ Ð Ã ¸ô Ç . • TLB\ e H# Q & "
ñ Ð[ t þ r] É j | cà ¨ º O \ ¸2 ¤ô Ç . s ` כ ¦ wired down ÷ &% 3 ¦ 9, Ð: x& V õ , aº ' a` ) s t
ñ & Ð H TLB\ " f] j ÷ &t · § ú H . • # Q TLB ½ " ¨ ³[ & t þ r ASID(Address-SpaÉ ce IDentifier)\ ¦` s t &
ñ Ðü < Êa < $ ½ © É Ã + º e ¸2 ¤ K ï r . ASID H á Ô Ð [ jÛ ¼ç _ ß Å Òl % 3 u © Ð ñ% ½ i É` + ¦K Å Ò9, # Qá Ô Ð[ jÛ ¼_ ` s t &
ñ Ð TLB\ Êa < $ | © cà ¨ ºe ¸2 ¤K ï r .
• 9 { ì Í& ø Ü h ¼ Ðá Ô Ð[ jÛ ¼ á ÔY Ue _ ì Íß ø ¼l &
ñ ¸_ ? / Òé ¼ ß # o µ ÏÒ 1 tô q Ç . • ? / Òé ¼ ß # o\ ¦× ¦s l 0 AK ` s t _ ß ¼l \ ¦× ¦ 9 { à ºe t ë s ß X > O Ä »t K H` s t _ s ^ ¦s & . • ¸Z t± þ ú r 4 KB ¢ É ¸ H 8 KB_ ` s t ß ¼l \ ¦ 6 x Ç ô . • # Q î " r%
^ ò ] j H × æ `s t ß ¼l \ ¦] j/ Nô B Ç . • ` s t _ s ^ ¦_ ô Ç Ó3 ½ q l r É Ð: x4 s à Ôs . s
Ä â º8 x 232 Ô ú áY Ue ` ¦t ¶ " é½ Éà + ºe . s M : á ÔY Ue _ ß ¼l 4 KBs ú x 8 244 = 16 TB_ Ó t ü o & Å h Ò è/ Nç B ` ß ¦ 6 x½ ɺ + Ãe . • ` s f ç
\ " f Å Òl % 3 u © \ @ /ô Ç 6 x a& ' õ h z ´] jÓ to ü & Å h Òl % 3 u © Ø Ô . 6 x á Ô Ð Õ ªÏ þ rÅ É Òl 3 % u © \ ¦ _ á Ô ÐÕ ªÏ ë þ & ß F h ÷ & # Qe H _ 5 q& Å / h Nç B Ü ß ¼ Ðç Å ß Òô Ç . Õ ª Q z ´] j Ð 6 x á Ô ÐÕ ªÏ þ r` É s t é 0 ß A Ð * '# Qf # Q4 Re . s s HÅ Ò è % i × ¼J ?# Q F G4 ¤K Å Ò9, 6 x Hs z ´` ¦· ú כ 9 ¹ \ O .
9.4.3
º | Æ
• `s f
l ç Z ` O ¦ 6 x H ¨ 8
\ â " f Å Òl % 3 u © Ð ñ H Ð ñq à Ô\ ¦s 6 xô Ç . • Ð ñq à Ô H` s t _ s ^ ¦\ Ä »t a ) . • y` s t ô Çq à Ô\ ¦s 6 x # ` s t { 9 -æ l ¼l ¢ ¸ H{ 9 l - 6 x t \ ¦ è qà ºe .
• î% r
^ ò ] j HÅ Ò l% 3 u © \ ¦ ao ' Ù ¼ н É{ + _ © [ jô Ç? /6 x ¦ `· ú ¦e # Q ô Ç . s \ ¦0 AK á ÔY Ue _ s ^ ¦` ¦Ä » tô Ç .
– ¸ HÅ Òl % 3 u © Ð Ã ¸ H` s t _ s ^ ¦` ¦ Ð Ã ¸ Ù ¼ Ðs M : Ð ñq à Ô\ ¦s 6 x # { 9 - l 6 x` s t \ @ /ô Çæ ¼l r ¸\ ¦} ` ¦Ã º e .
• á ÔY Ue _ s ^ ¦\ Hz ´] já ÔY Ue _ Ó ½ s rF > 9, á ÔY Ue _ ½ É{ + # © Â Ò, ½ É{ + ÷ © &# Qe ` ¦
Ä â º\ H# Q á " Ô Ð[ jÛ ¼ _Y
> P :` s t ½ É + ÷ © { &# Qe H t\ ¦Ä »t ô Ç .
• 9 {ì Í& ø Ü h ¼ Ð` s t _ s ^ ¦_ y Ó ½ Ä »´ òq Ô · à # ¡ Qe . s q à Ô [ & O
÷ ñ &# Qe Ü ¼ s Ó ½ K \ { © H` s t Há Ô Ð[ jÛ ¼_ Ho 7 Å Ò è/ N B \ ß ç í ÊH < d` ¦ p · .
• î% r
^ ò ] j H¢ ¸ô Çy á Ô Ð[ jÛ ¼ ` s t _ s ¦` ^ ¦Ä »t ô Ç . s` s t _ s ^ ¦ r É Ð: x PCB ? / \ Ä »t ÷ &9, ë HÐ o ¨ ` 8 ¦½ ÉM + : 9 כ ¹ . " f` s f ç
rë É HÐ o ¨ \ 8 èכ ¹÷ & Hr ç ` ß ¦7 x £ r .
– » Ä´ òq à Ô @ / \ PTLR(Page Table Length Register)\ ¦ 6 x # ` s t _ s ^ ¦_ ß ¼l ¦ \ ? / H
Ä â º ¸e . 4
p1
p2
logical address p d
d
p1
memory
r
hash function
d
p2 outer page table
d
q
s
p
r
page of page table
hash table
<Õ ªa > 9.3> ¿ Ë ºé > ß `s f
¨ ç ½ ¸\ " fÅ Ò èK $ 3
<Õ ªa > 9.4> K Ë r a` ) s t _ s ^ ¦ 9.4.4
@ _T U ? _T ÷ §8 u ý º
logical address pid p d
9.4.4.1 N ¥ Ä © ¿Z cl b • & @ ³ / ( É Ó' r Û ¼ 7 % r B É Ä º H Ho 7 Å Ò è / N B (232 \ ß ç " f 264 )` ¦] j/ Nô B Ç . ô Ç` s t _ ß ¼l 4 KB(212 )s 32 q à Ô( É Ó' _
Ä â º` s t _ s ^ ¦ r 220 É Ós ½ כ 9 ¹ 9, y Ós ½ 4 s à Ôs 4 MB 9 כ ¹ . " f` s t _ s ^ ¦` ¦ 5 q Å & Å h Ò è/ Nç B \ ß $ © H כ rj É µ[ Ë t þ .
memory
search
i pid
i
d
p
page table
<Õ ªa > 9.5> % Ë ` i s t _ s ^ ¦
• > 8 x½ £ ¨ ¸` s f
s ç ê Í` ø s t _ s ^ ¦ ¸` s f
` ç ¦ H` s f
l ç Z s O .
– 6 §כ £ ¹ è\ ¦ o v H í '
• s l Z \ O " f Ho 7 Ò Å è H 6 §õ £ ° s ú ½ ¨$
í a ) .
• Å Ò èK $ ~ 3 ÓZ ½ O page number p1 p2 10 10
page offset d 12
– Ò Å è\ e H ` © s t ñ\ ¦K r # { K © HK r _ s ^ ¦_ 0 Au \ ¦> í ô ß Ç . – ª Õ0 Au \ e H o Û ¼à Ô\ ¦ Ò o # ` t s á ÔY Ue ° `כ ú ¦% 3 H .
# l " f p1 r' É Y Í U 6 \` s t _ s ^ ¦\ @ /ô ÇÒ o s 9, p2 H¿ º P :Y U6 ` \ s t _ s ^ ¦@ /ô Ç o Ò s ¦, d Hz ´] j` s t ? /_ ¸á Ô ! Ós . s M :Å Ò è Ð Ã ¸ Hª Õa > 9.3õ Ë ° s ú s À Ò# Q . s ~ Ód ½ ` ¦ forward-mapped ` s t _ s ^ ¦s ô Ç .
• ß é> U · r É é > ß ` s f
~ ç Ód ½ Ð HÅ Ò è\ ¦ Ð Ã ¸ HX < èכ ¹÷ & Hr ç s ß ¨
ç î H& Ü h ¼ Ð& h . 9.4.4.3 Z ] cl m Y cl ¡ ·
• 64 q Ô à Ho 7 Å Ò è/ Nç B ` ß ¦j ]/ N B Hr Û ¼% \ 7 " f H¿ ºé > ß ` s f
~ ç Ód ½ Ü ¼ Ð HÂ Ò7 ¤ á .
• tF K t _ ` s f
l ç Z O ry É á Ô Ð[ jÛ ¼ Z > ¸_ ` s t _ s ^ ¦` ¦ 6 x % i . s ` s t _ ^ s ¦ rá É Ô Ð[ jÛ ¼ 6 x Hy ` s t \ @ /ô Ç Ó(1 MB_ ½ á Ô Ð[ jÛ ¼s ¦, 4 KB_ ` s t \ ¦ 6 x 28 > h)Ü ¼ н ¨$
÷ í &# Qe ` s t 6 x# Òü  < © a\ ' s O ^ Å Ò è/ Nç B \ ß @ /ô Ç Ó(32 q ½ ÔÅ à Ò ès 232 > h)Ü ¼ н ¨$
÷ í &# Qe . Õ ª Q ~ s ÓZ ½ O rB É Ä º H/ Nç B ` ß ¦ כ 9 ¹ Ðô Ç .
– ¿ ºé > ß ` s f
~ ç Ód ½ ` ¦s 6 x p1 r 42 q É à Ô 9 כ ¹ . " f' Y Í U 6 \` s t _ s ¦ ^ r 242 > É h_ Ós ½ כ 9 ¹ . 7 ¤, 4 TB £ 9 כ ¹ . – Õ ª QÙ ¼ Ð é > ß ` s f
~ ç Ód ½ ` ¦ 6 xK t ë é ß > ß U ·` ¦Ã º2 ¤Å Ò è\ ¦ и à H X <´ § ú rr É ç s ß èכ ¹ a ) .
• s \ כ @ /ô ÇK Õ Ü þ ¼ Ð% ` i s t _ s ^ ¦l Z O ¦ ` 6 x½ ÉÃ + ºe .
9.4.4.2 B k Û SZ Ö cl m Y cl ¡ ·
• i %` s t _ s ^ ¦ rÅ É Òl % 3 u © _ y á ÔY Ue \ /ô @ Ç Óë ½ ` ß ¦ t ¦e . s Ó\ ½ Hs á ÔY Ue $ \ ÷ © &# Qe H Å © Ò èü <s ` כ ¦ 6 x H Ô á Ð[ jÛ ¼_ d Z > н ¨$
÷ í &# Qe .
• B k Y cl ¡ ·(hash table)_ y Ó ½ r° É ú r0 É Au Ð K r ÷ & H` s t ñ_ o Û ¼à Ô Ð½ ¨$
í a ) . o Û ¼à Ô_ y כ ¹ è H 6 §õ £ ° ú r[ É j t 9 × ¼ н ¨$
í a ) .
• Å Ò èK $ ~ 3 ÓZ ½ O
– ` © s t ñ
– y Å © Ò è H[ j> h_ 9 × ¼(á Ô Ð[ jÛ ¼d Z > , ` s t ñ, ¸á Ô! ) Ó Ð½ ¨$
÷ í &# Qe .
– ` s t á ÔY Ue _ ° כ ú 5
s symbol table
limit
base memory
main
s
d
segment table
func1
yes
< stack
+
no trap; addressing error
logical address space
<Õ ªa > 9.7> [ Ë jÕ ª _ s × ¼J ?# Q
<Õ ªa > 9.6> Ë 6 x a& ' _ h á Ô ÐÕ ªÏ þ • j [Õ ª _ s rs É 6 x a& ' ` h ¦t " ¶K é Å Ò H Òl Å % 3 u © ao ' l Z s O .
– á Ô Ð[ jÛ ¼d Z > ü <` s t ñ\ ¦s 6 x # ` s t _ s ^ ¦` ¦ Ò oô Ç . { u 9 H כ ¦µ ` Ï| 1
Õ ª Ó_ ½ 0 Au á ÔY Ue _ 0 Au a ) .
9.4.5
• j [Õ ª _ s \ " f Ho 7 Å Ò è/ Nç B ß r[ É jÕ ª à Ô_ ½ 9 | ËÜ + ¼ н ¨$
÷ í &9, y [ jÕ ª à Ô Hs 2 §õ £ U ´s ¦ \ .
– ë] H j& : ` h s t _ s ^ ¦` ¦ Ò o Hq 6 xs ´ § ú . s ` כ ¦F G4 ¤ l 0 AK K r _ s ^ ¦` ¦ ¸6 Ö x½ ÉÃ + ºe .
• 6 x H [ jÕ ª à Ô s 2 §õ £ ¸á Ô! ` Ó ¦ s 6 x # Ò Å è\ ¦t &
ô ñ Ç .
« ¥@ _T U
• (
{ 9 Q 6 x á Ô ÐÕ ªÏ ` þ ¦ % ½ i ÉM + : 1 x l Ü h & ¼ Ð[ jÕ ª à Ô\ ¦½ ¨$
K í ï r .
• ` s f ç
l Z _ O ¢ ¸ r É & © h r/ É N: B x ï× ¼_ / NÄ B » 0 x$ p
s í .
9.5.2
• \ V) r ¼ Û% 7 \ 40"
_ î 6 x 6 x× æs ¦, s [ t þ ¸¿ º 150 KB_ ï× ¼ü < 50 KB_ X <s ' / Nç B ß s 9 כ ¹ô Çë H" f¼ | # 9 l \ ¦ 6 x ¦e . Õ ª Q 8,000 KB / Nç B s ß כ 9 ¹ . Õ ª Q ë ß s ï× ¼ F { 0 9 x p ï× ¼s 150 KB_ ï× ¼Â Òì r r É ¸ H 6 x / NÄ B »½ Éà + ºe . " f8 x 2150 ú KB 9 כ ¹ .
• [ jÕ ª à ÔÅ Ò èü <Ó to ü & Å h Ò èç \ ß B i
ç – [ jÕ ª à Ô_ s ^ ¦` ¦ 6 xô Ç . – s_ s ^ ¦_ y Ó ½ r[ É jÕ ª à Ô_ l $ ü <ô Ç > н ¨$
÷ í &# Qe . [ jÕ ª à Ô_ l $ \ H jÕ [ ª à Ô_ Ó to ü & r h Å Ò è l 2 ¤÷ &# Q Ü e ¼9, ô Ç> \ H[ jÕ ª ß ¼_ U ´s l 2 ¤ &# ÷ Qe .
– F { 9 ï× ¼ H ^ Ã º&
s ñ 0 x p t ú · § ô Ç . 7 ¤, Û £ ¼Û ¼ ÐÃ º ' ÷ & H1 xî l \ ß â
&t ÷ · § ú ô Ç .
9.5.3
– ï× ¼\ ¦/ NÄ B » l 0 AK " f Hì Í× ø ¼r F { 9 s 0 xK p ô Ç .
9.5.1
º | ÆÑ ÷ « ¥
• j [Õ ª à Ô H Ho 7 & ½ h ¨$
é í 0 ß A 1 xr l \ Ó to ü & h ¨$ ½
é í 0 ß As . " f{ 9 ì Í& ø Ü h ¼ Ð[ jÕ ª à Ô H Ô á ÐÕ ªÏ _ þ _ p & Ü h ¼ Ð&
_ ñ a{ ) 9 Â Òì rs . " f Ð ñ6 x ¸\ ¦&
_ ñ l ~ 1 .
• % ` i s t
{ 9 ` ¦ 6 x ï× ¼\ ¦/ NÄ B » l # Q§ > . % ` i s t
{ 9 ~ Ód ½ \ " f H> hZ á > Ô Ð[ j Û ¼_ ` s t _ s ^ ¦` ¦Ä »t t · §Ü ú ¼Ù ¼ Ð ¸ H á Ô Ð[ jÛ ¼ _ H é { ß 9 Ho 7 Å Ò è/ Nç B ` ß ¦ 6 x > a ) . " f¿ ºá Ô Ð[ jÛ ¼ ` s t \ ¦/ N B Ä » l 0 AK " f HÕ ª` s t \ @ /K ° ú r É Å © Ò è\ ¦ 6 xK Ù ¼ ÐB N /Ä » ~ t 1 · § ú .
9.5
© ú# a
– j [Õ ª à Ô Hß ¼> X <s ' Â Òì rõ "
§ î
# î QÂ Ò rÜ ì ¼ н ¨ì r| cà ¨ ºe Ü ¼9, "
§ î
# î QÂ Òì r r{ É 9 - l 6 x¢ ¸ Hz ´' - 6 xÜ ¼ Ðt &
ñ # Ð ñ ÉÃ + ½ ºe . – `s f
l ç Z \ O " f / L å a ) õ כ ° ú r É Ð ñq Ô\ à ¦y [ jÕ ª à Ôü < a ' # [ jÕ ª à Ô\ ¦ ] h & X > Ð ñ½ ÉÃ + ºe .
: g§ ¹ Å? _T Å Ó
– C\ ` P ¦ _ [ jÕ ª à Ô Ð ao ' 1 x l ¼ Ü ÐC \ P
> â \ ¦ ½ ÉÃ + ºe .
M Ä ØU ] s0 ê É n
• Ð: x 6 x [ þ t rÅ É Òl % 3 u © \ ¦ 5 q& Å h + A/ þ N B Ü ß ç ¼ ÐÒ ty q t · § ú ¦, Ð : xÅ Òl % 3 u © \ ¦í H" f \ O H ô ª Çß ¼l _ [ jÕ ª à Ô_ | 9 ½ ËÜ + ¼ ÐÒ t q y ô Ç . Õ ªa > 9.6 Ë Ð Ã ¸.
• j [Õ ª à Ô H` s t ü < ð Í t ø Ð ï× ¼ü <X <s ' / _ NÄ B » 0 x p . ¢ ¸ô Çs / NÄ B » H[ jÕ ª à Ôé ß A 0 Ðs À Ò# Q| à 9 ºe . 6
logical address selector
• 7 o H Å Ò è H × þ (16 q à Ô)ü < ¸á Ô! (32 q Ó à Ô) Ü © ¼ н ¨$
÷ í &# Qe Ü ¼9, × þ H 6 §õ £ ° ú r É j> [ h_ × 9 ¼ н ¨$
÷ í &# Qe .
offset
– [ jÕ ª à Ô ñ s(13 q à Ô)
descriptor
– ½ ¨ì r g(1 q à Ô): LDTü < GDT\ ¦½ ¨ì r
+ page frame
descriptor table page directory base register
linear address directory page
page directory
offset
– Ð ñ aº ' q à Ô p(2 q à Ô) • 80386 r 6> É h_ [ jÕ ª à ÔY Ut Û ¼' \ ¦] j/ Nô B Ç . " fô Ç \ 6> h_ [ jÕ ª à Ô\ ¦ Ð Ã ¸½ Éà + ºe .
physical address
page table
• 80386 r 6> É h_ 8 s à Ôß ¼l _ Y Ut Û ¼' н ¨$
í aH ) r \ ¦ 6 xô Ç . s H r H LDT ¢ ¸ H GDT_ Ó` ½ ¦H r ô Ç . • 80386 r¿ É ºé > ß ` s f
~ ç Ód ½ ` ¦ 6 xô Ç . <Õ ªa > 9.8> 80386 Å Ë Ò èK $ 3 – ë] H j& : { h ì 9 Í& ø Ü h ¼ Ð ï× ¼[ jÕ ª à Ô H ^ Ð Ã ¸(\ V, ¸|  Òì rl )\ ¦ í Ê < ¦e . s Å Ò è H [ jÕ ª à Ôü < ¸á Ô ! ÓÜ ¼ Ð ½ ¨$
÷ í &Ù ¼ Ð ¸ Há Ô Ð[ jÛ ¼ H/ NÄ B » H[ jÕ ª à Ô\ @ /K " f H ° ú r s É 2 §( £ ñ)\ ¦ 6 xK ô Ç . – K Õ : [ þ jÕ ª à Ô/ ?\ " f Hç ] ß Å X Ò è( ³F & Å Ò è\ " f ¸á Ô ! Ó) ~ Ód ½ ` ¦ 6 xô Ç . 9.5.4
m Å× D
• ` s f ç
l Z O r É ¦&
ñ aß ) ¼l _ ` s t \ ¦ 6 x Ù ¼ Ðü @Â Òé ¼ ß # o µ ÏÒ 1 t q t · §t ú ë [ ß jÕ ª à Ô H U ´s s Ù ¼ Ðü @Â Òé ¼ ß # o µ ÏÒ 1 t½ q ÉÃ + ºe .
9.6 9.6.1
@ _T Ç ËÊ S Ý: g§ ¹ Å? _T Å8 Ó ý+ Ƕ s ¥ Ã ß Å± 80386
• y á Ô Ð[ jÛ ¼ Hþ j@ / 16 K> h_ [ jÕ ª à Ô\ ¦ | 9 à ºe . • y [ jÕ ª à Ô Hþ j@ / 4 GB | cà ¨ ºe . s [ jÕ ª à Ô H` s f
ç a ) . • ` s t _ ß ¼l H 4 KBs . • ôá Ç Ô Ð[ jÛ ¼_ Ho 7 Å Ò è/ Nç B ß rß É ¼> ¿ º%
% ò Ü i ¼ Ðì r½ É + a ) . – å ** 1. á 9 Ô Ð[ jÛ ¼ 1 q& l & h Ü h ¼ Ð 6 x H [ jÕ ª à Ô[ t: þ þ j@ / 8 K> h_ [ jÕ ª à Ô – å ** 2. 9 rá É Ô Ð[ jÛ ¼ü </ NÄ B » H[ jÕ ª à Ô[ t: þ þ j@ / 8 K> h_ [ jÕ ª à Ô • ò %%
1\ i aô ' Ç&
ñ Ð H LDT (Local Descriptor Ta ble)\ Ä »t ÷ &9, %
% ò 2\ i aô ' Ç &
ñ Ð H GDT (Global Descriptor Table)\ Ä »t a ) . s X <s ^ ¦ _ y Ó ½ r8 É s à Ôs 9, : ¤& £
[ ñ jÕ ª à Ô_ l $ <ô ü Ç> \ aô ' Ç&
ñ Ð l 2 ¤ a ) . 7
c °2003, sangjin@kut.ac.kr
10.2.1
Ä M Ø4 ] G È
• Ô á Ð[ jÛ ¼ Û ¼ כ | cM ¨ :` s $ H# Q ` " s t t` þ [ ¦ 6 x½ Ét + Æ Ò8 ¤ô £ Ç 6 §\ £ Õ ª` s t [ të þ Û ß ¼ כ ô Ç .
* <* Ö = å i< K: ~ ¡q ç { ¡È 11 A. Silberschatz, P.B. Galvin, G. Gagne Operating System Concepts, Sixth Edition, John Wiley & Sons, 2003.
• s\ ¦0 AK Å Òl % 3 u © \ e H` s t ü <n Û ¼ß ¼ e \ H` s t \ ¦½ ¨ì r½ Éà + ºe # Q ô Ç . s ½ ¨ r ì r É Ð: xÄ »´ òq à Ô\ ¦s 6 xô Ç .
Part III. Storage Management
– » Ä´ òq à Ô 1s s ` s t HÅ Òl % 3 u © & \ F h ÷ &# Qe H` s t e ` ¦_ p ô Ç .
10 10.1
– » Ä´ òq à Ô 0s s ` s t Hn Û ¼ß ¼\ e á Ô Ð[ jÛ ¼_ Å © Ò è/ Nç B \ ß í Ê÷ < & · t § ú H` s t e ` ¦_ p ô Ç .
V sM ê W ÄX ì sV ê
• Ô á Ð[ jÛ ¼ Å Òl % 3 u © \ & F h ÷ &# Q e t · § ú H s ` t \ ¦] H X 6 §õ £ ° ú r] É X \ Õ ª s ` t \ ¦Å Òl % 3 u © \ & F h ô Ç .
0ß 9 Ë O
• l © % 3 u © _ 1 x p C ©
â
– ÿ ·4 1. ] H X H` s t \ @ /K ` s t _ ^ s ¦` ¦ Ð Ã ¸ Ä »´ òq à Ô ³F & 0s Ù ¼ Ð cl Z m Ú
Á r ç þ é h(page fault trap)` 5 ¦µ ÏÒ 1 tô q Ç .
– á Ô ÐÕ ªÏ ` þ ¦z ´ ' H1 xî l 7 ß x7 á xá á Ô ÐÕ ªÏ þ ^ \ ¦ ¸¿ º 6 x t · § ú H . • ¸ Ó À\ ¦ % o H À Ò; 2 r É ¸À Ó µ ÏÒ 1 t q t · §Ü ú ¼ 6 x÷ &t · § ú H . • á ÔÐ Õ ªÏ \ þ " f 6 x÷ & HC \ , P o ¼à Û Ô, _ s ^ ¦õ ° ú r½ É ¨ ¸ H{ ì 9 Í& ø Ü h ¼ Ðz ´] j Ð 6 x÷ & H/ Nç B ß Ð ´ § ú r/ É N B ` ß ç ¦½ É{ + © # 6 xô Ç . • á Ô ÐÕ ªÏ _ þ { 9 Â Ò l 0 xõ p : ¤f £
ç r É _ 6 x÷ &t ú § · H
Ä â º ´ § ú .
– ÿ ·4 2. à Ôê s Á µ ÏÒ 1 t q á Ô Ð[ jÛ ¼_ PCB ¦ \ # Ð Ã ¸_ Ä »´ ò$
` í ¦ ô Ç . 7 ¤, £ Û n ¼ß ¼\ e HJ s t \ @ /ô Ç Ð Ã ¸ t á Ô Ð[ jÛ ¼_ Å © Ò è/ Nç B ` ß ¦# # Á Qè ß Ð Ã ¸ \ t ¦ ô Ç . ë ß Ê ê s á Ô Ð[ jÛ ¼ H x« á 7 Ñ a ) . – · 4 ÿ 3. á ÔY Ue ` ¦¹ Ô 1 H .
– á Ô ÐÕ ªÏ ` þ ¦z ´ ' ½ É: + Mô Çí Hç \ ß á Ô ÐÕ ªÏ þ ^ \ ¦ 9 כ ¹ Ð t · § ú H .
– ÿ ·4 4. n Û ¼ß ¼{ Ø 9 ¦§ ` 4 ¦s 6 x # ` s t ¦á \ ÔY Ue \ & F h ô Ç .
• á Ô ÐÕ ªÏ _ þ {  9 Òë Å ß Òl % 3 u © \ e # Q ¸z ´' s 0 x p ¸2 ¤ 3 %` ¦º Ãe H & © h
– ÿ ·4 5. n Û ¼ß ¼{ Ø 9 ¦§ s 4 7 x« á Ñ÷ & á Ô Ð[ j ¼_ Û ? / Ò_ s ^ ¦õ ` s t _ s ^ ¦` ¦Ã º&
ñ Ç ô .
– á Ô ÐÕ ªÏ þ r É 8s Ó © to ü & Å h Òl % 3 u © ß ¼ l \ ] jô Ç` ¦~ Ît à · § ú H .
– ÿ ·4 6. ` s t Êà < Ôê ` Á ¦µ ÏÒ 1 tr q "
§ î
î Q\ # ¦ r à º' ô Ç .
– y á Ô ÐÕ ªÏ s þ h & r/ É Nç B ` ß ¦ t Ù ¼ Ð1 x l r \ # Qá Ô ÐÕ ªÏ ` þ ¦Å Òl % 3 u © \ & F h Éà + ½ ºe .
• K 'Ê Á³ ÀÄ ©Z cl b : á Ô Ð[ jÛ ¼ % 6 §z £ ´ ' | cM ¨ :Å Ò % l 3 u © \ ) ` s t \ O H I © Ðr H~ Ód ½ .
– á Ô ÐÕ ªÏ ` þ ¦& F h HX < o H{ 9 Ø ¦§ q 4 6 x ¦ `× ¦{ 9 à ºe .
– íl \ H` s t Ês < Å Òµ ÏÒ 1 tô q Ç .
• l © % 3 u © H³ ÀÄ ©c Zl (demand paging) l b ` O Z ¦s 6 x # ½ ¨ ³ô & Ç . sM :[ jÕ ª _ s õ ½ Ë + # x 6½ ÉÃ + ºe .
10.2
• ô" Ç
§ î
# î Q\ ¦z ´' ô Ç õ Ð# Q` s t Ês < ÏÒ 1 µ t½ q ÉÃ + ºe . t ë ß Ð Ã ¸_ t % $ i
(locality of í reference) " ¶o é M :ë H\ s
Ä â º HF Gy × ¼Ó t ü . • כ ¹½ ¨` s f
` ç ¦0 Aô Ç × ¼J ?# Qt " ¶ é
¿ ~ @ _T Ç Ë S
– `s f
_ ç s ^ ¦\ @ /ô Çt ¶ " é: TLB, Ä »´ òq Ô, à Ð ñq à Ô
• כ ¹½ ¨` s f ç
rÛ É ¼ i כ ç
õ ` s f
` ç ¦ ½ Ë + # 6 xô Ç .
– Ð ¸l % 3 u © : n Û ¼ß ¼_ { 9  Òì r` ¦Û ¼ / כ N B Ü ß ç ¼ Ð 6 xô Ç .
• כ ¹½ ¨ ` s f
\ ç " f H á Ô Ð[ jÛ ¼ ^ \ ¦ Û ¼ כ t · § ú ¦, m ¥ >â o « ( J x(lazy swapper)\ ¦ 6 xô Ç . s Û ¼ ( כ H` s t 9כ ¹+ ½ É
Ä â º\ ë Å ß Òl % 3 u © \ & F h ô Ç . ` s f ç
\ " f HÛ ¼ ( כ H6 x# Q@ / \ Z cl $ (pager) H6 x# Q\ ¦ 6 xô Ç .
• `s f
\ ç " f H` s t Ês < µ ÏÒ 1 t q Õ ª` s \ t ¦ n Û ¼ß ¼\ " f Å Òl % 3 u © Ð ` l ¦ ` s t Ê` < ¦{ Ü 9 ¼ "
§ î
# î Q\ ¦ r z ´' K ô Ç . 1
– 9 { ì Í& ø h
Ä â º\ H` s t Ê` < ¦{ Ü 9 ¼
§ î "
# î Q\ ¦ r z ´' H כ rH É ë H] j ÷ & t · § ú H .
10.3
z ³ º: g t V Ë R
10.3.1
Copy-on-Write
• Ô á ÐÕ ªÏ ` þ ¦% 6 §z £ ´' n Û ¼ß ¼\ e Hz ´' p s t \ ¦s 6 x # á Ô Ð[ jÛ ¼\ ¦Ò t$ q
ô í Ç .
– ô" Ç
§ î
# î Q # Q0 Au _ ? /6 x` ¦
â H
Ä â º\ Hç é ß ß t · § ú . : ¤y £ ô Ç"
§ î
# î Q ¿ º> hs _ © r` É s t \ ¦] X H H
Ä â º \ H"
§ î
# î Q\ ¦ç é ß y ß r z ´ ' ½ Éà + º\ ` O ¦ à ºe . s \ כ @ /ô Ç¿ º t K Õ s þ e .
• z' ´ × æ á Ô Ð[ jÛ ¼ fork() "
§ î
` î ¦ 6 x # á d Ô Ð[ jÛ ¼\ ¦Ò t$ q
í n Û ¼ß ¼{ Ø 9 ¦§ s 4 כ 9 ¹ O \ . fork()\ _ ô Ç d á Ô Ð[ jÛ ¼_ Ò t$ q
\ í @ / " K f H 6 §õ £ ° ú r~ É ÓZ ½ Ü O ¼ Ð$
0 í x` p ¦ Ó ¾ r © ~ ´ ºe à .
• ç ( ¡ 1. " «
§ î
# î QÃ º ' \ כ 9 ¹ô Ç ¸ H` t s \ ¦ p o # s [ t` þ ¦ Å Òl % 3 u © \ & F h ô Ç 6 §\ £ "
§ î
# î Q\ ¦ Ã º' Ç ô .
– Ð : x d á Ô Ð[ jÛ ¼ H Ð exec() r Û ¼% 7 ñØ ¦ H
Ä â º ´ § ú . s
Ä â º\ Â Ò ¸á Ô Ð[ jÛ ¼_ Å Ò è/ Nç B ` ß ¦4 ¤ H כ rz É q © s . – s M : copy-on-write l Z ` O ¦ 6 x½ Éà + ºe . íl \ d õ Â Ò ¸á Ô Ð[ jÛ ¼ H` s t \ ¦ ¸¿ º/ NÄ B »ô Ç . ô Çá Ô Ð[ jÛ ¼ ` s t _ ? / x` 6 ¦
â Õ ªM :4 ¤ s À Ò# Q . " f
â H` s t ë 4 ß ¤ ÷ & ¦ Qt H ¸¿ º/ NÄ B » a ) .
• ç ( ¡ 2. e « r Y Ut Û ¼' ` ¦s 6 x # { 9 & r ¼ h Ü Ð õ H0 Au [ t_ þ l r° > `כ ú ¦ Ð aô ' Ç . `s t Ês < µ ÏÒ 1 t q l r > `כ ú ° ¦4 ¤" ¶ô é Ç 6 §\ £ r "
§ î
# î Q\ ¦Ã º ô ' Ç . 10.2.2
~ ¿ @ _T Ë Ç S8 ýV Ë R « Ö 10.3.2
• כ ¹½ ¨` s f
\ ç " f¨
ç î H] X H rç ß
W M ÄX ì sV ê - V s
ê Ç ø m
• nÛ ¼ß ¼\ e H
{ ` 9 ¦] H X ½ ÉM + : n Û ¼ß ¼{ 9 ¦§ Ø s 4 כ 9 ¹ . s
{ 9 \ ` O ¦ Ø Ô> l AK 0
{ 9 ` ¦% 6 §] £ H X ½ ÉM + :\ H` s t ß ¼l ë ß u_ p X <s ' l © % 3 u © Ð& F h ÷ & ¦, Õ ª §Â £ 6 Ò' HÅ Òl % 3 u © ] X H` ¦: xK
{ ` 9 ¦] X H > a ) . s ~ Ód ½ ` ¦l % 3 u © -
© { l 9 s O Z ô Ç .
(1 − p) × ma + p × pft # l " f p(0 ≤ p ≤ 1) H` s t Ês < { 9 # Q± S ú X ¦s Ò ¦, ma H Å Òl % 3 u © ] H X r ç s ß 9, pft H ` s t Ê` < ¦% o HX <è כ ¹÷ & Hr ç s ß . Ð: x ma H 10\ " f 200 ns &
ñ ¸ èכ ¹ a ) . • ` s t Ê` < ¦% o Hõ &
ñ rß É ¼> 6 §[ £ j t כ ¹ è н ¨$
í a ) .
10.4
_T @ U w = k
• 10 ` s t ß ¼l _ á Ô Ð[ jÛ ¼ z ´] j5` s t ë ß 6 x כ ¹½ ¨` s f
l ç Z O rn É Û ¼ß ¼{ Ø 9 ¦§ ` 4 ¦ ¦{ × Ã 9 ºe ¦, × æá Ô ÐÕ ªA b ç
_ &
ñ ¸\ ¦Z }{ Ã 9 º e .
– ` s t Ê < ' X à O Ô_ % o : µs é 0 ß As . – n Û ¼ß ¼\ e H` s t \ ¦Å Òl % 3 u © Ð& h F : n Û ¼ß ¼{ Ø 9 ¦§ \ 4 èכ ¹÷ & Hr ç ß rÅ É Òl % 3 u © ] H X r ç \ ß q K @ © /& Ü h ¼ ÐB Ä º ß ¼ . @ /| Ì 25 ms & Ä
ñ ¸ èכ ¹ a ) .
• rÛ ¼% _ 7 Å Òl % 3 u © 40 á ÔY Ue Ü ¼ н ¨$
÷ í &# Q Ü e ¼ s ü <° ú rá É Ô Ð[ jÛ ¼\ ¦ 8> h\ ¦#
î ' Ü ¼ ÐÃ º ½ ' ÉÃ + ºe .
– ×é æ ß aá ) Ô Ð[ jÛ ¼ _F > h: n Û ¼ß ¼{ 9 Ø ¦§ M 4 : H\ ë s á Ô Ð[ jÛ ¼ H@ /l Ç © Ð` . s M : CPU H rá É Ô Ð[ jÛ ¼\ ¦@ / Û ¼H × ¦ # z ´' ô Ç . Õ ª QÙ ¼ Ðz ´] j ] jF > h| ct ¨ H\ V8 ¤ £ l j µ[ Ë t þ .
• × æá Ô ÐÕ ªA b
_ ç &
ñ ¸\ ¦Z }s á ÔY Ue / Nç B ß Â s Ò7 ¤½ á Éà + ºe . ¢ ¸ô ÇÅ Òl % 3 u © _ ¸ Há Ô Ue Y ` ¦ 6 x á Ô Ð[ jÛ ¼\ > ½ É{ + K © × ¦Ã º\ O . • `s t Ês < µ ÏÒ 1 t q % ` i ¦M :` s t \ ¦Ã º6 x½ É + ÔY á Ue s \ Ü O ¼ î r%
^ ò ] j H 6 §× £ æô Ç t ~ Ó ½ ` O Z ¦ × þ # s \ ¦K K ô Ç .
@ /l Ç ©\ l ; 2r ç ` ß ¦] jü @ ` s t Ê < ¦% ` o H ^ rç ß rn É Û ¼ß ¼{ Ø 9 ¦§ \ 4 q Y V Ç ô . " f` s t ÊÒ < ¦s 0.1%ë ÷ ß &# Q ¸` s t Ês < \ ` O ¦M :\ q K 250 C &
ñ ¸Ö ¼ 9 ¦^ ¦Ã ºe .
– Ô á Ð[ jÛ ¼7 x« á Ñ: ` s f ç
r É 6 x \ > È Ò"
î > ] j/ N÷ B &# Q Ù ¼ Ðs כ r É × 0 þ x p Ç~ ô ÓZ ½ s O m . – á Ô Ð[ jÛ ¼Û ¼ כ Ö ©: á Ô Ð[ jÛ ¼_ ¸ H` s \ t ¦n Û ¼ß ¼ ÐÛ ¼ כ Ö © # × æá Ô ÐÕ ª b A
_ ç &
ñ ¸\ ¦× ¦ . M : Ð H 9 כ ¹ô Ç~ ÓZ ½ O s . – Z cl m ¬ ¨W (page replacement): & F h ÷ &# Q e Hl r` > s t \ ¦D h` s t Ð §^ ô Ç .
• Û ¼ / כ Nç B \ ß @ /ô Ç{ 9 Ø ¦§ 4 rn É Û ¼ß ¼? /\ r/ É N B Ü ß ç ¼ РÒ' _ { 9 Ø ¦§ 4 Ð @ © /& Ü h ¼ Ð Ø Ô . " fá Ô ÐÕ ªÏ ` þ ¦z ´' ½ ÉM + :á Ô ÐÕ ªÏ ` þ ¦ ¸¿ º Û ¼ / כ Nç B Ü ß ¼ Ð` | 6 §\ £ Û ¼ / כ Nç B \ ß " f` s ç f
s { 9 # Q ¸2 ¤ $
0 í x` p ¦ Ó ¾ r © ~ ´Ã ºe . 2
10.4.1
M Ä ØU ] s0 ê É n
• ` s t Ês < µ ÏÒ 1 t½ q ÉM + :` s t §^ ] X
7
0
1
2
7
7
7
0
0 1
– · 4 ÿ 1. n Û ¼ß ¼\ " f` s t _ 0 Au \ ¦¹ Ô 1 H . – · 4 ÿ 2. á ÔY Ue ` ¦¹ Ô 1 H .
3
0
4
2
3
0
2
2
2
4
4
4
0
3
3
3
2
2
1
1
0
0
0
3
3
2
1
2
0
0
2
1
3
3
0
1
7
0
1
0
7
7
7
1
1
0
0
2
2
2
1
<Õ ªa > 10.1> FIFO ` Ë s t §^ · ú ¦o 7 §_ £ \ V
• eÜ ¼ , l \ `s t \ ¦& F h ô Ç . • \ ¼ O Ü , `s t §^ · ú ¦o 7 §` £ ¦s 6 x # B Ò tá q ÔY Ue ` ¦ × ô þ Ç . Õ ª 6 § £ BÒ t á q ÔY Ue \ e H ` s t \ ¦ n Û ¼ß ¼ æ \ ¼ ¦, á ÔY Ue \ D h` s t \ ¦& F h ô Ç .
• s © K l ~ 1 ¦, ½ ¨ ³ & l / 'î r~ ÓZ ½ s O . • © ¸A \ [ t# þ Q r` : s t íl oÀ Ò ;Ü 2 ¼ Ð% 6 §\ £ ë ß 6 x÷ & ¦ 8s © 6 x÷ &t · § ú H כ Ã 9 { ºe t ë ß íl \ íl o a ) Å Ò 6 x a ) Ã º e H` s t { Ã 9 ºe .
– · 4 ÿ 3. ` s t _s ^ ¦õ á ÔY Ue _ s ^ ¦` ¦
ô â Ç .
• Belady_ ¸í H: á ÔY Ue à º 7 x £ ` s t ʵ < ÏÒ 1 tà q º Hy èK &
ñ s © . Õ ª Q FIFO Ód ½ ~ \ " f H7 x £ H
Ä â º ¸e .
– · 4 ÿ 4. á Ô Ð[ jÛ ¼\ ¦F > hô Ç . • á ÔY Ue s \ Ü O ¼ Ó ½ ¿ © º _ n Û ¼ß ¼{ Ø 9 ¦§ 4 s כ 9 ¹ . n Û ¼ß ¼{ Ø 9 ¦§ 4 r£ É >¿ o j R ç Ã(modify bit, dirty bit)\ ¦s 6 x # × ¦{ 9 à ºe . s כ r É × ¼J ?# Q& Ü h ¼Ð ½ ¨ ³÷ & &9,
s â \ O H` s t BÒ t q Ð × ÷ þ & s` s t \ ¦n Û ¼ß ¼\ j t þ 9 כ ¹ \ O . é , n ß Û ¼ß ¼\ s ` s t _ 4 ¤ rs : Ü O \ ¼
# â  Òü < © a\ ' s O n Û ¼ß ¼\ + ô Ç . ¢ ¸ô Çz ´ ' 6 x` s t HÁ º ¸| n Û ¼ß ¼ Ð r ` U ´ 9 כ ¹ \ O .
OPT @ _T U w = k° ow P ¨ Ö
10.4.3
• OPT (OPTimal) • © ¸A 1 xî l ß 6 x÷ &t · §` ú ¦` s t BÒ t q Ð × þ a ) . • \ V) ` s t á ÔY Ue à º=3
• ] j/ N÷ B &# Q H¿ º t ú · ¦o 7 § £ – è «Q cÑ T Ï »× Ò $ N Ó ± §h ¤ ¸(frame-allocation alæ gorithm): ô Çá Ô Ð[ jÛ ¼\ > ½ É{ + ½ © Éá + ÔY Ue _ Ã º\ ¦ &
ñ H· ú ¦o 7 § £
7
0
1
2
7
7
7
2
2
2
2
2
7
0
0
0
0
4
0
0
0
1
1
3
3
3
1
1
– Z cl m ¬ ¨W N Ó ± §h ¤ ¸(page-replacement alæ gorithm): á ÔY Ue s \ ` O ¦M : BÒ t q \ ¦ þ × H· ú ¦o 7 § £
0
3
0
4
2
3
0
3
2
1
2
0
1
7
0
1
<Õ ªa > 10.2> OPT ` Ë s t §^ · ú ¦o 7 §_ £ \ V
• l r& : Ü h ¼ Ð ± © ú r` É s t ÊÒ < ¦` ¦] j/ N B H` s t §^ · ú ¦o 7 §` £ ¦ 6 xK ô Ç .
• ` s t ÊÃ < º\ ¦s s × © ¦{ Ã 9 º\ O . • ë H] j& : p h A _ Ð Ã ¸\ ¦\ V8 ¤ £ l # Q§ > .
• · ú ¦o 7 §` £ ¦¨
½ î ÉM + :{ 9 º _ Å Òl % 3 u © Ð Ã ¸ \ @ /K ` s t Êà < º\ ¦> í ß # q §ô Ç . { 9 _ º Å Òl % 3 u © Ð Ã ¸\ ¦½ Ô Ç ¿% K á
(reference ~ string)s ô Ç .
LRU @ _T U w = k° ow P ¨ Ö
10.4.4
• LRU (Least-Recently Used)
• Ð Ã ¸ë H \ _ P \ V
• © ¸A \ Ð Ã ¸ô Ç` s t BÒ t q Ð × þ a ) .
7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1
• \ V) ` s t á ÔY Ue à º=3
# l " f: ¤& £
à ñ º Hà Р¸ a ) `s t ñs . • ` s t Êà < º\ ¦> í ß l 0 AK " f Há Ô Ð[ jÛ ¼ \ > ½ É{ + © aá ) ÔY Ue à º\ ¦· ú ô Ç . á ÔY Ue à º ´ §` ú ¦Ã º2 ¤ ʵ < ÏÒ 1 tà q º H& # h Q . 10.4.2
0
7
0
1
2
7
7
7
2
0
0
0
1
1
0
3
0
4
2
3
0
3
2
1
2
0
1
7
2
4
4
4
0
1
1
1
0
0
0
3
3
3
0
0
3
3
2
2
2
2
2
7
0
FIFO @ _T U w = k° ow P ¨ Ö <Õ ªa > 10.3> LRU ` Ë s t §^ · ú ¦o 7 §_ £ \ V
• FIFO (First-In-First-Out) • © ¸A \ [ t# þ Q r` : s t BÒ t q Ð × þ a ) .
• V © o , 6 x÷ & Hl Z s O .
• \ V) ` s t á ÔY Ue à º=3
• LRU ½ ¨ ³~ & ÓZ ½ O 3
1
–
î r' : y ` s t _ s ^ ¦_ Ó ½ _ 9 × ¼\ ¦Æ Ò # t } Ü ¼ Ð] H X ar ) ç ß ¦ ` p · . Ð: x r É Ho 7 9 t! þ s 3
î r' ¦ \ 6 xô Ç . s ~ ÓZ ½ O r É §^ 9 כ ¹½ ÉM + : _ s ^ ¦ ^ \ ¦ Ò oK 9, ` s t ] H X | c: ¨ M ` s t _ s ^ ¦` ¦Ì t q K ô Ç .
• em ¬ ·ø £ 5 > U HÌ ÁÐ M Ó N ± §h ¤ ¸: s æ · ú ¦o 7 § £ r] É X H% i \ ¦Ä »t Hq à Ô\ ¦ ¸ 6 x t · § ú ¦ Ð Ã ¸q à Ôë ß 6 xô Ç . r´ É ú Ð9 t! þ · 3 ú ¦o §s £ 7 ô Ç . – %6 §\ £ ` s t \ ¦] H X Ð Ã ¸q à Ô 1s & ÷ ¦, Å Òl s ` כ ¦ r 0Ü ¼ Ð Ë ¨# Q r ï .
– Û ¼× : ` þ s t ñ н ¨$
í aÛ ) ¼× ` þ ¦s 6 xô Ç . Û ¼× d þ v\ H þ © jH \ ] H X ô Ç` s t \ ¦Ä »t ¦, Û ¼× þ { \ H §^ ½ É` + s t \ ¦Ä »t ô Ç . s \ ¦0 AK " f HÛ ¼× × þ æç \ ß e H` s t \ ¦¼ Û× d þ vÜ ¼ Ð` Ù ¼ Ð s × æ o Û ¼à Ô\ ¦s 6 x # ½ ¨ ³ô & Ç . s > O X Ì t q q 6 xs
î r' Ð 8´ §s ú èכ ¹÷ &t ë ß Ò o½ É + כ 9 ¹ \ O . Ð Ã ¸. Õ ª > 10.4 Ë a 4
7
0
7
1
0
1
2
1
2
7
2
1
2
7
1
0
1
1
2
1
2
– s· ú ¦o 7 § £ rí É H¨ ! 8 Q( \ ¦s 6 x # ½ ¨ ³ & Éà + ½ ºe . – § ^ ½ É` + s t Hí H¨ ! 8 Q( \ " fq à Ô° כs ú 0 s כ × þ a ) . s M :¹ Ô` 1 ¦M : t q à Ô כs ú ° 1 כ r 0Ü É ¼ Ð õ H . – h D` s t Hí H¨ ! 8 Q( \ §^ ÷ & H` s t Au 0 \ ¶ { ú ô 9 Ç . – í¨ H ! 8 Q( \ e H ¸ H` s t _ q à Ô° כs ú 1s s · ú ¦o 7 § £ r FIFOü É <° ú .
0
0
0
0
0
2
0
2
1
1
0
1
• OPTü < LRU\ " f H Belady_ ¸í H ³ & s © µ ÏÒ 1 t q t · § ú H .
1
7
0
7
• × ¼J ?# Qt ¶ " és ì Í× ø ¼r 9 כ ¹ . èá Ôà ÔJ ?# Q Ð_ s ^ ¦_ Ì t q ` ¦ Å Òl % 3 u © ] X H ´ § ú rr É ç s ß èכ ¹ a ) .
0
3
1
4
1
5
1
5
4
0
7
7
1
0
0
0
0
1
7
7
0
0
7
7
7
7
7
0
4
4
4
4
4
4
4
4
4
4
<Õ ªa > 10.4> Û Ë ¼× ` þ ¦ s6 xô Ç LRU ½ ¨ ³ &
10.4.5
R ¿ <± É LRU @ n _T U w = k° ow P ¨ Ö
(a) Ò o
• LRU\ ¦] j/ N B l 0 Aô ÇØ æì rô Ç × ¼J ?# Qt " ¶s é O \ H
Ä â º\ 6 x H lZ s O .
(b) Ò oÊ ê
<Õ ªa > 10.5> 9 Ë t! þ · 3 ú ¦o 7 § £
• @ / Òì r_ ( É Ó' H½ Ô Ç ¿j ç Ã(reference bit)\ ¦] j / Nô B Ç . # Q ` " s t Ð Ã ¸÷ & 1 xÜ l ¼ ÐK { © ` s t _ s ^ ¦` ¦Ì t q # ï r . s ` כ ¦s 6 x <H X Ç` t · ¦o §` £ j/ # LRUü ] ô s §^ ú 7 ¦] N B Éà + ½ ºe .
• * È ×Û S< Ö ³ Ó 7 N ± §h ¤ ¸: s æ · ú ¦o 7 § £ r É Ð Ã ¸q à Ô < ü
q â à Ô\ ¦ Êa < 6 xô Ç .
• Í Ù ½ Ô Ç ¿j ç ÃÓ ± N §h ¤ ¸: y æ ` s t Ð Ã ¸q à Ôü @\ Æ Ò Ð8q à Ô\ ¦s 6 x ¦, s ` כ ¦Å Òl & Ü h ¼ Ð ¸ rA É á ¤ Ho 7 s 1 x` l ¦ # , t è 8Å ß Òl 1 x l y ß î ` s t _ ] H X #  Ò\ ¦Ä »t H~ ÓZ ½ s O . \ V\ ¦[ t# þ Q] H X % i q à Ô[ t_ þ ° כs ú 0000 0000s 8Å Òl 1 xî l ô ß Ç ¸] X Hs î ß a` ) s t \ ¦ ? /9, ì Í@ ø / Ðs ° כs ú 1111 1111s t è 8Å ß Òl 1 xî l > ß 5 q] Å H X s ÷ &% 3 H ` כ ¦ p · . ¢ ¸ô Ç ° כs ú 1100 0100 ` s t H 0111 0111 ` s t Ð 8þ j H\ ] X H÷ &% 6 3 §` £ ¦ p · .
• ( o© Û ¼ 1. (0,0): þ j H\ 6 x÷ &t ¸· § ú ¦
â ¸÷ &t · § ú r` É s t • ( o© Û ¼ 2. (0,1): þ j H\ 6 x÷ &t ¸· § ú ¤ t ë ß
÷ â &# Qe H` s t , §^ \ ¦ n Û ¼ß ¼\ + ô Ç . • ( o© Û ¼ 3. (1,0): þ j H\ 6 x÷ &% t 3 ë ß
÷ â &t · § ú r` É s t • ( o© Û ¼ 4. (1,1): þ j H\ 6 x÷ &% 3 ¦
â a` ) s t
– s· ú ¦o 7 § £ r` É s t \ ¦W 1> h_ 9 tA þ Û ¼ Ð rÀ ì Óô Ç .
– ± ú rì É rÀ Ó\ 5 qô Å Ç` s t \ ¦ $ §^ ô Ç .
• X ]H % i \ ¦Ä »t Hq à Ô_ à º H ½ ª Éà + ºe . F Gé & ß h
º â Äs à º\ ¦ 0 t × ¦{ à 9 ºe .
– Ò or ç s ß U ´# Q . 4
10.4.6
4 ¤M m@ _T U w = k° ow P ¨ Ö
10.5.1
• Ð Ã ¸ a ) rà º\ ¦l ì Í ø Hú · ¦o 7 §s £ .
• Ô á Ð[ jÛ ¼ כ 9 ¹ô Çþ j èô Ç_ á ÔY Ue à ºs ` © ¦ á y Ô Ð[ jÛ ¼\ > ½ É{ + K © Å Ò# Q ô Ç .
• LFU(Least-Frequently-Used) ` s t §^ · ú ¦o 7 §: £ Ð Ã ¸ & © h r É `s t \ ¦ §^ ô Ç .
• j þ$ á ÔY Ue à º H "
§ î
# î Q | ½ 9 Ë ½ + ¨ ¸(instruction set architecture)\ _ K &
_ ñ a ) . _ "
§ î
# î Q Ð Ã ¸ 0 xô p Ç ¸ H` s t \ ¦Ã º6 x½ Éà + ºe ` ¦ë ß u_ p á ÔY Ue rþ É j èô Ç] j/ N÷ B &# Q ô Ç .
– ë H] j& h • í l \ ´ §s ú 6 x÷ &% t 3 ë ß 8s © x÷ 6 & t · § ú r ` É s t H > 5 q Å §^ ÷ &t § ú · H . • % 6 §Ü £ ¼ Ð §^ ÷ &# Q [ t# þ Q r ` : s t H Ð §^ | cº ¨ Ãe .
• £ 7, " ¤
§ î
# î Q 0 Au ô Ç` s t ü <Õ ª"
§ î
# î Q Ð Ã ¸ H` s t H1 xr l \ à º6 x½ Éà + ºe # Q ô Ç . s כ r` É s t Ês < µ ÏÒ 1 t q Õ ª` s t \ ¦Å Òl 3 % u © \ & F h ô Ç 6 §\ £ "
§ î
# î Q\ ¦ r z ´' K l M :ë Hs . ¢ ¸ô Çç ] ß Å X Ò èt &
ñ ¸× ¼\ ¦ x 6 ` s t 0 ¸ Ó ½ ½ © É{ + ÷ © &# Qe # Q ô Ç .
– Í ' P :ë H] j& h rÅ É Òl & Ü h ¼ Ð rà º\ ¦y è r & F G4 ¤½ Éà + ºe . • MFU(Most-Frequently-Used) ` s t §^ · ú ¦o 7 §: £ Ð Ã ¸ ´ © § ú r` É s t \ ¦ §^ ô Ç . Ð Ã ¸ & h r É { כ à 9 º2 ¤þ j H\ [ t# þ Q r : Ü כ ¼ Ðç Å ß Ò H ÓZ ½ ~ s O .
10.5.2
• Ô áY Ue _ Ã º: n (î r%
^ ò ] jü < á ÔY Ue Û ¦\ ½ É{ + © aá ) ÔY Ue [ t þ r] É jü @ô Çà º) • C ! T »$ Ò ×(equal allocation) Ó N ± §h ¤ ¸: y æ á Ô Ð[ j ¼\ Û > n/m > h_ á ÔY Ue ` ¦½ É{ + © H~ ÓZ ½ O
@ _T U ! a( a ˰ S ow P ¨ Ö
• ` s t §^ · ú ¦o 7 §õ £ Êa < 6 x÷ & H# Ql s O Z e .
• jQ d T »× Ò $ (proportional allocation) Ó N ± §h ¤ ¸: y æ Ô á Ð[ jÛ ¼_ ß ¼l \ q Y V # ½ É{ + © H~ ÓZ ½ O
• á ÔY Ue Û ¦_ Ä »t
– si : á Ô Ð[ jÛ ¼ Pi _ ß ¼l P – S = si
– r Û ¼% 7 r É Ð: x ¦&
ñ aà ) º_ á ÔY Ue ` ¦ Ó ½ Ä © »t ô Ç .
– yá Ô Ð[ jÛ ¼ Pi \ > si /S × n > h_ á ÔY Ue ¦½ ` É{ + ô © Ç . # l " f n rz É rá É ÔY Ue à ºs .
– ` s t Ês < µ ÏÒ 1 t q §^ · ú ¦o 7 §\ £ BÒ t q \ ¦ × ô þ Ç . – D h` s t \ ¦ BÒ t q á ÔY Ue \ & F h t ¦Ä º á ÔY Ue Û ¦\ 5 qô Å Çá ÔY Ue \ F ô Ç . s כ r É `s t ʵ < ÏÒ 1 ts q Ê ê Ø Ô> Ô á Ð[ jÛ ¼ \F ¦ à º' l 0 Aô Ç s .
· § ú h & Ð כ
– ü Ó t ry : á Ô Ð[ jÛ ¼\ > þ j$ á ÔY Ue à º ½ É + ÷ © { & ¸2 ¤ ¸] K X ô Ç . – V \) 62 > h_ á ÔY Ue s z e ` ¦M : 10 ` s ü t < 127 ` s t н ¨$
í a¿ ) º> h_ á Ô Ð[ j ¼ e Û Ü ¼ y y \ 4ü < 57 > h_ á ÔY Ue ` ¦ É{ + ½ K © ï r .
– BÒ t q á ÔY Ue s nÛ ¼ß ¼\ æ ¼# t s á Ô Y Ue ` ¦ á ÔY Ue Û ¦\ Æ Ò ô Ç .
• º ¿½ É{ + · © ú ¦o 7 § £ ¸¿ º × æá Ô ÐÕ ªA b ç
_ &
ñ ¸ \ y á Ô Ð[ jÛ ¼\ > ½ É{ + ÷ © & Há ÔY Ue _ Ã º H ô Ç .
– ¢ ¸ô Ç á ÔY Ue Û ¦\ 5 qô Å Çy á ÔY Ue \ # Q " ` s t & F h ÷ &# Qe Ht \ ¦Ä »t ` s t §^ M :s ` כ ¦ ¸6 Ö x½ Éà + ºe .
• Á ˤ >' n K De ð 5 N Ó ± §h ¤ ¸: y æ á Ô Ð[ jÛ ¼_ Ä º í H A\ 0 q Y V # ½ É{ + © H~ ÓZ ½ Ü O ¼ Ð, Ä º í H0 A } Z rá É Ô Ð[ jÛ ¼ H Ð ´ § ú rá É ÔY Ue ` ¦½ É{ + K © Å Ò Q # Ø Ô> à º' | cà ¨ ºe ¸2 ¤K ï r .
•
` â s t 3 q2 l ¤Ä »t –
â a` ) s t _3 q2 l ¤` ¦Ä »t ¦, ` s f
ç u © Ä »Ê ë I © s
` â s t \ ¦ × þ # n Û ¼ß ¼\ æ ¼ ¦,
q â à Ô\ ¦F [ O
ô ñ & Ç .
10.5.3
– s ~ ÓZ ½ ` O ¦ 6 x §^ ½ É` + s t Ó ½ ©
÷ â &t · § ú rL É : M F ô` Ç s t { S 9 Ò X ¦` ¦Z } # ï r .
10.5
£R ¶ s° ê ow P ¨ Ö
• á Ô Ð[ jÛ ¼_ Ã º: m
• ¿ º~ ÓZ ½ O ¸¿ º _ 6 x÷ &t ú § · H . 10.4.7
$ : [³ 7 _Æ È k ¤
ÑW Ë ° ÄÊ
ÝU W Ķ
£R s ê
• × æá Ô Ð[ jÛ ¼ rF > ½ ÉM + :` s t §^ · ú ¦o §_ £ 7 ì rÀ Ó – Ù ¬ ] ¨W Ó N ± §h ¤ ¸(global replacement alæ gorithm): rá É Ô Ð[ jÛ ¼_ ` s t BÒ t q Ð × | þ cà ¨ ºe H· ú ¦o 7 § £
7 ³ _Æ k Èý 8¶ £R s ê
• î% r
^ ò ] j 9 כ ¹ô Çë ß u` p ¦] jü @ô Ç Qt á ÔY U e r É ¸¿ º 6 x á Ô Ð[ jÛ ¼ \> ½ É{ + © a ) . s × æ 9 { Â Ò H Ó ½ © á ÔY Ue s ÷ & ¸2 ¤Ä »t ½ Éà + ºe .
– m ¬ ] ¨W Ó N ± §h ¤ ¸(local replacement algoæ rithm): _ ` s t ë ß BÒ t q Ð × | þ c ¨ ºe à H· ú ¦o 7 § £ 5
•
F% g i §^ HÄ º í H0 A Z } rá É Ô Ð[ jÛ ¼\ > rá É Ô Ð[ jÛ ¼\ ¦ BÒ t q " f½ É{ + © aá ) ÔY Ue à º\ ¦ Z t þ 9× ¦Ã ºe .
2 6 1 5 7 7 7 7 5 1 6 2 3 4 1 2 3 4 4 4 3 4 3 4 4 4 1 3 2 3 4
WS(t1)={1,2,5,6,7}
•
F% g i §^ _ ë H] j Há Ô Ð[ jÛ ¼ _ ` s t ÊÒ < ¦` ¦] j# Q½ ÉÃ + º\ O H s כ . 7 ¤, á £ Ô Ð[ j Û ¼_ $
0 í xs p ü @Â Ò S © \ ! ½ ÉÃ + ºe .
7 _Ë Å S
• \ | O ½ 9 Ë + ¸4 q_ S ½ ¨ ³ & – î% r
^ ò ] j Hy á Ô Ð[ jÛ ¼_ \ | O ½ 9 Ë` + ¦y r # y á Ô Ð[ jÛ ¼_ ³F & \ | O 9 ½ Ë` + ¦Ã º x½ 6 Éà + ºe HØ æì rô Çà º_ á ÔY Ue ` ¦y á Ô Ð jÛ [ ¼\ > ½ É{ + K © ï r .
• á Ô Ð[ jÛ ¼\ ½ É{ + © aá ) ÔY Ue à º כ 9 ¹ô Çþ j è_ á ÔY Ue à ºs Ð? / 9 ¼ ÛY Ud
s ç µ ÏÒ 1 tô q Ç .
– h Dá Ô Ð[ jÛ ¼\ ¦Ã º6 x½ Éë + ß p u_ á ÔY Ue s rF > D há Ô Ð[ jÛ ¼\ ¦z ´' K Å Ò9, ì Í@ ø / Ðy á Ô Ð[ jÛ ¼_ \ | O 9 ½ Ëß + ¼l _ 8 x½ ú Ës + 6 x 0 xô p Çá ÔY Ue à º\ ¦ íõ _ Ô á Ð[ jÛ ¼\ ¦{ r 9 × æé ô ß Ç .
7 _Ë Å S8 ýÌ Rß ¦ Å Ã
• × æá Ô ÐÕ ªA b
_ ç &
ñ ¸ ± Ü ú ¼ CPU 6 x´ ò ¦s Ö b # Q . s \ ¦F G4 ¤ l 0 AK á Ô Ð[ jÛ ¼_ Ã º\ ¦Z to þ 6 x´ òÖ ¦ r7 É x ô £ Ç . Õ ª Q # QÖ ¼
ñ & ¸\ ¦ Ü Å ¼ Û ¼Y Ud
µ ç ÏÒ 1 t q # ¸y 9 6 x´ ò ¦s Ö b # Q . s
Ä â º\ H r × æá Ô ÐÕ ªA ç b
_ &
ñ ¸\ ¦× ¦# ô Ç .
– s~ ÓZ ½ _ O © H# Q 9¹ § ¡ ry É á Ô Ð[ jÛ ¼_ \ | O 9 ½ Ë` + ¦Ä »t H s כ . Ð Ã ¸% i \ ¦ 6 s x # Ä »t ½ Éà + ºe . 10.6.3
• t % i §^ · ú ¦o 7 §` £ ¦ 6 x Û ¼Y Ud
_ ç ´ òõ ¦× \ ¦{ 9 à ºe . s כ r É _ á Ô Ð[ jÛ ¼_ Û ¼ Y Ud ç
s rá É Ô Ð[ jÛ ¼ \> %
ò Ó` ¾ ¦Å Òt · §l ú M : Hs ë . Õ ª Q Û ¼Y Ud ç
s µ ÏÒ 1 tô q Çá Ô Ð[ jÛ ¼ H@ / Â Òì r_ r ç ` ß ¦` s f
ç u © _ Ç ©\ " f Ð? /> ÷ & Ù ¼ Ð rá É Ô Ð[ jÛ ¼ ¸l o Hr ç s ß U ´# Q .
_T @ U + Ç] s ¤Ý K à Åy ¢
• `s t Ê < ¸\ ½ É{ + ÷ © & Há ÔY Ue à º\ ¦ ¸] X H~ ÓZ ½ s O . • `s t ÊÒ < ¦_ ô © Çõ ô Ç` ¦&
_ ñ # , á Ô Ð jÛ [ ¼_ ÊÒ < ¦s ô © Ç Ð Z }Ü ¼ á ÔY Ue ` ¦Æ Ò Ð½ É{ + K © Å Ò ¦, ì Í@ ø / Ð ô Ç Ð ± Ü ú ¼ á ÔY U ` e ¦] j ô Ç .
• Û ¼Y Ud ç
\ ¦\ V~ Ó ½ l 0 AK " f Há Ô Ð[ jÛ ¼\ > כ 9 ¹ Çë ô ß p u_ á ÔY Ue ` ¦½ É{ + K © Å Ò# Q ô Ç . Õ ª Q á Ô Ð[ jÛ ¼ 9 כ ¹ô Çá ÔY Ue _ à º\ ¦· l ú ~ t 1 · § ú .
• `s t ÊÒ < ¦s ô © Ç` ¦ % Å t 3 ë ß 8s ½ © É{ + © × K ¦ á ÔY Ue s \ Ü O ¼ á Ô Ð[ jÛ ¼\ ¦{ 9 r × æé ß K ô Ç .
• m Å ] ] ¿D f(locality model): s ¸4 q\ S _ á Ô Ð[ jÛ ¼ Hz ´ ' ÷ & H1 xî l ô ß Çt % \ i " f rt É % Ü i ¼ Ðs 1 xô l Ç . # l " ft % s i ê Í ø ³F & ¸1 Ö x& l h Ü ¼ Ð 6 x ¦e H `s t þ t [_ | ½ 9 Ë` + ¦´ ô ú Ç . ³F & á Ô Ð[ jÛ ¼_ t % ` i ¦Ã º6 x½ Éà + ºe Hë ß u_ p á ÔY Ue ` ¦ ½ É{ + K © Å Ò Û ¼Y Ud ç
r µ É ÏÒ 1 t q t · § ú H . 10.6.2
t2
• \ | O 9 ½ Ë + ¸4 q_ S &
S ñ $ X
í r ∆_ É × \ þ _ K
ñ & a ) . Ü ¼ ³F & _ t % ` i ¦Ø æì ry ? /t w l 3 9, ß ¼ rt É % õ i × æ^ ?| o cà ¨ ºe .
• > 5 q Å # ` s t Ês < µ ÏÒ 1 t q H ³ & ` © ¦â «Q c b (thrashing)s ô Ç . z ´ ' H r ç ß Ð ` s t Ê` < ¦% o Hr ç s ß 8´ § ú t s ³ & s © µ ÏÒ 1 t q % i ¦ô Ç .
10.6.1
WS(t2)={3,4}
<Õ ªa > 10.6> Ë \ | O ½ 9 Ë + ¸4 q S
• ³F & H@ /Â Òì rF g%
§ i ^ ú · ¦o 7 §` £ ¦ 6 xô Ç .
10.6
t1
10.7
Ry © Ì ¢ ¤ NT
• û ¶ ¸Ä º NT Hכ ¹½ ¨` s f
õ ç 9 t þ QÛ ¼' a A(clustering)` ¦s 6 x # l © % 3 u © \ ¦½ ¨ ³ô & Ç . • þ 9 t QÛ ¼' a A r É Ê < a ` ) s t ÷ rë ß m Å Ò s ` t t Êa < & F h ô Ç . • Ô á Ð[ jÛ ¼ r ÷ & \ | O ½ 9 Ëþ + j$ ü <þ j@ /\ ¦ É{ + ½ ô © Ç .
X l° c Éù n ɶ m ¥¢ {¨ |
• \ | O 9 ½ Ë + ¸4 q(working-set model) S rt É % $ i
í
\ ñ & l ì Íô ø Ç ¸4 qs S .
• \ | O ½ 9 Ëþ + j$ ê Íá ø Ô Ð[ jÛ ¼\ > Ó ½ © Ð K © Å Ò Há ÔY Ue _ Ã º\ ¦´ ô ú Ç .
• s ¸q 4 S\ " f H ∆ г ðl ÷ & H \ | O 9 ½ Ë + Ó` ½ ¦&
ñ _ ô Ç .
• \ | O 9 ½ Ëþ + j@ /ê ÍÕ ø ªá Ô Ð[ jÛ ¼\ > ½ É{ + ½ © Éà + ºe Hþ j@ /á ÔY Ue à º\ ¦´ ô ú Ç .
• \ | O 9 ½ Ës + ê Í ø þ © jH \ Ð Ã ¸ô Ç∆` s t _ 9 | ½ Ë` + ¦´ ô ú Ç .
• l © % 3 u © ao ' H á ÔY Ue _ 3 q2 l ¤` ¦Ä » ô t Ç . ¢ ¸ô Ç á ÔY Ue à º Ø æì ry e Ht # Ò\  ¦· l ú 0 AK e > ° (כthreshold)` ú ¦ 6 xô Ç .
• \ V) ∆ = 10 6
• \ | O ½ 9 Ëþ + j@ /s _ á ÔY Ue s ½ É{ + © aá ) Ô Ð[ j Û ¼\ > ` s t Ês < µ ÏÒ 1 t q á ÔY Ue 3 q2 l ¤ \ " f _ á ÔY Ue ` ¦ á Ô Ð[ jÛ ¼\ > ½ É{ + K © ï r .
• `s t ÊÒ < ¦ r` É s t 9 tà þ º2 ¤± ú . ` s t Ês < ± ` ú ¦Ã º2 ¤` s t Ê` < ¦% o H ¸! Q × K ¼ & # h Q . • H` s t \ ¦ 6 x H s כ Æ Ò[ j .
• z r É á ÔY Ue _ à º e > ° כs ú Ð? / 9 1 x l \ | O ½ 9 Ë + ¸] (automatic working-set trimX ming) l Z ` O ¦s 6 xô Ç . s l Z O rá É Ô Ð[ jÛ ¼\ > É{ + ½ © aá ) ÔY Ue à º\ ¦ # \ | O ½ 9 Ëþ + j$ s Ü © ¼ н É{ + © aá ) ÔY Ue ` ¦ rà ºô Ç .
10.8
 ¥w \ \
10.8.1
Å@ Ò _T Ç Ë S
10.8.3
TLB ä È ì ü
• TLB_ & × h æÒ ¦(hit ratio) r ` É s t _ s ^ ¦ @ / TLB\ \ " f Å © Ò è % s i s À Ò# Qt Hq Ö ¦ ¦´ ` ô ú Ç . TLB_ & × h æÒ ¦ r TLB_ É ÓÃ ½ º\ ¦7 x £ v r Z } t t ë q ß 6 xs q .
• íà H ºכ ¹½ ¨` s f ç
_ ë H] j& h r É íl \ ´ § ú r` É s t Ês < µ ÏÒ 1 tô q Ç H s כ .
• TLB # 0 3 A(reach)ê Í TLB\ ø ¦: xK ] X H 0 xô p ÇÅ Ò % l 3 u © / Nç B ` ß ¦´ ú 9, TLB_ Óà ½ º\ ` s t ¼l ß \ ¦Y Lô Ç° כs ú . TLB_ Óà ½ º ´ §` ú ¦Ã º2 ¤# 3 A V 0 # , Q .
• ¢ ¸ô ÇÛ ¼ כ Ö © aá ) Ô Ð[ jÛ ¼\ ¦ r z ´' ½ ÉM + :\ ¸° ú r É ³ & s © µ ÏÒ 1 tô q Ç .
• j þ èô Çá Ô Ð[ jÛ ¼_ \ | O 9 ½ Ë + r TLB\ É $ ÷ © & Qe # # Q ô Ç .
• n ¤Z > cl b (prepaging) r É íl \ Z } r` É s t Ê < ¦` Ò ¦× ¦s l 0 Aô Ç~ ÓZ ½ s O .
• ½ Ã Ó º\ ¦
â t · § ú ¸` s t ß ¼l \ ¦Z to þ TLB # 0 3 A HV # , Q . Õ ª Q ? / Òé ¼ ß # o 7 x £ ½ Éà + ºe . " fá Ô Ð[ jÛ ¼ r` É s t ¼l ß \ ¦ 6 x½ Éà + ºe ¸2 ¤K Å Ò Hr Û ¼% 7 ¸e . ª Õ Q ô ª Ç` s t ß ¼l \ ¦] j/ N B Å Ò è s i % 4 ¤¸ K ú .
• \ | O 9 ½ Ë + ¸q 4 S` ¦ 6 x½ É +
Ä â º\ HÛ ¼ כ Ö ©½ É + M : \ | O 9 ½ Ë + ¸q 4 S\ í Ê < a` ) s t 3 q2 l ¤` ¦ Ð a ' % i ¦Õ ªá Ô Ð[ jÛ ¼ Û ¼ כ | cM ¨ :s ` s t ¦ \ ¸¿ º& F h ô Ç 6 §\ £ Ô á Ð[ jÛ ¼\ ¦F > hô Ç . • ` s f ç
_ q 6 xs s [ t\ þ @ /ô Ç` s t Ê` < ¦ % o Hq 6 x Ð & # h Q ´ òõ e . `s ç f
` ¦: xK & F h a` ) s t [ ts þ 6 x÷ &t · §Ü ú ¼ ´ òõ \ O .
10.8.4
• ¹ ½כ ¨` s f
ç r É 6 x \ > È Ò"
î > ] j/ N÷ B &t ë ß 6 x s z ´` ¦· ú ¦s ` כ ¦á Ô ÐÕ ªA b
\ ç 6 h & x Ð ´ òÖ ¦& h á Ô ÐÕ ªÏ ` þ ¦ $
½ í ÉÃ + º e .
• s> h_ ` s t \ ¦ ` s f
ç % ` i ¦M :s × æαq Ö ¦ ß ë 6 x÷ &% 3 ¦ . Õ ª Q s×α ` s t Ê < ¦% ` o Hq 6 x Ð s × (1 − α) ` s t \ ¦ ` s f ç
Hq 6 xs h &# Q ´ òõ e . 10.8.2
z ³ º§ q 8 ý º
• V \) ` s t ß ¼l 128 0 >× ¼{ 9 M : 6 §õ £ ° ú rá É Ô ÐÕ ªÏ s þ e ¦ . int A[128][128], i, j; for(j=0; j < 128; j++) for(i=0; i<128; i++) A[i][j]=0;
@ _T U 8 ý± M
• l rr > Û ¼% 7 _ ` s t ß ¼l H
½ â ÉÃ + º\ O . t ë D ß hr Û ¼% 7 ` ¦[ > O ½ ÉM + :\ H` s t ß ¼l \ ¦ &
K ñ ô Ç .
\ C P r É ' × æd Ü ¼ Ð$ ÷ © &l M :ë H\ s ü <° s ú 128 × 128 = 16, 384 _ ` s t Ês < µ Ï 1 tô q Ò Ç . s ` כ ¦ 6 §õ £ ° s ú
â
• ` s t ß ¼l 9 tà þ º2 ¤` s t _ s ^ ¦_ ¼ ßl H . s 8 ¤ £ \ " f H `s t ß ¼l 9 tº þ Ã2 ¤ ~ % a .
for(i=0; i < 128; i++) for(j=0; j < 128; j++) A[i][j]=0;
• ` s t ß ¼l 9 tà þ º2 ¤ t } ` s t \ rF > H? / Òé ¼ ß # o ¼ ß .
Ç ô ' ` ¦% o ô Ç 6 §\ £ ` s t Ês < µ ÏÒ 1 t q Ù ¼ 8 Ð x 128 ú _ ` s t Êë < µ ß ÏÒ 1 tô q Ç . s % ! 3 Ô á ÐÕ ªA Q ` s f ç
` ¦ d ¦á Ô ÐÕ ªÏ ` þ ¦
í $ Ð ´ òÖ ¦& Ü h ¼ Ðá Ô ÐÕ ªA b ç
` ¦½ Éà + ºe .
• 9 { Ø ¦§ r 4 ç ` ß ¦þ j è o l 0 AK " f H` s t ß ¼ l 9 tà þ º2 ¤a ~ % . & h r É ` ª ¦` l ´ § ú r É ` ª ¦ l ` Ñ t ü ° ú r] É X Hr ç s ß èכ ¹÷ &9, 5 x Å r ç ß r] É H X r ç ß Ð @ © /& Ü h ¼ Ð& h rr É ç s ß .
• `s f
\ ç " f´ òÖ ¦& Ü h ¼ Ð 6 x½ ÉÃ + ºe HX <s ' ¨ ½ ¸ e ¦, Õ ªX t O · § ú r½ É ¨ ¸ e . \ V\ ¦[ t þ QÛ # ¼× þ r É Ó ½ Û © ¼× d þ v` ¦s 6 x # ¸ Ù ¼ Ð s ` f
\ ç ´ òÖ ¦& h ½ ¨ ¸s . ì Í ø \ K / '_ s ¦ ^ r] É H X 0 Au V o , ( 4 Re Ü ¼Ù ¼ ÐÕ ªX t O · § ú .
• 9 { Ø ¦§ _ 4 ^ ß ¼l H` s t ß ¼l ` ¦Ã º2 ¤ ~ % a . s כ r ` É s t ß ¼l ` ¦ à º2 ¤ t % $ i
í s Ó ¾ ÷ © &# QÔ ¦ 9 כ ¹ô Ç s כ Å Òl % 3 u © \ & F h cS ¨ | Ò X ¦s ± ú t l : Më Hs . 7
• (
{ 9 Q ¸ `s f
` ç ¦ ¦ 9 # ï× ¼\ ¦½ ¨$
í Ð ´ òÖ ¦& h á Ô ÐÕ ªÏ ` þ ¦ë [ ß tà þ ºe . \ V\ ¦[ t þ # Q Êa < Å Ò 6 x÷ & HÀ Ò; 2 r É _ ` s t \ í Ê < ` st Êà < º\ ¦× ¦{ à 9 ºe . 10.8.5
@ _T U X p c ? £
• כ ¹½ ¨` s f
` ç ¦ 6 x½ É: + M# Q ` " s t [ t þ r É §^ cà ¨ | º\ O ¸2 ¤K H
Ä â º e . • \ V) { 9 Ø ¦§ כ 4 ¹' Aô õ Çá Ô Ð[ jÛ ¼ { 9 Ø ¦§ ½ 4 É? + /6 x` ¦ ! Q( \ ` l ¦{ 9 Ø ¦§ / 4 @l Ç © Ðs 1 x l % ` i ¦M : g%
F i §^ · ú ¦o 7 §` £ ¦ 6 x Ç © Ðs 1 xô l Çá Ô Ð[ jÛ ¼_ ! Q( ` s t \ ¦ §^ ½ ÉÃ + ºe . s
Ä â º
Ý í % æô ü ÇX <s ' 9Ø { ¦§ | 4 cà ¨ ºe . • K Õ þ – 9 { Ø ¦§ 4 r É Ó ½ r © Û ¼% 7 \ > ½ É{ + © aÅ ) Òl % 3 u © %
% ò \ i " fs À Ò# Qt ¸2 ¤ô Ç . Æ Ò 4 ¤ 9 כ ¹ H s כ s K Õ _ þ ë H] j& h s . – ` s t F Kl Z : y O á ÔY Ue ¼ Ô; Ç j ³ ç Ã(lock bit)\ ¦ a ' # §^ _ BÒ t q Ð | þ × cà ¨ º\ O ¸2 ¤ H~ ÓZ ½ s O . • 9 { Ø ¦§ \ 4 6 x| c! ¨ Q( î r%
^ ò ] j& V \ , > ½ É + © { a` ) s t H F K qà Ô\ ¦[ & O
ñ # §^ | cà ¨ º O \ ¸2 ¤ô Ç . • F Kl Z O rÅ É Ò_ e > 6 xK ô Ç . 6 x ` s t \ ¦ F K 6 §\ £ r Û ¦t · §Ü ú ¼ 6 x½ Éà + º e Há ÔY Ue à º × ¦# Q[ t> þ H .
8
c °2003, sangjin@kut.ac.kr
–
{ ? 9 /_ 0 Au
â –
{ 9 ] j:
{ 9 \ > ½ É{ + ÷ © &% ~ 3 / Nç B ` ß ¦ r º Ã ¦, n 7 Ðo \ " f
{ 9 õ aº ' a& )
ñ Ð ¦ \ ] jô Ç .
* <* Ö = å i< K: ~ ¡q ç { ¡È 12 A. Silberschatz, P.B. Galvin, G. Gagne Operating System Concepts, Sixth Edition, John Wiley & Sons, 2003.
–
{ ] 9 é X :
ß { 9 ? /_ ? /6 xë ß ] jô Ç . 7 ¤, £ {
\ 9 > ½ É{ + © a/ ) Nç B ` ß ¦ rà º ¦
{ 9 a ' º a& )
ñ Ð× æß ¼l ë 0Ü ß ¼ Ð õ H .
Part III. Storage Management
• sü @\ ¸
{ = 9 Q\ å ' ,
{ s 9 2 § £
,
â { 9 ¤ 4 1 x` p ¦] j/ Nô B Ç .
11 11.1
• B n 7 Ðo \ ¦ Ò o H q 6 x` ¦ × ¦s l 0 A
K { { 9 l 9 æ ¼l \ ¦ l \
{ ` 9 ¦\ P ¸ ¤ô 2 Ç . î r%
^ ò ] j H\ ; P 2
{ _ 9 s ^ ¦(open-file table)` ¦Ä »t 9,
{ ` 9 ¦{ ` ¦M : t n 7 Ðo Ò o` ¦ r t · § ú ¦
{ ` 9 ¦ ¸ ½ ÉÃ + ºe ¸2 ¤ ï K r .
ø
ÇS m y ß ð Ã Å' [@ _T Ç
ø m4 G È
• Ä ºo H&
ñ Ð\ ¦ ô ª Ç$ B © ^ (n Û ¼ß ¼, F gn
Û ¼ ß ¼, _ s á Ô1 x)\ p $ ô © Ç . î r%
^ ò ] j H ô ª Ç $ B © ^ \ @ /ô Çç H{ 9 ô Ç Ho 7 & Â h Ó\ ¦] j/ Nô B Ç . s s כ
(file)s .
•
{ \ 9 l P :
{ 9 s 2 §` £ ¦Å Ò n 7 Ðo \ ¦ Ò o \ # ; P 2
{ 9 _ s ^ ¦\
{ _ 9 n 7 Ðo Ó` ½ ¦4 ¤ ô Ç .
{ 9 ` ¦\ M P :] H X ¸× ¼(Ò t$ q
, { í 9 l , { 9 -æ l ¼l 1 x)\ p ¦t &
½ ñ Éà + ºe . Ð: x\ l P r Û ¼% 7 ñØ ¦ rs É _ s ^ ¦\ @ /ô Ç í ' \ ¦ì ͨ ø K 8 ï r .
•
{ 9 r$ É _ © þ j èé 0 ß As . Ä ºo H
{ ü 9 @\ r~ É ÓZ ½ Ü O ¼ ÐX <s ' \ ¦ $ ½ © ÉÃ + º\ O .
• × æ 6 x ¨ 8
_ â
Ä â º\ H¿ ºé > ß _ s ^ ¦` ¦ 6 xô Ç .
•
{ 9 rÕ É ª _ כ » Ä+ A\ þ : ¤& £
½ ñ ¨ ¸\ ¦t .
11.2
– « è ×T zâ «ß
Y ~ cl ¡ ·: y á Ô Ð[ jÛ ¼_ PCB\ »t Ä ÷ &9, s á Ô Ð[ jÛ ¼
{ 9 [ t` þ ¦ ao ' Ç ô .
{ 9 í ' ,
{ 9 ] X H ¸× ¼1 xs p s s _ ^ ¦\ Ä »t a ) .
Ç
ø m ×V Ò Ë R
•
{ 9 õ aº ' a5 ) q$ Å
í – s 2 §: £ 6 x \ _ K d | cà ¨ ºe H+ AI þ Ð Ä »t ÷ & HÄ »{ 9 ô Ç כ
– kâ «` g¦ >W Y cl ¡ ·: á Ô Ð[ jÛ ¼ü <1 qw l & n h
ñ & Ð[ ts þ Ä »t a ) . n Û ¼ß ¼? /_
{ 9 _ 0 A , ] u H X ± ú ,
{ 9 ß ¼l 1 xs p s _ s ^ ¦\ »t Ä a ) . ¢ ¸ô Ç\ P ;> 2 à º(open count)\ ¦Ä » t # s
{ ` 9 ¦ á Ô Ð[ jÛ ¼_ à º\ ¦Ä »t Ç ô .
– dZ > :
{ 9 r Û ¼% 7 ? /\ " fy
{ ` 9 ¦½ ¨ì r l 0 Aô Çd Z > – Ä »+ A þ – 0 Au : $ © aB ) ^ \
{ s 9 $ © a0 ) Au – ß ¼l 11.2.2
– Ð ñ: ] H X ] j# Q&
ñ Ð
•
{ _ 9 Ä »+ A þ rS É X © \ ¦s 6 x # d Z ô > Ç . ë t ß Ð: xî r%
^ ò ] j H{ 9  Ò_ S X © ( Ð: xz ´' , Û 7 % ¼à Ô, s &
ñ ¸ë ½ ß ¨ì r)ë d ß Z > 9, Qt H 6 x \ > ë ß ¸¹ §s ¡ ÷ & H½ ¨ì r % ½ i É` + ¦ô Ç .
– r ç õ ß ± ú , 6 x &
ñ Ð •
{ 9 õ aº ' as ) &
ñ Ð[ t þ rn É 7 Ðo ½ ¨ ¸+ A þ I Ð Ð ¸$ © u © \ Ä »t a ) . • + A& þ Ü h ¼ Ðn 7 Ðo Ó ½ r
É { s 9 2 §õ £ Õ ª _ כ Ä »{ 9 ô Çd Z > н ¨$
÷ í &9, s d Z > H r5 É q Å
[ í $ ts þ e H0 Au \ ¦ o v H í ' % ½ i É` + ¦ô Ç . 11.2.1
ø
Ç m ¥] ù k
• j þ H\ H
{ Ä 9 »+ Aõ þ aº ' á Ô ÐÕ ªÏ ` þ ¦ a '
# { 9 × þ 1 xÜ l ¼ Ð aº ' á Ô ÐÕ ªÏ s þ z ´ ÷ ' & ¸2 ¤ô Ç . Ð Ã ¦. ë H" f× æd vs. á Ô ÐÕ ªÏ × þ æd
Ç ø m Å ì m
•
{ 9 õ aº ' a ) í ß
11.3
–
{ 9 Ò t$ q
: / í Nç B ` ß ¦ ½ É{ + K © ¦,
{ õ 9 aº ' a& )
ñ Ð\ ¦n 7 Ðo \ Æ Ò K ô Ç .
q O ð ºP º
• nÛ ¼ß ¼ H
p ¤ >(partition)Ü ¼ Ðì r½ É + a ) . n Û ¼ ¼ ß H Ð: xþ j èô Ç _
w ` ¦ . # Q " Û r ¼% 7 r# É Qn Û ¼ß ¼\ ¦ _
w Ü ¼ Ð x½ 6 ÉÃ + ºe ¸2 ¤K ï r .
–
{ 9 æ ¼l –
{ 9 { 9 l 1
• y
w r$ É ÷ © &# Qe H
{ õ 9 $ © a
) { 9 [ t\ þ aô ' Ç&
ñ Рн ¨$
í a ) .
{ \ 9 aô ' Ç&
ñ Ð H u © n 7 Ðo ¢ ¸ H^ ¦µ §_ ¢ s ^ ¦\ Ä »t a ) . © u n 7 Ðo H Ð: xn 7 Ðo 9, $ ÷ © &# Q e H
{ 9 n 7 Ðo \ _ Ós ½ rF > ô Ç .
FILE FCB
FCB
FILE
FILE FCB
• n 7 Ðo ü < aº ' a ) í ß directory
–
{ 9 Ò o: : ¤& £
ñ { 9 \ K { © Hn 7 Ðo Ó` ½ ¦ Ò oô Ç . Ð: x
{ s 9 2 §s £ : ¤& £
J ñ ¦{ ` u 9 H ¸ H
{ 9 [ t` þ ¦¹ Ô` 1 ¦Ã ºe ¸2 ¤ K ï r .
(a) × ¼a Aß ¼
–
{ 9 Ò t$ q
í
– ç ( ¡ 1. « 0 An 7 Ðo e Ü ¼ Â Òô Ç . V) MSDOS \ – ç ( ¡ 2. « ] j"
§ î
\ î ` v ` ¦× ¦Ã ºe ¸2 ¤ # 0 An 7 Ðo e # Q ¸n 7 Ðo \ ¦ j½ ] Éà + ºe ¸2 ¤K ï r . \ V) UNIX
– n 7 Ðo \ P –
{ 9 F "
" î
î –
{ 9 r Û ¼% í 7 H r(traverse):
{ r 9 Û ¼% 7 ? / \ e H ¸ Hn 7 Ðo \ ¦~ Óë ½ H H ` כ ¦´ ú Ç ô .
11.3.4
• s~ Ód ½ rn É 7 Ðo
{ 9 _ / NÄ B »\ ¦~ > 1 K ï r . • ½ ¨ ³~ & ÓZ ½ O
• t ¶ " é l / © 'î r~ ÓZ ½ s O .
– Aß a¼(link) 6 x: a Aß ¼ H
{ 9 ¢ ¸ H n 7 Ð \ o @ /ô Ç í ' s . Ä »_ Û ¼ H l ñ a A ¼(symbolic link)ü ß < × ¼a Aß ¼(hard link), ¿ º xÀ á 7 Ó\ ¦] j/ Nô B Ç .
• ë] H j& : ô h Çn 7 Ðo ? /\ e H ¸ H
{ _ 9 s 2 § £ r1 É q: l ¤K £ Ù ¼ Ð
{ 9 s 2 §Â £ Ò# \ ] j ` ¦~ Î Ã H .
–
{ × 9 æ4 ¤: { 9 a$ '
` í ¦Ä »t H s כ # Q§ > .
¤ m4 Oq ð ºP
• ¿ ºé > ß Â Ò' H
â Ð(path) > h¥ s Æ 1 x p ô © Ç .
• ë] H j& : à h Ôo ½ ¨ ¸ Ð HÄ » ô Ç~ ÓZ ½ s O t ë ß §õ £ 6 ° ú rë É H] j& s h e .
• Ò o
â Ð(search path):
{ s 9 2 §s £ Å Ò# Q& ` ¦M : s
{ 9 ` ¦ Ò o l 0 AK Ò o Hn 7 Ðo _ 3 q2 l ¤` ¦´ ô ú Ç . 11.3.3
Å R Øò U ÿ§ & 7 0³ O q ð ºP
• q í H¨ Õ 8 ªA á Ôê ÍÅ ø Òl \ O HÕ ªA á Ô\ ¦´ ô ú Ç .
mÇ ø m m4 O q ð ºP
• ¸ H
{ 9 s _ n 7 Ðo \ í Ê÷ < & H½ ¨ ¸ ¦´ \ ô ú Ç .
11.3.2
(b) l ña Aß ¼
<Õ ªa > 11.1> Ä Ë »_ Û ¼\ " fa Aß ¼_ 7 xÀ á Ó
–
{ 9 ] j
11.3.1
directory
– ô
Ç { 9 r# É Q
â Ð\ ¦ | Ã 9 ºe . f
" { 9 r Û ¼% 7 ` ¦í H r½ ÉM + :ô ǽ ¨ ¸\ ¦# Q ~ Óë ½ H½ Éà + ºe .
² P º8 ý Oq ð ºP
–
{ _ 9 ] j: a Aß ¼÷ &# Qe H
{ ` 9 ¦ ] j½ É +
Ä â ºs a Aß ¼ 8s _ © p e H/ M` B ¦ o t v 3 w l > a ) .
{ 9 \ @ /ô Ça Aß ¼3 q2 l ¤` ¦ »t Ä t · §Ü ú ¼ s a Aß ¼[ t` þ ¦¹ Ô 1 ] j H כ r´ É § ú rq É 6 xs èכ ¹ a ) . Ð: x
{ s 9 ] j÷ &# Q ¸a Aß ¼ HÕ ª@ / п º9, ë s ß a A ¼\ ß ¦ × æ\ 6 x
â ¦\ ¦× ¦Ã ºe ¸2 ¤ ¦î ô ß Ç . ¢ ¸ r~ É ÓZ ½ O r É Ð Ã ¸> à º\ ¦Ä »t # s > à º 0s ÷ &# Q ë ß ] j½ Éà + ºe ¸2 ¤ô Ç .
• à Ôo ½ ¨ ¸_ n 7 Ðo \ " fy n 7 Ðo H 0 A n 7 Ðo \ ¦ | à 9 ºe Ü ¼9, à Ôo _ þ j 0 © An 7 Ðo \ ¦Ç Ùç Ãg ø c ` ×h ô Ç . • & F ³ n 7 Ðo (current directory): ³F & 6 x 0 Au ô Çn 7 Ðo Ð
{ s 9 2 §` £ ¦Å Ò s n 7 Ð o \ ¦ $ Ò oô Ç . ³F & n 7 Ðo ü < rn É 7 Ðo \ e H
{ 9 ` ¦] X H l 0 AK " f HÕ ªn 7 Ðo Ðs 1 x` l ¦
{ 9 _
â Ð\ ¦Å Ò# Q ô Ç .
• l ña Aß ¼ü < × ¼a Aß ¼_ s & h
• X ]@ /
â Ð(absolute path): à Ôo _ À Òà ÔÂ Ò' _
â Ð. \ V) C:\windows\system32
– l ña Aß ¼ H
{ ¢ 9 ¸ Hn 7 Ðo \ @ /ô Ç í ' Ð" f, l ñ a Aß ¼_ ] j H
{ 9 \ %
ò Ó` ¾ ¦ Å Òt · § ú H . ì Í@ ø / Ð
{ 9 s ] j÷ & l ñ a Aß ¼ H _ p \ O H í ' (dangling pointer) a ) .
• © @ /
â Ð(relative path): ³F & n 7 Ðo ÐÂ Ò' _
â Ð. \ V) ..\work • à Ôo ½ ¨ ¸\ f "n 7 Ðo ] j 2
– × ¼a Aß ¼ H
{ \ 9 @ /K " fë 0 ß x p ¦, ° ú rn É 7 Ðo Ó` ½ ¦ o v H í ' s 9, ô Ç
{ 9 r Û ¼ 7? % /\ " fë 0 ß x p . × ¼a Aß ¼ ¦ \ ] j Ð Ã ¸> à ºë ß y èô Ç . 11.3.5
11.5
º | Æ
• ü Óo t & h H < õ © Ô ¦Z & O ] h X HÜ ¼ ÐÂ Ò'
{ ` 9 ¦ Ð ñK ô Ç . • ü Óo t & h H < © rÑ É \ þ ` O ¦: xK s À Ò# Qt 9 ÔZ ¦ & O h X ] H r] É H X ] j# Q(access control)\ ¦: xK s À ÒQ # .
ø Ç m m§ 7 0³ Oq ð ºP
• q í H¨ Õ 8 ªA á Ô½ ¨ ¸_ ë H] j HÅ Òl \ O ¸2 ¤ Ð © H s כ .
11.5.1
É¿ n ± < R ¥] ù k
• q í H¨ Õ 8 ªA á Ô_ & © h r
É { 9 r Û ¼% í 7 H r ~ 1 H s כ .
•
{ \ 9 @ /ô Ç Ð ñ H] H X Ä »+ A` þ ¦] jô Ç # ] j# Q Ç ô .
• { 9 ì ÍÕ ø ªA á Ô½ ¨ ¸\ " f HÅ Òl rF > ½ ÉÃ + ºe .
• ] X H_ Ä »+ A þ – { l 9
• { 9 ì ÍÕ ø ªA á Ô½ ¨ ¸_ ë H] j& h
– æ ¼l
–
{ 9 r Û ¼% 7 í H r_ # Q 9¹ § ¡
– z ´'
–
{ 9 ] j_ # Q 9¹ §: ¡ Ð Ã ¸ > à º\ ¦ 6 x½ É + à ºe t ë ß Ð Ã ¸> à º 0s _ \ ¸Ô ¦½ ¨ ¦ 8s _ © p \ O Ha Aß ¼ rF > ½ Éà + º e . s
Ä â º\ H Å Òl & Ü h ¼ Ð æ ¼Y Ul à º 9 | (garbage collection)` ¦K t ë s ß _ כ q 6 xs ß ¼Ù ¼ Ð s l Z ` O ¦ 6 x H
Ä â º H× ¼Ó t ü .
– ' :
{ = 9 Q\ å ? /6 xÆ Ò – ] j –
{ & 9
ñ Ð\ | P Ð Ã 2 s § £
, 4 â ¤ , ¼ | # 1 9 x p r É 0 Aà ºï r_ l r] : X Ä H »+ A\ þ ] j# Q a ) . \ V\ ¦[ t# þ Q{ l 9 ¶ô Ý Çs e H 6 x H
{ ` 9 ¦4 ¤ ½ ÉÃ + ºe .
• z ´] j{ 9 ì ÍÕ ø ªA á Ôn 7 Ðo ½ ¨ ¸\ ¦ 6 x # ¸ Å Òl H Ð: xÁ ºr ô Ç . 7 ¤, £ 6 x Õ e þ s 9, í H r+ É ½M :\ Ha Aß ¼ Hº Ár a ) .
11.4
11.5.2
É¿ n ± << R g# a
• X ] H] j# Q H Ð: x 6 x d Z > \ ¦H Ð] X H 6 ) x# Â Ò\ ¦ &
ô ñ Ç .
Ç
ø mS y ð Æ ØÊ U Ë S
• y
{ 9 ] H X ] j# Q3 q2 l ¤(access control list)\ ¦ »t Ä 9, 6 x ] X Hכ ¹' A õ s 3 q2 l ¤` ¦ Ð # ] X H) 6 x# Â Ò\ ¦ &
ô ñ Ç .
•
{ 9 r É ¸ l \ \ # P Q ¸ ½ ÉÃ + ºe . • s ü < ð Í t ø Ð
{ 9 r Û ¼% ` 7 ¦ 6 x l 0 AK " f H $ î rà Ô÷ &# Q ô Ç .
• X ] H] j# Q3 q2 l ¤\ y 6 x Z ] > H X ¶ Ýô Ç` ¦Ä »t H כ r É ³z & ´$
s í \ O . Ð: x 6 x \ ¦ 6 §õ £ s ú ° ì rÀ Ó ¦, ì rÀ Ó\ @ /ô Ç] X H ¶ô Ý Çë Ä ß »t ô Ç .
• î rà Ô] X – î% r
^ ò ] j H u © _ s2 §õ £
{ ½ 9 ¨ ¸? /\ î rà Ô½ É0 + Au \ ¦Ã Î ~ Õ ª0 Au \ î rà Ôô Ç .
– èÄ » (owner):
{ ` 9 ¦Ò t$ q
ô í Ç 6 x – Õ ªÒ ¨(group): èÄ » 5 qô Å ÇÕ ªÒ ¨
– Ð: x î rà Ô½ É0 + Au H n 7 Ðo a ) .
– 9 {ì Í(universe): r ø Û ¼% 7 \ 1 x2 p ¤ a ) ¸ H 6 x
– î% r
^ ò ] j H
{ 9 r Û ¼% 7 ` ¦ î rà Ô l \ u © \ ¦ 7 x £ # Ä »´ òô Ç
{ r 9 Û ¼% s 7 u © \ í Ê÷ < &# Qe Ht ô Ç . s H u © _ n 7 Ðo
{ s 9 כ ¹½ ¨÷ & H+ AI þ ¦° \ Æ ú Ò ¦e Ht \ ¦ > a ) .
12 12.1
• l 0 x_ p "
S î $ X
` í ¦ Ð © l 0 AK r Û ¼% 7 r É î r à Ô\ @ /ô ÇY
t > ] j ` ¦y כ © ¹½ ÉÃ + ºe .
Ç ø mS y ð ô ø
ÇS m y ð º
• n Û ¼ß ¼_ : ¤f £
ç – F æ ¼l 0 x p .
– \ V1)
{ 9 ` ¦í Ê < ¦e Hn 7 Ðo H rà î Ô0 Au Ð 6 x½ Éà + º\ O .
– f ] ] X X H` ¦] j/ Nô B Ç .
– \ V2)
{ 9 r Û ¼ 7 % r É ¸f ô Ç ë ß î rà Ô÷ & ¸2 ¤] jô ǽ Éà + ºe .
• n Û ¼ß ¼{ Ø 9 ¦§ 4 r É Ð: x^ ¦2 ¤é 0 ß A Ðs À Ò# Q . •
{ r 9 Û ¼% [ 7 > O Ô t& q h
• ¶ û ¸Ä ºr Û ¼% 7 rÂ É Òh AM :r Û ¼% ` 7 ¦ Ò o # ¸ H
{ 9 r Û ¼% 7 ` ¦ 1 xÜ l ¼ Ð î rà Ôô Ç .
– { ì 9 Í ø 6 x \ > # Qb G> Ð# × ¦ כ ? 3
– 7 o H &
h { 9 r Û ¼% 7 ` ¦Ó to ü & h Ð ¸$ © © u \ # Qb G> $ ½ © É + כ ?
– j þ H\ ] X H an ) 7 Ðo ½ ¨ ¸: n 7 Ðo \ /ô @ Ç èá Ôà ÔJ ?# QH r
•
{ 9 r Û ¼% 7 r É Ð: x# Qé > ß Ð½ ¨$
÷ í &# Qe .
– rÛ ¼% 7 ^
{ _ 9 s ^ ¦(SWOFT, Sys tem-Wide Open-File Table):
{ _ 9 FCB 4 _ ¤ r` : ¦Ä »t H_ s ^ ¦
– · 4 ÿ 1. u © ½ ¨1 xl l (device driver)ü < ' X O à Ô% o l : u © ½ ¨1 xl l H % l i Ð" f 0 © A à ºï r_ "
§ î
` î ¦ × ¼J ?# Q] j# Ql s K H"
§ î
# î Q Ð Ë ¨# Q × ¼J ?# Q] j# Ql \ ² K ú Å Ò H% ½ i É` + ¦ô Ç .
– Ô á Ð[ jÛ ¼ Z >
{ _ 9 s ^ ¦(PPOFT, Per Process Open-File Table): r Û ¼% 7 ^
_ 9 { s ^ ¦_ Ó` ½ ¦ o v H í ' \ ¦Ä »t H_ s ^ ¦
– · 4 ÿ 2. l r
: { 9 r Û ¼% 7 : { 9 ì Í" ø
§ î
` î ¦ © u ½ ¨1 xl l \ ² ô ú Ç . { 9 ì Í" ø
§ î
\ î H^ ¦2 ¤ 9 { l ü <^ ¦2 ¤¼ æl e Ü ¼9, ^ ¦2 ¤0 Au H Ð : x u © ñ, z ´ ; 2 8 ñ, à ÔÏ þ ñ, ! o' l ñ н ¨$
í a ) .
•
{ Ò 9 t$ q
í – h D FCB\ ¦½ É{ + © ¦K { n © 7 Ðo \ ¦Å Òl 3 % u © РÒ' { 9 # QÌ t q ô Ç 6 §s £ n 7 Ð \ o ¦n Û ¼ß ¼\ r H .
– · 4 ÿ 3.
{ 9 ¸f ¸Ñ t: B ý j X <s ' \ ¦ a ' o ô Ç . B j X <s ' \ H
{ _ 9 ? /6 x ¦ `] j @ô ü Ç
{ r 9 Û ¼ 7½ % ¨ ¸\ @ /ô Ç ¸ H&
ñ Ð\ ¦ Ä »t ô Ç .
{ 9 ½ ¨ ¸ H Ð: x
{ 9 ] j# Q^ ¦ 2 ¤(FCB, File Control Block) é 0 ß A Ð ao ' a ) . FCB\ H
{ _ 9 èÄ » ¶, ] Ý X H] j# Q,
9 { _ 0 Au 1 x` p ¦Ä »t a ) .
– n 7 Ðo \ ¦
{ õ 9 1 x{ l 9 > 2 [/ L å Hr ¼% Û (\ 7 V: Ä »_ Û ¼)s e ¦, Z > ¸_ r Û ¼% 7 ñ ¦` Ø ¦ 6 x Hr Û ¼% (\ 7 V: ¶ û ¸Ä º) ¸e . •
{ \ 9 l P –
{ s 9 2 §` £ ¦s 6 x # n 7 Ðo \ ¦ Ò o
# { 9 \ K { © H Ó` ½ ¦ ¹ Ô 1 Õ ª
{ _ 9 FCB\ ¦ SWOFT\ 4 ¤ ô Ç . SWOFT H y {
9 Õ ª ` כ ¦ á Ô Ð[ jÛ ¼_ à º\ ¦ / ? H\ l P > à º(open count)` ¦Ä »t ô Ç . Õ ª 6 § PPOFT\ £ D h Ó` ½ ¦Æ Ò ô Ç . s Ó\ ½ H SWOFT\ Ä »t ÷ & ¦e H FCB\ @ /ô Ç í ü ' <
{ 9 í ' 1 xs p Ä »t a ) .
• @ /Â Òì r_ î r%
^ ò ] j H s _ ©
{ r 9 Û ¼ 7 % ` ¦ t ¶ " éô Ç . ¶ û ¸Ä º r Û ¼% 7 r FAT, FAT32, É NTFS
{ r 9 Û ¼% 7 ` ¦t " ¶ é 9, Ä »_ Û ¼r Û ¼% 7 r É UFS(Unix File System)` ¦t " ¶ô é Ç .
12.2
Ç
ø mS y ð ô
12.2.1
4 ~ ¿
– P \l r Û ¼% 7 ñØ ¦ r PPOFT\ É D h\ v> Æ Ò ô Ç Ó\ ½ @ /ô Ç í ' \ ¦ ì ͨ ø 8 # Å Ò9, ª s Õ Ê ê
{ 9 ¸ r s É í ' \ ¦ s 6 xô Ç . PPOFT_ Ó` ½ ¦Ä »_ Û ¼\ " f H
{ [ 9 " O
î (file descriptor) ¦, ¶ û ¸Ä º\ " f H
9 { [ ½ t(file handle)s þ ô Ç .
•
{ 9 r Û ¼% 7 ` ¦½ ¨ ³ & l 0 AK î r%
^ ò ] j Hn Û ¼ ß ¼ü <B j ¸o \ # Q &
ñ Ð\ ¦» Ät ô Ç . • n Û ¼ß ¼\ Ä »t ÷ & H&
ñ Ð
•
{ { 9 l
– É Ùç ÃV # a¡ · ´(boot control block):
w Ü ¼ ÐÂ Ò' î r%
^ ò ] j\ ¦Â Òh A l 0 AK כ 9 ¹ Ç& ô
ñ Ð\ ¦# l \ Ä »t ô Ç . + A& þ Ü h ¼ ÐÂ Ò à Ô] j# Q^ ¦2 ¤ r
É w _ ' Í P :^ ¦2 ¤\ $ ÷ © &# Qe . ¸ H
w e ` ¦ כ 9 ¹ H O \ .
– PPOFT_ K { © Ó` ½ ¦ ] jô Ç . – SWOFT_ \ l P > Ã º\ ¦ y èô Ç . –
{ ` 9 ¦ ¸ Há Ô Ð[ jÛ ¼
{ 9 { Ü ¼ Ì t q a
) { ñ 9
& Ð\ ¦n Û ¼ß ¼\ æ ¼ ¦ SWOFT_ Ó` ½ ¦] j ô Ç .
–
p ¤ >V # a¡ · ´(partition control block):
w _ ß ¼l (^ ¦2 ¤Ã º), ^ ¦2 ¤_ ß ¼l , ^ ¦ 2 ¤Ã º, ^ ¦2 ¤ í ' , FCB à º, FCB í ' 1 xõ p ° ú r
É w _ &
ñ Ð\ ¦Ä »t H^ ¦ 2 ¤s .
12.2.2
X
ÅÊ Ó Ý Æ ØÊ U Ë S
• y
w r
É { r 9 Û ¼% 7 ` ¦ í ʽ < É Ã + º ¸ e ¦ (“cooked”), í Ê < t · §` ú ¦ (“raw”) à º ¸e .
– n 7 Ðo ½ ¨ ¸
• é "r ¶ n Û ¼ß ¼(raw disk)\ ¦Õ ª@ / Ð 6 x H
Ä â º ¸e .
– FCB: NTFS\
Ä â º\ H
w ] j# Q ^2 ¦ ¤ ? /\ $ ÷ © &t ë Ð ß : x r
É ] j# Q^ ¦ 2 ¤ Z õ > ¸ Ð$ © a ) .
– \ V1) Ä »_ Û ¼_ Û ¼ / כ Nç B ß – V \2) # Q X " <s ' Z s Û ¼ H ^ & h + Ad þ ¦ ` 6 x l 0 AK ¶ " ér n Û ¼ß ¼\ ¦ 6 x H
Ä â º e .
• FCB\ ¦ UFS\ " f H inode ô Ç . • Å Òl % 3 u © \ Ä »t ÷ & H&
ñ Ð –
w _ s ^ ¦: î rà Ô ay )
w \ @ /ô Ç
ñ & Ð\ ¦Ä »t H_ s ^ ¦
• Ò Âà Ô&
ñ Ð\ ¦Z > ¸
w \ $ © H
Ä â º ¸e . 4
• Ð: x Òh A½ ÉM + :\ H
{ r 9 Û ¼% 7 u © ½ ¨1 xl l z ´ ' ÷ &l I © s Ù ¼ Ð ^ + Ad þ ` ¦ 6 xô Ç .
– Ò Ål % 3 u © ao ' ü < ð Í t ø Ðü @Â Òé ¼ ß # o µ ÏÒ 1 t½ q ÉÃ + ºe .
• × æ Â Òh A` ¦ l 0 AK " f H Â Òà Ô
w \ # Q
{ 9 r Û ¼% 7 ` ¦ s K H Â Òà Ô & F h l (boot loader) e # Q ô Ç .
–
{ ` 9 ¦Ò t$ q
½ í ÉM + :\ H
{ _ 9 ß ¼l \ ¦· Ã ú º O \ H
Ä â º ´ § ú . • \ V8 ¤` £ ¦ # þ j& & h ½ h Ë~ + Ód ½ ` ¦ 6 x / Nç B s ß Â Ò7 ¤½ á Éà + ºe . s % ! \ 3 V8 ¤ £ &# ÷ QS X Ð a/ ) Nç B s ß Â Ò7 ¤ á Ð H / Nç B Ü ß ¼ Ðs 1 x½ l Éà + ºe t ë r ß ç s ß ´ § ú s è ¸ a ) . •
{ 9 4 ¤ % ! ß 3 ¼l \ ¦ &
S ñ X > \ V8 ¤ £ ÉÃ + ½ ºe # Q ¸
{ 9 _ ß ¼l r ç s ß
â H õ d\ ½ ÉÃ + ºe . s ` כ ¦@ /q K z ´] jß ¼l Ð ´ § ú r/ É Nç B ` ß ¦p o S X ÐK Å Ò ? /Â Ò é ¼ ß # o ë H] j µ ÏÒ 1 t½ q É + Ã ºe . • s ë H] j\ ¦F G4 ¤ l Y
/ > Nç B ` ß ¦ o Û ¼à Ô + AI þ Ð Ä »t # / Nç B ` ß ¦ ½ É{ + © K × ¦Ã ºe .
• î% r
^ ò ] j& V ` , ¦ í Ê < HÀ Òà Ô
w rr É Û ¼ 7 % s  Òh A| cM ¨ : 1 xÜ l ¼ Ð î rà Ô÷ &9, r
É w rÂ É Òh AM : 1 xÜ l ¼ Ð î rà Ô÷ & × æ\ à º 1 xÜ l ¼ Ð î rÔ à a ) . • î% r
^ ò ] j HÅ Òl % 3 u © \ î rà Ô_ s ^ ¦` ¦Ä »t Ç ô .
12.3
q O ð ºP ô
12.3.1
Å] Ò ùP k ²
• é © í ß Hô Ç~ ÓZ ½ O r É
{ s 9 2 §õ £ X <s ' ^ ¦2 ¤\ @ /ô Ç í ' н ¨$
í a ) + Ao þ Û ¼à Ô\ ¦Ä »t H s כ .
• & © h –
{ ] 9 X Hr ç s ß Ø Ô .
• + Ao þ Û ¼à Ô\ " f: ¤& £
ñ
{ 9 ` ¦¹ Ôl 1 0 AK " f H A þ + Ò os 9 כ ¹ . ¢ ¸ô Ç
{ 9 ` ¦Ò t$ q
½ í ÉM + :\ H + A þ Ò o` ¦ # ° ú rs É 2 §_ £
{ s 9 \ O Ht # ô Ç . s s כ + Ao þ Û ¼à Ô_ © Hé ß & s h .
–
{ \ 9 @ /ô Çf ] ] X X Hõ í H Ò o` ¦ ¸¿ º " t ¶ô é Ç . – n 7 Ðo Ó\ ½ Hr 0 Au ü <ß ¼l ë Ä ß »t Ç ô .
• n 7 Ðo Ó` ½ ¦F 6 x l 0 AK ] j a ) Ó ½ r É I © ÐÄ »t ½ Éà + ºe . ¢ ¸ô Ç Ò oq 6 x` ¦× ¦s l 0 AK " f H t } Ó` ½ ¦ Ó\ ½ ` U ´Ã ºe . ¢ ¸ H o Û ¼à Ô+ AI þ л Ät ½ Éà + ºe .
12.4.2
Å+ ì Ƕ s £R s ê
•
{ ` 9 ¦n Û ¼ß ¼^ ¦2 ¤_ o Û ¼à Ô+ AI þ н É{ + © 9, n 7 Ðo Ó\ ½ H' Í P :^ ¦2 ¤õ t } ^ ¦ ¤\ 2 @ /ô Ç í ' ë Ä ß »t ô Ç . y ^ ¦2 ¤? /\ H §^ £ 6 ¦2 ¤` ¦ o v H í ' \ ¦Ä »t ô Ç .
• + Ao þ Û ¼à Ô_ é & ß ` h ¦G F4 ¤ l 0 AK 6 x a ) Ó ½ r É èá Ôà ÔJ ?# Q& Ü h ¼ Ð Hr ô Ç . • ñ &§
= > ao ) Û ¼à Ô\ ¦Ä »t s Ò o` ¦½ Éà + ºe t ë & ß
§ ñ =` > ¦Ä »t Hq 6 xs Æ Ò Ð èכ ¹ a ) . ë ,
ß { 9 3 q2 l ¤` ¦&
§ ñ = > a+ ) AI þ ÐØ ¦§ ½ 4 ÉM + : HZ > ¸_ &
§ ñ =õ > &
s ñ 9כ ¹\ O .
• & © h – @ ü Òé ¼ ß # o µ ÏÒ 1 t q t · § ú H . ? / Òé ¼ ß # o Hµ ÏÒ 1 t½ q Éà + ºe t ë Á ß ºr ½ Éà + ºe . –
{ _ 9 Ò t$ q
õ í ] j ~ 1 .
12.3.2
A 0S ? _T ÷ § u
– s~ Ód ½ r
É { 9 _ ß ¼l o\ @ /K ~ > 1 @ / ½ % ÉÃ + ºe .
• K r _ s ^ ¦` ¦s 6 x # n 7 Ðo \ ¦½ ¨ ³½ & Éà + º e .
• é & ß h
• Ò or ç s ß Ø Ô9, ¶ { ú õ 9 ] j ¸6 xs . K ß ë r Ø æ[ të H] j\ ¦K K ô Ç .
12.4
£R ¶ s êU s0 ê É n
12.4.1
Å ì ׶ Ò £R s ê
–
{ \ 9 @ /ô Çí H Ò oë t ß ¶ " éô Ç . f ] ] X X H r É o Û ¼à Ô\ ¹ Ô 1 H~ ÓZ ½ µ O Ú 1 \ \ O . – ú ´ § r/ É Nç B s ß í ' ° `כ ú ¦$ © l 0 AK x 6 a ) . s ` כ ¦F G4 ¤ l 0 AK ^ ¦2 ¤[ t` þ ¦Ó ü Q9 # t þ QÛ ¼' é 0 ß A н É{ + ½ © Éà + ºe . 9 t þ QÛ ¼ ~ ' ÓZ ½ O rq É 2 ¤? / Òé ¼ ß # oë H] j µ ÏÒ 1 t q ë t ß ³F & V o , 6 x÷ & ¦e .
• s ~ Ód ½ \ " f Hy
{ ` 9 ¦ 5 q Å a/ ) Nç B \ ß ½ É{ + ô © Ç . 1 x& l Å h Òl % 3 u © ao ' ë H] jü <Ä » .
– ø @$
í ¸b # Q . í ' ° כs ú ë ß H < ÷ © &# Q ¸
{ 9 ^ H < © a ) . s ` כ ¦F G ¤ 4 l 0 AK s × æ o Û ¼à Ô ÐÄ »t ½ Éà + º t e ë s ß
Ä â º\ H í ' \ ¦$ © l 0 A Ç ô ¸! QK × ¼ 8& .
• / Nç B ` ß ¦¹ Ôl 1 0 AK f Ë[ . t` þ ¦» Ät K 9, Å Òl % 3 u © ao ' ü < ð Í t ø Ðþ j í& ½ h Ë, þ + j& & h ½ h Ë, + j þ & ½ h Ë~ + ÓZ ½ ` O ¦ ¸¿ º 6 x½ Éà + ºe . • é & ß h 5
• \ V) FAT
<³ ð 12.1> n Û ¼ß ¼½ É{ + ~ © ÓZ ½ _ O $
0 í xq p §: ] X H5 q Å ¸ 5 q½ Å É{ + © ½ É{ + Ò © o ½ É{ + © H í ºÃ Ä º Ð: x Ð: x ] f X ºÃ Ä º∗ ? § £ ºÃ Ä º
– MSDOS\ " f 6 xô Ç ½ É{ + ~ © ÓZ ½ O – n Û ¼ß ¼_ { 9  Òì r\ ^ ¦2 ¤\ @ /ô Ç_ s ^ ¦` ¦ Ä »t ô Ç . nÛ ¼ß ¼_ ^ ¦2 ¤ s _ s ^ ¦\ Ç ô Ós ½ Ä »t ÷ &9, ^ ¦2 ¤ ñ\ _ K Ò o a ) .
*:
{ 9 ^ 5 q/ Å Nç B \ ß $ ÷ © &# Qe ` ¦
Ä â º
– n 7 Ðo Ó\ ½ H
{ _ 9 ' Í P :^ ¦2 ¤ ñ ¦Ä \ »t ô Ç . s ^ ¦2 ¤ ñ\ K { © H_ s ¦_ ^ Ó\ ½ H
{ _ 9 6 §^ £ ¦2 ¤ ñ\ ¦Ä »t Ç ô .
{ 9 _ t } ^ ¦2 ¤\ K { © H_ s ¦_ ^ Ó\ ½ H
{ _ 9 = Q` å ¦ ? / H: ¤Ã £ ºô Ç ° כs ú Ä »t a ) .
•
{ j 9 P :^ ¦2 ¤` ¦{ l 9 0 AK { 9 H^ ¦2 ¤_ Ã º – 5 q½ Å É{ + : 1 © – ½ É{ + : j − 1 © – Ò o ½ É{ + : i + 1, # © l " f i Hj^ ¦2 ¤` ¦{ l 9 AK 0 { 9 HÒ o ^ ¦2 ¤_ Ã º
– 6 x÷ &t · § ú H^ ¦2 ¤\ K { © H_ s ^ ¦ Ó ½ _ ° כ ú r 0s É . ^ ¦2 ¤_ ½ É{ + © r_ É s ^ ¦\ " f ° כs ú 0 Ó` ½ ¦¹ Ô 1 ½ É{ + K © ï r .
• + ½{ É ~ © ÓZ ½ _ O é © & ß ` h ¦ ¸¿ º ¸6 Ö x l 0 AK # Q ÓZ ½ ~ ` O ¦ Êa < 6 x H
Ä â º e .
– Ð r É Ò o` ¦0 AK FAT` ¦H r # Ç ô . 12.4.3
– V \) r
É { \ 9 @ /K " f H 5 q½ Å É{ + ~ © ÓZ ½ ` O ¦ 6 x ¦
{ 9 s & t Ò o ½ É{ + ~ © ÓZ ½ Ü O ¼ Ð ¨ ô 8 Ç .
ß t à Ŷ £R s ê
• Ò o ½ É{ + © rn É Û ¼ß ¼_ ô Ç^ ¦2 ¤\
{ 9 _ Qt ¦2 ^ ¤\ @ /ô Ç í ' \ ¦Ä »t H~ ÓZ ½ s O . s ^ ¦ 2 ¤` ¦a cê Ë >¡ · ´s ô Ç . • Ò o ½ É{ + ~ © ÓZ ½ O r
É { 9 \ @ /ô Çf ] ] X H X ` ¦6 xs > K ï r .
Å Ã Ý « må ËP ¾
12.5.1
² R s ' ð [
• qà Ô 7 ' (bit vector) ~ ÓZ ½ \ O " f H y ^ ¦2 ¤ 1q à Ô\ ¦ 6 x # ^ ¦2 ¤_ ½ É{ + # © Â Ò\ ¦ p · . ¦2 ^ ¤s I © s s ° כs ú 1s ¦, ½ É{ + ÷ © &# Qe ¼ Ü 0s .
• © & : Ò h o ½ É{ + ~ © ÓZ ½ O r É ½ É{ + ~ © ÓZ ½ _ O & © ` h ¦ ¸¿ º t ¦e Ü ¼9, # l \ Æ Ò Ð rf É ] ] X X H ` ¦t ¶ " éô Ç .
• © & : ' h Í P : ^ ¦2 ¤` ¦¹ Ôl 1 é í ß H 9 ´ òÖ ¦ s h & . s כ rô É Ç0 >× ¼? /\ " fq à Ô_ ° כs ú 1 0 Í ' Au \ ¦¹ Ô 1 Å Ò Hl > "
§ î
# î Q Ð: x] j/ N÷ B & M l :ë Hs .
• ß é& : Ò h o ^ ¦2 ¤Ä »t \ ¦0 Aô Ç/ Nç B ß ¸! QK × ¼ r > F ô Ç . • Ò o ^ ¦2 ¤_ ß ¼l – ~ Ód ½ : % 6 §\ £ Hn Û ¼ß ¼_ ô Ç^ ¦2 ¤ë Ò ß o ^ ¦2 ¤Ü ¼ н É{ + ô © Ç . ë ß s s © כ 9 ¹ o Û ¼à Ô+ AI þ ÐÒ o ^ ¦2 ¤` ¦Ä »t ô Ç .
• qà Ô7 ' ~ ÓZ ½ O rs É 7 ' \ ¦ ¸¿ ºÅ Òl % 3 u © \ »t Ä ½ É +
Ä â º\ ë ´ ß òÖ ¦& Ü h ¼ Ð 6 x½ ÉÃ + ºe . 12.5.2
– é > ß Ò o ~ Ód ½ : é > ß _ Ò o ^ ¦2 ¤` ¦Ä » t H~ Ód ½ s .
Å+ ì ÇP s ²
• ^ ¦2 ¤` ¦ o Û ¼à Ô+ AI þ ÐÄ »t ¦, ' Í ¦2 ^ ¤\ @ /ô Ç í ' \ ¦î r%
^ ò ] j Å Òl % 3 u © \ »t Ä H~ Ód ½ s .
– ½ Ë~ + Ód ½ : Ò o ^ ¦2 ¤_ 15> h&
ñ ¸_ í ' \ ¦ inode\ Ä »t H~ Ód ½ Ü ¼ Ð, s × æ@ /  Òì r Ó ½ rf É ] Ò X o ` ¦Ä »t ¦, Qt Ó ½ r É é > ß Ò o ~ Ód ½ ` ¦ 6 x H~ Ód ½ s . s _ כ & © h r É rß É ¼l _
{ 9 rZ É > ¸_ o Ò ^ ¦2 ¤s 9 כ ¹\ O . 12.4.4
12.5
• ^ ¦2 ¤3 q2 l ¤\ @ /ô Çí H r ´ òÖ ¦& s h t 3 w l 9, Ò# Å Q ß ¼l _ / Nç B ` ß ¦¹ Ôl 1 # Q§ > . • s~ Ód ½ r É Ó ½ © ' ^ Í ¦2 ¤` ¦½ É{ + \ © 6 x H FATõ ° ú r½ É É{ + ~ © Ód ½ \ " fë ß 6 x½ Éà + ºe .
Ë R V « Ö
• n Û ¼ß ¼/ Nç B ½ ß É{ + ~ © ÓZ ½ _ O $
0 í x p r$ É / © Nç B ´ ß òÖ ¦ ] õ H X 5 q Å ¸¿ º t £ ¤ 8 \ " f ¦ 9 a ) .
12.5.3
õ § ÜË s S
• n> h_ ^ ¦2 ¤Å Ò è\ ¦' Í ^ ¦2 ¤\ $ © ¦, n h× > æ t } Å Ò è HÕ ª 6 § n − 1> £ h_ ^ ¦2 ¤ Ò Å è\ ¦ í Ê < ¦e H^ ¦2 ¤` ¦ o v ¸2 ¤Ä »t H~ Ód ½ s .
• X ]H 5 q Å ¸ 8 ¤ £ \ " f ½ É© + { ~ ÓZ ½ ` O ¦ q § 5 q ½ Å É{ + s © Ä © ºÃ º . Õ ª Q
{ 9 _ o ¦@ \ /% l # Q§ > ¦, n Û ¼ß ¼/ Nç B ½ ß É{ + s © # Q§ > . ³ ð 12.1 Ð Ã ¸ 6
12.5.4
Æ ØË U Ê S
14.2.2
• SSTF(Shortest-Seek-Time-First) · ú ¦o 7 § £ r É ÐÒ Ã o ç r s ß © r É Â כ Ò' $ % o H~ Ód ½ s .
• 5 q½ Å É{ + \ © " f 6 x½ Éà + ºe H~ ÓZ ½ Ü O ¼ Ð" f, ^ ¦ 2 ¤` ¦ o Û ¼à Ô Ð» Ät l Ð H / Nç B ` ß ¦ o Û ¼à Ô ÐÄ »t ô Ç . s M : / Nç B ß ' Í ¦2 ^ ¤Å Ò èü <8 x^ ú ¦2 ¤º Ã\ ¦Ä »t ô Ç .
• \ V) Û ¼H × ¦a A õ 65, 67, 37, 14, 98, 122, 124, 183
£ 7 % ×$ * ×Ä © ¿
14 14.1
^ ¹ §f ¡ e : 236
â g «æ «Ä © ¿
• Ï UÅ ã Òa > Ë ³ & s © µ ÏÒ 1 t½ q ÉÃ + ºe . • SSTF · ú ¦o 7 § £ rþ É j& h r É m .
• n Û ¼ß ¼ H Ho 7 & Ü h ¼ ÐB Ä ºH { 9 " ¶^ é ¦2 ¤_ C P \ Ðç Å ß Ò÷ &9, s ^ ¦! 3 r É 5 x_ Å þ j èé 0 ß As . ¦2 ^ ¤_ ß ¼l H Ð: x 512 KBs .
37, 14, 65, 67, 98, 122, 124, 183 ^ ¹ §f ¡ e : 208
• s ^ ¦2 ¤[ t þ rn É Û ¼ß ¼_ o l' ! Ð © a ) . Õ ª Q ¦| Ô Ó! ¾ o' l _ rF > 0 x$ p
õ í à ÔÏ { þ ! © l o' _ à º \ ¦Ã ºe Ü ¼Ù ¼ Ð Ho 7 & í h H" f\ ¦Ó to ü & í h H" f Ð © H כ s~ t 1 ú § · .
14.2
SSTF > ú ÚË n  S
14.2.3
SCAN > ú ÚË n  S
• ¼ Û p· ± ú ¦o 7 § £ rô É ÇA ¤= á Q\ å " f rA É ¤= á QÜ å ¼ Ðs x l 1 " f% o ô Ç 6 §~ £ Ó ½ Ó` ¾ ¦ Ë ¨# Q% o H Ód ½ ~ s . r´ É ú ÐÓ qo s Z s ' · ú ¦o 7 §s £ Ç ô .
â g «æ «â «X
·ÿ ä b
• n Û ¼ß ¼_ ] X Hr ç \ ß © H%
ò Ó` ¾ ¦Å Ò H כ r É ÐÒ Ã or ç (seek time)s ß .
• V \) 0Ü ¼ ÐK × ¼ ¹ §f ¡ s ¦e ` ¦M :Û ¼H × ¦a A õ 37, 14, 0, 65, 67, 98, 122, 124, 183
• n Û ¼ß ¼{ Ø 9 ¦§ כ 4 ¹' A õ r É 6 §õ £ ° ú r& É
ñ Ð\ ¦t &
ñ . Ç ô
^ ¹ §f ¡ e : 236 • å =\ Q 0 >| 9 Ã º2 ¤D h\ v> ¸ Ì Ã Hכ ¹' A` õ ¦ Ð% o K Å Òt 3 wô l Ç . " f= Q\ å 0 >& ` ¦ :Ç M ©\ " f@ /l ¦e Hכ ¹' A õ r@ É /Â Òì rì Í@ ø /A ¤ á QÂ å = Òì r\ e ` ¦ s כ . s " ¶o é \ ¦s 6 xô Ç s כ C-SCANs .
– í _ ß Ä »+ A: { þ 9 § ¢ 4 ¸ HØ ¦§ 4 – n Û ¼ß ¼? /_ 0 Au ¢ ¸ HÅ Ò è – Å Òl % 3 u © ? /_ 0 Au – 5 x½ Å É + s à Ô_ à º
• V \) 199Ü ¼ ÐK × ¼ ¹ §f ¡ s ¦e ` ¦M : C-SCAN ú · ¦o 7 §_ £ Û ¼H × ¦a A õ
• n Û ¼ß ¼× ¼ s Ú Ôü <] j# Ql ¸¿ º 6 x 0 x p { 9 Ø ¦§ כ 4 ¹' A õ r7 É ¤r £ % o | cà ¨ ºe . Õ ª Q Ñ t× ü æ\ r É ` כ ¦" fq Û ¼ ¦e Ü ¼ כ ¹ A õ ' rÇ É ©\ " f@ /l # ô Ç .
65, 67, 98, 122, 124, 183, 199, 0, 14, 37 ^ ¹ §f ¡ e : 382 • z] ´ j½ ¨ ³\ & " f H 0¢ ¸ H 199 t s 1 x l t · § ú H . s X > O H ` כ ¦ LOOK Û ¼H × ¦a A· ú ¦o 7 § £ s ô Ç .
• \ V) n Û ¼ß ¼K × ¼_ ³F & 0 Au 53 à ÔÏ s þ ¦, n Û ¼ß ¼_ 8 xà ú ÔÏ Ã þ º 200s ¦ 9, n Û ¼ß ¼Ç © \ e Hכ ¹' A_ õ Ò Å è 6 §õ £ ° ú ¦ .
• V \) 199Ü ¼ ÐK × ¼ ¹ §f ¡ s ¦e ` ¦M : C-LOOK ú · ¦o 7 §_ £ Û ¼H × ¦a A õ
98, 183, 37, 122, 14, 124, 65, 67
65, 67, 98, 122, 124, 183, 14, 37 14.2.1
FCFS > ú ÚË n  S
^ ¹ §f ¡ e : 322
• é © í ß Hô Ç~ ÓZ ½ s O t ë K ß × ¼¹ §f ¡ e ` ¦þ j& h o t · §l ú M :ë H\ $
0 í xs p i ¦Ã ºe .
14.3
O ± å ËP ¾
• \ V) Û ¼H × ¦a A õ
14.3.1
O ± º Ê » Ë S
• ü Óo t & h íÐ h A: n Û ¼ß ¼\ ¦n Û ¼ß ¼] j# Ql { 9 ¦ tà þ j ºe ¸2 ¤! l o' é 0 ß A Ð ¾ º H \ ` O ¦´ ô ú Ç . r´ É ú Ð$ / L å íÐ h A(low-level formatting)s Ç ô . Ð: xÓ to ü & Ü h ¼ Ð íÐ a ) I © Ð/ N B \ © " f
98, 183, 37, 122, 14, 124, 65, 67 ^ ¹ §f ¡ e : 640 7
Ø ¦ a ) . ! l o' H Ð: xK 8, X <s ' %
% ò (512 i s à Ô), à ÔY U{ 9 Q н ¨$
í a ) . K 8ü <à ÔY U{ 9 Q\ H! o' l ñ, ¸À Ó&
& ñ
ñ ï× ¼1 x` p ¦l 2 ¤ l 0 A K 6 x a ) . • 7 o H & h íÐ h A:
w ` ¦ë ß HÊ ê\ íl
{ r 9 Û ¼% 7 ` ¦& F h Hõ &
` ñ ¦´ ô ú Ç . 14.3.2
¼² ÷ § u ×
• (É Ó' _ " ¶` é ¦ v  Òà ÔÛ ¼à Ôê á Á Ô ÐÕ ªÏ þ r É r Û ¼% 7 _ ¸ H½ ¨$
כ í ¹ è\ ¦ íl o ¦, n Û ¼ß ¼ \ " fî r%
^ ò ] j& V ` , ¦Å Òl % 3 u © \ & F h ô Ç 6 §& £ V ` , ¦z ´' ô Ç . •  Òà ÔÛ ¼à Ôê á Á Ô ÐÕ ªÏ þ r ROM\ É & F h ÷ &# Qe . s _ כ & © É h r 6 §õ £ ° ú . – % 6 §Â £ Òh A÷ &% ` 3 ¦: M0 Au ¦&
÷ ñ &# Qe # Q z ´ ' l ~ 1 . – ROM r{ É l 9 6 xl % 3 u © s Ù ¼ Ð s Q Û ¼\ y % ÷ i &t · § ú H . Õ ª Q ROM\ & F h  Òà ÔÛ ¼à Ôê á Á Ô ÐÕ ªÏ þ ¦ `
â l # Q§ > . s ë H] j M :ë H\  Òà ÔÛ ¼ à Ôê á Á Ô ÐÕ ªÏ _ þ {  9 Òë ROM\ ß & F h ¦, Q t Hn Û ¼ß ¼\ Ä »t ô Ç . ROM\ e Há Ô ÐÕ ªÏ þ _ % ½ i É + rs É á Ô ÐÕ ªÏ ` þ ¦Å Òl % 3 u © \ & F h # z ´ ' H s כ . •  Òà ÔÛ ¼à Ôê á Á Ô ÐÕ ªÏ s þ & F h ÷ &# Q e H n Û ¼ß ¼ ¦2 ^ ¤` ¦Â Òà Ô^ ¦2 ¤s 9,  Òà Ô^ ¦2 ¤s e Hn Û ¼ß ¼\ ¦À Òà Ôn Û ¼ß ¼¸ ¢ H rÛ ¼% n 7 Û ¼ß ¼ ô Ç . 14.3.3
ÚS s ÷ s÷ ë § u ×
• MS-DOS\
Ä â º\ H FAT _ s ^ ¦\ Ô ¦| Ó^ ¾ ¦2 ¤` ¦ l 2 ¤ # 6 x t · § ú ¸2 ¤ô Ç . 6 x ¸× æ\ Ô ¦ Ó^ ¾ | ¦2 ¤` ¦µ Ï| 1
: ¤Ã £ ºô Çá Ô ÐÕ ªÏ ` þ ¦Ã º' # s ` כ ¦Ô ¦| Ó^ ¾ ¦2 ¤` ¦l 2 ¤ô Ç 6 §\ £ r 6 x K ô Ç . • SCSIü <° ú r É Ð 4 ¤¸ ô ú Çn Û ¼ß ¼ H# ì r! o' l \ ¦ Ä »t # 1 xÜ l ¼ Ð §^ # 6 xô Ç . 7 ¤, Ô £ ¦| Ó ¾ l ! o' \ ¦µ Ï| 1
Õ ª z ´` ¦l 2 ¤ ¦, s ! o' l ü < # ì r! l o' \ ¦ aK ' Z ~ H . Õ ª 6 §Â £ Ò' s l ! o' \ ¦] H X 1 xÜ l ¼ Ð aô ' Ç# ì r! o' l \ ¦ 6 xô Ç . • # ì r! o' l Y o O b # Q4 Re Ü ¼ n Û ¼ß ¼Û ¼H × ¦ A· a ú ¦o 7 §_ £ r% É
ò Ó` ¾ ¦p ; 2 . " f! o' l l ` l (sector slipping) l Z ` O ¦ 6 xô Ç . à ÔÏ þ # ì r! o' l \ ¦¿ º# QÔ ¦| Ó! ¾ o' l s Ê ê_ ¸ H! o' l ¦Õ \ ª _ כ 6 §! £ o' l Ð ÷ © & ¸2 ¤ 6 xô Ç .
8