home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-11-06 | 66.1 KB | 1,181 lines |
-
-
-
- âïÇéÇ 12
-
- EîìÄâÄÅÉÄûàææÄÉì¢à æêæÆàî¢F
-
-
-
-
- é ¬½áßß¿τÑ߬«⌐ »«ßΓá¡«ó¬Ñ ñ½∩ ß¿ßΓѼδ UNIX »αÑñ»«½áúáÑΓß∩ ¿ß»«½∞º«óá¡¿Ñ
- «ñ¡«»α«µÑßß«α¡«⌐ áασ¿ΓѬΓπαδ, ß«ßΓ«∩ΘÑ⌐ ¿º «ñ¡«ú« ûÅ, »á¼∩Γ¿ ¿ »Ñα¿ΣÑα¿⌐¡δσ
- πßΓα«⌐ßΓó. î¡«ú«»α«µÑßß«α¡á∩ áασ¿ΓѬΓπαá, ¡á»α«Γ¿ó, ó¬½ετáÑΓ ó ßÑí∩ ñóá ¿
- í«½ÑÑ ûÅ, ß«ó¼ÑßΓ¡« ¿ß»«½∞ºπεΘ¿σ «íΘπε »á¼∩Γ∞ ¿ »Ñα¿ΣÑα¿⌐¡δÑ πßΓα«⌐ßΓóá (É¿-
- ßπ¡«¬ 12.1), αáß»«½áúá∩ í«½∞Φ¿¼¿ 󫺼«ª¡«ßΓ∩¼¿ ó πóѽ¿τÑ¡¿¿ »α«¿ºó«ñ¿Γѽ∞-
- ¡«ßΓ¿ ß¿ßΓѼδ, ßó∩ºá¡¡δ¼¿ ß «ñ¡«óαѼѡ¡δ¼ ¿ß»«½¡Ñ¡¿Ñ¼ »α«µÑßß«ó ¡á αạδσ
- ûÅ. èáªñδ⌐ ûÅ Σπ¡¬µ¿«¡¿απÑΓ ¡Ñºáó¿ß¿¼« «Γ ñαπú¿σ, ¡« óßÑ «¡¿ αáí«ΓáεΓ ß «ñ-
- ¡¿¼ ¿ ΓѼ ªÑ ∩ñα«¼ «»Ñαᵿ«¡¡«⌐ ß¿ßΓѼδ. Å«óÑñÑ¡¿Ñ »α«µÑßß«ó ó Γᬫ⌐ ß¿ßΓѼÑ
- ¡¿τѼ ¡Ñ «Γ½¿τáÑΓß∩ «Γ »«óÑñÑ¡¿∩ ó «ñ¡«»α«µÑßß«α¡«⌐ ß¿ßΓÑ¼Ñ - ß ß«σαá¡Ñ¡¿Ñ¼
- ßѼá¡Γ¿¬¿ «íαáΘÑ¡¿∩ ¬ ¬áªñ«⌐ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ - ¡« »α¿ φΓ«¼ «¡¿ ¼«úπΓ «Γ¬-
- αδΓ« »ÑαѼÑΘáΓ∞ß∩ ß «ñ¡«ú« »α«µÑßß«αá ¡á ñαπú«⌐. ò«Γ∩, ¬ ß«ªá½Ñ¡¿ε, φΓ« ¡Ñ
- »α¿ó«ñ¿Γ ¬ ß¡¿ªÑ¡¿ε ºáΓαáΓ »α«µÑßß«α¡«ú« óαѼѡ¿, ßó∩ºá¡¡«ú« ß óδ»«½¡Ñ¡¿Ñ¼
- »α«µÑßßá. ÄΓñѽ∞¡δÑ ¼¡«ú«»α«µÑßß«α¡δÑ ß¿ßΓÑ¼δ ¡áºδóáεΓß∩ ß¿ßΓѼἿ ß »α¿ß«Ñ-
- ñ¿¡Ñ¡¡δ¼¿ »α«µÑßß«αἿ, »«ß¬«½∞¬π ó ¡¿σ »Ñα¿ΣÑα¿⌐¡δÑ πßΓα«⌐ßΓóá ñ«ßΓπ»¡δ ¡Ñ
- ñ½∩ óßÑσ »α«µÑßß«α«ó. çá ¿ß¬½ετÑ¡¿Ñ¼ «ß«í« «ú«ó«αÑ¡¡δσ ß½πτáÑó, ó ¡áßΓ«∩ΘÑ⌐
- ú½áóÑ ¡Ñ »α«ó«ñ¿Γß∩ ¡¿¬á¬¿σ αẽ¿τ¿⌐ ¼Ñªñπ ß¿ßΓѼἿ ß »α¿ß«Ññ¿¡Ñ¡¡δ¼¿ »α«-
- µÑßß«αἿ ¿ «ßΓá½∞¡δ¼¿ ¬½áßßἿ ¼¡«ú«»α«µÑßß«α¡δσ ß¿ßΓѼ.
- Åáαώѽ∞¡á∩ αáí«Γá ¡Ñ߬«½∞¬¿σ »α«µÑßß«α«ó ó αѪ¿¼Ñ ∩ñαá »« óδ»«½¡Ñ¡¿ε
- αẽ¿τ¡δσ »α«µÑßß«ó ß«ºñáÑΓ α∩ñ »α«í½Ñ¼, ßó∩ºá¡¡δσ ß ß«σαá¡Ñ¡¿Ñ¼ µÑ½«ßΓ¡«ßΓ¿
- ñá¡¡δσ ¿ αÑΦáѼδσ í½áú«ñáα∩ ¿ß»«½∞º«óá¡¿ε ß««ΓóÑΓßΓóπεΘ¿σ ¼Ñσá¡¿º¼«ó ºáΘ¿Γδ.
- ì¿ªÑ íπñÑΓ »«¬áºá¡«, »«τÑ¼π ¬½áßß¿τÑ߬¿⌐ óáα¿á¡Γ ß¿ßΓѼδ UNIX ¡Ñ ¼«ªÑΓ íδΓ∞
- »α¿¡∩Γ ó ¼¡«ú«»α«µÑßß«α¡δσ ß¿ßΓѼáσ íѺ ó¡ÑßÑ¡¿∩ ¡Ñ«íσ«ñ¿¼δσ ¿º¼Ñ¡Ñ¡¿⌐, á
- Γá¬ªÑ íπñπΓ αáßß¼«ΓαÑ¡δ ñóá óáα¿á¡Γá, »αÑñ¡áº¡áτÑ¡¡δÑ ñ½∩ αáí«Γδ ó π¬áºá¡¡«⌐
- ßαÑñÑ.
-
- ┌───────────┐ ┌───────────┐ ┌───────────┐
- │ Åα«µÑßß«α │ │ Åα«µÑßß«α │ │ Åα«µÑßß«α │
- │ 1 │ │ 2 │ ........... │ n │
- └─────┬─────┘ └─────┬─────┘ └─────┬─────┘
- ──────────┴───────┬───────┴──────────────┬────────────┴───────────
- ┌───┴────┐ ┌───────────┴─────────────┐
- │ Åá¼∩Γ∞ │ │ ÅÑα¿ΣÑα¿⌐¡δÑ πßΓα«⌐ßΓóá │
- └────────┘ └─────────────────────────┘
-
- É¿ßπ¡«¬ 12.1. î¡«ú«»α«µÑßß«α¡á∩ ¬«¡Σ¿úπαᵿ∩
-
-
-
- E12.1 ÅÉÄüïàî¢, æéƒçÇìì¢à æ îìÄâÄÅÉÄûàææÄÉì¢îê æêæÆàîÇîêF
-
- é ú½áóÑ 2 ¼δ ú«ó«α¿½¿ « Γ«¼, τΓ« ºáΘ¿Γá µÑ½«ßΓ¡«ßΓ¿ ßΓαπ¬Γπα ñá¡¡δσ ∩ñαá
- ß¿ßΓѼδ UNIX «íÑß»Ñτ¿óáÑΓß∩ ñóπ¼∩ ß»«ß«íἿ: ∩ñα« ¡Ñ ¼«ªÑΓ óδúαπº¿Γ∞ «ñ¿¡
- »α«µÑßß ¿ »ÑαѬ½ετ¿Γ∞ß∩ ¡á ¬«¡ΓѬßΓ ñαπú«ú«, Ñß½¿ αáí«Γá »α«¿ºó«ñ¿Γß∩ ó αÑ-
- ª¿¼Ñ ∩ñαá, ¬α«¼Ñ Γ«ú«, Ñß½¿ »α¿ óδ»«½¡Ñ¡¿¿ ¬α¿Γ¿τÑ߬«ú« πτáßΓ¬á »α«úαá¼¼δ
- «íαáí«Γτ¿¬ 󫺡¿¬áεΘ¿σ »αÑαδóá¡¿⌐ ¼«ªÑΓ »«óαÑñ¿Γ∞ ßΓαπ¬Γπαδ ñá¡¡δσ ∩ñαá, óßÑ
- 󫺡¿¬áεΘ¿Ñ »αÑαδóá¡¿∩ ΓΘáΓѽ∞¡« ¼á߬¿απεΓß∩. é ¼¡«ú«»α«µÑßß«α¡«⌐ ß¿ßΓѼÑ,
- «ñ¡á¬«, Ñß½¿ ñóá ¿ í«½ÑÑ »α«µÑßß«ó óδ»«½¡∩εΓß∩ «ñ¡«óαѼѡ¡« ó αѪ¿¼Ñ ∩ñαá ¡á
- αạδσ »α«µÑßß«αáσ, ¡áαπΦÑ¡¿Ñ µÑ½«ßΓ¡«ßΓ¿ ∩ñαá ¼«ªÑΓ »α«¿º«⌐Γ¿ ñáªÑ ¡Ñß¼«Γα∩
- ¡á »α¿¡∩Γ¿Ñ ºáΘ¿Γ¡δσ ¼Ñα, ß ñαπú«⌐ ßΓ«α«¡δ, ó «ñ¡«»α«µÑßß«α¡«⌐ ß¿ßΓÑ¼Ñ ó»«½-
- ¡Ñ ñ«ßΓáΓ«τ¡δσ.
-
-
- 362
-
- ┌───────────────────────────────────────────────────────┐
- │ struct queue { │
- │ │
- │ } *bp, *bp1; │
- │ bp1->forp=bp->forp; │
- │ bp1->backp=bp; │
- │ bp->forp=bp1; │
- │ /* αáßß¼«Γα¿ΓÑ ó«º¼«ª¡«ßΓ∞ »ÑαѬ½ετÑ¡¿∩ ¬«¡ΓѬßΓá ó │
- │ * φΓ«¼ ¼ÑßΓÑ */ │
- │ bp1->forp->backp=bp1; │
- └───────────────────────────────────────────────────────┘
-
- É¿ßπ¡«¬ 12.2. 鬽ετÑ¡¿Ñ íπΣÑαá ó ß»¿ß«¬ ß ñó«⌐¡δ¼¿ π¬áºáΓѽ∩¼¿
-
-
- é ¬áτÑßΓóÑ »α¿¼Ñαá αáßß¼«Γα¿¼ Σαáú¼Ñ¡Γ »α«úαá¼¼δ ¿º ú½áóδ 2 (É¿ßπ¡«¬
- 12.2), ó ¬«Γ«α«¼ ¡«óá∩ ßΓαπ¬Γπαá ñá¡¡δσ (π¬áºáΓѽ∞ bp1) »«¼ÑΘáÑΓß∩ ó ß»¿ß«¬
- »«ß½Ñ ßπΘÑßΓóπεΘÑ⌐ ßΓαπ¬Γπαδ (π¬áºáΓѽ∞ bp). ÅαÑñ»«½«ª¿¼, τΓ« φëà Σαáú¼Ñ¡Γ
- óδ»«½¡∩ÑΓß∩ «ñ¡«óαѼѡ¡« ñóπ¼∩ »α«µÑßßἿ ¡á αạδσ ûÅ, »α¿τѼ »α«µÑßß«α A
- »δΓáÑΓß∩ »«¼ÑßΓ¿Γ∞ óß½Ññ ºá ßΓαπ¬Γπα«⌐ bp ßΓαπ¬Γπαπ bpA, á »α«µÑßß«α B -
- ßΓαπ¬Γπαπ bpB. Å« »«ó«ñπ ß«»«ßΓáó½Ñ¡¿∩ íδßΓα«ñÑ⌐ßΓó¿∩ »α«µÑßß«α«ó ¡Ñ »α¿σ«-
- ñ¿Γß∩ ñѽáΓ∞ ¡¿¬á¬¿σ »αÑñ»«½«ªÑ¡¿⌐: 󫺼«ªÑ¡ ñáªÑ ¡á¿σπñΦ¿⌐ ß½πτá⌐, ¬«úñá
- »α«µÑßß«α B ¿ß»«½¡∩ÑΓ 4 ¬«¼á¡ñδ ∩ºδ¬á æ¿, »αѪñÑ τѼ »α«µÑßß«α A ¿ß»«½¡¿Γ
- «ñ¡π. ÅπßΓ∞, ¡á»α¿¼Ñα, óδ»«½¡Ñ¡¿Ñ »α«úαá¼¼δ »α«µÑßß«α«¼ A »α¿«ßΓá¡áó½¿óáÑΓß∩
- ó ßó∩º¿ ß «íαáí«Γ¬«⌐ »αÑαδóá¡¿∩. é αѺπ½∞ΓáΓÑ, ñáªÑ ¡Ñß¼«Γα∩ ¡á í½«¬¿α«ó¬π
- «ßΓá½∞¡δσ »αÑαδóá¡¿⌐, µÑ½«ßΓ¡«ßΓ∞ ñá¡¡δσ íπñÑΓ »«ßΓáó½Ñ¡á »«ñ πú஧π (ó ú½á-
- óÑ 2 φëà ¼«¼Ñ¡Γ πªÑ »«∩ß¡∩½ß∩).
- ƒñα« «í∩ºá¡« πñ«ßΓ«óÑα¿Γ∞ß∩ ó Γ«¼, τΓ« Γᬫú« α«ñá ¡áαπΦÑ¡¿Ñ ¡Ñ ß¼«ªÑΓ
- »α«¿º«⌐Γ¿. àß½¿ ó«»α«ß «í «»áß¡«ßΓ¿ 󫺡¿¬¡«óÑ¡¿∩ ¡áαπΦÑ¡¿∩ µÑ½«ßΓ¡«ßΓ¿ «ß-
- Γáó¿Γ∞ «Γ¬αδΓδ¼, ¬á¬ íδ αÑñ¬« »«ñ«í¡δÑ ¡áαπΦÑ¡¿∩ ¡¿ ß½πτ὿ß∞, ∩ñα« πΓαáΓ¿Γ
- ßó«ε ¡Ñπ∩ºó¿¼«ßΓ∞ ¿ Ñú« »«óÑñÑ¡¿Ñ ßΓá¡ÑΓ ¡Ñ»αÑñ߬áºπѼδ¼. êºíѪáΓ∞ φΓ«ú«
- ¼«ª¡« ΓαѼ∩ ß»«ß«íἿ:
- 1. êß»«½¡∩Γ∞ óßÑ ¬α¿Γ¿τÑ߬¿Ñ «»Ñαᵿ¿ ¡á «ñ¡«¼ »α«µÑßß«αÑ, «»¿αá∩ß∞ ¡á
- ßΓá¡ñáαΓ¡δÑ ¼ÑΓ«ñδ ß«σαá¡Ñ¡¿∩ µÑ½«ßΓ¡«ßΓ¿ ñá¡¡δσ ó «ñ¡«»α«µÑßß«α¡«⌐ ß¿ß-
- ΓѼÑ;
- 2. ÉÑú½á¼Ñ¡Γ¿α«óáΓ∞ ñ«ßΓπ» ¬ ¬α¿Γ¿τÑ߬¿¼ πτáßΓ¬á¼ »α«úαá¼¼δ, ¿ß»«½∞ºπ∩ φ½Ñ-
- ¼Ñ¡Γδ í½«¬¿α«óá¡¿∩ αÑßπαß«ó;
- 3. ôßΓαá¡¿Γ∞ ¬«¡¬παÑ¡µ¿ε ºá ¿ß»«½∞º«óá¡¿Ñ ßΓαπ¬Γπα ñá¡¡δσ »πΓѼ ß««ΓóÑΓßΓ-
- óπεΘÑ⌐ »ÑαÑñѽ¬¿ á½ú«α¿Γ¼«ó.
- ÅÑαóδÑ ñóá ß»«ß«íá ºñÑß∞ ¼δ αáßß¼«Γα¿¼ »«ñα«í¡ÑÑ, ΓαÑΓ∞Ѽπ ß»«ß«íπ íπñÑΓ
- »«ßó∩ΘÑ¡« «Γñѽ∞¡«Ñ π»α᪡ѡ¿Ñ.
-
-
- E12.2 âïÇéì¢ë ê ÅÄäùêìàìì¢ë ÅÉÄûàææÄÉ¢F
-
- æ¿ßΓѼπ ß ñóπ¼∩ »α«µÑßß«αἿ, «ñ¿¡ ¿º ¬«Γ«αδσ - ú½áó¡δ⌐ (master) - ¼«ªÑΓ
- αáí«ΓáΓ∞ ó αѪ¿¼Ñ ∩ñαá, á ñαπú«⌐ - »«ñτ¿¡Ñ¡¡δ⌐ (slave) - Γ«½∞¬« ó αѪ¿¼Ñ ºá-
- ñáτ¿, ó»ÑαóδÑ αÑ὿º«óá½ ¡á ¼áΦ¿¡áσ Γ¿»á VAX 11/780 â«í½ (ß¼. [Goble 81]).
- ¥Γá ß¿ßΓѼá, αÑ὿º«óá¡¡á∩ ó¡áτá½Ñ ¡á ñóπσ ¼áΦ¿¡áσ, »«½πτ¿½á ßó«Ñ ñá½∞¡Ñ⌐ΦÑÑ
- αáºó¿Γ¿Ñ ó ß¿ßΓѼáσ ß «ñ¡¿¼ ú½áó¡δ¼ ¿ ¡Ñ߬«½∞¬¿¼¿ »«ñτ¿¡Ñ¡¡δ¼¿ »α«µÑßß«αἿ.
- â½áó¡δ⌐ »α«µÑßß«α ¡ÑßÑΓ «ΓóÑΓßΓóÑ¡¡«ßΓ∞ ºá «íαáí«Γ¬π óßÑσ «íαáΘÑ¡¿⌐ ¬ «»Ñαá-
- µ¿«¡¡«⌐ ß¿ßΓÑ¼Ñ ¿ óßÑσ »αÑαδóá¡¿⌐. Å«ñτ¿¡Ñ¡¡δÑ »α«µÑßß«αδ óÑñáεΓ óδ»«½¡Ñ¡¿Ñ¼
- »α«µÑßß«ó ó αѪ¿¼Ñ ºáñáτ¿ ¿ ¿¡Σ«α¼¿απεΓ ú½áó¡δ⌐ »α«µÑßß«α « óßÑσ »α«¿ºó«ñ¿-
- ¼δσ «íαáΘÑ¡¿∩σ ¬ ß¿ßΓѼ¡δ¼ Σπ¡¬µ¿∩¼.
- éδí«α »α«µÑßß«αá, ¡á ¬«Γ«α«¼ íπñÑΓ óδ»«½¡∩Γ∞ß∩ ñá¡¡δ⌐ »α«µÑßß, »α«¿ºó«-
- ñ¿Γß∩ ó ß««ΓóÑΓßΓó¿¿ ß á½ú«α¿Γ¼«¼ ñ¿ß»ÑΓτÑα¿ºáµ¿¿ (É¿ßπ¡«¬ 12.3). é ß««ΓóÑΓ-
- ßΓóπεΘÑ⌐ ºá»¿ß¿ Γáí½¿µδ »α«µÑßß«ó »«∩ó½∩ÑΓß∩ ¡«ó«Ñ »«½Ñ, ó ¬«Γ«α«Ñ ºá»¿ßδóá-
- ÑΓß∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«α óδíαá¡¡«ú« »α«µÑßß«αá; »αÑñ»«½«ª¿¼ ñ½∩ »α«ßΓ«Γδ, τΓ« «¡
- »«¬áºδóáÑΓ, ∩ó½∩ÑΓß∩ ½¿ »α«µÑßß«α ú½áó¡δ¼ ¿½¿ »«ñτ¿¡Ñ¡¡δ¼. è«úñá »α«µÑßß
-
- 363
-
- »α«¿ºó«ñ¿Γ «íαáΘÑ¡¿Ñ ¬ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿, óδ»«½¡∩∩ß∞ ¡á »«ñτ¿¡Ñ¡¡«¼ »α«µÑß-
- ß«αÑ, »«ñτ¿¡Ñ¡¡«Ñ ∩ñα« »ÑαÑπßΓá¡áó½¿óáÑΓ º¡áτÑ¡¿Ñ »«½∩ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »α«µÑß-
- ß«αá Γᬿ¼ «íαẫ¼, τΓ«íδ «¡« π¬áºδóὫ ¡á ú½áó¡δ⌐ »α«µÑßß«α, ¿ »ÑαѬ½ετáÑΓ
- ¬«¡ΓѬßΓ ¡á ñαπú¿Ñ »α«µÑßßδ (É¿ßπ¡«¬ 12.4). â½áó¡«Ñ ∩ñα« ºá»π߬áÑΓ ¡á óδ»«½-
- ¡Ñ¡¿Ñ »α«µÑßß ß ¡á¿óδßΦ¿¼ »α¿«α¿ΓÑΓ«¼ ßαÑñ¿ ΓÑσ »α«µÑßß«ó, ¬«Γ«αδÑ ñ«½ª¡δ
- óδ»«½¡∩Γ∞ß∩ ¡á ú½áó¡«¼ »α«µÑßß«αÑ. è«úñá óδ»«½¡Ñ¡¿Ñ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ ºáóÑα-
- ΦáÑΓß∩, »«½Ñ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »α«µÑßß«αá »ÑαÑ¡áßΓαá¿óáÑΓß∩ «íαáΓ¡«, ¿ »α«µÑßß
- ó¡«ó∞ ó«ºóαáΘáÑΓß∩ ¡á »«ñτ¿¡Ñ¡¡δ⌐ »α«µÑßß«α.
- àß½¿ »α«µÑßßδ ñ«½ª¡δ óδ»«½¡∩Γ∞ß∩ ¡á ú½áó¡«¼ »α«µÑßß«αÑ, ªÑ½áΓѽ∞¡«, τΓ«-
- íδ ú½áó¡δ⌐ »α«µÑßß«α «íαáíáΓδóá½ ¿σ ¬á¬ ¼«ª¡« ߬«αÑÑ ¿ ¡Ñ ºáßΓáó½∩½ ¿σ ªñáΓ∞
- ßó«Ñ⌐ «τÑαÑñ¿ τÑαÑßτπα ñ«½ú«. Å«σ«ªá∩ ¼«Γ¿ó¿α«ó¬á »α¿ó«ñ¿Γß∩ ó «íΩ∩ߡѡ¿Ñ
- óδúαπº¬¿ »α«µÑßßá ¿º »á¼∩Γ¿ ó «ñ¡«»α«µÑßß«α¡«⌐ ß¿ßΓÑ¼Ñ »«ß½Ñ óδσ«ñá ¿º ß¿ß-
- ΓѼ¡«⌐ Σπ¡¬µ¿¿ ß «ßó«í«ªñÑ¡¿Ñ¼ ß««ΓóÑΓßΓóπεΘ¿σ αÑßπαß«ó ñ½∩ óδ»«½¡Ñ¡¿∩ í«½ÑÑ
- ¡áßπΘ¡δσ ßτÑΓ¡δσ «»Ñαᵿ⌐. àß½¿ ó ëà ¼«¼Ñ¡Γ, ¬«úñá »«ñτ¿¡Ñ¡¡δ⌐ »α«µÑßß«α
- ñѽáÑΓ ºá»α«ß ¡á ¿ß»«½¡Ñ¡¿Ñ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿, ú½áó¡δ⌐ »α«µÑßß óδ»«½¡∩ÑΓß∩ ó
- αѪ¿¼Ñ ºáñáτ¿, Ñú« óδ»«½¡Ñ¡¿Ñ íπñÑΓ »α«ñ«½ªáΓ∞ß∩ ñ« ß½ÑñπεΘÑú« »ÑαѬ½ετÑ¡¿∩
- ¬«¡ΓѬßΓá. â½áó¡δ⌐ »α«µÑßß«α αÑáú¿α«óá½ íδ ú«αáºñ« íδßΓαÑÑ, Ñß½¿ íδ »«ñτ¿-
- ¡Ñ¡¡δ⌐ »α«µÑßß«α πßΓá¡áó½¿óá½ »α¿ φΓ«¼ ú½«íá½∞¡δ⌐ Σ½áú; »α«óÑα∩∩ πßΓá¡«ó¬π
- Σ½áúá ó« óαѼ∩ «íαáí«Γ¬¿ «τÑαÑñ¡«ú« »αÑαδóá¡¿∩ »« Γá⌐¼Ñαπ, ú½áó¡δ⌐ »α«µÑßß«α
- »α«¿ºóѽ íδ ó ¿Γ«úÑ »ÑαѬ½ετÑ¡¿Ñ ¬«¡ΓѬßΓá ¼á¬ß¿¼π¼ τÑαѺ «ñ¿¡ Γá⌐¼Ñα¡δ⌐
- Γ¿¬. æ ñαπú«⌐ ßΓ«α«¡δ, »«ñτ¿¡Ñ¡¡δ⌐ »α«µÑßß«α ¼«ú íδ »αÑαóáΓ∞ αáí«Γπ ú½áó¡«ú«
- ¿ ºáßΓáó¿Γ∞ Ñú« »ÑαѬ½ετ¿Γ∞ ¬«¡ΓѬßΓ ¡Ñ¼Ññ½Ñ¡¡«, ¡« ñá¡¡á∩ 󫺼«ª¡«ßΓ∞ ΓαÑ-
- íπÑΓ ß»Ñµ¿á½∞¡«⌐ á»»áαáΓ¡«⌐ αÑ὿ºáµ¿¿.
-
- ┌────────────────────────────────────────────────────────────┐
- │ á½ú«α¿Γ¼ schedule_process (¼«ñ¿Σ¿µ¿α«óá¡¡δ⌐) │
- │ óσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: «ΓßπΓßΓóπÑΓ │
- │ óδσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: «ΓßπΓßΓóπÑΓ │
- │ { │
- │ óδ»«½¡∩Γ∞ »«¬á (ñ½∩ ºá»πß¬á ¡Ñ íπñÑΓ óδíαá¡ «ñ¿¡ ¿º »α«-│
- │ µÑßß«ó) │
- │ { │
- │ Ñß½¿ (αáí«Γá óÑñÑΓß∩ ¡á ú½áó¡«¼ »α«µÑßß«αÑ) │
- │ ñ½∩ (óßÑσ »α«µÑßß«ó ó «τÑαÑñ¿ ú«Γ«óδσ ¬ óδ»«½¡Ñ- │
- │ ¡¿ε) │
- │ óδíαáΓ∞ »α«µÑßß, ¿¼ÑεΘ¿⌐ ¡á¿óδßΦ¿⌐ »α¿«α¿ΓÑΓ │
- │ ßαÑñ¿ ºáúαπªÑ¡¡δσ ó »á¼∩Γ∞; │
- │ ó »α«Γ¿ó¡«¼ ß½πτáÑ /* αáí«Γá óÑñÑΓß∩ ¡á »«ñτ¿¡Ñ¡- │
- │ * ¡«¼ »α«µÑßß«αÑ */ │
- │ ñ½∩ (ΓÑσ »α«µÑßß«ó ó «τÑαÑñ¿, ¬«Γ«αδÑ ¡Ñ ¡πªñáεΓ-│
- │ ß∩ ó ú½áó¡«¼ »α«µÑßß«αÑ) │
- │ óδíαáΓ∞ »α«µÑßß, ¿¼ÑεΘ¿⌐ ¡á¿óδßΦ¿⌐ »α¿«α¿ΓÑΓ │
- │ ßαÑñ¿ ºáúαπªÑ¡¡δσ ó »á¼∩Γ∞; │
- │ Ñß½¿ (ñ½∩ ºá»πß¬á ¡Ñ »«ñσ«ñ¿Γ ¡¿ «ñ¿¡ ¿º »α«µÑßß«ó) │
- │ ¡Ñ ºáúαπªáΓ∞ ¼áΦ¿¡π, »ÑαÑσ«ñ∩Θπε ó ß«ßΓ«∩¡¿Ñ »α«-│
- │ ßΓ«∩; │
- │ /* ¿º φΓ«ú« ß«ßΓ«∩¡¿∩ ¼áΦ¿¡á óδσ«ñ¿Γ ó αѺπ½∞ΓáΓÑ│
- │ * »αÑαδóá¡¿∩ */ │
- │ } │
- │ πíαáΓ∞ óδíαá¡¡δ⌐ »α«µÑßß ¿º «τÑαÑñ¿ ú«Γ«óδσ ¬ óδ»«½¡Ñ- │
- │ ¡¿ε; │
- │ »ÑαѬ½ετ¿Γ∞ß∩ ¡á ¬«¡ΓѬßΓ óδíαá¡¡«ú« »α«µÑßßá, ó«º«í¡«- │
- │ ó¿Γ∞ Ñú« óδ»«½¡Ñ¡¿Ñ; │
- │ } │
- └────────────────────────────────────────────────────────────┘
-
- É¿ßπ¡«¬ 12.3. ǽú«α¿Γ¼ ñ¿ß»ÑΓτÑα¿ºáµ¿¿
-
-
-
- 364
-
- ┌────────────────────────────────────────────────────────────┐
- │ á½ú«α¿Γ¼ syscall /* ¿ß»αáó½Ñ¡¡δ⌐ á½ú«α¿Γ¼ ó맮óá ß¿ßΓѼ- │
- │ * ¡«⌐ Σπ¡¬µ¿¿ */ │
- │ óσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: ¬«ñ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ │
- │ óδσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: αѺπ½∞ΓáΓ óδ»«½¡Ñ¡¿∩ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿│
- │ { │
- │ Ñß½¿ (αáí«Γá óÑñÑΓß∩ ¡á »«ñτ¿¡Ñ¡¡«¼ »α«µÑßß«αÑ) │
- │ { │
- │ »ÑαÑπßΓá¡«ó¿Γ∞ º¡áτÑ¡¿Ñ »«½∩ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »α«µÑßß«-│
- │ αá ó ß««ΓóÑΓßΓóπεΘÑ⌐ ºá»¿ß¿ Γáí½¿µδ »α«µÑßß«ó; │
- │ »α«¿ºóÑßΓ¿ »ÑαѬ½ετÑ¡¿Ñ ¬«¡ΓѬßΓá; │
- │ } │
- │ óδ»«½¡¿Γ∞ «íδτ¡δ⌐ á½ú«α¿Γ¼ αÑ὿ºáµ¿¿ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿;│
- │ »ÑαÑ¡áßΓα«¿Γ∞ º¡áτÑ¡¿Ñ »«½∩ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »α«µÑßß«αá, │
- │ τΓ«íδ «¡« π¬áºδóὫ ¡á "½εí«⌐" (»«ñτ¿¡Ñ¡¡δ⌐); │
- │ Ñß½¿ (¡á ú½áó¡«¼ »α«µÑßß«αÑ ñ«½ª¡δ óδ»«½¡∩Γ∞ß∩ ñαπú¿Ñ │
- │ »α«µÑßßδ) │
- │ »α«¿ºóÑßΓ¿ »ÑαѬ½ετÑ¡¿Ñ ¬«¡ΓѬßΓá; │
- │ } │
- └────────────────────────────────────────────────────────────┘
-
- É¿ßπ¡«¬ 12.4. ǽú«α¿Γ¼ «íαáí«Γ¬¿ «íαáΘÑ¡¿∩ ¬ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿
-
- Åα«úαá¼¼á «íαáí«Γ¬¿ »αÑαδóá¡¿⌐ »« Γá⌐¼Ñαπ ¡á »«ñτ¿¡Ñ¡¡«¼ »α«µÑßß«αÑ ß½Ñ-
- ñ¿Γ ºá »Ñα¿«ñ¿τ¡«ßΓ∞ε »ÑαѺá»πß¬á »α«µÑßß«ó, ¡Ñ ñ«»π߬á∩ ¼«¡«»«½∞¡«ú« ¿ß-
- »«½∞º«óá¡¿∩ »α«µÑßß«αá «ñ¡«⌐ ºáñáτÑ⌐. èα«¼Ñ Γ«ú«, ¬áªñπε ßѬπ¡ñπ φΓá »α«ú-
- αá¼¼á óδó«ñ¿Γ »«ñτ¿¡Ñ¡¡δ⌐ »α«µÑßß«α ¿º ß«ßΓ«∩¡¿∩ íѺñÑ⌐ßΓó¿∩ (»α«ßΓ«∩). Å«ñ-
- τ¿¡Ñ¡¡δ⌐ »α«µÑßß«α óδí¿αáÑΓ ñ½∩ óδ»«½¡Ñ¡¿∩ »α«µÑßß ß ¡á¿óδßΦ¿¼ »α¿«α¿ΓÑΓ«¼
- ßαÑñ¿ ΓÑσ »α«µÑßß«ó, ¬«Γ«αδÑ ¡Ñ ¡πªñáεΓß∩ ó ú½áó¡«¼ »α«µÑßß«αÑ.
- àñ¿¡ßΓóÑ¡¡δ¼ ¼ÑßΓ«¼, úñÑ µÑ½«ßΓ¡«ßΓ∞ ßΓαπ¬Γπα ñá¡¡δσ ∩ñαá ÑΘÑ »«ñóÑαúá-
- ÑΓß∩ «»áß¡«ßΓ¿, ∩ó½∩ÑΓß∩ á½ú«α¿Γ¼ ñ¿ß»ÑΓτÑα¿ºáµ¿¿, »«ß¬«½∞¬π «¡ ¡Ñ »αÑñ«σαá-
- ¡∩ÑΓ «Γ óδí«αá »α«µÑßßá ¡á óδ»«½¡Ñ¡¿Ñ ßαáºπ ¡á ñóπσ »α«µÑßß«αáσ. ìá»α¿¼Ñα,
- Ñß½¿ ó ¬«¡Σ¿úπαᵿ¿ ¿¼ÑÑΓß∩ «ñ¿¡ ú½áó¡δ⌐ »α«µÑßß«α ¿ ñóá »«ñτ¿¡Ñ¡¡δσ, ¡Ñ ¿ß-
- ¬½ετÑ¡á 󫺼«ª¡«ßΓ∞ Γ«ú«, τΓ« «íá »«ñτ¿¡Ñ¡¡δσ »α«µÑßß«αá óδíÑαπΓ ñ½∩ óδ»«½-
- ¡Ñ¡¿∩ ó αѪ¿¼Ñ ºáñáτ¿ «ñ¿¡ ¿ ëà ªÑ »α«µÑßß. àß½¿ «íá »α«µÑßß«αá ¡áτ¡πΓ óδ-
- »«½¡∩Γ∞ Ñú« »áαώѽ∞¡«, «ßπΘÑßΓó½∩∩ τΓÑ¡¿Ñ ¿ ºá»¿ß∞, φΓ« ¡Ñ¿ºíѪ¡« »α¿óÑñÑΓ
- ¬ ¿ß¬áªÑ¡¿ε ß«ñÑন¼«ú« áñαÑß¡«ú« »α«ßΓαá¡ßΓóá »α«µÑßßá.
- êºíѪáΓ∞ 󫺡¿¬¡«óÑ¡¿∩ φΓ«⌐ »α«í½Ñ¼δ ¼«ª¡« ñóπ¼∩ ß»«ß«íἿ. é«-»Ñαóδσ,
- ú½áó¡δ⌐ »α«µÑßß«α ¼«ªÑΓ ∩ó¡« π¬áºáΓ∞, ¡á ¬á¬«¼ ¿º »«ñτ¿¡Ñ¡¡δσ »α«µÑßß«α«ó
- ß½ÑñπÑΓ óδ»«½¡∩Γ∞ ñá¡¡δ⌐ »α«µÑßß. àß½¿ ¡á ¬áªñδ⌐ »α«µÑßß«α ¡á»αáó½∩Γ∞ ¡Ñß-
- ¬«½∞¬« »α«µÑßß«ó, 󫺡¿¬áÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ∞ ó ßíá½á¡ß¿α«óá¡¿¿ ¡áúαπº¬¿ (¡á
- «ñ¿¡ ¿º »α«µÑßß«α«ó ¡áº¡áτáÑΓß∩ í«½∞Φ«Ñ ¬«½¿τÑßΓó« »α«µÑßß«ó, ó Γ« óαѼ∩ ¬á¬
- ñαπú¿Ñ »α«µÑßß«αδ »α«ßΓá¿óáεΓ). çáñáτá αáß»αÑñѽѡ¿∩ ¡áúαπº¬¿ ¼Ñªñπ »α«µÑß-
- ß«αἿ ½«ª¿Γß∩ ¡á ú½áó¡«Ñ ∩ñα«. é«-óΓ«αδσ, ∩ñα« ¼«ªÑΓ »α«ß½Ññ¿Γ∞ ºá ΓѼ,
- τΓ«íδ ó ¬áªñδ⌐ ¼«¼Ñ¡Γ óαѼѡ¿ ó á½ú«α¿Γ¼Ñ ñ¿ß»ÑΓτÑα¿ºáµ¿¿ »α¿¡¿¼á½ πτáßΓ¿Ñ
- Γ«½∞¬« «ñ¿¡ »α«µÑßß«α, ñ½∩ φΓ«ú« ¿ß»«½∞ºπεΓß∩ ¼Ñσá¡¿º¼δ, »«ñ«í¡δÑ ßѼáΣ«αá¼.
-
-
- E12.3 æàîÇöÄÉ¢F
-
- Å«ññÑ᪬á ß¿ßΓѼδ UNIX ó ¼¡«ú«»α«µÑßß«α¡«⌐ ¬«¡Σ¿úπαᵿ¿ ¼«ªÑΓ ó¬½ετáΓ∞ ó
- ßÑí∩ αáºí¿Ñ¡¿Ñ ∩ñαá ß¿ßΓÑ¼δ ¡á ¬α¿Γ¿τÑ߬¿Ñ πτáßΓ¬¿, »áαώѽ∞¡«Ñ óδ»«½¡Ñ¡¿Ñ
- ¬«Γ«αδσ ¡á ¡Ñ߬«½∞¬¿σ »α«µÑßß«αáσ ¡Ñ ñ«»π߬áÑΓß∩. Æá¬¿Ñ ß¿ßΓÑ¼δ »αÑñ¡áº¡áτá-
- ½¿ß∞ ñ½∩ αáí«Γδ ¡á ¼áΦ¿¡áσ AT&T 3B20A ¿ IBM 370, ñ½∩ αáºí¿Ñ¡¿∩ ∩ñαá ¿ß»«½∞-
- º«ó὿ß∞ ßѼáΣ«αδ (ß¼. [Bach 84]). 쿪Ñß½ÑñπεΘ¿Ñ αáßßπªñÑ¡¿∩ »«¼«úáεΓ »«¡∩Γ∞
- ßπΓ∞ ñá¡¡«⌐ «ß«íÑ¡¡«ßΓ¿. Åα¿ í½¿ªá⌐ΦѼ αáßß¼«ΓαÑ¡¿¿ ßαáºπ ªÑ 󫺡¿¬áεΓ ñóá
- ó«»α«ßá: ¬á¬ ¿ß»«½∞º«óáΓ∞ ßѼáΣ«αδ ¿ úñÑ «»αÑñѽ¿Γ∞ ¬α¿Γ¿τÑ߬¿Ñ πτáßΓ¬¿.
- èᬠπªÑ ú«ó«α¿½«ß∞ ó ú½áóÑ 2, Ñß½¿ »α¿ óδ»«½¡Ñ¡¿¿ ¬α¿Γ¿τÑ߬«ú« πτáßΓ¬á
- »α«úαá¼¼δ »α«µÑßß »α¿«ßΓá¡áó½¿óáÑΓß∩, ñ½∩ ºáΘ¿Γδ πτáßΓ¬á «Γ »«ß∩úáΓѽ∞ßΓó ß«
-
- 365
-
- ßΓ«α«¡δ ñαπú¿σ »α«µÑßß«ó á½ú«α¿Γ¼δ αáí«Γδ ∩ñαá «ñ¡«»α«µÑßß«α¡«⌐ ß¿ßΓѼδ UNIX
- ¿ß»«½∞ºπεΓ í½«¬¿α«ó¬π. îÑσá¡¿º¼ πßΓá¡«ó½Ñ¡¿∩ í½«¬¿α«ó¬¿:
- óδ»«½¡∩Γ∞ »«¬á (í½«¬¿α«ó¬á πßΓá¡«ó½Ñ¡á) /* «»Ñαᵿ∩ »α«óÑન */
- »α¿«ßΓá¡«ó¿Γ∞ß∩ (ñ« ß¡∩Γ¿∩ í½«¬¿α«ó¬¿);
- πßΓá¡«ó¿Γ∞ í½«¬¿α«ó¬π;
- ¼Ñσá¡¿º¼ ß¡∩Γ¿∩ í½«¬¿α«ó¬¿:
- ß¡∩Γ∞ í½«¬¿α«ó¬π;
- óδóÑßΓ¿ ¿º ß«ßΓ«∩¡¿∩ »α¿«ßΓá¡«óá óßÑ »α«µÑßßδ, »α¿«ßΓá¡«ó½Ñ¡¡δÑ ó αÑ-
- ºπ½∞ΓáΓÑ í½«¬¿α«ó¬¿;
-
- Åα«µÑßß A/Åα«µÑßß«α A Åα«µÑßß B/Åα«µÑßß«α B
- ┌─────────────────────────────────────────────────────────
- │ ┌───────────────────────────┐
- │ │ ü½«¬¿α«ó¬á ìà πßΓá¡«ó½Ñ¡á │
- │ ∙ └───────────────────────────┘ ∙
- │ ∙ ∙
- │ ∙ ∙
- │ Åα«óÑα∩ÑΓ, πßΓá¡«ó½Ñ¡á Åα«óÑα∩ÑΓ, πßΓá¡«ó½Ñ¡á
- │ ½¿ í½«¬¿α«ó¬á ½¿ í½«¬¿α«ó¬á
- │ (¡ÑΓ) (¡ÑΓ)
- t - ┼ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- │ ôßΓá¡áó½¿óáÑΓ ôßΓá¡áó½¿óáÑΓ
- │ í½«¬¿α«ó¬π í½«¬¿α«ó¬π
- │
- │ êß»«½∞ºπÑΓ αÑßπαß êß»«½∞ºπÑΓ αÑßπαß
- v ^ ^
- éαѼ∩ │ │
- └──────┐ ┌──────┘
- Ä»áß¡«ßΓ∞ ¡áαπΦÑ¡¿∩ µÑ½«ßΓ¡«ßΓ¿
-
- É¿ßπ¡«¬ 12.5. è«¡¬παÑ¡µ¿∩ ºá πßΓá¡«ó¬π í½«¬¿α«ó¬¿ ó ¼¡«ú«»α«-
- µÑßß«α¡δσ ß¿ßΓѼáσ
-
-
- ü½«¬¿α«ó¬¿ Γᬫú« α«ñá «σóáΓδóáεΓ ¡Ñ¬«Γ«αδÑ ¬α¿Γ¿τÑ߬¿Ñ πτáßΓ¬¿, ¡« ¡Ñ
- αáí«ΓáεΓ ó ¼¡«ú«»α«µÑßß«α¡δσ ß¿ßΓѼáσ, τΓ« ó¿ñ¡« ¿º É¿ßπ¡¬á 12.5. ÅαÑñ»«½«-
- ª¿¼, τΓ« í½«¬¿α«ó¬á ß¡∩Γá ¿ τΓ« ñóá »α«µÑßßá ¡á αạδσ »α«µÑßß«αáσ «ñ¡«óαÑ-
- ¼Ñ¡¡« »δΓáεΓß∩ »α«óÑα¿Γ∞ ÑÑ ¡á½¿τ¿Ñ ¿ πßΓá¡«ó¿Γ∞ ÑÑ. é ¼«¼Ñ¡Γ t «¡¿ «í¡áαπ-
- ª¿óáεΓ ß¡∩Γ¿Ñ í½«¬¿α«ó¬¿, πßΓá¡áó½¿óáεΓ ÑÑ ó¡«ó∞, óßΓπ»áεΓ ó ¬α¿Γ¿τÑ߬¿⌐
- πτáßΓ«¬ ¿ ß«ºñáεΓ «»áß¡«ßΓ∞ ¡áαπΦÑ¡¿∩ µÑ½«ßΓ¡«ßΓ¿ ßΓαπ¬Γπα ñá¡¡δσ ∩ñαá. é
- πß½«ó¿¿ «ñ¡«óαѼѡ¡«ßΓ¿ ¿¼ÑÑΓß∩ «Γ¬½«¡Ñ¡¿Ñ: ¼Ñσá¡¿º¼ ¡Ñ ßαáí«ΓáÑΓ, Ñß½¿ »Ñ-
- αÑñ ΓѼ, ¬á¬ »α«µÑßß óδ»«½¡∩ÑΓ «»Ñαáµ¿ε »α«óÑન, ¡¿ «ñ¿¡ ñαπú«⌐ »α«µÑßß ¡Ñ
- óδ»«½¡¿½ «»Ñαᵿε πßΓá¡«ó½Ñ¡¿∩ í½«¬¿α«ó¬¿. àß½¿, ¡á»α¿¼Ñα, »«ß½Ñ «í¡áαπªÑ¡¿∩
- ß¡∩Γ¿∩ í½«¬¿α«ó¬¿ »α«µÑßß«α A «íαáíáΓδóáÑΓ »αÑαδóá¡¿Ñ ¿ ó φëà ¼«¼Ñ¡Γ »α«-
- µÑßß«α B óδ»«½¡∩ÑΓ »α«óÑα¬π ¿ πßΓá¡áó½¿óáÑΓ í½«¬¿α«ó¬π, »« óδσ«ñÑ ¿º »αÑαδ-
- óá¡¿∩ »α«µÑßß«α A ΓᬠªÑ πßΓá¡«ó¿Γ í½«¬¿α«ó¬π. ùΓ«íδ »αÑñ«ΓóαáΓ¿Γ∞ 󫺡¿¬¡«-
- óÑ¡¿Ñ »«ñ«í¡«⌐ ß¿Γπᵿ¿, ¡πª¡« ßñѽáΓ∞ Γá¬, τΓ«íδ »α«µÑñπαá í½«¬¿α«óá¡¿∩ íδ-
- ½á ¡Ññѽ¿¼«⌐: »α«óÑα¬π ¡á½¿τ¿∩ í½«¬¿α«ó¬¿ ¿ ÑÑ πßΓá¡«ó¬π ß½ÑñπÑΓ «íΩÑñ¿¡¿Γ∞
- ó «ñ¡π «»Ñαᵿε, τΓ«íδ ó ¬áªñδ⌐ ¼«¼Ñ¡Γ óαѼѡ¿ ß í½«¬¿α«ó¬«⌐ ¿¼Ñ½ ñѽ« Γ«½∞-
- ¬« «ñ¿¡ »α«µÑßß.
-
-
- E12.3.1 Ä»αÑñѽѡ¿Ñ ßѼáΣ«α«óF
-
- æÑ¼áΣ«α »αÑñßΓáó½∩ÑΓ ß«í«⌐ «íαáíáΓδóáѼδ⌐ ∩ñα«¼ µÑ½«τ¿ß½Ñ¡¡δ⌐ «íΩѬΓ,
- ñ½∩ ¬«Γ«α«ú« «»αÑñѽѡδ ß½ÑñπεΘ¿Ñ φ½Ñ¼Ñ¡Γáα¡δÑ (¡Ññѽ¿¼δÑ) «»Ñαᵿ¿:
- * ê¡¿µ¿á½¿ºáµ¿∩ ßѼáΣ«αá, ó αѺπ½∞ΓáΓÑ ¬«Γ«α«⌐ ßѼáΣ«απ »α¿ßóá¿óáÑΓß∩ ¡Ñ-
- «Γα¿µáΓѽ∞¡«Ñ º¡áτÑ¡¿Ñ;
- * Ä»Ñαᵿ∩ Γ¿»á P, π¼Ñ¡∞ΦáεΘá∩ º¡áτÑ¡¿Ñ ßѼáΣ«αá. àß½¿ º¡áτÑ¡¿Ñ ßѼáΣ«αá
-
- 366
-
- «»π߬áÑΓß∩ ¡¿ªÑ ¡π½Ñó«⌐ «Γ¼ÑΓ¬¿, óδ»«½¡∩εΘ¿⌐ «»Ñαáµ¿ε »α«µÑßß »α¿«ßΓá-
- ¡áó½¿óáÑΓ ßó«ε αáí«Γπ;
- * Ä»Ñαᵿ∩ Γ¿»á V, πóѽ¿τ¿óáεΘá∩ º¡áτÑ¡¿Ñ ßѼáΣ«αá. àß½¿ º¡áτÑ¡¿Ñ ßѼáΣ«αá
- ó αѺπ½∞ΓáΓÑ «»Ñαᵿ¿ ßΓá¡«ó¿Γß∩ í«½∞ΦÑ ¿½¿ αáó¡« 0, «ñ¿¡ ¿º »α«µÑßß«ó,
- »α¿«ßΓá¡«ó½Ñ¡¡δσ ó« óαѼ∩ óδ»«½¡Ñ¡¿∩ «»Ñαᵿ¿ P, óδσ«ñ¿Γ ¿º ß«ßΓ«∩¡¿∩
- »α¿«ßΓá¡«óá;
- * ôß½«ó¡á∩ «»Ñαᵿ∩ Γ¿»á P, ß«¬αáΘÑ¡¡« CP (conditional P), π¼Ñ¡∞ΦáεΘá∩
- º¡áτÑ¡¿Ñ ßѼáΣ«αá ¿ ó«ºóαáΘáεΘá∩ ½«ú¿τÑ߬«Ñ º¡áτÑ¡¿Ñ "¿ßΓ¿¡á" ó Γ«¼ ß½π-
- τáÑ, ¬«úñá º¡áτÑ¡¿Ñ ßѼáΣ«αá «ßΓáÑΓß∩ »«½«ª¿Γѽ∞¡δ¼. àß½¿ ó αѺπ½∞ΓáΓÑ
- «»Ñαᵿ¿ º¡áτÑ¡¿Ñ ßѼáΣ«αá ñ«½ª¡« ßΓáΓ∞ «Γα¿µáΓѽ∞¡δ¼ ¿½¿ ¡π½Ñóδ¼, ¡¿¬á-
- ¬¿σ ñÑ⌐ßΓó¿⌐ ¡áñ ¡¿¼ ¡Ñ »α«¿ºó«ñ¿Γß∩ ¿ «»Ñαᵿ∩ ó«ºóαáΘáÑΓ ½«ú¿τÑ߬«Ñ
- º¡áτÑ¡¿Ñ "½«ª∞".
- Ä»αÑñѽѡ¡δÑ Γᬿ¼ «íαẫ¼ ßѼáΣ«αδ, íѺπß½«ó¡«, ¡¿¬á¬ ¡Ñ ßó∩ºá¡δ ß ßÑ-
- ¼áΣ«αἿ »«½∞º«óáΓѽ∞߬«ú« πα«ó¡∩, αáßß¼«ΓαÑ¡¡δ¼¿ ó ú½áóÑ 11.
-
-
- E12.3.2 ÉÑ὿ºáµ¿∩ ßѼáΣ«α«óF
-
- ä¿⌐¬ßΓαá [Dijkstra 65] »«¬áºá½, τΓ« ßѼáΣ«αδ ¼«ª¡« αÑ὿º«óáΓ∞ íѺ ¿ß-
- »«½∞º«óá¡¿∩ ߻ѵ¿á½∞¡δσ ¼áΦ¿¡¡δσ ¿¡ßΓαπ¬µ¿⌐. ìá É¿ßπ¡¬Ñ 12.6 »αÑñßΓáó½Ñ¡δ
- αÑ὿ºπεΘ¿Ñ ßѼáΣ«αδ Σπ¡¬µ¿¿, ¡á»¿ßá¡¡δÑ ¡á ∩ºδ¬Ñ æ¿. öπ¡¬µ¿∩ Pprim í½«¬¿απ-
- ÑΓ ßѼáΣ«α »« αѺπ½∞ΓáΓá¼ »α«óÑન º¡áτÑ¡¿⌐, ß«ñÑαªáΘ¿σß∩ ó ¼áßß¿óÑ val;
- ¬áªñδ⌐ »α«µÑßß«α ó ß¿ßΓÑ¼Ñ π»αáó½∩ÑΓ º¡áτÑ¡¿Ñ¼ «ñ¡«ú« φ½Ñ¼Ñ¡Γá ¼áßß¿óá.
- ÅαѪñÑ τѼ ºáí½«¬¿α«óáΓ∞ ßѼáΣ«α, »α«µÑßß«α »α«óÑα∩ÑΓ, ¡Ñ ºáí½«¬¿α«óá¡ ½¿
- πªÑ ßѼáΣ«α ñαπú¿¼¿ »α«µÑßß«αἿ (ß««ΓóÑΓßΓóπεΘ¿Ñ ¿¼ φ½Ñ¼Ñ¡Γδ ó ¼áßß¿óÑ val
- Γ«úñá ¿¼ÑεΓ º¡áτÑ¡¿∩, αáó¡δÑ 2), á Γá¬ªÑ ¡Ñ »αÑñ»α¿¡¿¼áεΓß∩ ½¿ »«»δΓ¬¿ ó
- ñá¡¡δ⌐ ¼«¼Ñ¡Γ ºáí½«¬¿α«óáΓ∞ ßѼáΣ«α ß« ßΓ«α«¡δ »α«µÑßß«α«ó ß í«½ÑÑ ¡¿º¬¿¼
- ¬«ñ«¼ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ (ß««ΓóÑΓßΓóπεΘ¿Ñ ¿¼ φ½Ñ¼Ñ¡Γδ ¿¼ÑεΓ º¡áτÑ¡¿∩, αáó¡δÑ 1).
- àß½¿ ½εí«Ñ ¿º πß½«ó¿⌐ óδ»«½¡∩ÑΓß∩, »α«µÑßß«α »ÑαÑπßΓá¡áó½¿óáÑΓ º¡áτÑ¡¿Ñ ßó«-
- Ñú« φ½Ñ¼Ñ¡Γá ó 1 ¿ »«óΓ«α∩ÑΓ »«»δΓ¬π. è«úñá Σπ¡¬µ¿∩ Pprim «Γ¬αδóáÑΓ ó¡ÑΦ¡¿⌐
- µ¿¬½, »ÑαѼѡ¡á∩ µ¿¬½á ¿¼ÑÑΓ º¡áτÑ¡¿Ñ, ¡á Ññ¿¡¿µπ »αÑóδΦáεΘÑÑ ¬«ñ ¿ñÑ¡Γ¿Σ¿-
- ¬áµ¿¿ Γ«ú« »α«µÑßß«αá, ¬«Γ«αδ⌐ ¿ß»«½∞º«óá½ αÑßπαß »«ß½Ññ¡¿¼, ΓѼ ßá¼δ¼ úá-
- αá¡Γ¿απÑΓß∩, τΓ« ¡¿ «ñ¿¡ ¿º »α«µÑßß«α«ó ¡Ñ ¼«ªÑΓ ¼«¡«»«½∞¡« ºáó½áñÑΓ∞ αÑßπα-
- ß«¼ (ó ¬áτÑßΓóÑ ñ«¬áºáΓѽ∞ßΓóá ß«Φ½Ñ¼ß∩ ¡á [Dijkstra 65] ¿ [Coffman 73]).
- öπ¡¬µ¿∩ Vprim «ßó«í«ªñáÑΓ ßѼáΣ«α ¿ «Γ¬αδóáÑΓ ñ½∩ ñαπú¿σ »α«µÑßß«α«ó 󫺼«ª-
- ¡«ßΓ∞ »«½πτÑ¡¿∩ ¿ß¬½ετ¿Γѽ∞¡«ú« ñ«ßΓπ»á ¬ αÑßπαßπ »πΓѼ «τ¿ßΓ¬¿ ß««ΓóÑΓßΓóπ-
- εΘÑú« ΓѬπΘѼπ »α«µÑßß«απ φ½Ñ¼Ñ¡Γá ó ¼áßß¿óÑ val ¿ »ÑαÑ¡áßΓα«⌐¬¿ º¡áτÑ¡¿∩
- lastid. ùΓ«íδ ºáΘ¿Γ¿Γ∞ αÑßπαß, ß½ÑñπÑΓ óδ»«½¡¿Γ∞ ß½ÑñπεΘ¿⌐ ¡áí«α ¬«¼á¡ñ:
-
- Pprim(ßѼáΣ«α);
- ¬«¼á¡ñδ ¿ß»«½∞º«óá¡¿∩ αÑßπαßá;
- Vprim(ßѼáΣ«α);
-
- é í«½∞Φ¿¡ßΓóÑ ¼áΦ¿¡ ¿¼ÑÑΓß∩ ¡áí«α φ½Ñ¼Ñ¡Γáα¡δσ (¡Ññѽ¿¼δσ) ¿¡ßΓαπ¬µ¿⌐,
- αÑ὿ºπεΘ¿σ «»Ñαᵿε í½«¬¿α«óá¡¿∩ í«½ÑÑ ñÑΦÑó묨 ßαÑñßΓóἿ, ¿í« µ¿¬½δ, óσ«-
- ñ∩Θ¿Ñ ó Σπ¡¬µ¿ε Pprim, αáí«ΓáεΓ ¼Ññ½Ñ¡¡« ¿ ß¡¿ªáεΓ »α«¿ºó«ñ¿Γѽ∞¡«ßΓ∞ ß¿ßΓÑ-
- ¼δ. Æá¬, ¡á»α¿¼Ñα, ó ¼áΦ¿¡áσ ßÑα¿¿ IBM 370 »«ññÑনóáÑΓß∩ ¿¡ßΓαπ¬µ¿∩ compare
- and swap (ßαáó¡¿Γ∞ ¿ »ÑαÑßΓáó¿Γ∞), ó ¼áΦ¿¡Ñ AT&T 3B20 - ¿¡ßΓαπ¬µ¿∩ read and
- clear (»α«τ¿ΓáΓ∞ ¿ «τ¿ßΓ¿Γ∞). Åα¿ óδ»«½¡Ñ¡¿¿ ¿¡ßΓαπ¬µ¿¿ read and clear »α«-
- µÑßß«α ßτ¿ΓδóáÑΓ ß«ñÑন¼«Ñ ∩τÑ⌐¬¿ »á¼∩Γ¿, «τ¿ΘáÑΓ ÑÑ (ßíαáßδóáÑΓ ó 0) ¿ »«
- αѺπ½∞ΓáΓá¼ ßαáó¡Ñ¡¿∩ »Ñαó«¡áτá½∞¡«ú« ß«ñÑন¼«ú« ß 0 πßΓá¡áó½¿óáÑΓ ¬«ñ ºá-
- óÑαΦÑ¡¿∩ ¿¡ßΓαπ¬µ¿¿. àß½¿ Γπ ªÑ ¿¡ßΓαπ¬µ¿ε ¡áñ Γ«⌐ ªÑ ∩τÑ⌐¬«⌐ »áαώѽ∞¡«
- óδ»«½¡∩ÑΓ ÑΘÑ «ñ¿¡ »α«µÑßß«α, «ñ¿¡ ¿º ñóπσ »α«µÑßß«α«ó »α«τ¿ΓáÑΓ »Ñαó«¡á-
- τá½∞¡«Ñ ß«ñÑন¼«Ñ, á ñαπú«⌐ - 0: ¡Ññѽ¿¼«ßΓ∞ «»Ñαᵿ¿ úáαá¡Γ¿απÑΓß∩ á»»á-
- αáΓ¡δ¼ »πΓѼ. Æá¬¿¼ «íαẫ¼, ºá ßτÑΓ ¿ß»«½∞º«óá¡¿∩ ñá¡¡«⌐ ¿¡ßΓαπ¬µ¿¿ Σπ¡¬µ¿ε
- Pprim ¼«ª¡« í佫 íδ αÑ὿º«óáΓ∞ ¼Ñ¡ÑÑ ß½«ª¡δ¼¿ ßαÑñßΓóἿ (É¿ßπ¡«¬ 12.7).
- Åα«µÑßß »«óΓ«α∩ÑΓ ¿¡ßΓαπ¬µ¿ε read and clear ó µ¿¬½Ñ ñ« ΓÑσ »«α, »«¬á ¡Ñ íπ-
- ñÑΓ ßτ¿Γá¡« º¡áτÑ¡¿Ñ, «Γ½¿τ¡«Ñ «Γ ¡π½∩. ìáτá½∞¡«Ñ º¡áτÑ¡¿Ñ ¬«¼»«¡Ñ¡Γδ ßѼá-
- Σ«αá, ßó∩ºá¡¡«⌐ ß í½«¬¿α«ó¬«⌐, ñ«½ª¡« íδΓ∞ αáó¡« 1.
-
- 367
-
- èᬠΓᬫóπε, ñá¡¡πε ßѼáΣ«α¡πε ¬«¡ßΓαπ¬µ¿ε ¡Ñ½∞º∩ αÑ὿º«óáΓ∞ ó ß«ßΓáóÑ
- ∩ñαá «»Ñαᵿ«¡¡«⌐ ß¿ßΓѼδ, »«ß¬«½∞¬π αáí«ΓáεΘ¿⌐ ß ¡Ñ⌐ »α«µÑßß ¡Ñ óδσ«ñ¿Γ ¿º
- µ¿¬½á, »«¬á ¡Ñ ñ«ßΓ¿ú¡ÑΓ ßó«Ñ⌐ µÑ½¿. àß½¿
-
- ┌────────────────────────────────────────────────────────────┐
- │ struct semaphore │
- │ { │
- │ int val[NUMPROCS]; /* ºá¼«¬---1 φ½Ñ¼Ñ¡Γ ¡á ¬áªñδ⌐ »α«- │
- │ /* µÑßß«α */ │
- │ int lastid; /* ¿ñÑ¡Γ¿Σ¿¬áΓ«α »α«µÑßß«αá, »«½π- │
- │ /* τ¿óΦÑú« ßѼáΣ«α »«ß½Ññ¡¿¼ */ │
- │ }; │
- │ int procid; /* π¡¿¬á½∞¡δ⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α »α«µÑß- │
- │ /* ß«αá */ │
- │ int lastid; /* ¿ñÑ¡Γ¿Σ¿¬áΓ«α »α«µÑßß«αá, »«½π- │
- │ /* τ¿óΦÑú« ßѼáΣ«α »«ß½Ññ¡¿¼ */ │
- │ │
- │ INIT(semaphore) │
- │ struct semaphore semaphore; │
- │ { │
- │ int i; │
- │ for (i = 0; i < NUMPROCS; i++) │
- │ semaphore.val[i] = 0; │
- │ } │
- │ Pprim(semaphore) │
- │ struct semaphore semaphore; │
- │ { │
- │ int i,first; │
- │ │
- │ loop: │
- │ first = lastid; │
- │ semaphore.val[procid] = 1; │
- │ /* »α«ñ«½ªÑ¡¿Ñ ¡á ß½ÑñπεΘÑ⌐ ßΓαá¡¿µÑ */ │
- └────────────────────────────────────────────────────────────┘
-
- É¿ßπ¡«¬ 12.6. ÉÑ὿ºáµ¿∩ ßѼáΣ«α¡«⌐ í½«¬¿α«ó¬¿ ¡á æ¿
-
-
- ßѼáΣ«α ¿ß»«½∞ºπÑΓß∩ ñ½∩ í½«¬¿α«óá¡¿∩ ßΓαπ¬Γπαδ ñá¡¡δσ, »α«µÑßß, «í¡áαπª¿ó
- ßѼáΣ«α ºáí½«¬¿α«óá¡¡δ¼, »α¿«ßΓá¡áó½¿óáÑΓ ßó«Ñ óδ»«½¡Ñ¡¿Ñ, τΓ«íδ ∩ñα« ¿¼Ñ½«
- 󫺼«ª¡«ßΓ∞ »ÑαѬ½ετ¿Γ∞ß∩ ¡á ¬«¡ΓѬßΓ ñαπú«ú« »α«µÑßßá ¿ óδ»«½¡¿Γ∞ ñαπúπε
- »«½Ñº¡πε αáí«Γπ. æ »«¼«Θ∞ε Σπ¡¬µ¿⌐ Pprim ¿ Vprim ¼«ª¡« αÑ὿º«óáΓ∞ í«½ÑÑ
- ß½«ª¡δ⌐ ¡áí«α ßѼáΣ«α¡δσ «»Ñαᵿ⌐, ß««ΓóÑΓßΓóπεΘ¿⌐ Γ«¼π ß«ßΓáóπ, ¬«Γ«αδ⌐ «»-
- αÑñѽѡ ó αáºñÑ½Ñ 12.3.1.
- ä½∩ ¡áτá½á ñáñ¿¼ «»αÑñѽѡ¿Ñ ßѼáΣ«αá ¬á¬ ßΓαπ¬Γπαδ, ß«ßΓ«∩ΘÑ⌐ ¿º »«½∩
- í½«¬¿α«ó¬¿ (π»αáó½∩εΘÑú« ñ«ßΓπ»«¼ ¬ ßѼáΣ«απ), º¡áτÑ¡¿∩ ßѼáΣ«αá ¿ «τÑαÑñ¿
- »α«µÑßß«ó, »α¿«ßΓá¡«ó½Ñ¡¡δσ »« ßѼáΣ«απ. Å«½Ñ í½«¬¿α«ó¬¿ ß«ñÑαª¿Γ ¿¡Σ«α¼á-
- µ¿ε, «Γ¬αδóáεΘπε ó« óαѼ∩ óδ»«½¡Ñ¡¿∩ «»Ñαᵿ⌐ Γ¿»á P ¿ V ñ«ßΓπ» ¬ ñαπú¿¼ »«-
- ½∩¼ ßΓαπ¬Γπαδ Γ«½∞¬« «ñ¡«¼π »α«µÑßßπ. Å« ºáóÑαΦÑ¡¿¿ «»Ñαᵿ¿ º¡áτÑ¡¿Ñ »«½∩
- ßíαáßδóáÑΓß∩. ¥Γ« º¡áτÑ¡¿Ñ «»αÑñѽ∩ÑΓ, αáºαÑΦÑ¡ ½¿ »α«µÑßßπ ñ«ßΓπ» ¬ ¬α¿Γ¿-
- τÑ߬«¼π πτáßΓ¬π, ºáΘ¿ΘáѼ«¼π ßѼáΣ«α«¼. é ¡áτá½Ñ óδ»«½¡Ñ¡¿∩ á½ú«α¿Γ¼á «»Ñαá-
- µ¿¿ P (É¿ßπ¡«¬ 12.8) ∩ñα« ß »«¼«Θ∞ε Σπ¡¬µ¿¿ Pprim »αÑñ«ßΓáó½∩ÑΓ »α«µÑßßπ
- »αáó« ¿ß¬½ετ¿Γѽ∞¡«ú« ñ«ßΓπ»á ¬ ßѼáΣ«απ ¿ π¼Ñ¡∞ΦáÑΓ º¡áτÑ¡¿Ñ ßѼáΣ«αá. àß½¿
- ßѼáΣ«α ¿¼ÑÑΓ ¡Ñ«Γα¿µáΓѽ∞¡«Ñ º¡áτÑ¡¿Ñ, ΓѬπΘ¿⌐ »α«µÑßß »«½πτáÑΓ ñ«ßΓπ» ¬
- ¬α¿Γ¿τÑ߬«¼π πτáßΓ¬π. Å« ºáóÑαΦÑ¡¿¿ αáí«Γδ »α«µÑßß ßíαáßδóáÑΓ í½«¬¿α«ó¬π ßÑ-
- ¼áΣ«αá (ß »«¼«Θ∞ε Σπ¡¬µ¿¿ Vprim), «Γ¬αδóá∩ ñ«ßΓπ» ¬ ßѼáΣ«απ ñ½∩ ñαπú¿σ »α«-
- µÑßß«ó, ¿ ó«ºóαáΘáÑΓ »α¿º¡á¬ πß»ÑΦ¡«ú« ºáóÑαΦÑ¡¿∩. àß½¿ ªÑ ó αѺπ½∞ΓáΓÑ
- π¼Ñ¡∞ΦÑ¡¿∩ º¡áτÑ¡¿Ñ ßѼáΣ«αá ßΓá¡«ó¿Γß∩ «Γα¿µáΓѽ∞¡δ¼, ∩ñα« »α¿«ßΓá¡áó½¿óáÑΓ
- óδ»«½¡Ñ¡¿Ñ »α«µÑßßá, ¿ß»«½∞ºπ∩ á½ú«α¿Γ¼,
-
- 368
-
- ┌────────────────────────────────────────────────────────────┐
- │ forloop: │
- │ for (i = first; i < NUMPROCS; i++) │
- │ { │
- │ if (i == procid) │
- │ { │
- │ semaphore.val[i] = 2; │
- │ for (i = 1; i < NUMPROCS; i++) │
- │ if (i != procid && semaphore.val[i] == 2) │
- │ goto loop; │
- │ lastid = procid; │
- │ return; /* πß»ÑΦ¡«Ñ ºáóÑαΦÑ¡¿Ñ, αÑßπαß │
- │ /* ¼«ª¡« ¿ß»«½∞º«óáΓ∞ │
- │ */ │
- │ } │
- │ else if (semaphore.val[i]) │
- │ goto loop; │
- │ } │
- │ first = 1; │
- │ goto forloop; │
- │ } │
- │ Vprim(semaphore) │
- │ struct semaphore semaphore; │
- │ { │
- │ lastid = (procid + 1) % NUMPROCS; /* ¡á ß½ÑñπεΘ¿⌐ │
- │ /* »α«µÑßß«α */ │
- │ semaphore.val[procid] = 0; │
- │ } │
- └────────────────────────────────────────────────────────────┘
-
- É¿ßπ¡«¬ 12.6. ÉÑ὿ºáµ¿∩ ßѼáΣ«α¡«⌐ í½«¬¿α«ó¬¿ ¡á æ¿ (»α«ñ«½ªÑ¡¿Ñ)
-
-
- »«ñ«í¡δ⌐ á½ú«α¿Γ¼π sleep (ú½áóá 6): «ß¡«óδóá∩ß∞ ¡á º¡áτÑ¡¿¿ »α¿«α¿ΓÑΓá, ∩ñα«
- »α«óÑα∩ÑΓ »«ßΓπ»¿óΦ¿Ñ ß¿ú¡á½δ, ó¬½ετáÑΓ ΓѬπΘ¿⌐ »α«µÑßß ó ß»¿ß«¬ »α¿«ßΓá¡«ó-
- ½Ñ¡¡δσ »α«µÑßß«ó, ó ¬«Γ«α«¼ »«ß½Ññ¡¿Ñ »αÑñßΓáó½Ñ¡δ ó »«α∩ñ¬Ñ »«ßΓπ»½Ñ¡¿∩, ¿
- óδ»«½¡∩ÑΓ »ÑαѬ½ετÑ¡¿Ñ ¬«¡ΓѬßΓá. Ä»Ñαᵿ∩ V (É¿ßπ¡«¬ 12.9) »«½πτáÑΓ ¿ß¬½ε-
- τ¿Γѽ∞¡δ⌐ ñ«ßΓπ» ¬ ßѼáΣ«απ τÑαѺ Σπ¡¬µ¿ε Pprim ¿ πóѽ¿τ¿óáÑΓ º¡áτÑ¡¿Ñ ßѼá-
- Σ«αá. àß½¿ «τÑαÑñ∞ »α¿«ßΓá¡«ó½Ñ¡¡δσ »« ßѼáΣ«απ »α«µÑßß«ó ¡Ñ»πßΓá, ∩ñα« óδ-
- í¿αáÑΓ ¿º ¡ÑÑ »Ñαóδ⌐ »α«µÑßß ¿ »ÑαÑó«ñ¿Γ Ñú« ó ß«ßΓ«∩¡¿Ñ "ú«Γ«ó¡«ßΓ¿ ¬ ºá-
- »π߬π".
- Ä»Ñαᵿ¿ P ¿ V »« ßó«Ñ¼π ñÑ⌐ßΓó¿ε »«σ«ª¿ ¡á Σπ¡¬µ¿¿ sleep ¿ wakeup.
- â½áó¡«Ñ αẽ¿τ¿Ñ ¼Ñªñπ ¡¿¼¿ ß«ßΓ«¿Γ ó Γ«¼, τΓ« ßѼáΣ«α ∩ó½∩ÑΓß∩ ßΓαπ¬Γπα«⌐
- ñá¡¡δσ, Γ«úñá ¬á¬ ¿ß»«½∞ºπѼδ⌐ Σπ¡¬µ¿∩¼¿ sleep ¿ wakeup áñαÑß »αÑñßΓáó½∩ÑΓ
- ß«í«⌐ óßÑú« ½¿Φ∞ τ¿ß½«. àß½¿ ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ ßѼáΣ«αá - ¡π½Ñó«Ñ, »α¿ óδ-
- »«½¡Ñ¡¿¿ «»Ñαᵿ¿ P ¡áñ ßѼáΣ«α«¼ »α«µÑßß óßÑúñá »α¿«ßΓá¡áó½¿óáÑΓß∩, »«φΓ«¼π
- «»Ñαᵿ∩ P ¼«ªÑΓ ºá¼Ñ¡∩Γ∞ Σπ¡¬µ¿ε sleep. Ä»Ñαᵿ∩ V, ΓѼ ¡Ñ ¼Ñ¡ÑÑ, óδó«ñ¿Γ
- ¿º ß«ßΓ«∩¡¿∩ »α¿«ßΓá¡«óá Γ«½∞¬« «ñ¿¡ »α«µÑßß, Γ«úñá ¬á¬ «ñ¡«»α«µÑßß«α¡á∩
- Σπ¡¬µ¿∩ wakeup ó«º«í¡«ó½∩ÑΓ óßÑ »α«µÑßßδ, »α¿«ßΓá¡«ó½Ñ¡¡δÑ »« áñαÑßπ, ßó∩-
- ºá¡¡«¼π ß ß«íδΓ¿Ñ¼.
- æ Γ«τ¬¿ ºαÑ¡¿∩ ßѼá¡Γ¿¬¿ ¿ß»«½∞º«óá¡¿Ñ Σπ¡¬µ¿¿ wakeup «º¡áτáÑΓ: ñá¡¡«Ñ
- ß¿ßΓѼ¡«Ñ πß½«ó¿Ñ í«½ÑÑ ¡Ñ πñ«ó½ÑΓó«α∩ÑΓß∩, ß½Ññ«óáΓѽ∞¡«, óßÑ »α¿«ßΓá¡«ó-
- ½Ñ¡¡δÑ »« πß½«ó¿ε »α«µÑßßδ ñ«½ª¡δ óδ⌐Γ¿ ¿º ß«ßΓ«∩¡¿∩ »α¿«ßΓá¡«óá. Æá¬, ¡á»-
- α¿¼Ñα, »α«µÑßßδ, »α¿«ßΓá¡«ó½Ñ¡¡δÑ ó ßó∩º¿ ß ºá¡∩Γ«ßΓ∞ε íπΣÑαá, ¡Ñ ñ«½ª¡δ
- ñá½∞ΦÑ »αÑíδóáΓ∞ ó φΓ«¼ ß«ßΓ«∩¡¿¿, Ñß½¿ íπΣÑα í«½∞ΦÑ ¡Ñ ¿ß»«½∞ºπÑΓß∩, »«φΓ«-
- ¼π «¡¿ 󫺫í-
- ¡«ó½∩εΓß∩ ∩ñα«¼. àΘÑ «ñ¿¡ »α¿¼Ñα: Ñß½¿ ¡Ñ߬«½∞¬« »α«µÑßß«ó óδó«ñ∩Γ ñá¡¡δÑ ¡á
- ΓÑନ¡á½ ß »«¼«Θ∞ε Σπ¡¬µ¿¿ write, ΓÑନ¡á½∞¡δ⌐ ñαá⌐óÑα ¼«ªÑΓ »ÑαÑóÑßΓ¿ ¿σ ó
-
-
- 369
-
- ┌───────────────────────────────────────────────────────┐
- │ struct semaphore { │
- │ int lock; │
- │ }; │
- │ │
- │ Init(semaphore) │
- │ struct semaphore semaphore; │
- │ { │
- │ semaphore.lock = 1; │
- │ } │
- │ │
- │ Pprim(semaphore) │
- │ struct semaphore semaphore; │
- │ { │
- │ while (read_and_clear(semaphore.lock)) │
- │ ; │
- │ } │
- │ │
- │ Vprim(semaphore) │
- │ struct semaphore semaphore; │
- │ { │
- │ semaphore.lock = 1; │
- │ } │
- └───────────────────────────────────────────────────────┘
-
- É¿ßπ¡«¬ 12.7. Ä»Ñαᵿ¿ ¡áñ ßѼáΣ«α«¼, ¿ß»«½∞ºπεΘ¿Ñ ¿¡ßΓαπ¬µ¿ε
- read and clear
-
-
- ß«ßΓ«∩¡¿Ñ »α¿«ßΓá¡«óá ó ßó∩º¿ ß ¡Ñ󫺼«ª¡«ßΓ∞ε «íαáí«Γ¬¿ í«½∞Φ¿σ «íΩѼ«ó ¿¡-
- Σ«α¼áµ¿¿. Å«ºªÑ, ¬«úñá ñαá⌐óÑα íπñÑΓ ú«Γ«ó ¬ »α¿Ñ¼π ß½ÑñπεΘÑ⌐ »«αµ¿¿ ñá¡¡δσ,
- «¡ ó«º«í¡«ó¿Γ óßÑ »α¿«ßΓá¡«ó½Ñ¡¡δÑ ¿¼ »α«µÑßßδ. êß»«½∞º«óá¡¿Ñ «»Ñαᵿ⌐ P ¿ V
- ó ΓÑσ ß½πτá∩σ, ¬«úñá πßΓá¡áó½¿óáεΘ¿Ñ í½«¬¿α«ó¬π »α«µÑßßδ »«½πτáεΓ ñ«ßΓπ» ¬
- αÑßπαßπ »««τÑαÑñ¡«, á óßÑ «ßΓá½∞¡δÑ »α«µÑßßδ - ó »«α∩ñ¬Ñ »«ßΓπ»½Ñ¡¿∩ ºá»α«-
- ß«ó, ∩ó½∩ÑΓß∩ í«½ÑÑ »αÑñ»«τΓ¿Γѽ∞¡δ¼. é ßαáó¡Ñ¡¿¿ ß «ñ¡«»α«µÑßß«α¡«⌐ »α«µÑ-
- ñπα«⌐ í½«¬¿α«óá¡¿∩ (sleep-lock) ñá¡¡á∩ ßσÑ¼á «íδτ¡« óδ¿úαδóáÑΓ, Γᬠ¬á¬ Ñß½¿
- »α¿ ¡áßΓπ»½Ñ¡¿¿ ß«íδΓ¿∩ óßÑ »α«µÑßßδ ó«º«í¡«ó½∩εΓß∩, í«½∞Φ¿¡ßΓó« ¿º ¡¿σ ¼«-
- ªÑΓ ó¡«ó∞ ¡áΓ¬¡πΓ∞ß∩ ¡á í½«¬¿α«ó¬π ¿ ß¡«óá »ÑαÑ⌐Γ¿ ó ß«ßΓ«∩¡¿Ñ »α¿«ßΓá¡«óá.
- æ ñαπú«⌐ ßΓ«α«¡δ, ó ΓÑσ ß½πτá∩σ, ¬«úñá ΓαÑíπÑΓß∩ óδóÑßΓ¿ ¿º ß«ßΓ«∩¡¿∩ »α¿«ß-
- Γá¡«óá óßÑ »α«µÑßßδ «ñ¡«óαѼѡ¡«, ¿ß»«½∞º«óá¡¿Ñ «»Ñαᵿ⌐ P ¿ V »αÑñßΓáó½∩ÑΓ
- ¿ºóÑßΓ¡πε ß½«ª¡«ßΓ∞.
- àß½¿ «»Ñαᵿ∩ ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ ßѼáΣ«αá, ∩ó½∩ÑΓß∩ ½¿ «¡á φ¬ó¿óá½Ñ¡Γ-
- ¡«⌐ Σπ¡¬µ¿¿ wakeup ?
-
- while (value(semaphore) < 0)
- V(semaphore);
-
- àß½¿ ó¼ÑΦáΓѽ∞ßΓóá ß« ßΓ«α«¡δ ñαπú¿σ »α«µÑßß«ó ¡ÑΓ, ∩ñα« »«óΓ«α∩ÑΓ µ¿¬½
- ñ« ΓÑσ »«α, »«¬á º¡áτÑ¡¿Ñ ßѼáΣ«αá ¡Ñ ßΓá¡ÑΓ í«½∞ΦÑ ¿½¿ αáó¡« 0, ¿í« φΓ« «º-
- ¡áτáÑΓ, τΓ« ó ß«ßΓ«∩¡¿¿ »α¿«ßΓá¡«óá »« ßѼáΣ«απ ¡ÑΓ í«½∞ΦÑ ¡¿ «ñ¡«ú« »α«µÑß-
- ßá. ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ, ¡Ñ½∞º∩ ¿ß¬½ε-
- τ¿Γ∞ ¿ Γá¬πε 󫺼«ª¡«ßΓ∞, τΓ« ßαáºπ »«ß½Ñ Γ«ú«, ¬á¬ »α«µÑßß A »α¿ ΓÑßΓ¿α«óá-
- ¡¿¿ ßѼáΣ«αá ¡á «ñ¡«¿¼Ñ¡¡«¼ »α«µÑßß«αÑ «í¡áαπª¿½ ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ ßѼáΣ«αá,
- »α«µÑßß B ¡á ßó«Ñ¼ »α«µÑßß«αÑ óδ»«½¡∩ÑΓ «»Ñαᵿε P, π¼Ñ¡∞Φá∩ º¡áτÑ¡¿Ñ ßѼá-
- Σ«αá ñ« -1 (É¿ßπ¡«¬ 12.10). Åα«µÑßß A »α«ñ«½ª¿Γ ßó«Ñ óδ»«½¡Ñ¡¿Ñ, ñπ¼á∩, τΓ«
- ¿¼ ó«º«í¡«ó½Ñ¡δ óßÑ »α¿«ßΓá¡«ó½Ñ¡¡δÑ »« ßѼáΣ«απ »α«µÑßßδ. Æá¬¿¼ «íαẫ¼,
- µ¿¬½ óδ»«½¡Ñ¡¿∩ «»Ñαᵿ¿ ¡Ñ ñáÑΓ úáαá¡Γ¿¿ ó«º«í¡«ó½Ñ¡¿∩ óßÑσ »α¿«ßΓá¡«ó½Ñ¡-
- ¡δσ »α«µÑßß«ó, »«ß¬«½∞¬π «¡ ¡Ñ ∩ó½∩ÑΓß∩ φ½Ñ¼Ñ¡Γáα¡δ¼.
-
-
- 370
-
- ┌────────────────────────────────────────────────────────────┐
- │ á½ú«α¿Γ¼ P /* «»Ñαᵿ∩ ¡áñ ßѼáΣ«α«¼ Γ¿»á P */ │
- │ óσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: (1) ßѼáΣ«α │
- │ (2) »α¿«α¿ΓÑΓ │
- │ óδσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: 0 - ó ß½πτáÑ ¡«α¼á½∞¡«ú« ºáóÑαΦÑ¡¿∩ │
- │ -1 - ó ß½πτáÑ áóáα¿⌐¡«ú« óδσ«ñá ¿º │
- │ ß«ßΓ«∩¡¿∩ »α¿«ßΓá¡«óá »« ß¿ú¡á½π, »α¿-│
- │ ¡∩Γ«¼π ó αѪ¿¼Ñ ∩ñαá │
- │ { │
- │ Pprim(semaphore.lock); │
- │ π¼Ñ¡∞Φ¿Γ∞ (semaphore.value); │
- │ Ñß½¿ (semaphore.value >= 0) │
- │ { │
- │ Vprim(semaphore.lock); │
- │ óÑα¡πΓ∞ (0); │
- │ } │
- │ /* ß½ÑñπÑΓ »ÑαÑ⌐Γ¿ ó ß«ßΓ«∩¡¿Ñ »α¿«ßΓá¡«óá */ │
- │ Ñß½¿ (»α«óÑα∩εΓß∩ ß¿ú¡á½δ) │
- │ { │
- │ Ñß½¿ (¿¼ÑÑΓß∩ ß¿ú¡á½, »αÑαδóáεΘ¿⌐ ¡áσ«ªñÑ¡¿Ñ ó ß«ß- │
- │ Γ«∩¡¿¿ »α¿«ßΓá¡«óá) │
- │ { │
- │ πóѽ¿τ¿Γ∞ (semaphore.value); │
- │ Ñß½¿ (ß¿ú¡á½ »α¿¡∩Γ ó αѪ¿¼Ñ ∩ñαá) │
- │ { │
- │ Vprim(semaphore.lock); │
- │ óÑα¡πΓ∞ (-1); │
- │ } │
- │ ó »α«Γ¿ó¡«¼ ß½πτáÑ │
- │ { │
- │ Vprim(semaphore.lock); │
- │ longjmp; │
- │ } │
- │ } │
- │ } │
- │ »«ßΓáó¿Γ∞ »α«µÑßß ó ¬«¡Ñµ ß»¿ß¬á »α¿«ßΓá¡«ó½Ñ¡¡δσ »« ßÑ-│
- │ ¼áΣ«απ; │
- │ Vprim(semaphore.lock); │
- │ óδ»«½¡¿Γ∞ »ÑαѬ½ετÑ¡¿Ñ ¬«¡ΓѬßΓá; │
- │ »α«óÑα¿Γ∞ ß¿ú¡á½δ (ß¼. óδΦÑ); │
- │ óÑα¡πΓ∞ (0); │
- │ } │
- └────────────────────────────────────────────────────────────┘
-
- É¿ßπ¡«¬ 12.8. ǽú«α¿Γ¼ óδ»«½¡Ñ¡¿∩ «»Ñαᵿ¿ P
-
-
- Éáßß¼«Γα¿¼ ÑΘÑ «ñ¿¡ ΣÑ¡«¼Ñ¡, ßó∩ºá¡¡δ⌐ ß ¿ß»«½∞º«ó᡿Ѽ ßѼáΣ«α«ó ó «ñ-
- ¡«»α«µÑßß«α¡«⌐ ß¿ßΓѼÑ. ÅαÑñ»«½«ª¿¼, τΓ« ñóá »α«µÑßßá, A ¿ B, ¬«¡¬πα¿απεΓ ºá
- ßѼáΣ«α. Åα«µÑßß A «í¡áαπª¿óáÑΓ, τΓ« ßѼáΣ«α ßó«í«ñÑ¡ ¿ τΓ« »α«µÑßß B »α¿«ß-
- Γá¡«ó½Ñ¡; º¡áτÑ¡¿Ñ ßѼáΣ«αá αáó¡« -1. è«úñá ß »«¼«Θ∞ε «»Ñαᵿ¿ V »α«µÑßß A
- «ßó«í«ªñáÑΓ ßѼáΣ«α, «¡ óδó«ñ¿Γ ΓѼ ßá¼δ¼ »α«µÑßß B ¿º ß«ßΓ«∩¡¿∩ »α¿«ßΓá¡«óá
- ¿ ó¡«ó∞ ñѽáÑΓ º¡áτÑ¡¿Ñ ßѼáΣ«αá ¡π½Ñóδ¼. ÆÑ»Ñα∞ »αÑñ»«½«ª¿¼, τΓ« »α«µÑßß A,
- »«-»αѪ¡Ñ¼π óδ»«½¡∩∩ß∞ ó αѪ¿¼Ñ ∩ñαá, »δΓáÑΓß∩ ß¡«óá ºáí½«¬¿α«óáΓ∞ ßѼáΣ«α.
- Åα«¿ºó«ñ∩ «»Ñαᵿε P, »α«µÑßß »α¿«ßΓá¡«ó¿Γß∩, »«ß¬«½∞¬π ßѼáΣ«α ¿¼ÑÑΓ ¡π½Ñ-
- ó«Ñ º¡áτÑ¡¿Ñ, ¡Ñß¼«Γα∩ ¡á Γ«, τΓ« αÑßπαß »«¬á ßó«í«ñÑ¡. æ¿ßΓÑ¼Ñ »α¿ñÑΓß∩
- "αá߬«Φѽ¿Γ∞ß∩" ¡á ñ«»«½¡¿Γѽ∞¡«Ñ »ÑαѬ½ετÑ¡¿Ñ ¬«¡ΓѬßΓá. æ ñαπú«⌐ ßΓ«α«¡δ,
- Ñß½¿ íδ í½«¬¿α«ó¬á íδ½á αÑ὿º«óá¡á ¡á «ß¡«óÑ «ñ¡«»α«µÑßß«α¡«⌐ ßσѼδ
-
-
- 371
-
- ┌────────────────────────────────────────────────────────────┐
- │ á½ú«α¿Γ¼ V /* «»Ñαᵿ∩ ¡áñ ßѼáΣ«α«¼ Γ¿»á V */ │
- │ óσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: áñαÑß ßѼáΣ«αá │
- │ óδσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: «ΓßπΓßΓóπÑΓ │
- │ { │
- │ Pprim(semaphore.lock); │
- │ πóѽ¿τ¿Γ∞ (semaphore.value); │
- │ Ñß½¿ (semaphore.value <= 0) │
- │ { │
- │ πñ὿Γ∞ ¿º ß»¿ß¬á »α«µÑßß«ó, »α¿«ßΓá¡«ó½Ñ¡¡δσ »« ßÑ-│
- │ ¼áΣ«απ, »Ñαóδ⌐ »« ßτÑΓπ »α«µÑßß; │
- │ »ÑαÑóÑßΓ¿ Ñú« ó ß«ßΓ«∩¡¿Ñ ú«Γ«ó¡«ßΓ¿ ¬ ºá»π߬π; │
- │ } │
- │ Vprim(semaphore.lock); │
- │ } │
- └────────────────────────────────────────────────────────────┘
-
- É¿ßπ¡«¬ 12.9. ǽú«α¿Γ¼ óδ»«½¡Ñ¡¿∩ «»Ñαᵿ¿ V
-
-
- (sleep-lock), »α«µÑßß A »«½πτ¿½ íδ »αáó« ¡á »«óΓ«α¡«Ñ ¿ß»«½∞º«óá¡¿Ñ αÑßπαßá,
- »«ß¬«½∞¬π ºá φΓ« óαѼ∩ ¡¿ «ñ¿¡ ¿º »α«µÑßß«ó ¡Ñ ß¼«ú íδ ºáí½«¬¿α«óáΓ∞ Ñú«.
- ä½∩ φΓ«ú« ß½πτá∩ ßσѼá sleep-lock í«½ÑÑ »«ñσ«ñ¿Γ, τѼ ßσѼá ß ¿ß»«½∞º«ó᡿Ѽ
- ßѼáΣ«α«ó.
- è«úñá í½«¬¿απεΓß∩ ßαáºπ ¡Ñ߬«½∞¬« ßѼáΣ«α«ó, «τÑαÑñ¡«ßΓ∞ í½«¬¿α«óá¡¿∩
- ñ«½ª¡á ¿ß¬½ετáΓ∞ 󫺡¿¬¡«óÑ¡¿Ñ Γπ»¿¬«óδσ ß¿Γπᵿ⌐. é ¬áτÑßΓóÑ »α¿¼Ñαá αáßß-
- ¼«Γα¿¼ ñóá ßѼáΣ«αá, A ¿ B, ¿ ñóá á½ú«α¿Γ¼á, ΓαÑíπεΘ¿σ «ñ¡«óαѼѡ¡«⌐ í½«¬¿-
- α«ó¬¿ ßѼáΣ«α«ó. àß½¿ íδ á½ú«α¿Γ¼δ πßΓá¡áó½¿ó὿ í½«¬¿α«ó¬π ¡á ßѼáΣ«αδ ó
- «íαáΓ¡«¼ »«α∩ñ¬Ñ, ¬á¬ ß½ÑñπÑΓ ¿º É¿ßπ¡¬á 12.11, »«ß½Ññ«óὫ íδ 󫺡¿¬¡«óÑ¡¿Ñ
- Γπ»¿¬«ó«⌐ ß¿Γπᵿ¿; »α«µÑßß A ¡á «ñ¡«¿¼Ñ¡¡«¼ »α«µÑßß«αÑ ºáσóáΓδóáÑΓ ßѼáΣ«α
- SA, ó Γ« óαѼ∩ ¬á¬ »α«µÑßß B ¡á ßó«Ñ¼ »α«µÑßß«αÑ ºáσóáΓδóáÑΓ ßѼáΣ«α SB.
- Åα«µÑßß A »δΓáÑΓß∩ ºáσóáΓ¿Γ∞ ¿ ßѼáΣ«α SB, ¡« ó αѺπ½∞ΓáΓÑ «»Ñαᵿ¿ P »ÑαÑ-
- σ«ñ¿Γ ó ß«ßΓ«∩¡¿Ñ »α¿«ßΓá¡«óá, »«ß¬«½∞¬π º¡áτÑ¡¿Ñ ßѼáΣ«αá SB ¡Ñ »αÑóδΦáÑΓ
- 0. Æ« ªÑ ßá¼«Ñ »α«¿ßσ«ñ¿Γ ß »α«µÑßß«¼ B, ¬«úñá »«ß½Ññ¡¿⌐ »δΓáÑΓß∩ ºáσóáΓ¿Γ∞
- ßѼáΣ«α SA. ì¿ Γ«Γ, ¡¿ ñαπú«⌐ »α«µÑßßδ »α«ñ«½ªáΓ∞ß∩ πªÑ ¡Ñ ¼«úπΓ.
- ä½∩ »αÑñ«ΓóαáΘÑ¡¿∩ 󫺡¿¬¡«óÑ¡¿∩ »«ñ«í¡δσ ß¿Γπᵿ⌐ ¿ß»«½∞ºπεΓß∩ ß««ΓóÑΓ-
- ßΓóπεΘ¿Ñ á½ú«α¿Γ¼δ «í¡áαπªÑ¡¿∩ «»áß¡«ßΓ¿ óºá¿¼¡«⌐ í½«¬¿α«ó¬¿, πßΓá¡áó½¿óáε-
- Θ¿Ñ ¡á½¿τ¿Ñ «»áß¡«⌐ ß¿Γπᵿ¿ ¿ ½¿¬ó¿ñ¿απεΘ¿Ñ ÑÑ. ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ, ¿ß»«½∞º«óá¡¿Ñ
- Γᬿσ á½ú«α¿Γ¼«ó "πΓ∩ªÑ½∩ÑΓ" ∩ñα«. ū߬«½∞¬π τ¿ß½« ß¿Γπᵿ⌐, ó ¬«Γ«αδσ »α«-
- µÑßß ñ«½ªÑ¡ «ñ¡«óαѼѡ¡« ºáσóáΓδóáΓ∞ ¡Ñ߬«½∞¬« ßѼáΣ«α«ó, ñ«ó«½∞¡« «úαá¡¿τÑ-
- ¡«, ½ÑúτÑ í佫 íδ αÑ὿º«óáΓ∞ á½ú«α¿Γ¼δ, »αÑñπ»αѪñáεΘ¿Ñ ó«º¡¿¬¡«óÑ¡¿Ñ Γπ»¿-
- ¬«óδσ ß¿Γπᵿ⌐ ÑΘÑ ñ« Γ«ú«, ¬á¬ «¡¿ íπñπΓ ¿¼ÑΓ∞ ¼ÑßΓ«. àß½¿, ¬ »α¿¼Ñαπ, ¬á-
- ¬«⌐-Γ« ¡áí«α ßѼáΣ«α«ó óßÑúñá í½«¬¿απÑΓß∩ ó «ñ¡«¼ ¿ Γ«¼ ªÑ »«α∩ñ¬Ñ, Γπ»¿¬«-
- óá∩ ß¿Γπᵿ∩ ¡¿¬«úñá ¡Ñ ó«º¡¿¬¡ÑΓ. ì« ó Γ«¼ ß½πτáÑ, ¬«úñá ºáσóáΓá ßѼáΣ«α«ó
- ó «íαáΓ¡«¼ »«α∩ñ¬Ñ ¿ºíѪáΓ∞ ¡Ñ
- πñáÑΓß∩, «»Ñαᵿ∩ CP »αÑñ«ΓóαáΓ¿Γ ó«º¡¿¬¡«óÑ¡¿Ñ Γπ»¿¬«ó«⌐ ß¿Γπᵿ¿ (ß¼. É¿-
- ßπ¡«¬ 12.12): Ñß½¿ «»Ñαᵿ∩ ºáóÑαΦ¿Γß∩ ¡Ñπñáτ¡«, »α«µÑßß B «ßó«í«ñ¿Γ ßó«¿
- αÑßπαßδ, ñáíδ ¿ºíѪáΓ∞ óºá¿¼¡«⌐ í½«¬¿α«ó¬¿, ¿ »«ºªÑ ºá»πßΓ¿Γ á½ú«α¿Γ¼ ¡á óδ-
- »«½¡Ñ¡¿Ñ »«óΓ«α¡«, ߬«αÑÑ óßÑú« Γ«úñá, ¬«úñá »α«µÑßß A ºáóÑαΦ¿Γ αáí«Γπ ß αÑ-
- ßπαß«¼.
- ùΓ«íδ »αÑñπ»αÑñ¿Γ∞ «ñ¡«óαѼѡ¡«Ñ «íαáΘÑ¡¿Ñ »α«µÑßß«ó ¬ αÑßπαßπ, »α«úαá¼-
- ¼á «íαáí«Γ¬¿ »αÑαδóá¡¿⌐, ¬áºá½«ß∞ íδ, ¼«ú½á ó«ß»«½∞º«óáΓ∞ß∩ ßѼáΣ«α«¼, ¡«
- ¿º-ºá Γ«ú«, τΓ« «¡á ¡Ñ ¼«ªÑΓ »α¿«ßΓá¡áó½¿óáΓ∞ ßó«ε αáí«Γπ (ß¼. ú½áóπ 6), ¿ß-
- »«½∞º«óáΓ∞ «»Ñαᵿε P ó φΓ«⌐ »α«úαá¼¼Ñ ¡Ñ½∞º∩. é¼ÑßΓ« φΓ«ú« ¼«ª¡« ¿ß»«½∞º«-
- óáΓ∞ "µ¿¬½¿τÑ߬πε í½«¬¿α«ó¬π" (spin lock) ¿ ¡Ñ »ÑαÑσ«ñ¿Γ∞ ó ß«ßΓ«∩¡¿Ñ »α¿«ß-
- Γá¡«óá, ¬á¬ ó ß½ÑñπεΘѼ »α¿¼ÑαÑ:
-
- while (! CP(semaphore));
-
-
- 372
-
- Åα«µÑßß A/Åα«µÑßß«α A Åα«µÑßß B/Åα«µÑßß«α B
- ┌───────────────────────────────────────────────────────────
- │ ∙ ┌────────────────────────┐ ∙
- │ ∙ │ ç¡áτÑ¡¿Ñ ßѼáΣ«αá = -1 │ ∙
- │ ∙ └────────────────────────┘ ∙
- │ »α«óÑα∩ÑΓ(º¡áτÑ¡¿Ñ ßѼá- ∙
- │ Σ«αá < 0) ? ∙
- │ (ñá) ∙
- │ V(ßѼáΣ«α) ∙
- │ ∙ ∙
- │ ∙ ┌────────────────────────┐ ∙
- │ ∙ │ ç¡áτÑ¡¿Ñ ßѼáΣ«αá = 0 │ ∙
- │ ∙ └────────────────────────┘ ∙
- │ »α«óÑα∩ÑΓ(º¡áτÑ¡¿Ñ ßѼá- ∙
- │ Σ«αá < 0) ? ∙
- │ ∙ ∙
- │ ∙ P(ßѼáΣ«α)
- │ ∙ ç¡áτÑ¡¿Ñ ßѼáΣ«αá = -1
- │ ∙
- │ (¡ÑΓ)
- │ ìàéàÉìÄ !!
- v
- éαѼ∩
-
- É¿ßπ¡«¬ 12.10. ìÑπñáτ¡«Ñ ¿¼¿Γᵿ∩ Σπ¡¬µ¿¿ wakeup »α¿ ¿ß»«½∞-
- º«óá¡¿¿ «»Ñαᵿ¿ V
-
-
- Ä»Ñαᵿ∩ »«óΓ«α∩ÑΓß∩ ó µ¿¬½Ñ ñ« ΓÑσ »«α, »«¬á º¡áτÑ¡¿Ñ ßѼáΣ«αá ¡Ñ »αÑóδß¿Γ
- 0; »α«úαá¼¼á «íαáí«Γ¬¿ »αÑαδóá¡¿⌐ ¡Ñ »α¿«ßΓá¡áó½¿óáÑΓß∩ ¿ µ¿¬½ ºáóÑαΦáÑΓß∩
- Γ«½∞¬« Γ«úñá, ¬«úñá º¡áτÑ¡¿Ñ ßѼáΣ«αá ßΓá¡ÑΓ »«½«ª¿Γѽ∞¡δ¼, »«ß½Ñ τÑú« φΓ«
- º¡áτÑ¡¿Ñ íπñÑΓ π¼Ñ¡∞ΦÑ¡« «»ÑαᵿÑ⌐ CP.
- ùΓ«íδ »αÑñ«ΓóαáΓ¿Γ∞ ß¿Γπᵿε óºá¿¼¡«⌐ í½«¬¿α«ó¬¿, ∩ñαπ ¡πª¡« ºá»αÑΓ¿Γ∞
- óßÑ »αÑαδóá¡¿∩, óδ»«½¡∩εΘ¿Ñ "µ¿¬½¿τÑ߬πε í½«¬¿α«ó¬π". ê¡áτÑ óδ»«½¡Ñ¡¿Ñ »α«-
- µÑßßá, ºáσóáΓ¿óΦÑú« ßѼáΣ«α, íπñÑΓ »αÑαóá¡« ÑΘÑ ñ« Γ«ú«, ¬á¬ «¡ ß¼«ªÑΓ «ßó«-
- í«ñ¿Γ∞ ßѼáΣ«α; Ñß½¿ »α«úαá¼¼á «íαáí«Γ¬¿ »αÑαδóá¡¿⌐ »«»δΓáÑΓß∩ ºáσóáΓ¿Γ∞
- φëà ßѼáΣ«α, ¿ß»«½∞ºπ∩ "µ¿¬½¿τÑ߬πε í½«¬¿α«ó¬π", ∩ñα« ºáí½«¬¿απÑΓ ßἫ ßÑ-
- í∩. é ¬áτÑßΓóÑ »α¿¼Ñαá «íαáΓ¿¼ß∩ ¬ É¿ßπ¡¬π 12.13. é ¼«¼Ñ¡Γ 󫺡¿¬¡«óÑ¡¿∩
-
- Åα«µÑßß A/Åα«µÑßß«α A Åα«µÑßß B/Åα«µÑßß«α B
- ┌───────────────────────────────────────────────────────────
- │ P(ßѼáΣ«α SA); ∙
- │ ∙ ∙
- │ ∙ ∙
- │ ∙ ∙
- │ ∙ P(ßѼáΣ«α SB);
- │ ∙ ∙
- │ ∙ ∙
- │ ∙ ∙
- │ ∙ P(ßѼáΣ«α SA);
- │ ∙ »α¿«ßΓá¡áó½¿óáÑΓß∩
- │ ∙
- │ P(ßѼáΣ«α SB);
- │ »α¿«ßΓá¡áó½¿óáÑΓß∩
- │
- v éºá¿¼¡á∩ í½«¬¿α«ó¬á !!
- éαѼ∩
- É¿ßπ¡«¬ 12.11. 髺¡¿¬¡«óÑ¡¿Ñ Γπ»¿¬«ó«⌐ ß¿Γπᵿ¿
- ¿º-ºá ß¼Ñ¡δ «τÑαÑñ¡«ßΓ¿ í½«¬¿α«óá¡¿∩
-
- 373
-
-
- »αÑαδóá¡¿∩ º¡áτÑ¡¿Ñ ßѼáΣ«αá ¡Ñ »αÑóδΦáÑΓ 0, »«φΓ«¼π αѺπ½∞ΓáΓ«¼ óδ»«½¡Ñ¡¿∩
- «»Ñαᵿ¿ CP óßÑúñá íπñÑΓ "½«ª∞". Åα«í½Ñ¼á αÑΦáÑΓß∩ »πΓѼ ºá»αÑΘÑ¡¿∩ óßÑσ
- »αÑαδóá¡¿⌐ ¡á Γ« óαѼ∩, »«¬á ßѼáΣ«α ºáσóáτÑ¡ »α«µÑßß«¼.
-
-
- E12.3.3 Åα¿¼Ñαδ á½ú«α¿Γ¼«óF
-
- é ñá¡¡«¼ αáºñÑ½Ñ ¼δ αáßß¼«Γα¿¼ τÑΓδαÑ á½ú«α¿Γ¼á ∩ñαá, αÑ὿º«óá¡¡δσ ß
- ¿ß»«½∞º«ó᡿Ѽ ßѼáΣ«α«ó. ǽú«α¿Γ¼ óδñѽѡ¿∩ íπΣÑαá ¿½½εßΓα¿απÑΓ ß½«ª¡πε
- ßσѼπ í½«¬¿α«óá¡¿∩, ¡á »α¿¼ÑαÑ á½ú«α¿Γ¼á wait »«¬áºá¡á ß¿¡σα«¡¿ºáµ¿∩ óδ»«½-
- ¡Ñ¡¿∩ »α«µÑßß«ó, ßσѼá í½«¬¿α«óá¡¿∩ ñαá⌐óÑα«ó αÑ὿ºπÑΓ ¿º∩Θ¡δ⌐ »«ñσ«ñ ¬ αÑ-
- ΦÑ¡¿ε ñá¡¡«⌐ »α«í½Ñ¼δ, ¿ ¡á¬«¡Ñµ, ¼ÑΓ«ñ αÑΦÑ¡¿∩ »α«í½Ñ¼δ 󫽫ßΓ«⌐ αáí«Γδ
- »α«µÑßß«αá »«¬áºδóáÑΓ, τΓ« ¡πª¡« ßñѽáΓ∞, τΓ«íδ ¿ºíѪáΓ∞ ¬«¡¬παÑ¡µ¿¿ ¼Ñªñπ
- »α«µÑßßἿ.
-
-
- E12.3.3.1 éδñѽѡ¿Ñ íπΣÑαáF
-
- ÄíαáΓ¿¼ß∩ ÑΘÑ αẠ¬ á½ú«α¿Γ¼π getblk, αáßß¼«ΓαÑ¡¡«¼π ¡á¼¿ ó ú½áóÑ 3. ǽ-
- ú«α¿Γ¼ αáí«ΓáÑΓ ß ΓαѼ∩ ßΓαπ¬ΓπαἿ ñá¡¡δσ: ºáú«½«ó¬«¼ íπΣÑαá, σÑΦ-«τÑαÑñ∞ε
- íπΣÑα«ó ¿ ß»¿ß¬«¼ ßó«í«ñ¡δσ íπΣÑα«ó. ƒñα« ßó∩ºδóáÑΓ ßѼáΣ«α ß« óßѼ¿ φ¬ºÑ¼»-
- ½∩αἿ ¬áªñ«⌐ ßΓαπ¬Γπαδ. äαπú¿¼¿ ß½«óἿ, Ñß½¿ π ∩ñαá ¿¼ÑεΓß∩ ó αáß»«α∩ªÑ¡¿¿
- 200 íπΣÑα«ó, ºáú«½«ó«¬ ¬áªñ«ú« ¿º ¡¿σ ó¬½ετáÑΓ ó ßÑí∩ ßѼáΣ«α, ¿ß»«½∞ºπѼδ⌐
- ñ½∩ ºáσóáΓá íπΣÑαá; ¬«úñá »α«µÑßß óδ»«½¡∩ÑΓ ¡áñ ßѼáΣ«α«¼ «»Ñαᵿε P, ñαπú¿Ñ
- »α«µÑßßδ, Γ«ªÑ »«ªÑ½áóΦ¿Ñ ºáσóáΓ¿Γ∞ íπΣÑα, »α¿«ßΓá¡áó½¿óáεΓß∩ ñ« ΓÑσ »«α,
- »«¬á »Ñαóδ⌐ »α«µÑßß ¡Ñ ¿ß»«½¡¿Γ «»Ñαᵿε V. ô ¬áªñ«⌐ σÑΦ-«τÑαÑñ¿ íπΣÑα«ó
- Γá¬ªÑ ¿¼ÑÑΓß∩ ßѼáΣ«α, í½«¬¿απεΘ¿⌐ ñ«ßΓπ» ¬ «τÑαÑñ¿. é «ñ¡«»α«µÑßß«α¡«⌐ ß¿ß-
- ΓÑ¼Ñ í½«¬¿α«ó¬á σÑΦ-«τÑ-
-
- Åα«µÑßß A/Åα«µÑßß«α A Åα«µÑßß B/Åα«µÑßß«α B
- ┌───────────────────────────────────────────────────────────
- │ P(ßѼáΣ«α SA); ∙
- │ ∙ ∙
- │ ∙ P(ßѼáΣ«α SB);
- │ ∙ ∙
- │ ∙ ∙
- │ ∙ Ñß½¿ (! CP(ßѼáΣ«α SA))
- │ ∙ {
- │ ∙ V(ßѼáΣ«α SB);
- │ ∙ »ÑαѺá»πßΓ¿Γ∞ á½ú«-
- │ ∙ α¿Γ¼
- │ ∙ }
- │ P(ßѼáΣ«α SB);
- │ »α¿«ßΓá¡áó½¿óáÑΓß∩
- v
- éαѼ∩
-
- É¿ßπ¡«¬ 12.12. êß»«½∞º«óá¡¿Ñ «»Ñαᵿ¿ P πß½«ó¡«ú« Γ¿»á ñ½∩
- »αÑñ«ΓóαáΘÑ¡¿∩ óºá¿¼¡«⌐ í½«¬¿α«ó¬¿
-
-
- αÑñ¿ ¡Ñ ¡πª¡á, ¿í« »α«µÑßß ¡¿¬«úñá ¡Ñ »ÑαÑσ«ñ¿Γ ó ß«ßΓ«∩¡¿Ñ »α¿«ßΓá¡«óá, «ß-
- Γáó½∩∩ «τÑαÑñ∞ ó ¡Ñß«ú½áß«óá¡¡«¼ (¡Ñπ»«α∩ñ«τÑ¡¡«¼) ó¿ñÑ. é ¼¡«ú«»α«µÑßß«α¡«⌐
- ß¿ßΓѼÑ, ΓѼ ¡Ñ ¼Ñ¡ÑÑ, 󫺼«ª¡δ ß¿Γπᵿ¿, ¬«úñá ß «ñ¡«⌐ ¿ Γ«⌐ ªÑ σÑΦ-«τÑ-
- αÑñ∞ε αáí«ΓáεΓ ñóá »α«µÑßßá; ó ¬áªñδ⌐ ¼«¼Ñ¡Γ óαѼѡ¿ ßѼáΣ«α «Γ¬αδóáÑΓ ñ«ß-
-
-
-
-
- 374
-
- Γπ» ¬ «τÑαÑñ¿ Γ«½∞¬« ñ½∩ «ñ¡«ú« »α«µÑßßá. Å« ΓѼ ªÑ »α¿τ¿¡á¼ ¿ ß»¿ß«¬ ßó«-
- í«ñ¡δσ íπΣÑα«ó ¡πªñáÑΓß∩ ó ßѼáΣ«αÑ ñ½∩ ºáΘ¿Γδ ß«ñÑαªáΘÑ⌐ß∩ ó ¡Ñ¼ ¿¡Σ«α¼áµ¿¿
- «Γ ¿ß¬áªÑ¡¿∩.
- ìá É¿ßπ¡¬Ñ 12.14 »«¬áºá¡á »Ñαóá∩ τáßΓ∞ á½ú«α¿Γ¼á getblk, αÑ὿º«óá¡¡á∩ ó
- ¼¡«ú«»α«µÑßß«α¡«⌐ ß¿ßΓÑ¼Ñ ß ¿ß»«½∞º«ó᡿Ѽ ßѼáΣ«α«ó. Åα«ß¼áΓα¿óá∩ íπΣÑα¡δ⌐
- ¬ÑΦ ó »«¿ß¬áσ π¬áºá¡¡«ú« í½«¬á, ∩ñα« ß »«¼«Θ∞ε «»Ñαᵿ¿ P ºáσóáΓδóáÑΓ ßѼá-
- Σ«α, »α¿¡áñ½ÑªáΘ¿⌐ σÑΦ-«τÑαÑñ¿. àß½¿ ¡áñ ßѼáΣ«α«¼ πªÑ ¬Ñ¼-Γ« »α«¿ºóÑñÑ¡á
- «»Ñαᵿ∩ ñá¡¡«ú« Γ¿»á, ΓѬπΘ¿⌐ »α«µÑßß »α¿«ßΓá¡áó½¿óáÑΓß∩ ñ« ΓÑσ »«α, »«¬á
- »α«µÑßß, ºáσóáΓ¿óΦ¿⌐ ßѼáΣ«α, ¡Ñ «ßó«í«ñ¿Γ Ñú«, óδ»«½¡¿ó «»Ñαᵿε V. è«úñá
- ΓѬπΘ¿⌐ »α«µÑßß »«½πτáÑΓ »αáó« ¿ß¬½ετ¿Γѽ∞¡«ú« ¬«¡Γα«½∩ ¡áñ σÑΦ-«τÑαÑñ∞ε, «¡
- »α¿ßΓπ»áÑΓ ¬ »«¿ß¬π »«ñσ«ñ∩ΘÑú« íπΣÑαá. ÅαÑñ»«½«ª¿¼, τΓ« íπΣÑα ¡áσ«ñ¿Γß∩ ó
- σÑΦ-«τÑαÑñ¿. ƒñα« (»α«µÑßß A) »δΓáÑΓß∩ ºáσóáΓ¿Γ∞ íπΣÑα, ¡« Ñß½¿ «¡« ¿ß»«½∞-
- ºπÑΓ «»Ñαᵿε P ¿ Ñß½¿ íπΣÑα πªÑ ºáσóáτÑ¡, ∩ñαπ »α¿ñÑΓß∩ »α¿«ßΓá¡«ó¿Γ∞ ßó«ε
- αáí«Γπ, «ßΓáó¿ó σÑΦ-«τÑαÑñ∞ ºáí½«¬¿α«óá¡¡«⌐ ¿ ¡Ñ ñ«»π߬á∩ Γᬿ¼ «íαẫ¼ «í-
- αáΘÑ¡¿⌐ ¬ ¡Ñ⌐ ß« ßΓ«α«¡δ ñαπú¿σ »α«µÑßß«ó, ñáªÑ Ñß½¿ »«ß½Ññ¡¿Ñ óÑñπΓ »«¿ß¬
- ¡ÑºáσóáτÑ¡¡δσ íπΣÑα«ó. ÅπßΓ∞ ó¼ÑßΓ« φΓ«ú« »α«µÑßß A ºáσóáΓδóáÑΓ íπΣÑα, ¿ß-
- »«½∞ºπ∩ «»Ñαᵿε CP; Ñß½¿ «»Ñαᵿ∩ ºáóÑαΦáÑΓß∩ πß»ÑΦ¡«, íπΣÑα ßΓá¡«ó¿Γß∩ «Γ-
- ¬αδΓδ¼ ñ½∩ »α«µÑßßá. Åα«µÑßß A ºáσóáΓδóáÑΓ ßѼáΣ«α, »α¿¡áñ½ÑªáΘ¿⌐ ß»¿ß¬π
- ßó«í«ñ¡δσ íπΣÑα«ó, óδ»«½¡∩∩ «»Ñαᵿε CP, »«ß¬«½∞¬π ßѼáΣ«α ºáσóáΓδóáÑΓß∩ ¡á
- ¡Ñ»α«ñ«½ª¿Γѽ∞¡«Ñ óαѼ∩ ¿, ß½Ññ«óáΓѽ∞¡«, »α¿«ßΓá¡áó½¿óáΓ∞ ßó«ε αáí«Γπ, óδ-
- »«½¡∩∩ «»Ñαᵿε P, »α«µÑßß »α«ßΓ« ¡Ñ ¿¼ÑÑΓ ó«º¼«ª¡«ßΓ¿. ƒñα« πí¿αáÑΓ íπΣÑα
- ¿º ß»¿ß¬á ßó«í«ñ¡δσ íπΣÑα«ó, ß¡¿¼áÑΓ í½«¬¿α«ó¬π ß« ß»¿ß¬á ¿ ß σÑΦ-«τÑαÑñ¿ ¿
- ó«ºóαáΘáÑΓ ºáσóáτÑ¡¡δ⌐ íπΣÑα.
-
- │
- │ P(ßѼáΣ«α);
- │ (ç¡áτÑ¡¿Ñ ßѼáΣ«αá ΓÑ»Ñα∞ αáó¡« 0)
- │
- │ ÅαÑαδóá¡¿Ñ
- │
- │ CP(ßѼáΣ«α) ºáóÑαΦáÑΓß∩ ¡Ñπñáτ¡« ---
- │ ßѼáΣ«α ºáσóáτÑ¡
- │
- │ æÑ¼áΣ«α ¡Ñ «ßó«í«ªñáÑΓß∩ ñ« óδσ«ñá ¿º »αÑαδóá¡¿∩.
- │
- │ éδσ«ñ ¿º »αÑαδóá¡¿∩ íѺ Ñú« «íαáí«Γ¬¿ ¡Ñ󫺼«ªÑ¡.
- │
- │ Æπ»¿¬«óá∩ ß¿Γπᵿ∩ (óºá¿¼¡á∩ í½«¬¿α«ó¬á)
- v
- éαѼ∩
-
- É¿ßπ¡«¬ 12.13. éºá¿¼¡á∩ í½«¬¿α«ó¬á »α¿ óδ»«½¡Ñ¡¿¿ »α«úαá¼¼δ
- «íαáí«Γ¬¿ »αÑαδóá¡¿∩
-
-
- ÅαÑñ»«½«ª¿¼, τΓ« «»Ñαᵿ∩ CP ¡áñ íπΣÑα«¼ ºáóÑαΦ¿½áß∞ ¡Ñπñáτ¡« ¿º-ºá Γ«-
- ú«, τΓ« ßѼáΣ«α, »α¿¡áñ½ÑªáΘ¿⌐ íπΣÑαπ, «¬áºá½ß∩ ºáσóáτÑ¡¡δ¼. Åα«µÑßß A «ßó«-
- í«ªñáÑΓ ßѼáΣ«α, ßó∩ºá¡¡δ⌐ ß σÑΦ-«τÑαÑñ∞ε, ¿ »α¿«ßΓá¡áó½¿óáÑΓß∩, »δΓá∩ß∞ óδ-
- »«½¡¿Γ∞ «»Ñαᵿε P ¡áñ ßѼáΣ«α«¼ íπΣÑαá. Ä»Ñαᵿ∩ P ¡áñ ßѼáΣ«α«¼ íπñÑΓ óδ-
- »«½¡∩Γ∞ß∩, ¡Ñß¼«Γα∩ ¡á Γ«, τΓ« «»Ñαᵿ∩ CP πªÑ »«ΓÑα»Ñ½á ¡Ñπñáτπ. Å« ºáóÑα-
- ΦÑ¡¿¿ óδ»«½¡Ñ¡¿∩ «»Ñαᵿ¿ »α«µÑßß A »«½πτáÑΓ ó½áßΓ∞ ¡áñ íπΣÑα«¼. Æá¬ ¬á¬ ó
- «ßΓáóΦÑ⌐ß∩ τáßΓ¿ á½ú«α¿Γ¼á »αÑñ»«½áúáÑΓß∩, τΓ« íπΣÑα ¿ σÑΦ-«τÑαÑñ∞ ºáσóáτÑ-
- ¡δ, »α«µÑßß A ΓÑ»Ñα∞ »δΓáÑΓß∩ ºáσóáΓ¿Γ∞ σÑΦ-«τÑαÑñ∞ (*). ū߬«½∞¬π «τÑαÑñ-
-
- ───────────────────────────────────────
- (*) é¼ÑßΓ« ºáσóáΓá σÑΦ-«τÑαÑñ¿ ó φΓ«¼ ¼ÑßΓÑ ¼«ª¡« í佫 íδ πßΓá¡«ó¿Γ∞ ß««Γ-
- óÑΓßΓóπεΘ¿⌐ Σ½áú, »α«óÑα∩Ѽδ⌐ ñá½ÑÑ »ÑαÑñ óδ»«½¡Ñ¡¿Ñ¼ «»Ñαᵿ¿ V, ¡«
- τΓ«íδ »α«¿½½εßΓα¿α«óáΓ∞ ßσѼπ ºáσóáΓá ßѼáΣ«α«ó ó «íαáΓ¡«⌐ »«ß½Ññ«óá-
- Γѽ∞¡«ßΓ¿, ó ¿º½«ªÑ¡¿¿ ¼δ íπñѼ »α¿ñÑনóáΓ∞ß∩ αá¡ÑÑ «»¿ßá¡¡«ú« óáα¿á¡-
- Γá.
- 375
-
- ¡«ßΓ∞ ºáσóáΓá ºñÑß∞ (ß¡áτá½á ßѼáΣ«α íπΣÑαá, »«Γ«¼ ßѼáΣ«α «τÑαÑñ¿) «íαáΓ¡á
- óδΦÑπ¬áºá¡¡«⌐ «τÑαÑñ¡«ßΓ¿, ¡áñ ßѼáΣ«α«¼ óδ»«½¡∩ÑΓß∩ «»Ñαᵿ∩ CP. àß½¿ »«-
- »δΓ¬á ºáσóáΓá ºá¬á¡τ¿óáÑΓß∩ ¡ÑπñáτÑ⌐, ¿¼ÑÑΓ ¼ÑßΓ« «íδτ¡á∩ «íαáí«Γ¬á, ΓαÑíπε-
- Θá∩ß∩ »« σ«ñπ ºáñáτ¿. ì« Ñß½¿ ºáσóáΓ πñáÑΓß∩, ∩ñα« ¡Ñ ¼«ªÑΓ íδΓ∞ πóÑαÑ¡« ó
-
- ┌────────────────────────────────────────────────────────────┐
- │ á½ú«α¿Γ¼ getblk /* ¼¡«ú«»α«µÑßß«α¡á∩ óÑαß¿∩ */ │
- │ óσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: ¡«¼Ñα Σá⌐½«ó«⌐ ß¿ßΓѼδ │
- │ ¡«¼Ñα í½«¬á │
- │ óδσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: ºáσóáτÑ¡¡δ⌐ íπΣÑα, »αÑñ¡áº¡áτÑ¡¡δ⌐ ñ½∩│
- │ «íαáí«Γ¬¿ ß«ñÑন¼«ú« í½«¬á │
- │ { │
- │ óδ»«½¡∩Γ∞ (»«¬á íπΣÑα ¡Ñ íπñÑΓ «í¡áαπªÑ¡) │
- │ { │
- │ P(ßѼáΣ«α σÑΦ-«τÑαÑñ¿); │
- │ Ñß½¿ (í½«¬ ¡áσ«ñ¿Γß∩ ó σÑΦ-«τÑαÑñ¿) │
- │ { │
- │ Ñß½¿ («»Ñαᵿ∩ CP(ßѼáΣ«α íπΣÑαá) ºáóÑαΦáÑΓß∩ ¡Ñ- │
- │ πñáτ¡«) /* íπΣÑα ºá¡∩Γ */ │
- │ { │
- │ V(ßѼáΣ«α σÑΦ-«τÑαÑñ¿); │
- │ P(ßѼáΣ«α íπΣÑαá); /* »α¿«ßΓá¡«ó ñ« ¼«¼Ñ¡-│
- │ * Γá «ßó«í«ªñÑ¡¿∩ │
- │ */ │
- │ Ñß½¿ («»Ñαᵿ∩ CP(ßѼáΣ«α σÑΦ-«τÑαÑñ¿) ºáóÑαΦá-│
- │ ÑΓß∩ ¡Ñπñáτ¡«) │
- │ { │
- │ V(ßѼáΣ«α íπΣÑαá); │
- │ »α«ñ«½ª¿Γ∞; /* óδσ«ñ ó µ¿¬½ "óδ»«½¡∩Γ∞" │
- │ */ │
- │ } │
- │ ó »α«Γ¿ó¡«¼ ß½πτáÑ Ñß½¿ (¡«¼Ñα πßΓα«⌐ßΓóá ¿½¿ │
- │ ¡«¼Ñα í½«¬á ¿º¼Ñ¡¿½¿ß∞) │
- │ { │
- │ V(ßѼáΣ«α íπΣÑαá); │
- │ V(ßѼáΣ«α σÑΦ-«τÑαÑñ¿); │
- │ } │
- │ } │
- │ óδ»«½¡∩Γ∞ (»«¬á «»Ñαᵿ∩ CP(ßѼáΣ«α ß»¿ß¬á ßó«í«ñ-│
- │ ¡δσ íπΣÑα«ó) ¡Ñ ºáóÑαΦ¿Γß∩ πß»ÑΦ¡«) │
- │ ; /* "¬«½∞µÑó«⌐ µ¿¬½" */ │
- │ »«¼ÑΓ¿Γ∞ íπΣÑα ºá¡∩Γδ¼; │
- │ πíαáΓ∞ íπΣÑα ¿º ß»¿ß¬á ßó«í«ñ¡δσ íπΣÑα«ó; │
- │ V(ßѼáΣ«α ß»¿ß¬á ßó«í«ñ¡δσ íπΣÑα«ó); │
- │ V(ßѼáΣ«α σÑΦ-«τÑαÑñ¿); │
- │ óÑα¡πΓ∞ íπΣÑα; │
- │ } │
- │ ó »α«Γ¿ó¡«¼ ß½πτáÑ /* íπΣÑα «ΓßπΓßΓóπÑΓ ó σÑΦ- │
- │ * «τÑαÑñ¿ │
- │ */ │
- │ /* ºñÑß∞ ¡áτ¿¡áÑΓß∩ óδ»«½¡Ñ¡¿Ñ «ßΓáóΦÑ⌐ß∩ τáßΓ¿ á½ú«-│
- │ * α¿Γ¼á │
- │ */ │
- │ } │
- │ } │
- └────────────────────────────────────────────────────────────┘
-
- É¿ßπ¡«¬ 12.14. éδñѽѡ¿Ñ íπΣÑαá ß ¿ß»«½∞º«ó᡿Ѽ ßѼáΣ«α«ó
-
-
- 376
-
- Γ«¼, τΓ« ºáσóáτÑ¡ ¬«ααÑ¬Γ¡δ⌐ íπΣÑα, »«ß¬«½∞¬π ß«ñÑন¼«Ñ íπΣÑαá ¼«ú½« íδΓ∞
- αá¡ÑÑ ¿º¼Ñ¡Ñ¡« ñαπú¿¼ »α«µÑßß«¼, «í¡áαπª¿óΦ¿¼ íπΣÑα ó ß»¿ß¬Ñ ßó«í«ñ¡δσ íπΣÑ-
- α«ó ¿ ºáσóáΓ¿óΦ¿¼ ¡á óαѼ∩ Ñú« ßѼáΣ«α. Åα«µÑßß A, «ª¿ñá∩ «ßó«í«ªñÑ¡¿∩ ßѼá-
- Σ«αá, ¡Ñ ¿¼ÑÑΓ ¡¿ ¼á½Ñ⌐ΦÑú« »αÑñßΓáó½Ñ¡¿∩ « Γ«¼, ∩ó½∩ÑΓß∩ ½¿ ¿¡ΓÑαÑßπεΘ¿⌐
- Ñú« íπΣÑα ΓѼ íπΣÑα«¼, ¬«Γ«αδ⌐ Ѽπ ¡πªÑ¡, ¿ »«φΓ«¼π »αѪñÑ óßÑú« «¡ ñ«½ªÑ¡
- πíÑñ¿Γ∞ß∩ ó »αáó¿½∞¡«ßΓ¿ ß«ñÑন¼«ú« íπΣÑαá; Ñß½¿ »α«óÑα¬á ñáÑΓ «Γα¿µáΓѽ∞-
- ¡δ⌐ αѺπ½∞ΓáΓ, á½ú«α¿Γ¼ ºá»π߬áÑΓß∩ ß¡áτá½á. àß½¿ ß«ñÑন¼«Ñ íπΣÑαá ¬«ααѬΓ-
- ¡«, »α«µÑßß A ºáóÑαΦáÑΓ óδ»«½¡Ñ¡¿Ñ á½ú«α¿Γ¼á.
-
- ┌────────────────────────────────────────────────────────────┐
- │ ¼¡«ú«»α«µÑßß«α¡á∩ óÑαß¿∩ á½ú«α¿Γ¼á wait │
- │ { │
- │ ñ½∩ (;;) /* µ¿¬½ */ │
- │ { │
- │ »ÑαÑí«α óßÑσ »α«µÑßß«ó-»«Γ«¼¬«ó: │
- │ Ñß½¿ (»«Γ«¼«¬ ¡áσ«ñ¿Γß∩ ó ß«ßΓ«∩¡¿¿ "»αѬαáΘÑ¡¿∩ │
- │ ßπΘÑßΓó«óá¡¿∩") │
- │ óÑα¡πΓ∞ π»αáó½Ñ¡¿Ñ; │
- │ P(zombie_semaphore); /* ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ - 0 */│
- │ } │
- │ } │
- └────────────────────────────────────────────────────────────┘
-
- É¿ßπ¡«¬ 12.15. î¡«ú«»α«µÑßß«α¡á∩ óÑαß¿∩ á½ú«α¿Γ¼á wait
-
-
- ÄßΓáóΦπεß∩ τáßΓ∞ á½ú«α¿Γ¼á ¼«ª¡« αáßß¼«ΓαÑΓ∞ ó ¬áτÑßΓóÑ π»α᪡ѡ¿∩.
-
-
- E12.3.3.2 WaitF
-
- êº ú½áóδ 7 ¼δ πªÑ º¡áѼ « Γ«¼, τΓ« ó« óαѼ∩ óδ»«½¡Ñ¡¿∩ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿
- wait »α«µÑßß »α¿«ßΓá¡áó½¿óáÑΓ ßó«ε αáí«Γπ ñ« ¼«¼Ñ¡Γá ºáóÑαΦÑ¡¿∩ óδ»«½¡Ñ¡¿∩
- ßó«Ñú« »«Γ«¼¬á. é ¼¡«ú«»α«µÑßß«α¡«⌐ ß¿ßΓÑ¼Ñ »ÑαÑñ »α«µÑßß«¼ óßΓáÑΓ ºáñáτá ¡Ñ
- π»πßΓ¿Γ∞ »α¿ óδ»«½¡Ñ¡¿¿ á½ú«α¿Γ¼á wait »«Γ«¼¬á, »αѬαáΓ¿óΦÑú« ßπΘÑßΓó«óá¡¿Ñ
- ß »«¼«Θ∞ε Σπ¡¬µ¿¿ exit; Ñß½¿, ¡á»α¿¼Ñα, ó Γ« óαѼ∩, »«¬á ¡á «ñ¡«¼ »α«µÑßß«αÑ
- »α«µÑßß-α«ñ¿Γѽ∞ ºá»π߬áÑΓ Σπ¡¬µ¿ε wait, ¡á ñαπú«¼ »α«µÑßß«αÑ Ñú« »«Γ«¼«¬
- ºáóÑαΦ¿½ ßó«ε αáí«Γπ, α«ñ¿ΓÑ½ε ¡ÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ¿ »α¿«ßΓá¡áó½¿óáΓ∞ ßó«Ñ óδ-
- »«½¡Ñ¡¿Ñ ó «ª¿ñá¡¿¿ ºáóÑαΦÑ¡¿∩ óΓ«α«ú« »«Γ«¼¬á. é ¬áªñ«⌐ ºá»¿ß¿ Γáí½¿µδ »α«-
- µÑßß«ó ¿¼ÑÑΓß∩ ßѼáΣ«α, ¿¼Ñ¡πѼδ⌐ zombie_semaphore ¿ ¿¼ÑεΘ¿⌐ ó ¡áτá½Ñ ¡π½Ñ-
- ó«Ñ º¡áτÑ¡¿Ñ. ¥Γ«Γ ßѼáΣ«α ¿ß»«½∞ºπÑΓß∩ »α¿ «αúá¡¿ºáµ¿¿ óºá¿¼«ñÑ⌐ßΓó¿∩
- wait/exit (É¿ßπ¡«¬ 12.15). è«úñá »«Γ«¼«¬ ºáóÑαΦáÑΓ αáí«Γπ, «¡ óδ»«½¡∩ÑΓ ¡áñ
- ßѼáΣ«α«¼ ßó«Ñú« α«ñ¿Γѽ∩ «»Ñαᵿε V, óδó«ñ∩ α«ñ¿Γѽ∩ ¿º ß«ßΓ«∩¡¿∩ »α¿«ßΓá-
- ¡«óá, Ñß½¿ ëà »ÑαÑΦѽ ó ¡Ñú« ó« óαѼ∩ ¿ß»«½¡Ñ¡¿∩ Σπ¡¬µ¿¿ wait. àß½¿ »«Γ«¼«¬
- ºáóÑαΦ¿½ß∩ αá¡∞ΦÑ, τѼ α«ñ¿Γѽ∞ ºá»πßΓ¿½ Σπ¡¬µ¿ε wait, φëà Σá¬Γ íπñÑΓ «í¡á-
- απªÑ¡ α«ñ¿ΓѽѼ, ¬«Γ«αδ⌐ ΓπΓ ªÑ óδ⌐ñÑΓ ¿º ß«ßΓ«∩¡¿∩ «ª¿ñá¡¿∩. àß½¿ «íá »α«-
- µÑßßá ¿ß»«½¡∩εΓ Σπ¡¬µ¿¿ exit ¿ wait »áαώѽ∞¡«, ¡« »«Γ«¼«¬ ¿ß»«½¡∩ÑΓ Σπ¡¬-
- µ¿ε exit πªÑ »«ß½Ñ Γ«ú«, ¬á¬ α«ñ¿Γѽ∞ »α«óÑα¿½ Ñú« ßΓáΓπß, «»Ñαᵿ∩ V, óδ-
- »«½¡Ñ¡¡á∩ »«Γ«¼¬«¼, ó«ß»αÑ»∩ΓßΓóπÑΓ »ÑαÑσ«ñπ α«ñ¿Γѽ∩ ó ß«ßΓ«∩¡¿Ñ »α¿«ßΓá¡«-
- óá. é σπñΦѼ ß½πτáÑ »α«µÑßß-α«ñ¿Γѽ∞ »α«ßΓ« »«óΓ«α∩ÑΓ µ¿¬½ ½¿Φ¡¿⌐ αáº.
-
-
- E12.3.3.3 äαá⌐óÑαδF
-
- é ¼¡«ú«»α«µÑßß«α¡«⌐ αÑ὿ºáµ¿¿ óδτ¿ß½¿Γѽ∞¡«⌐ ß¿ßΓÑ¼δ ¡á íáºÑ ¬«¼»∞εΓÑ-
- α«ó AT&T 3B20 ßѼáΣ«αδ ó ßΓαπ¬Γπαπ ºáúαπº«τ¡«ú« ¬«ñá ñαá⌐óÑα«ó ¡Ñ ó¬½ετáεΓ-
- ß∩, á «»Ñαᵿ¿ Γ¿»á P ¿ V óδ»«½¡∩εΓß∩ ó Γ«τ¬áσ óσ«ñá ó ¬áªñδ⌐ ñαá⌐óÑα (ß¼.
- [Bach 84]). é ú½áóÑ 10 ¼δ ú«ó«α¿½¿ « Γ«¼, τΓ« ¿¡ΓÑαΣÑ⌐ß, αÑ὿ºπѼδ⌐ ñαá⌐óÑ-
- αἿ πßΓα«⌐ßΓó, σáαá¬ΓÑਧπÑΓß∩ «τÑ¡∞ ¡Ñí«½∞Φ¿¼ τ¿ß½«¼ Γ«τѬ óσ«ñá (¡á »αá¬-
-
- 377
-
- Γ¿¬Ñ ¿σ «¬«½« 20). çáΘ¿Γá ñαá⌐óÑα«ó «ßπΘÑßΓó½∩ÑΓß∩ ¡á πα«ó¡Ñ Γ«τѬ óσ«ñá ó
- ¡¿σ:
-
- P(ßѼáΣ«α ñαá⌐óÑαá);
- «Γ¬αδΓ∞ (ñαá⌐óÑα);
- V(ßѼáΣ«α ñαá⌐óÑαá);
-
- àß½¿ ñ½∩ óßÑσ Γ«τѬ óσ«ñá ó ñαá⌐óÑα ¿ß»«½∞º«óáΓ∞ «ñ¿¡ ¿ ëà ªÑ ßѼáΣ«α,
- ¡« »α¿ φΓ«¼ ñ½∩ αạδσ ñαá⌐óÑα«ó - αạδÑ ßѼáΣ«αδ, ¬α¿Γ¿τÑ߬¿⌐ πτáßΓ«¬
- »α«úαá¼¼δ ñαá⌐óÑαá íπñÑΓ ¿ß»«½¡∩Γ∞ß∩ »α«µÑßß«¼ ¼«¡«»«½∞¡«. æÑ¼áΣ«αδ ¼«úπΓ
- ¡áº¡áτáΓ∞ß∩ ¬á¬ «Γñѽ∞¡«¼π πßΓα«⌐ßΓóπ, Γᬠ¿ ¬½áßßá¼ πßΓα«⌐ßΓó. Æá¬, ¡á»α¿-
- ¼Ñα, «Γñѽ∞¡δ⌐ ßѼáΣ«α ¼«ªÑΓ íδΓ∞ ßó∩ºá¡ ¿ ß «Γñѽ∞¡δ¼ Σ¿º¿τÑ߬¿¼ ΓÑନ¡á½«¼
- ¿ ß« óßѼ¿ ΓÑନ¡á½á¼¿ ßαáºπ. é »Ñαó«¼ ß½πτáÑ íδßΓα«ñÑ⌐ßΓó¿Ñ ß¿ßΓѼδ óδΦÑ,
- ¿í« »α«µÑßßδ, «íαáΘáεΘ¿Ñß∩ ¬ ΓÑନ¡á½π, ¡Ñ ºáσóáΓδóáεΓ ßѼáΣ«α, ¿¼ÑεΘ¿⌐ «Γ-
- ¡«ΦÑ¡¿Ñ ¬ ñαπú¿¼ ΓÑନ¡á½á¼, ¬á¬ ó« óΓ«α«¼ ß½πτáÑ. äαá⌐óÑαδ ¡Ñ¬«Γ«αδσ πßΓ-
- α«⌐ßΓó, «ñ¡á¬«, »«ññÑনóáεΓ ó¡πΓαÑ¡¡εε ßó∩º∞ ß ñαπú¿¼¿ ñαá⌐óÑαἿ; ó Γᬿσ
- ß½πτá∩σ ¿ß»«½∞º«óá¡¿Ñ «ñ¡«ú« ßѼáΣ«αá ñ½∩ ¬½áßßá πßΓα«⌐ßΓó «í½ÑúτáÑΓ »«¡¿¼á-
- ¡¿Ñ ºáñáτ¿. é ¬áτÑßΓóÑ á½∞ΓÑα¡áΓ¿óδ ó óδτ¿ß½¿Γѽ∞¡«⌐ ß¿ßΓÑ¼Ñ 3B20A »αÑñ«ß-
- Γáó½Ñ¡á 󫺼«ª¡«ßΓ∞ Γᬫú« ¬«¡Σ¿úπα¿α«óá¡¿∩ «Γñѽ∞¡δσ πßΓα«⌐ßΓó, »α¿ ¬«Γ«α«¼
- »α«úαá¼¼δ ñαá⌐óÑαá ºá»π߬áεΓß∩ ¡á Γ«τ¡« π¬áºá¡¡δσ »α«µÑßß«αáσ.
- Åα«í½Ñ¼δ 󫺡¿¬áεΓ Γ«úñá, ¬«úñá ñαá⌐óÑα »αÑαδóáÑΓ αáí«Γπ ß¿ßΓÑ¼δ ¿ Ñú«
- ßѼáΣ«α ºáσóáτÑ¡: »α«úαá¼¼á «íαáí«Γ¬¿ »αÑαδóá¡¿⌐ ¡Ñ ¼«ªÑΓ íδΓ∞ óδºóá¡á, Γá¬
- ¬á¬ ¿¡áτÑ ó«º¡¿¬½á íδ πú஧á αáºαπΦÑ¡¿∩ ñá¡¡δσ. æ ñαπú«⌐ ßΓ«α«¡δ, ∩ñα« ¡Ñ
- ¼«ªÑΓ «ßΓáó¿Γ∞ »αÑαδóá¡¿Ñ ¡Ñ«íαáí«Γá¡¡δ¼. æ¿ßΓѼá 3B20A óδßΓαá¿óáÑΓ »αÑαδóá-
- ¡¿∩ ó «τÑαÑñ∞ ¿ ªñÑΓ ¼«¼Ñ¡Γá «ßó«í«ªñÑ¡¿∩ ßѼáΣ«αá, ¬«úñá ó맮ó »α«úαá¼¼δ
- «íαáí«Γ¬¿ »αÑαδóá¡¿⌐ ¡Ñ íπñÑΓ ¿¼ÑΓ∞ «»áß¡δÑ »«ß½ÑñßΓó¿∩.
-
-
- E12.3.3.4 ö¿¬Γ¿ó¡δÑ »α«µÑßßδF
-
- è«úñá ∩ñα« óδ»«½¡∩ÑΓ »ÑαѬ½ετÑ¡¿Ñ ¬«¡ΓѬßΓá ó «ñ¡«»α«µÑßß«α¡«⌐ ß¿ßΓѼÑ,
- «¡« Σπ¡¬µ¿«¡¿απÑΓ ó ¬«¡ΓѬßΓÑ »α«µÑßßá, πßΓπ»áεΘÑú« π»αáó½Ñ¡¿Ñ (ß¼. ú½áóπ
- 6). àß½¿ ó ß¿ßΓÑ¼Ñ ¡ÑΓ »α«µÑßß«ó, ú«Γ«óδσ ¬ ºá»π߬π, ∩ñα« »ÑαÑσ«ñ¿Γ ó ß«ßΓ«-
- ∩¡¿Ñ »α«ßΓ«∩ ó ¬«¡ΓѬßΓÑ »α«µÑßßá, óδ»«½¡∩óΦÑú«ß∩ »«ß½Ññ¡¿¼. Å«½πτ¿ó »αÑαδ-
- óá¡¿Ñ «Γ Γá⌐¼Ñαá ¿½¿ ñαπú¿σ »Ñα¿ΣÑα¿⌐¡δσ πßΓα«⌐ßΓó, «¡« «íαáíáΓδóáÑΓ Ñú« ó
- ¬«¡ΓѬßΓÑ Γ«ú« ªÑ »α«µÑßßá.
- é ¼¡«ú«»α«µÑßß«α¡«⌐ ß¿ßΓÑ¼Ñ ∩ñα« ¡Ñ ¼«ªÑΓ »α«ßΓá¿óáΓ∞ ó ¬«¡ΓѬßΓÑ »α«-
- µÑßßá, óδ»«½¡∩óΦÑú«ß∩ »«ß½Ññ¡¿¼. ū߼«Γα¿¼, τΓ« »α«¿º«⌐ñÑΓ »«ß½Ñ Γ«ú«, ¬á¬
- »α«µÑßß, »α¿«ßΓá¡«ó¿óΦ¿⌐ ßó«ε αáí«Γπ ¡á »α«µÑßß«αÑ A, óδ⌐ñÑΓ ¿º ß«ßΓ«∩¡¿∩
- »α¿«ßΓá¡«óá. Åα«µÑßß ó µÑ½«¼ ú«Γ«ó ¬ ºá»π߬π, ¡« «¡ ºá»π߬áÑΓß∩ ¡Ñ ßαáºπ ªÑ
- »« óδσ«ñÑ ¿º ß«ßΓ«∩¡¿∩ »α¿«ßΓá¡«óá, ñáªÑ ¡Ñß¼«Γα∩ ¡á Γ«, τΓ« Ñú« ¬«¡ΓѬßΓ
- πªÑ ¡áσ«ñ¿Γß∩ ó αáß»«α∩ªÑ¡¿¿ »α«µÑßß«αá A. àß½¿ φëà »α«µÑßß óδí¿αáÑΓß∩ ñ½∩
- ºá»πß¬á »α«µÑßß«α«¼ B, »«ß½Ññ¡¿⌐ »ÑαѬ½ετáÑΓß∩ ¡á Ñú« ¬«¡ΓѬßΓ ¿ ó«º«í¡«ó½∩-
- ÑΓ Ñú« óδ»«½¡Ñ¡¿Ñ. è«úñá ó αѺπ½∞ΓáΓÑ »αÑαδóá¡¿∩ »α«µÑßß«α A óδ⌐ñÑΓ ¿º »α«ß-
- Γ«∩, «¡ íπñÑΓ »α«ñ«½ªáΓ∞ ßó«ε αáí«Γπ ó ¬«¡ΓѬßΓÑ »α«µÑßßá A ñ« ΓÑσ »«α, »«¬á
- ¡Ñ »α«¿ºóÑñÑΓ »ÑαѬ½ετÑ¡¿Ñ ¬«¡ΓѬßΓá. Æá¬¿¼ «íαẫ¼, ó ΓÑτÑ¡¿Ñ ¬«α«Γ¬«ú«
- »α«¼ÑªπΓ¬á óαѼѡ¿ ß «ñ¡¿¼ ¿ ΓѼ ªÑ áñαÑß¡δ¼ »α«ßΓαá¡ßΓó«¼ (ó τáßΓ¡«ßΓ¿, ß«
- ßΓѬ«¼ ∩ñαá) íπñπΓ óÑßΓ¿ αáí«Γπ (¿, τΓ« óÑß∞¼á óÑα«∩Γ¡«, »α«¿ºó«ñ¿Γ∞ ºá»¿ß∞)
- ßαáºπ ñóá »α«µÑßß«αá.
- ÉÑΦÑ¡¿Ñ φΓ«⌐ »α«í½Ñ¼δ ß«ßΓ«¿Γ ó ß«ºñá¡¿¿ ¡Ñ¬«Γ«α«ú« Σ¿¬Γ¿ó¡«ú« »α«µÑßßá;
- ¬«úñá »α«µÑßß«α ¡áσ«ñ¿Γß∩ ó ß«ßΓ«∩¡¿¿ »α«ßΓ«∩, ∩ñα« »ÑαѬ½ετáÑΓß∩ ¡á ¬«¡-
- ΓѬßΓ Σ¿¬Γ¿ó¡«ú« »α«µÑßßá, ñѽá∩ φëà ¬«¡ΓѬßΓ ΓѬπΘ¿¼ ñ½∩ íѺñÑ⌐ßΓóπεΘÑú«
- »α«µÑßß«αá. è«¡ΓѬßΓ Σ¿¬Γ¿ó¡«ú« »α«µÑßßá ß«ßΓ«¿Γ Γ«½∞¬« ¿º ßΓѬá ∩ñαá; φΓ«Γ
- »α«µÑßß ¡Ñ ∩ó½∩ÑΓß∩ óδ»«½¡¿¼δ¼ ¿ ¡Ñ óδí¿αáÑΓß∩ ñ½∩ ºá»π߬á. ū߬«½∞¬π ¬áªñδ⌐
- »α«µÑßß«α »α«ßΓá¿óáÑΓ ó ¬«¡ΓѬßΓÑ ßó«Ñú« ß«íßΓóÑ¡¡«ú« Σ¿¬Γ¿ó¡«ú« »α«µÑßßá,
- ¡áóαÑñ¿Γ∞ ñαπú ñαπúπ »α«µÑßß«αδ πªÑ ¡Ñ ¼«úπΓ.
-
-
-
-
- 378
-
- E12.4 æêæÆàîÇ TUNISF
-
- Å«½∞º«óáΓѽ∞߬¿⌐ ¿¡ΓÑαΣÑ⌐ß ß¿ßΓѼδ Tunis ß«ó¼ÑßΓ¿¼ ß á¡á½«ú¿τ¡δ¼ ¿¡ΓÑα-
- ΣÑ⌐ß«¼ ß¿ßΓѼδ UNIX, ¡« ∩ñα« φΓ«⌐ ß¿ßΓѼδ, αáºαáí«Γá¡¡«Ñ ¡á ∩ºδ¬Ñ Concurrent
- Euclid, ß«ßΓ«¿Γ ¿º »α«µÑßß«ó, π»αáó½∩εΘ¿σ ¬áªñ«⌐ τáßΓ∞ε ß¿ßΓѼδ. Åα«í½Ñ¼á
- óºá¿¼¡«ú« ¿ß¬½ετÑ¡¿∩ αÑΦáÑΓß∩ ó ß¿ßΓÑ¼Ñ Tunis ñ«ó«½∞¡« »α«ßΓ«, Γᬠ¬á¬ ó
- ¬áªñδ⌐ ¼«¼Ñ¡Γ óαѼѡ¿ ¿ß»«½¡∩ÑΓß∩ ¡Ñ í«½ÑÑ «ñ¡«⌐ ¬«»¿¿ π»αáó½∩Ѽ«ú« ∩ñα«¼
- »α«µÑßßá, ¬α«¼Ñ Γ«ú«, »α«µÑßßδ αáí«ΓáεΓ Γ«½∞¬« ß ΓѼ¿ ßΓαπ¬ΓπαἿ ñá¡¡δσ,
- ¬«Γ«αδÑ ¿¼ »α¿¡áñ½ÑªáΓ. æ¿ßΓѼ¡δÑ »α«µÑßßδ á¬Γ¿ó¿º¿απεΓß∩ ºá»α«ßἿ ¡á óó«ñ,
- ºáΘ¿Γπ «τÑαÑñ¿ ºá»α«ß«ó «ßπΘÑßΓó½∩ÑΓ »α«µÑñπαá »α«úαá¼¼¡«ú« ¼«¡¿Γ«αá. ¥Γá
- »α«µÑñπαá πß¿½¿óáÑΓ óºá¿¼¡«Ñ ¿ß¬½ετÑ¡¿Ñ, αáºαÑΦá∩ ñ«ßΓπ» ¬ ßó«Ñ⌐ ¿ß»«½¡∩Ѽ«⌐
- τáßΓ¿ ó ¬áªñδ⌐ ¼«¼Ñ¡Γ óαѼѡ¿ ¡Ñ í«½ÑÑ, τѼ «ñ¡«¼π »α«µÑßßπ. îÑσá¡¿º¼ ¼«¡¿-
- Γ«αá «Γ½¿τáÑΓß∩ «Γ ¼Ñσá¡¿º¼á ßѼáΣ«α«ó ΓѼ, τΓ«, ó«-»Ñαóδσ, í½áú«ñáα∩ »«ß-
- ½Ññ¡¿¼ πß¿½¿óáÑΓß∩ ¼«ñπ½∞¡«ßΓ∞ »α«úαá¼¼ («»Ñαᵿ¿ P ¿ V »α¿ßπΓßΓóπεΓ ¡á óσ«-
- ñÑ ó »α«µÑñπαπ ¼«¡¿Γ«αá ¿ ¡á óδσ«ñÑ ¿º ¡ÑÑ), á ó«-óΓ«αδσ, ßúÑ¡Ñα¿α«óá¡¡δ⌐
- ¬«¼»¿½∩Γ«α«¼ ¬«ñ πªÑ ß«ñÑαª¿Γ φ½Ñ¼Ñ¡Γδ ß¿¡σα«¡¿ºáµ¿¿. ò«½Γ «Γ¼ÑτáÑΓ, τΓ«
- αáºαáí«Γ¬á Γᬿσ ß¿ßΓѼ «í½ÑúτáÑΓß∩, Ñß½¿ ¿ß»«½∞ºπÑΓß∩ ∩ºδ¬, »«ññÑনóáεΘ¿⌐
- ¼«¡¿Γ«αδ ¿ ó¬½ετáεΘ¿⌐ »«¡∩Γ¿Ñ »áαώѽ¿º¼á (ß¼. [Holt 83], ßΓα.190). Åα¿
- óßѼ »α¿ φΓ«¼ ó¡πΓαÑ¡¡∩∩ ßΓαπ¬Γπαá ß¿ßΓѼδ Tunis «Γ½¿τáÑΓß∩ «Γ Γαáñ¿µ¿«¡¡«⌐
- αÑ὿ºáµ¿¿ ß¿ßΓѼδ UNIX αáñ¿¬á½∞¡δ¼ «íαẫ¼.
-
-
- E12.5 ôçèêà îàæÆÇ é öôìèûêÄìêÉÄéÇìêê îìÄâÄÅÉÄûàææÄÉì¢ò æêæÆàîF
-
- é ñá¡¡«⌐ ú½áóÑ ¡á¼¿ í뫨 αáßß¼«ΓαÑ¡δ ñóá ¼ÑΓ«ñá αÑ὿ºáµ¿¿ ¼¡«ú«»α«µÑß-
- ß«α¡δσ óÑαß¿⌐ ß¿ßΓѼδ UNIX: ¬«¡Σ¿úπαᵿ∩, ß«ßΓ«∩Θá∩ ¿º ú½áó¡«ú« ¿ »«ñτ¿¡Ñ¡-
- ¡«ú« »α«µÑßß«α«ó, ó ¬«Γ«α«⌐ Γ«½∞¬« «ñ¿¡ »α«µÑßß«α (ú½áó¡δ⌐) Σπ¡¬µ¿«¡¿απÑΓ ó
- αѪ¿¼Ñ ∩ñαá, ¿ ¼ÑΓ«ñ, «ß¡«óá¡¡δ⌐ ¡á ¿ß»«½∞º«óá¡¿¿ ßѼáΣ«α«ó ¿ ñ«»π߬áεΘ¿⌐
- «ñ¡«óαѼѡ¡«Ñ ¿ß»«½¡Ñ¡¿Ñ ó αѪ¿¼Ñ ∩ñαá óßÑσ ¿¼ÑεΘ¿σß∩ ó ß¿ßΓÑ¼Ñ »α«µÑßß«ó.
- Äíá ¼ÑΓ«ñá ¿¡óáα¿á¡Γ¡δ ¬ ¬«½¿τÑßΓóπ »α«µÑßß«α«ó, «ñ¡á¬« ú«ó«α¿Γ∞ « Γ«¼, τΓ«
- ß α«ßΓ«¼ τ¿ß½á »α«µÑßß«α«ó «íΘá∩ »α«¿ºó«ñ¿Γѽ∞¡«ßΓ∞ ß¿ßΓѼδ πóѽ¿τ¿óáÑΓß∩ ß
- ½¿¡Ñ⌐¡«⌐ ߬«α«ßΓ∞ε, ¡Ñ½∞º∩. Å«ΓÑα¿ »α«¿ºó«ñ¿Γѽ∞¡«ßΓ¿ 󫺡¿¬áεΓ, ó«-»Ñαóδσ,
- ¬á¬ ß½ÑñßΓó¿Ñ ¬«¡¬παÑ¡µ¿¿ ºá αÑßπαßδ »á¼∩Γ¿, ¬«Γ«αá∩ óδαáªáÑΓß∩ ó πóѽ¿τÑ¡¿¿
- »α«ñ«½ª¿Γѽ∞¡«ßΓ¿ «íαáΘÑ¡¿∩ ¬ »á¼∩Γ¿. é«-óΓ«αδσ, ó ßσѼÑ, «ß¡«óá¡¡«⌐ ¡á ¿ß-
- »«½∞º«óá¡¿¿ ßѼáΣ«α«ó, ¬ φΓ«⌐ ¬«¡¬παÑ¡µ¿¿ ñ«íáó½∩ÑΓß∩ ß«»Ñα¡¿τÑßΓó« ºá ßѼá-
- Σ«αδ; »α«µÑßßδ ºáτáßΓπε «í¡áαπª¿óáεΓ ßѼáΣ«αδ ºáσóáτÑ¡¡δ¼¿, í«½∞ΦÑ »α«µÑßß«ó
- ¡áσ«ñ¿Γß∩ ó «τÑαÑñ¿, ñ«½ú«Ñ óαѼ∩ «ª¿ñá∩ »«½πτÑ¡¿∩ ñ«ßΓπ»á ¬ ßѼáΣ«αá¼. ÅÑα-
- óá∩ ßσѼá, «ß¡«óá¡¡á∩ ¡á ¿ß»«½∞º«óá¡¿¿ ú½áó¡«ú« ¿ »«ñτ¿¡Ñ¡¡«ú« »α«µÑßß«α«ó,
- Γ«ªÑ ¡Ñ ½¿ΦÑ¡á ¡Ññ«ßΓáΓ¬«ó: »« ¼ÑαÑ πóѽ¿τÑ¡¿∩ τ¿ß½á »α«µÑßß«α«ó ú½áó¡δ⌐
- »α«µÑßß«α ßΓá¡«ó¿Γß∩ πº¬¿¼ ¼ÑßΓ«¼ ó ß¿ßΓѼÑ, »«ß¬«½∞¬π Γ«½∞¬« «¡ «ñ¿¡ ¼«ªÑΓ
- Σπ¡¬µ¿«¡¿α«óáΓ∞ ó αѪ¿¼Ñ ∩ñαá. ìÑß¼«Γα∩ ¡á Γ«, τΓ« í«½ÑÑ ó¡¿¼áΓѽ∞¡«Ñ ΓÑσ¡¿-
- τÑ߬«Ñ »α«Ñ¬Γ¿α«óá¡¿Ñ »«ºó«½∩ÑΓ ß«¬αáΓ¿Γ∞ ¬«¡¬παÑ¡µ¿ε ñ« αáºπ¼¡«ú« ¼¿¡¿¼π¼á
- ¿ ó ¡Ñ¬«Γ«αδσ ß½πτá∩σ »α¿í½¿º¿Γ∞ ߬«α«ßΓ∞ »«óδΦÑ¡¿∩ »α«¿ºó«ñ¿Γѽ∞¡«ßΓ¿ ß¿ß-
- ΓÑ¼δ »α¿ πóѽ¿τÑ¡¿¿ τ¿ß½á »α«µÑßß«α«ó ¬ ½¿¡Ñ⌐¡«⌐ (ß¼., ¡á»α¿¼Ñα, [Beck 85]),
- óßÑ »«ßΓα«Ñ¡¡δÑ ß ¿ß»«½∞º«ó᡿Ѽ ß«óαѼѡ¡«⌐ ΓÑσ¡«½«ú¿¿ ¼¡«ú«»α«µÑßß«α¡δÑ
- ß¿ßΓÑ¼δ ¿¼ÑεΓ »αÑñѽ, ºá ¬«Γ«αδ¼ αáßΦ¿αÑ¡¿Ñ ß«ßΓáóá »α«µÑßß«α«ó ¡Ñ ß«»α«ó«ª-
- ñáÑΓß∩ πóѽ¿τÑ¡¿Ñ¼ »α«¿ºó«ñ¿Γѽ∞¡«ßΓ¿ ß¿ßΓѼδ.
-
-
- E12.6 ôÅÉÇåìàìêƒF
-
- 1. ÉÑΦ¿ΓÑ »α«í½Ñ¼π Σπ¡¬µ¿«¡¿α«óá¡¿∩ ¼¡«ú«»α«µÑßß«α¡δσ ß¿ßΓѼ Γᬿ¼ «íαá-
- º«¼, τΓ«íδ óßÑ »α«µÑßß«αδ ó ß¿ßΓÑ¼Ñ ¼«ú½¿ Σπ¡¬µ¿«¡¿α«óáΓ∞ ó αѪ¿¼Ñ ∩ñ-
- αá, ¡« ¡Ñ í«½ÑÑ «ñ¡«ú« «ñ¡«óαѼѡ¡«. Æá¬«Ñ αÑΦÑ¡¿Ñ íπñÑΓ «Γ½¿τáΓ∞ß∩ «Γ
- »Ñαó«⌐ ¿º »αÑñ½«ªÑ¡¡δσ ó ΓѬßΓÑ ßσѼ, úñÑ Γ«½∞¬« «ñ¿¡ »α«µÑßß«α (ú½áó-
- ¡δ⌐) »αÑñ¡áº¡áτÑ¡ ñ½∩ αÑ὿ºáµ¿¿ Σπ¡¬µ¿⌐ ∩ñαá. èᬠñ«í¿Γ∞ß∩ Γ«ú«, τΓ«íδ
- ó αѪ¿¼Ñ ∩ñαá ó ¬áªñδ⌐ ¼«¼Ñ¡Γ óαѼѡ¿ ¡áσ«ñ¿½ß∩ Γ«½∞¬« «ñ¿¡ »α«µÑßß«α ?
- èá¬πε ßΓαáΓÑú¿ε «íαáí«Γ¬¿ »αÑαδóá¡¿⌐ »α¿ φΓ«¼ ¼«ª¡« ßτ¿ΓáΓ∞ »α¿Ñ¼½Ñ¼«⌐?
-
-
- 379
-
- 2. êß»«½∞ºπ∩ ß¿ßΓѼ¡δÑ Σπ¡¬µ¿¿ αáí«Γδ ß αáºñѽ∩Ѽ«⌐ «í½áßΓ∞ε »á¼∩Γ¿, »α«-
- ΓÑßΓ¿απ⌐ΓÑ »α«úαá¼¼π, αÑ὿ºπεΘπε ßѼáΣ«α¡πε í½«¬¿α«ó¬π (É¿ßπ¡«¬ 12.6).
- ū߽Ññ«óáΓѽ∞¡«ßΓ¿ «»Ñαᵿ⌐ P-V ¡áñ ßѼáΣ«α«¼ ¼«úπΓ ¡Ñºáó¿ß¿¼« «ñ¿¡ «Γ
- ñαπú«ú« óδ»«½¡∩Γ∞ ¡Ñ߬«½∞¬« »α«µÑßß«ó. èᬿ¼ «íαẫ¼ ó »α«úαá¼¼Ñ ß½Ññπ-
- ÑΓ αÑ὿º«óáΓ∞ ¿¡ñ¿¬áµ¿ε ¿ «íαáí«Γ¬π «Φ¿í«¬ ?
- 3. Éáºαáí«Γá⌐ΓÑ á½ú«α¿Γ¼ óδ»«½¡Ñ¡¿∩ «»Ñαᵿ¿ CP (πß½«ó¡δ⌐ Γ¿» «»Ñαᵿ¿ P),
- ¿ß»«½∞ºπ∩ ΓѬßΓ á½ú«α¿Γ¼á «»Ñαᵿ¿ P.
- 4. ÄíΩ∩ß¡¿ΓÑ, ºáτѼ ó á½ú«α¿Γ¼áσ «»Ñαᵿ⌐ P ¿ V (É¿ßπ¡¬¿ 12.8 ¿ 12.9) ¡πª-
- ¡á í½«¬¿α«ó¬á »αÑαδóá¡¿⌐. é ¬á¬¿Ñ ¼«¼Ñ¡Γδ ÑÑ ß½ÑñπÑΓ «ßπΘÑßΓó½∩Γ∞ ?
- 5. Å«τѼπ »α¿ óδ»«½¡Ñ¡¿¿ "µ¿¬½¿τÑ߬«⌐ í½«¬¿α«ó¬¿" ó¼ÑßΓ« ßΓ᫬¿:
- while (! CP(ßѼáΣ«α));
- ∩ñα« ¡Ñ ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ «»Ñαᵿε P íѺπß½«ó¡«ú« Γ¿»á ? (é ¬áτÑßΓóÑ
- ¡áó«ñ∩ΘÑú« ó«»α«ßá: τΓ« »α«¿º«⌐ñÑΓ ó Γ«¼ ß½πτáÑ, Ñß½¿ »α«µÑßß ºá»πßΓ¿Γ
- «»Ñαᵿε P ¿ »α¿«ßΓá¡«ó¿Γß∩ ?)
- 6. ÄíαáΓ¿¼ß∩ ¬ á½ú«α¿Γ¼π getblk, »α¿óÑñÑ¡¡«¼π ó ú½áóÑ 3. Ä»¿Φ¿ΓÑ αÑ὿ºá-
- µ¿ε á½ú«α¿Γ¼á ó ¼¡«ú«»α«µÑßß«α¡«⌐ ß¿ßΓÑ¼Ñ ñ½∩ ß½πτá∩, ¬«úñá í½«¬ «ΓßπΓ-
- ßΓóπÑΓ ó íπΣÑα¡«¼ ¬ÑΦÑ.
- *7. ÅαÑñ»«½«ª¿¼, τΓ« »α¿ óδ»«½¡Ñ¡¿¿ á½ú«α¿Γ¼á óδñѽѡ¿∩ íπΣÑαá 󫺡¿¬½á
- ταѺóδτá⌐¡« ß¿½∞¡á∩ ¬«¡¬παÑ¡µ¿∩ ºá ßѼáΣ«α, »α¿¡áñ½ÑªáΘ¿⌐ ß»¿ß¬π ßó«-
- í«ñ¡δσ íπΣÑα«ó. Éáºαáí«Γá⌐ΓÑ ßσѼπ «ß½áí½Ñ¡¿∩ ¬«¡¬παÑ¡µ¿¿ ºá ßτÑΓ αáº-
- í¿Ñ¡¿∩ ß»¿ß¬á ßó«í«ñ¡δσ íπΣÑα«ó ¡á ñóá »«ñß»¿ß¬á.
- *8. ÅαÑñ»«½«ª¿¼, τΓ« π ΓÑନ¡á½∞¡«ú« ñαá⌐óÑαá ¿¼ÑÑΓß∩ ßѼáΣ«α, º¡áτÑ¡¿Ñ ¬«-
- Γ«α«ú« »α¿ ¿¡¿µ¿á½¿ºáµ¿¿ ßíαáßδóáÑΓß∩ ó 0 ¿ »« ¬«Γ«α«¼π »α«µÑßßδ »α¿«ß-
- Γá¡áó½¿óáεΓ ßó«ε αáí«Γπ ó ß½πτáÑ »ÑαÑ»«½¡Ñ¡¿∩ íπΣÑαá óδó«ñá ¡á ΓÑନ-
- ¡á½. è«úñá ΓÑନ¡á½ ú«Γ«ó ¬ »α¿Ñ¼π ß½ÑñπεΘÑ⌐ »«αµ¿¿ ñá¡¡δσ, «¡ óδó«ñ¿Γ
- ¿º ß«ßΓ«∩¡¿∩ «ª¿ñá¡¿∩ óßÑ »α«µÑßßδ, »α¿«ßΓá¡«ó½Ñ¡¡δÑ »« ßѼáΣ«απ. Éáº-
- αáí«Γá⌐ΓÑ ßσѼπ ó«º«í¡«ó½Ñ¡¿∩ »α«µÑßß«ó, ¿ß»«½∞ºπεΘπε «»Ñαᵿ¿ Γ¿»á P ¿
- V. é ß½πτáÑ ¡Ñ«íσ«ñ¿¼«ßΓ¿ óóÑñ¿ΓÑ ñ«»«½¡¿Γѽ∞¡δÑ Σ½áú¿ ¿ ßѼáΣ«αδ. èá¬
- ñ«½ª¡á óÑßΓ¿ ßÑí∩ ßσѼá ó Γ«¼ ß½πτáÑ, Ñß½¿ »α«µÑßßδ óδó«ñ∩Γß∩ ¿º ß«ßΓ«-
- ∩¡¿∩ «ª¿ñá¡¿∩ »« »αÑαδóá¡¿ε, ¡« »α¿ φΓ«¼ ΓѬπΘ¿⌐ »α«µÑßß«α ¡Ñ ¿¼ÑÑΓ
- 󫺼«ª¡«ßΓ¿ í½«¬¿α«óáΓ∞ »αÑαδóá¡¿∩ ¡á ñαπú¿σ »α«µÑßß«αáσ ?
- *9. àß½¿ Γ«τ¬¿ óσ«ñá ó ñαá⌐óÑα ºáΘ¿ΘáεΓß∩ ßѼáΣ«αἿ, ñ«½ª¡« ß«í½εñáΓ∞ß∩
- πß½«ó¿Ñ «ßó«í«ªñÑ¡¿∩ ßѼáΣ«αá ó ß½πτáÑ »ÑαÑσ«ñá »α«µÑßßá ó ß«ßΓ«∩¡¿Ñ
- »α¿«ßΓá¡«óá. èᬠφΓ« αÑ὿ºπÑΓß∩ ¡á »αá¬Γ¿¬Ñ ? èᬿ¼ «íαẫ¼ ñ«½ª¡á
- »α«¿ºó«ñ¿Γ∞ß∩ «íαáí«Γ¬á »αÑαδóá¡¿⌐, »«ßΓπ»áεΘ¿σ ó Γ« óαѼ∩, »«¬á ßѼá-
- Σ«α ñαá⌐óÑαá ºáí½«¬¿α«óá¡ ?
- 10. ÄíαáΓ¿¼ß∩ ¬ ß¿ßΓѼ¡δ¼ Σπ¡¬µ¿∩¼ πßΓá¡«ó¬¿ ¿ ¬«¡Γα«½∩ ß¿ßΓѼ¡«ú« óαѼѡ¿
- (ú½áóá 8). ÉạδÑ »α«µÑßß«αδ ¼«úπΓ ¿¼ÑΓ∞ αẽ¿τ¡πε Γá¬Γ«óπε τáßΓ«Γπ.
- èᬠó φΓ«¼ ß½πτáÑ π¬áºá¡¡δÑ Σπ¡¬µ¿¿ ñ«½ª¡δ αáí«ΓáΓ∞ ?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 380
-