home *** CD-ROM | disk | FTP | other *** search
/ For Beginners & Professional Hackers / cd.iso / docum / unix-prt.doc / chap12.prt < prev    next >
Encoding:
Text File  |  1991-11-06  |  66.1 KB  |  1,181 lines

  1.  
  2.  
  3.  
  4.     âïÇéÇ 12
  5.  
  6.     EîìÄâÄÅÉÄûàææÄÉì¢à æêæÆàî¢F
  7.  
  8.  
  9.  
  10.  
  11.     é  ¬½áßß¿τÑ߬«⌐ »«ßΓá¡«ó¬Ñ ñ½∩ ß¿ßΓѼδ UNIX »αÑñ»«½áúáÑΓß∩ ¿ß»«½∞º«óá¡¿Ñ
  12. «ñ¡«»α«µÑßß«α¡«⌐ áασ¿ΓѬΓπαδ, ß«ßΓ«∩ΘÑ⌐ ¿º «ñ¡«ú« ûÅ, »á¼∩Γ¿ ¿  »Ñα¿ΣÑα¿⌐¡δσ
  13. πßΓα«⌐ßΓó.  î¡«ú«»α«µÑßß«α¡á∩  áασ¿ΓѬΓπαá,  ¡á»α«Γ¿ó, ó¬½ετáÑΓ ó ßÑí∩ ñóá ¿
  14. í«½ÑÑ ûÅ, ß«ó¼ÑßΓ¡« ¿ß»«½∞ºπεΘ¿σ «íΘπε »á¼∩Γ∞ ¿ »Ñα¿ΣÑα¿⌐¡δÑ πßΓα«⌐ßΓóá (É¿-
  15. ßπ¡«¬ 12.1), αáß»«½áúá∩ í«½∞Φ¿¼¿ ó«º¼«ª¡«ßΓ∩¼¿ ó  πóѽ¿τÑ¡¿¿  »α«¿ºó«ñ¿Γѽ∞-
  16. ¡«ßΓ¿  ß¿ßΓѼδ,  ßó∩ºá¡¡δ¼¿  ß «ñ¡«óαѼѡ¡δ¼ ¿ß»«½¡Ñ¡¿Ñ¼ »α«µÑßß«ó ¡á αạδσ
  17. ûÅ. èáªñδ⌐ ûÅ Σπ¡¬µ¿«¡¿απÑΓ ¡Ñºáó¿ß¿¼« «Γ ñαπú¿σ, ¡« óßÑ «¡¿ αáí«ΓáεΓ ß  «ñ-
  18. ¡¿¼ ¿ ΓѼ ªÑ ∩ñα«¼ «»Ñαᵿ«¡¡«⌐ ß¿ßΓѼδ. Å«óÑñÑ¡¿Ñ »α«µÑßß«ó ó Γᬫ⌐ ß¿ßΓѼÑ
  19. ¡¿τѼ  ¡Ñ «Γ½¿τáÑΓß∩ «Γ »«óÑñÑ¡¿∩ ó «ñ¡«»α«µÑßß«α¡«⌐ ß¿ßΓѼѠ- ß ß«σαá¡Ñ¡¿Ñ¼
  20. ßѼá¡Γ¿¬¿ «íαáΘÑ¡¿∩ ¬ ¬áªñ«⌐ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ - ¡« »α¿ φΓ«¼ «¡¿ ¼«úπΓ  «Γ¬-
  21. αδΓ«  »ÑαѼÑΘáΓ∞ß∩  ß «ñ¡«ú« »α«µÑßß«αá ¡á ñαπú«⌐. ò«Γ∩, ¬ ß«ªá½Ñ¡¿ε, φΓ« ¡Ñ
  22. »α¿ó«ñ¿Γ ¬ ß¡¿ªÑ¡¿ε ºáΓαáΓ »α«µÑßß«α¡«ú« óαѼѡ¿, ßó∩ºá¡¡«ú«  ß  óδ»«½¡Ñ¡¿Ñ¼
  23. »α«µÑßßá. ÄΓñѽ∞¡δÑ ¼¡«ú«»α«µÑßß«α¡δÑ ß¿ßΓÑ¼δ ¡áºδóáεΓß∩ ß¿ßΓѼἿ ß »α¿ß«Ñ-
  24. ñ¿¡Ñ¡¡δ¼¿  »α«µÑßß«αἿ, »«ß¬«½∞¬π ó ¡¿σ »Ñα¿ΣÑα¿⌐¡δÑ πßΓα«⌐ßΓóá ñ«ßΓπ»¡δ ¡Ñ
  25. ñ½∩ óßÑσ »α«µÑßß«α«ó. çᠿ߬½ετÑ¡¿Ñ¼ «ß«í« «ú«ó«αÑ¡¡δσ ß½πτáÑó, ó  ¡áßΓ«∩ΘÑ⌐
  26. ú½áóÑ  ¡Ñ »α«ó«ñ¿Γß∩ ¡¿¬á¬¿σ αẽ¿τ¿⌐ ¼Ñªñπ ß¿ßΓѼἿ ß »α¿ß«Ññ¿¡Ñ¡¡δ¼¿ »α«-
  27. µÑßß«αἿ ¿ «ßΓá½∞¡δ¼¿ ¬½áßßἿ ¼¡«ú«»α«µÑßß«α¡δσ ß¿ßΓѼ.
  28.     Åáαώѽ∞¡á∩ αáí«Γá ¡Ñ߬«½∞¬¿σ »α«µÑßß«α«ó ó αѪ¿¼Ñ ∩ñαá  »«  óδ»«½¡Ñ¡¿ε
  29. αẽ¿τ¡δσ »α«µÑßß«ó ß«ºñáÑΓ α∩ñ »α«í½Ñ¼, ßó∩ºá¡¡δσ ß ß«σαá¡Ñ¡¿Ñ¼ µÑ½«ßΓ¡«ßΓ¿
  30. ñá¡¡δσ ¿ αÑΦáѼδσ í½áú«ñáα∩ ¿ß»«½∞º«óá¡¿ε ß««ΓóÑΓßΓóπεΘ¿σ ¼Ñσá¡¿º¼«ó ºáΘ¿Γδ.
  31. 쿪Ѡ íπñÑΓ »«¬áºá¡«, »«τÑ¼π ¬½áßß¿τÑ߬¿⌐ óáα¿á¡Γ ß¿ßΓѼδ UNIX ¡Ñ ¼«ªÑΓ íδΓ∞
  32. »α¿¡∩Γ ó ¼¡«ú«»α«µÑßß«α¡δσ ß¿ßΓѼáσ íѺ ó¡ÑßÑ¡¿∩  ¡Ñ«íσ«ñ¿¼δσ  ¿º¼Ñ¡Ñ¡¿⌐,  á
  33. ΓᬪѠíπñπΓ αáßß¼«ΓαÑ¡δ ñóá óáα¿á¡Γá, »αÑñ¡áº¡áτÑ¡¡δÑ ñ½∩ αáí«Γδ ó π¬áºá¡¡«⌐
  34. ßαÑñÑ.
  35.  
  36.     ┌───────────┐   ┌───────────┐               ┌───────────┐
  37.     │ Åα«µÑßß«α │   │ Åα«µÑßß«α │               │ Åα«µÑßß«α │
  38.     │     1     │   │     2     │  ...........  │     n     │
  39.     └─────┬─────┘   └─────┬─────┘               └─────┬─────┘
  40. ──────────┴───────┬───────┴──────────────┬────────────┴───────────
  41.               ┌───┴────┐     ┌───────────┴─────────────┐
  42.               │ Åá¼∩Γ∞ │     │ ÅÑα¿ΣÑα¿⌐¡δÑ πßΓα«⌐ßΓóá │
  43.               └────────┘     └─────────────────────────┘
  44.  
  45.            É¿ßπ¡«¬ 12.1. î¡«ú«»α«µÑßß«α¡á∩ ¬«¡Σ¿úπαᵿ∩
  46.  
  47.  
  48.  
  49.     E12.1 ÅÉÄüïàî¢, æéƒçÇìì¢à æ îìÄâÄÅÉÄûàææÄÉì¢îê æêæÆàîÇîêF
  50.  
  51.     é ú½áóÑ 2 ¼δ ú«ó«α¿½¿ « Γ«¼, τΓ« ºáΘ¿Γᠵѽ«ßΓ¡«ßΓ¿ ßΓαπ¬Γπα ñá¡¡δσ ∩ñαá
  52. ß¿ßΓÑ¼δ  UNIX  «íÑß»Ñτ¿óáÑΓß∩  ñóπ¼∩ ß»«ß«íἿ: ∩ñα« ¡Ñ ¼«ªÑΓ óδúαπº¿Γ∞ «ñ¿¡
  53. »α«µÑßß ¿ »ÑαѬ½ετ¿Γ∞ß∩ ¡á ¬«¡ΓѬßΓ ñαπú«ú«, Ñß½¿ αáí«Γá »α«¿ºó«ñ¿Γß∩ ó  αÑ-
  54. ª¿¼Ñ  ∩ñαá,  ¬α«¼Ñ  Γ«ú«, Ñß½¿ »α¿ óδ»«½¡Ñ¡¿¿ ¬α¿Γ¿τÑ߬«ú« πτáßΓ¬á »α«úαá¼¼δ
  55. «íαáí«Γτ¿¬ ó«º¡¿¬áεΘ¿σ »αÑαδóá¡¿⌐ ¼«ªÑΓ »«óαÑñ¿Γ∞ ßΓαπ¬Γπαδ ñá¡¡δσ ∩ñαá, óßÑ
  56. 󫺡¿¬áεΘ¿Ñ »αÑαδóá¡¿∩ ΓΘáΓѽ∞¡« ¼á߬¿απεΓß∩. é  ¼¡«ú«»α«µÑßß«α¡«⌐  ß¿ßΓѼÑ,
  57. «ñ¡á¬«, Ñß½¿ ñóá ¿ í«½ÑÑ »α«µÑßß«ó óδ»«½¡∩εΓß∩ «ñ¡«óαѼѡ¡« ó αѪ¿¼Ñ ∩ñαá ¡á
  58. αạδσ »α«µÑßß«αáσ, ¡áαπΦÑ¡¿Ñ µÑ½«ßΓ¡«ßΓ¿ ∩ñαá ¼«ªÑΓ »α«¿º«⌐Γ¿ ñáªÑ ¡Ñß¼«Γα∩
  59. ¡á »α¿¡∩Γ¿Ñ ºáΘ¿Γ¡δσ ¼Ñα, ß ñαπú«⌐ ßΓ«α«¡δ, ó «ñ¡«»α«µÑßß«α¡«⌐ ß¿ßΓѼѠ󻫽-
  60. ¡Ñ ñ«ßΓáΓ«τ¡δσ.
  61.  
  62.  
  63.                                     362
  64.  
  65.     ┌───────────────────────────────────────────────────────┐
  66.     │ struct queue {                                        │
  67.     │                                                       │
  68.     │ } *bp, *bp1;                                          │
  69.     │ bp1->forp=bp->forp;                                   │
  70.     │ bp1->backp=bp;                                        │
  71.     │ bp->forp=bp1;                                         │
  72.     │ /* αáßß¼«Γα¿ΓѠ󫺼«ª¡«ßΓ∞ »ÑαѬ½ετÑ¡¿∩ ¬«¡ΓѬßΓá ó   │
  73.     │  * φΓ«¼ ¼ÑßΓÑ */                                      │
  74.     │ bp1->forp->backp=bp1;                                 │
  75.     └───────────────────────────────────────────────────────┘
  76.  
  77.     É¿ßπ¡«¬ 12.2. é¬½ετÑ¡¿Ñ íπΣÑαá ó ß»¿ß«¬ ß ñó«⌐¡δ¼¿ π¬áºáΓѽ∩¼¿
  78.  
  79.  
  80.     é  ¬áτÑßΓóÑ  »α¿¼Ñαá  αáßß¼«Γα¿¼  Σαáú¼Ñ¡Γ »α«úαá¼¼δ ¿º ú½áóδ 2 (É¿ßπ¡«¬
  81. 12.2), ó ¬«Γ«α«¼ ¡«óá∩ ßΓαπ¬Γπαá ñá¡¡δσ (π¬áºáΓѽ∞ bp1) »«¼ÑΘáÑΓß∩ ó  ß»¿ß«¬
  82. »«ß½Ñ  ßπΘÑßΓóπεΘÑ⌐ ßΓαπ¬Γπαδ (π¬áºáΓѽ∞ bp). ÅαÑñ»«½«ª¿¼, τΓ« φëàΣαáú¼Ñ¡Γ
  83. óδ»«½¡∩ÑΓß∩ «ñ¡«óαѼѡ¡« ñóπ¼∩ »α«µÑßßἿ ¡á αạδσ ûÅ, »α¿τѼ  »α«µÑßß«α  A
  84. »δΓáÑΓß∩  »«¼ÑßΓ¿Γ∞  óß½Ññ  ºá  ßΓαπ¬Γπα«⌐ bp ßΓαπ¬Γπαπ bpA, á »α«µÑßß«α B -
  85. ßΓαπ¬Γπαπ bpB. Å« »«ó«ñπ ß«»«ßΓáó½Ñ¡¿∩ íδßΓα«ñÑ⌐ßΓó¿∩ »α«µÑßß«α«ó ¡Ñ  »α¿σ«-
  86. ñ¿Γß∩  ñѽáΓ∞  ¡¿¬á¬¿σ  »αÑñ»«½«ªÑ¡¿⌐: ó«º¼«ªÑ¡ ñáªÑ ¡á¿σπñΦ¿⌐ ß½πτá⌐, ¬«úñá
  87. »α«µÑßß«α B ¿ß»«½¡∩ÑΓ 4 ¬«¼á¡ñδ ∩ºδ¬á æ¿, »αѪñÑ τѼ  »α«µÑßß«α  A  ¿ß»«½¡¿Γ
  88. «ñ¡π. ÅπßΓ∞, ¡á»α¿¼Ñα, óδ»«½¡Ñ¡¿Ñ »α«úαá¼¼δ »α«µÑßß«α«¼ A »α¿«ßΓá¡áó½¿óáÑΓß∩
  89. ó  ßó∩º¿  ß «íαáí«Γ¬«⌐ »αÑαδóá¡¿∩. é αѺπ½∞ΓáΓÑ, ñáªÑ ¡Ñß¼«Γα∩ ¡á í½«¬¿α«ó¬π
  90. «ßΓá½∞¡δσ »αÑαδóá¡¿⌐, µÑ½«ßΓ¡«ßΓ∞ ñá¡¡δσ íπñÑΓ »«ßΓáó½Ñ¡á »«ñ πú஧π (ó ú½á-
  91. óÑ 2 φë༫¼Ñ¡Γ πªÑ »«∩ß¡∩½ß∩).
  92.     ƒñα« «í∩ºá¡« πñ«ßΓ«óÑα¿Γ∞ß∩ ó Γ«¼, τΓ« Γᬫú« α«ñá ¡áαπΦÑ¡¿Ñ  ¡Ñ  ß¼«ªÑΓ
  93. »α«¿º«⌐Γ¿.  àß½¿ ó«»α«ß «í «»áß¡«ßΓ¿ ó«º¡¿¬¡«óÑ¡¿∩ ¡áαπΦÑ¡¿∩ µÑ½«ßΓ¡«ßΓ¿ «ß-
  94. Γáó¿Γ∞ «Γ¬αδΓδ¼, ¬á¬ íδ αÑñ¬« »«ñ«í¡δÑ ¡áαπΦÑ¡¿∩ ¡¿ ß½πτ὿ß∞, ∩ñα«  πΓαáΓ¿Γ
  95. ßó«ε  ¡Ñπ∩ºó¿¼«ßΓ∞  ¿  Ñú«  »«óÑñÑ¡¿Ñ ßΓá¡ÑΓ ¡Ñ»αÑñ߬áºπѼδ¼. êºíѪáΓ∞ φΓ«ú«
  96. ¼«ª¡« ΓαѼ∩ ß»«ß«íἿ:
  97.  1. êß»«½¡∩Γ∞ óßÑ ¬α¿Γ¿τÑ߬¿Ñ «»Ñαᵿ¿  ¡á  «ñ¡«¼  »α«µÑßß«αÑ,  «»¿αá∩ß∞  ¡á
  98.     ßΓá¡ñáαΓ¡δÑ ¼ÑΓ«ñδ ß«σαá¡Ñ¡¿∩ µÑ½«ßΓ¡«ßΓ¿ ñá¡¡δσ ó «ñ¡«»α«µÑßß«α¡«⌐ ß¿ß-
  99.     ΓѼÑ;
  100.  2. ÉÑú½á¼Ñ¡Γ¿α«óáΓ∞ ñ«ßΓπ» ¬ ¬α¿Γ¿τÑ߬¿¼ πτáßΓ¬á¼ »α«úαá¼¼δ, ¿ß»«½∞ºπ∩ φ½Ñ-
  101.     ¼Ñ¡Γδ í½«¬¿α«óá¡¿∩ αÑßπαß«ó;
  102.  3.  ôßΓαá¡¿Γ∞ ¬«¡¬παÑ¡µ¿ε ºá ¿ß»«½∞º«óá¡¿Ñ ßΓαπ¬Γπα ñá¡¡δσ »πΓѼ ß««ΓóÑΓßΓ-
  103.     óπεΘÑ⌐ »ÑαÑñѽ¬¿ á½ú«α¿Γ¼«ó.
  104. ÅÑαóδÑ ñóá ß»«ß«íá ºñÑß∞ ¼δ αáßß¼«Γα¿¼  »«ñα«í¡ÑÑ,  ΓαÑΓ∞Ѽπ  ß»«ß«íπ  íπñÑΓ
  105. »«ßó∩ΘÑ¡« «Γñѽ∞¡«Ñ π»α᪡ѡ¿Ñ.
  106.  
  107.  
  108.     E12.2 âïÇéì¢ë ê ÅÄäùêìàìì¢ë ÅÉÄûàææÄÉ¢F
  109.  
  110.     æ¿ßΓѼπ ß ñóπ¼∩ »α«µÑßß«αἿ, «ñ¿¡ ¿º ¬«Γ«αδσ - ú½áó¡δ⌐ (master) - ¼«ªÑΓ
  111. αáí«ΓáΓ∞ ó αѪ¿¼Ñ ∩ñαá, á ñαπú«⌐ - »«ñτ¿¡Ñ¡¡δ⌐ (slave) - Γ«½∞¬« ó αѪ¿¼Ñ ºá-
  112. ñáτ¿,  ó»ÑαóδÑ  αÑ὿º«óá½ ¡á ¼áΦ¿¡áσ Γ¿»á VAX 11/780 â«í½ (ß¼. [Goble 81]).
  113. ¥Γá ß¿ßΓѼá, αÑ὿º«óá¡¡á∩ ó¡áτá½Ñ ¡á ñóπσ ¼áΦ¿¡áσ, »«½πτ¿½á ßó«Ñ ñá½∞¡Ñ⌐ΦÑÑ
  114. αáºó¿Γ¿Ñ ó ß¿ßΓѼáσ ß «ñ¡¿¼ ú½áó¡δ¼ ¿ ¡Ñ߬«½∞¬¿¼¿ »«ñτ¿¡Ñ¡¡δ¼¿ »α«µÑßß«αἿ.
  115. â½áó¡δ⌐ »α«µÑßß«α ¡ÑßÑΓ «ΓóÑΓßΓóÑ¡¡«ßΓ∞ ºá «íαáí«Γ¬π óßÑσ «íαáΘÑ¡¿⌐ ¬ «»Ñαá-
  116. µ¿«¡¡«⌐ ß¿ßΓѼѠ¿ óßÑσ »αÑαδóá¡¿⌐. Å«ñτ¿¡Ñ¡¡δÑ »α«µÑßß«αδ óÑñáεΓ óδ»«½¡Ñ¡¿Ñ¼
  117. »α«µÑßß«ó ó αѪ¿¼Ñ ºáñáτ¿ ¿ ¿¡Σ«α¼¿απεΓ ú½áó¡δ⌐ »α«µÑßß«α « óßÑσ  »α«¿ºó«ñ¿-
  118. ¼δσ «íαáΘÑ¡¿∩σ ¬ ß¿ßΓѼ¡δ¼ Σπ¡¬µ¿∩¼.
  119.     éδí«α  »α«µÑßß«αá, ¡á ¬«Γ«α«¼ íπñÑΓ óδ»«½¡∩Γ∞ß∩ ñá¡¡δ⌐ »α«µÑßß, »α«¿ºó«-
  120. ñ¿Γß∩ ó ß««ΓóÑΓßΓó¿¿ ß á½ú«α¿Γ¼«¼ ñ¿ß»ÑΓτÑα¿ºáµ¿¿ (É¿ßπ¡«¬ 12.3). é ß««ΓóÑΓ-
  121. ßΓóπεΘÑ⌐ ºá»¿ß¿ Γáí½¿µδ »α«µÑß߫󠻫∩ó½∩ÑΓß∩ ¡«ó«Ñ »«½Ñ, ó ¬«Γ«α«Ñ ºá»¿ßδóá-
  122. ÑΓß∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«α óδíαá¡¡«ú« »α«µÑßß«αá; »αÑñ»«½«ª¿¼ ñ½∩ »α«ßΓ«Γδ,  τΓ«  «¡
  123. »«¬áºδóáÑΓ,  ∩ó½∩ÑΓß∩  ½¿  »α«µÑßß«α  ú½áó¡δ¼ ¿½¿ »«ñτ¿¡Ñ¡¡δ¼. è«úñá »α«µÑßß
  124.  
  125.                                     363
  126.  
  127. »α«¿ºó«ñ¿Γ «íαáΘÑ¡¿Ñ ¬ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿, óδ»«½¡∩∩ß∞ ¡á »«ñτ¿¡Ñ¡¡«¼  »α«µÑß-
  128. ß«αÑ, »«ñτ¿¡Ñ¡¡«Ñ ∩ñα« »ÑαÑπßΓá¡áó½¿óáÑΓ º¡áτÑ¡¿Ñ »«½∩ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »α«µÑß-
  129. ß«αá  Γᬿ¼ «íαẫ¼, τΓ«íδ «¡« π¬áºδóὫ ¡á ú½áó¡δ⌐ »α«µÑßß«α, ¿ »ÑαѬ½ετáÑΓ
  130. ¬«¡ΓѬßΓ ¡á ñαπú¿Ñ »α«µÑßßδ (É¿ßπ¡«¬ 12.4). â½áó¡«Ñ ∩ñα« ºá»π߬áÑΓ ¡á óδ»«½-
  131. ¡Ñ¡¿Ñ »α«µÑßß ß ¡á¿óδßΦ¿¼ »α¿«α¿ΓÑΓ«¼ ßαÑñ¿ ΓÑσ  »α«µÑßß«ó,  ¬«Γ«αδÑ  ñ«½ª¡δ
  132. óδ»«½¡∩Γ∞ß∩ ¡á ú½áó¡«¼ »α«µÑßß«αÑ. è«úñá óδ»«½¡Ñ¡¿Ñ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ ºáóÑα-
  133. ΦáÑΓß∩,  »«½Ñ  ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »α«µÑßß«αá »ÑαÑ¡áßΓαá¿óáÑΓß∩ «íαáΓ¡«, ¿ »α«µÑßß
  134. ó¡«ó∞ ó«ºóαáΘáÑΓß∩ ¡á »«ñτ¿¡Ñ¡¡δ⌐ »α«µÑßß«α.
  135.     àß½¿ »α«µÑßßδ ñ«½ª¡δ óδ»«½¡∩Γ∞ß∩ ¡á ú½áó¡«¼ »α«µÑßß«αÑ, ªÑ½áΓѽ∞¡«, τΓ«-
  136. íδ ú½áó¡δ⌐ »α«µÑßß«α «íαáíáΓδóá½ ¿σ ¬á¬ ¼«ª¡« ß¬«αÑÑ ¿ ¡Ñ ºáßΓáó½∩½ ¿σ ªñáΓ∞
  137. ßó«Ñ⌐ «τÑαÑñ¿ τÑαÑßτπα ñ«½ú«. Å«σ«ªá∩ ¼«Γ¿ó¿α«ó¬á  »α¿ó«ñ¿Γß∩  ó  «íΩ∩ߡѡ¿Ñ
  138. óδúαπº¬¿  »α«µÑßßá ¿º »á¼∩Γ¿ ó «ñ¡«»α«µÑßß«α¡«⌐ ß¿ßΓѼѠ»«ß½Ñ óδσ«ñá ¿º ß¿ß-
  139. ΓѼ¡«⌐ Σπ¡¬µ¿¿ ß «ßó«í«ªñÑ¡¿Ñ¼ ß««ΓóÑΓßΓóπεΘ¿σ αÑßπαß«ó ñ½∩ óδ»«½¡Ñ¡¿∩ í«½ÑÑ
  140. ¡áßπΘ¡δσ ßτÑΓ¡δσ «»Ñαᵿ⌐. àß½¿ ó Γ«Γ ¼«¼Ñ¡Γ,  ¬«úñá  »«ñτ¿¡Ñ¡¡δ⌐  »α«µÑßß«α
  141. ñѽáÑΓ ºá»α«ß ¡á ¿ß»«½¡Ñ¡¿Ñ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿, ú½áó¡δ⌐ »α«µÑßß óδ»«½¡∩ÑΓß∩ ó
  142. αѪ¿¼Ñ  ºáñáτ¿, Ñú« óδ»«½¡Ñ¡¿Ñ íπñÑΓ »α«ñ«½ªáΓ∞ß∩ ñ« ß½ÑñπεΘÑú« »ÑαѬ½ετÑ¡¿∩
  143. ¬«¡ΓѬßΓá. â½áó¡δ⌐ »α«µÑßß«α αÑáú¿α«óá½ íδ ú«αáºñ« íδßΓαÑÑ, Ñß½¿  íδ  »«ñτ¿-
  144. ¡Ñ¡¡δ⌐  »α«µÑßß«α  πßΓá¡áó½¿óá½ »α¿ φΓ«¼ ú½«íá½∞¡δ⌐ Σ½áú; »α«óÑα∩∩ πßΓá¡«ó¬π
  145. Σ½áúá ó« óαѼ∩ «íαáí«Γ¬¿ «τÑαÑñ¡«ú« »αÑαδóá¡¿∩ »« Γá⌐¼Ñαπ, ú½áó¡δ⌐ »α«µÑßß«α
  146. »α«¿ºóѽ íδ ó ¿Γ«úÑ »ÑαѬ½ετÑ¡¿Ñ ¬«¡ΓѬßΓá  ¼á¬ß¿¼π¼  τÑαѺ  «ñ¿¡  Γá⌐¼Ñα¡δ⌐
  147. Γ¿¬. æ ñαπú«⌐ ßΓ«α«¡δ, »«ñτ¿¡Ñ¡¡δ⌐ »α«µÑßß«α ¼«ú íδ »αÑαóáΓ∞ αáí«Γπ ú½áó¡«ú«
  148. ¿  ºáßΓáó¿Γ∞ Ñú« »ÑαѬ½ετ¿Γ∞ ¬«¡ΓѬßΓ ¡Ñ¼Ññ½Ñ¡¡«, ¡« ñá¡¡á∩ ó«º¼«ª¡«ßΓ∞ ΓαÑ-
  149. íπÑΓ ß»Ñµ¿á½∞¡«⌐ á»»áαáΓ¡«⌐ αÑ὿ºáµ¿¿.
  150.  
  151.     ┌────────────────────────────────────────────────────────────┐
  152.     │ á½ú«α¿Γ¼ schedule_process  (¼«ñ¿Σ¿µ¿α«óá¡¡δ⌐)              │
  153.     │ óσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩:  «ΓßπΓßΓóπÑΓ                           │
  154.     │ óδσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: «ΓßπΓßΓóπÑΓ                           │
  155.     │ {                                                          │
  156.     │    óδ»«½¡∩Γ∞ »«¬á (ñ½∩ ºá»π߬ᠡѠíπñÑΓ óδíαá¡ «ñ¿¡ ¿º »α«-│
  157.     │     µÑßß«ó)                                                │
  158.     │    {                                                       │
  159.     │        Ñß½¿ (αáí«Γá óÑñÑΓß∩ ¡á ú½áó¡«¼ »α«µÑßß«αÑ)         │
  160.     │           ñ½∩ (óßÑσ »α«µÑßß«ó ó «τÑαÑñ¿ ú«Γ«óδσ ¬ óδ»«½¡Ñ- │
  161.     │            ¡¿ε)                                            │
  162.     │               óδíαáΓ∞ »α«µÑßß, ¿¼ÑεΘ¿⌐ ¡á¿óδßΦ¿⌐ »α¿«α¿ΓÑΓ │
  163.     │                ßαÑñ¿ ºáúαπªÑ¡¡δσ ó »á¼∩Γ∞;                 │
  164.     │        ó »α«Γ¿ó¡«¼ ß½πτáÑ   /* αáí«Γá óÑñÑΓß∩ ¡á »«ñτ¿¡Ñ¡- │
  165.     │                              * ¡«¼ »α«µÑßß«αÑ */           │
  166.     │           ñ½∩ (ΓÑσ »α«µÑßß«ó ó «τÑαÑñ¿, ¬«Γ«αδÑ ¡Ñ ¡πªñáεΓ-│
  167.     │            ß∩ ó ú½áó¡«¼ »α«µÑßß«αÑ)                        │
  168.     │               óδíαáΓ∞ »α«µÑßß, ¿¼ÑεΘ¿⌐ ¡á¿óδßΦ¿⌐ »α¿«α¿ΓÑΓ │
  169.     │                ßαÑñ¿ ºáúαπªÑ¡¡δσ ó »á¼∩Γ∞;                 │
  170.     │        Ñß½¿ (ñ½∩ ºá»π߬ᠡѠ»«ñσ«ñ¿Γ ¡¿ «ñ¿¡ ¿º »α«µÑßß«ó) │
  171.     │           ¡Ñ ºáúαπªáΓ∞ ¼áΦ¿¡π, »ÑαÑσ«ñ∩Θπε ó ß«ßΓ«∩¡¿Ñ »α«-│
  172.     │            ßΓ«∩;                                           │
  173.     │           /* ¿º φΓ«ú« ß«ßΓ«∩¡¿∩ ¼áΦ¿¡á óδσ«ñ¿Γ ó αѺπ½∞ΓáΓÑ│
  174.     │            * »αÑαδóá¡¿∩ */                                 │
  175.     │    }                                                       │
  176.     │    πíαáΓ∞ óδíαá¡¡δ⌐ »α«µÑßß ¿º «τÑαÑñ¿ ú«Γ«óδσ ¬ óδ»«½¡Ñ-  │
  177.     │     ¡¿ε;                                                   │
  178.     │    »ÑαѬ½ετ¿Γ∞ß∩ ¡á ¬«¡ΓѬßΓ óδíαá¡¡«ú« »α«µÑßßá, ó«º«í¡«- │
  179.     │     ó¿Γ∞ Ñú« óδ»«½¡Ñ¡¿Ñ;                                   │
  180.     │ }                                                          │
  181.     └────────────────────────────────────────────────────────────┘
  182.  
  183.               É¿ßπ¡«¬ 12.3. Ç½ú«α¿Γ¼ ñ¿ß»ÑΓτÑα¿ºáµ¿¿
  184.  
  185.  
  186.  
  187.                                     364
  188.  
  189.     ┌────────────────────────────────────────────────────────────┐
  190.     │ á½ú«α¿Γ¼ syscall   /* ¿ß»αáó½Ñ¡¡δ⌐ á½ú«α¿Γ¼ ó맮óá ß¿ßΓѼ- │
  191.     │                     * ¡«⌐ Σπ¡¬µ¿¿ */                       │
  192.     │ óσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩:  ¬«ñ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿                 │
  193.     │ óδσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: αѺπ½∞ΓáΓ óδ»«½¡Ñ¡¿∩ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿│
  194.     │ {                                                          │
  195.     │    Ñß½¿ (αáí«Γá óÑñÑΓß∩ ¡á »«ñτ¿¡Ñ¡¡«¼ »α«µÑßß«αÑ)         │
  196.     │    {                                                       │
  197.     │        »ÑαÑπßΓá¡«ó¿Γ∞ º¡áτÑ¡¿Ñ »«½∩ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »α«µÑßß«-│
  198.     │         αá ó ß««ΓóÑΓßΓóπεΘÑ⌐ ºá»¿ß¿ Γáí½¿µδ »α«µÑßß«ó;     │
  199.     │        »α«¿ºóÑßΓ¿ »ÑαѬ½ετÑ¡¿Ñ ¬«¡ΓѬßΓá;                  │
  200.     │    }                                                       │
  201.     │    óδ»«½¡¿Γ∞ «íδτ¡δ⌐ á½ú«α¿Γ¼ αÑ὿ºáµ¿¿ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿;│
  202.     │    »ÑαÑ¡áßΓα«¿Γ∞ º¡áτÑ¡¿Ñ »«½∩ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »α«µÑßß«αá,   │
  203.     │     τΓ«íδ «¡« π¬áºδóὫ ¡á "½εí«⌐" (»«ñτ¿¡Ñ¡¡δ⌐);          │
  204.     │    Ñß½¿ (¡á ú½áó¡«¼ »α«µÑßß«αÑ ñ«½ª¡δ óδ»«½¡∩Γ∞ß∩ ñαπú¿Ñ   │
  205.     │     »α«µÑßßδ)                                              │
  206.     │        »α«¿ºóÑßΓ¿ »ÑαѬ½ετÑ¡¿Ñ ¬«¡ΓѬßΓá;                  │
  207.     │ }                                                          │
  208.     └────────────────────────────────────────────────────────────┘
  209.  
  210.     É¿ßπ¡«¬ 12.4. Ç½ú«α¿Γ¼ «íαáí«Γ¬¿ «íαáΘÑ¡¿∩ ¬ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿
  211.  
  212.     Åα«úαἼᠫíαáí«Γ¬¿ »αÑαδóá¡¿⌐ »« Γá⌐¼Ñαπ ¡á »«ñτ¿¡Ñ¡¡«¼ »α«µÑßß«αÑ ß½Ñ-
  213. ñ¿Γ ºá »Ñα¿«ñ¿τ¡«ßΓ∞ε »ÑαѺá»πß¬á »α«µÑßß«ó, ¡Ñ  ñ«»π߬á∩  ¼«¡«»«½∞¡«ú«  ¿ß-
  214. »«½∞º«óá¡¿∩  »α«µÑßß«αá  «ñ¡«⌐ ºáñáτÑ⌐. èα«¼Ñ Γ«ú«, ¬áªñπε ßѬπ¡ñπ φΓá »α«ú-
  215. αá¼¼á óδó«ñ¿Γ »«ñτ¿¡Ñ¡¡δ⌐ »α«µÑßß«α ¿º ß«ßΓ«∩¡¿∩ íѺñÑ⌐ßΓó¿∩ (»α«ßΓ«∩). Å«ñ-
  216. τ¿¡Ñ¡¡δ⌐ »α«µÑßß«α óδí¿αáÑΓ ñ½∩ óδ»«½¡Ñ¡¿∩ »α«µÑßß ß  ¡á¿óδßΦ¿¼  »α¿«α¿ΓÑΓ«¼
  217. ßαÑñ¿ ΓÑσ »α«µÑßß«ó, ¬«Γ«αδÑ ¡Ñ ¡πªñáεΓß∩ ó ú½áó¡«¼ »α«µÑßß«αÑ.
  218.     àñ¿¡ßΓóÑ¡¡δ¼  ¼ÑßΓ«¼, úñÑ µÑ½«ßΓ¡«ßΓ∞ ßΓαπ¬Γπα ñá¡¡δσ ∩ñαá ÑΘÑ »«ñóÑαúá-
  219. ÑΓß∩ «»áß¡«ßΓ¿, ∩ó½∩ÑΓß∩ á½ú«α¿Γ¼ ñ¿ß»ÑΓτÑα¿ºáµ¿¿, »«ß¬«½∞¬π «¡ ¡Ñ »αÑñ«σαá-
  220. ¡∩ÑΓ «Γ óδí«αá »α«µÑßßá ¡á óδ»«½¡Ñ¡¿Ñ ßαáºπ ¡á ñóπσ  »α«µÑßß«αáσ.  ìá»α¿¼Ñα,
  221. Ñß½¿ ó ¬«¡Σ¿úπαᵿ¿ ¿¼ÑÑΓß∩ «ñ¿¡ ú½áó¡δ⌐ »α«µÑßß«α ¿ ñóá »«ñτ¿¡Ñ¡¡δσ, ¡Ñ ¿ß-
  222. ¬½ετѡᠠ󫺼«ª¡«ßΓ∞ Γ«ú«, τΓ« «íá »«ñτ¿¡Ñ¡¡δσ »α«µÑßß«αá óδíÑαπΓ ñ½∩ óδ»«½-
  223. ¡Ñ¡¿∩ ó αѪ¿¼Ñ ºáñáτ¿ «ñ¿¡ ¿ Γ«Γ ªÑ »α«µÑßß. àß½¿ «íá »α«µÑßß«αá ¡áτ¡πΓ  óδ-
  224. »«½¡∩Γ∞ Ñú« »áαώѽ∞¡«, «ßπΘÑßΓó½∩∩ τΓÑ¡¿Ñ ¿ ºá»¿ß∞, φΓ« ¡Ñ¿ºíѪ¡« »α¿óÑñÑΓ
  225. ¬ ¿ß¬áªÑ¡¿ε ß«ñÑন¼«ú« áñαÑß¡«ú« »α«ßΓαá¡ßΓóá »α«µÑßßá.
  226.     êºíѪáΓ∞  ó«º¡¿¬¡«óÑ¡¿∩  φΓ«⌐ »α«í½Ñ¼δ ¼«ª¡« ñóπ¼∩ ß»«ß«íἿ. é«-»Ñαóδσ,
  227. ú½áó¡δ⌐ »α«µÑßß«α ¼«ªÑΓ ∩ó¡« π¬áºáΓ∞, ¡á ¬á¬«¼  ¿º  »«ñτ¿¡Ñ¡¡δσ  »α«µÑßß«α«ó
  228. ß½ÑñπÑΓ  óδ»«½¡∩Γ∞  ñá¡¡δ⌐ »α«µÑßß. àß½¿ ¡á ¬áªñδ⌐ »α«µÑßß«α ¡á»αáó½∩Γ∞ ¡Ñß-
  229. ¬«½∞¬« »α«µÑßß«ó, ó«º¡¿¬áÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ∞  ó  ßíá½á¡ß¿α«óá¡¿¿  ¡áúαπº¬¿  (¡á
  230. «ñ¿¡ ¿º »α«µÑßß«α«ó ¡áº¡áτáÑΓß∩ í«½∞Φ«Ñ ¬«½¿τÑßΓó« »α«µÑßß«ó, ó Γ« óαѼ∩ ¬á¬
  231. ñαπú¿Ñ  »α«µÑßß«αδ »α«ßΓá¿óáεΓ). çáñáτá αáß»αÑñѽѡ¿∩ ¡áúαπº¬¿ ¼Ñªñπ »α«µÑß-
  232. ß«αἿ ½«ª¿Γß∩ ¡á ú½áó¡«Ñ ∩ñα«. é«-óΓ«αδσ, ∩ñα«  ¼«ªÑΓ  »α«ß½Ññ¿Γ∞  ºá  ΓѼ,
  233. τΓ«íδ  ó  ¬áªñδ⌐ ¼«¼Ñ¡Γ óαѼѡ¿ ó á½ú«α¿Γ¼Ñ ñ¿ß»ÑΓτÑα¿ºáµ¿¿ »α¿¡¿¼á½ πτáßΓ¿Ñ
  234. Γ«½∞¬« «ñ¿¡ »α«µÑßß«α, ñ½∩ φΓ«ú« ¿ß»«½∞ºπεΓß∩ ¼Ñσá¡¿º¼δ, »«ñ«í¡δÑ ßѼáΣ«αá¼.
  235.  
  236.  
  237.     E12.3 æàîÇöÄÉ¢F
  238.  
  239.     Å«ññÑ᪬á ß¿ßΓѼδ UNIX ó ¼¡«ú«»α«µÑßß«α¡«⌐ ¬«¡Σ¿úπαᵿ¿ ¼«ªÑΓ ó¬½ετáΓ∞ ó
  240. ßÑí∩ αáºí¿Ñ¡¿Ñ ∩ñαá ß¿ßΓÑ¼δ ¡á ¬α¿Γ¿τÑ߬¿Ñ πτáßΓ¬¿, »áαώѽ∞¡«Ñ  óδ»«½¡Ñ¡¿Ñ
  241. ¬«Γ«αδσ ¡á ¡Ñ߬«½∞¬¿σ »α«µÑßß«αáσ ¡Ñ ñ«»π߬áÑΓß∩. Æá¬¿Ñ ß¿ßΓÑ¼δ »αÑñ¡áº¡áτá-
  242. ½¿ß∞  ñ½∩ αáí«Γδ ¡á ¼áΦ¿¡áσ AT&T 3B20A ¿ IBM 370, ñ½∩ αáºí¿Ñ¡¿∩ ∩ñαá ¿ß»«½∞-
  243. º«ó὿ß∞ ßѼáΣ«αδ (ß¼. [Bach 84]). ì¿ªÑß½ÑñπεΘ¿Ñ αáßßπªñÑ¡¿∩ »«¼«úáεΓ »«¡∩Γ∞
  244. ßπΓ∞ ñá¡¡«⌐ «ß«íÑ¡¡«ßΓ¿. Åα¿ í½¿ªá⌐ΦѼ αáßß¼«ΓαÑ¡¿¿ ßαáºπ ªÑ  ó«º¡¿¬áεΓ  ñóá
  245. ó«»α«ßá: ¬á¬ ¿ß»«½∞º«óáΓ∞ ßѼáΣ«αδ ¿ úñÑ «»αÑñѽ¿Γ∞ ¬α¿Γ¿τÑ߬¿Ñ πτáßΓ¬¿.
  246.     èᬠ πªÑ  ú«ó«α¿½«ß∞ ó ú½áóÑ 2, Ñß½¿ »α¿ óδ»«½¡Ñ¡¿¿ ¬α¿Γ¿τÑ߬«ú« πτáßΓ¬á
  247. »α«úαá¼¼δ »α«µÑßß »α¿«ßΓá¡áó½¿óáÑΓß∩, ñ½∩ ºáΘ¿Γδ πτáßΓ¬á «Γ »«ß∩úáΓѽ∞ßΓó ß«
  248.  
  249.                                     365
  250.  
  251. ßΓ«α«¡δ ñαπú¿σ »α«µÑßß«ó á½ú«α¿Γ¼δ αáí«Γδ ∩ñαá «ñ¡«»α«µÑßß«α¡«⌐ ß¿ßΓѼδ UNIX
  252. ¿ß»«½∞ºπεΓ í½«¬¿α«ó¬π. îÑσá¡¿º¼ πßΓá¡«ó½Ñ¡¿∩ í½«¬¿α«ó¬¿:
  253.     óδ»«½¡∩Γ∞ »«¬á (í½«¬¿α«ó¬á πßΓá¡«ó½Ñ¡á)  /* «»Ñαᵿ∩ »α«óÑન */
  254.         »α¿«ßΓá¡«ó¿Γ∞ß∩ (ñ« ß¡∩Γ¿∩ í½«¬¿α«ó¬¿);
  255.     πßΓá¡«ó¿Γ∞ í½«¬¿α«ó¬π;
  256. ¼Ñσá¡¿º¼ ß¡∩Γ¿∩ í½«¬¿α«ó¬¿:
  257.     ß¡∩Γ∞ í½«¬¿α«ó¬π;
  258.     óδóÑßΓ¿ ¿º ß«ßΓ«∩¡¿∩ »α¿«ßΓá¡«óá óßÑ »α«µÑßßδ,  »α¿«ßΓá¡«ó½Ñ¡¡δÑ  ó  αÑ-
  259.      ºπ½∞ΓáΓÑ í½«¬¿α«ó¬¿;
  260.  
  261.      Åα«µÑßß A/Åα«µÑßß«α A              Åα«µÑßß B/Åα«µÑßß«α B
  262.     ┌─────────────────────────────────────────────────────────
  263.     │              ┌───────────────────────────┐
  264.     │              │ ü½«¬¿α«ó¬á ìà πßΓá¡«ó½Ñ¡á │
  265.     │          ∙   └───────────────────────────┘  ∙
  266.     │          ∙                                  ∙
  267.     │          ∙                                  ∙
  268.     │ Åα«óÑα∩ÑΓ, πßΓá¡«ó½Ñ¡á             Åα«óÑα∩ÑΓ, πßΓá¡«ó½Ñ¡á
  269.     │    ½¿ í½«¬¿α«ó¬á                      ½¿ í½«¬¿α«ó¬á
  270.     │        (¡ÑΓ)                              (¡ÑΓ)
  271. t - ┼ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  272.     │    ôßΓá¡áó½¿óáÑΓ                      ôßΓá¡áó½¿óáÑΓ
  273.     │     í½«¬¿α«ó¬π                         í½«¬¿α«ó¬π
  274.     │
  275.     │  êß»«½∞ºπÑΓ αÑßπαß                  êß»«½∞ºπÑΓ αÑßπαß
  276.     v         ^                                     ^
  277.   éαѼ∩       │                                     │
  278.               └──────┐                       ┌──────┘
  279.                   Ä»áß¡«ßΓ∞ ¡áαπΦÑ¡¿∩ µÑ½«ßΓ¡«ßΓ¿
  280.  
  281.     É¿ßπ¡«¬ 12.5. è«¡¬παÑ¡µ¿∩ ºá πßΓá¡«ó¬π í½«¬¿α«ó¬¿ ó ¼¡«ú«»α«-
  282.                   µÑßß«α¡δσ ß¿ßΓѼáσ
  283.  
  284.  
  285.     ü½«¬¿α«ó¬¿  Γᬫú«  α«ñá «σóáΓδóáεΓ ¡Ñ¬«Γ«αδÑ ¬α¿Γ¿τÑ߬¿Ñ πτáßΓ¬¿, ¡« ¡Ñ
  286. αáí«ΓáεΓ ó ¼¡«ú«»α«µÑßß«α¡δσ ß¿ßΓѼáσ, τΓ« ó¿ñ¡« ¿º É¿ßπ¡¬á 12.5.  ÅαÑñ»«½«-
  287. ª¿¼,  τΓ« í½«¬¿α«ó¬á ß¡∩Γá ¿ τΓ« ñóá »α«µÑßßá ¡á αạδσ »α«µÑßß«αáσ «ñ¡«óαÑ-
  288. ¼Ñ¡¡« »δΓáεΓß∩ »α«óÑα¿Γ∞ ÑÑ ¡á½¿τ¿Ñ ¿ πßΓá¡«ó¿Γ∞ ÑÑ. é ¼«¼Ñ¡Γ t «¡¿  «í¡áαπ-
  289. ª¿óáεΓ  ß¡∩Γ¿Ñ  í½«¬¿α«ó¬¿,  πßΓá¡áó½¿óáεΓ  ÑÑ ó¡«ó∞, óßΓπ»áεΓ ó ¬α¿Γ¿τÑ߬¿⌐
  290. πτáßΓ«¬ ¿ ß«ºñáεΓ «»áß¡«ßΓ∞ ¡áαπΦÑ¡¿∩ µÑ½«ßΓ¡«ßΓ¿ ßΓαπ¬Γπα  ñá¡¡δσ  ∩ñαá.  é
  291. πß½«ó¿¿  «ñ¡«óαѼѡ¡«ßΓ¿ ¿¼ÑÑΓß∩ «Γ¬½«¡Ñ¡¿Ñ: ¼Ñσá¡¿º¼ ¡Ñ ßαáí«ΓáÑΓ, Ñß½¿ »Ñ-
  292. αÑñ ΓѼ, ¬á¬ »α«µÑßß óδ»«½¡∩ÑΓ «»Ñαáµ¿ε »α«óÑન, ¡¿ «ñ¿¡ ñαπú«⌐ »α«µÑßß  ¡Ñ
  293. óδ»«½¡¿½ «»Ñαᵿε πßΓá¡«ó½Ñ¡¿∩ í½«¬¿α«ó¬¿. àß½¿, ¡á»α¿¼Ñα, »«ß½Ñ «í¡áαπªÑ¡¿∩
  294. ß¡∩Γ¿∩  í½«¬¿α«ó¬¿  »α«µÑßß«α A «íαáíáΓδóáÑΓ »αÑαδóá¡¿Ñ ¿ ó φë༫¼Ñ¡Γ »α«-
  295. µÑßß«α B óδ»«½¡∩ÑΓ »α«óÑα¬π ¿ πßΓá¡áó½¿óáÑΓ í½«¬¿α«ó¬π, »« óδσ«ñÑ ¿º  »αÑαδ-
  296. óá¡¿∩ »α«µÑßß«α A ΓᬠªÑ πßΓá¡«ó¿Γ í½«¬¿α«ó¬π. ùΓ«íδ »αÑñ«ΓóαáΓ¿Γ∞ ó«º¡¿¬¡«-
  297. óÑ¡¿Ñ »«ñ«í¡«⌐ ß¿Γπᵿ¿, ¡πª¡« ßñѽáΓ∞ Γá¬, τΓ«íδ »α«µÑñπαá í½«¬¿α«óá¡¿∩ íδ-
  298. ½á  ¡Ññѽ¿¼«⌐: »α«óÑα¬π ¡á½¿τ¿∩ í½«¬¿α«ó¬¿ ¿ ÑÑ πßΓá¡«ó¬π ß½ÑñπÑΓ «íΩÑñ¿¡¿Γ∞
  299. ó «ñ¡π «»Ñαᵿε, τΓ«íδ ó ¬áªñδ⌐ ¼«¼Ñ¡Γ óαѼѡ¿ ß í½«¬¿α«ó¬«⌐ ¿¼Ñ½ ñѽ« Γ«½∞-
  300. ¬« «ñ¿¡ »α«µÑßß.
  301.  
  302.  
  303.     E12.3.1 Ä»αÑñѽѡ¿Ñ ßѼáΣ«α«óF
  304.  
  305.     æÑ¼áΣ«α »αÑñßΓáó½∩ÑΓ ß«í«⌐ «íαáíáΓδóáѼδ⌐  ∩ñα«¼  µÑ½«τ¿ß½Ñ¡¡δ⌐  «íΩѬΓ,
  306. ñ½∩ ¬«Γ«α«ú« «»αÑñѽѡδ ß½ÑñπεΘ¿Ñ φ½Ñ¼Ñ¡Γáα¡δÑ (¡Ññѽ¿¼δÑ) «»Ñαᵿ¿:
  307.   *  ê¡¿µ¿á½¿ºáµ¿∩ ßѼáΣ«αá, ó αѺπ½∞ΓáΓÑ ¬«Γ«α«⌐ ßѼáΣ«απ »α¿ßóá¿óáÑΓß∩ ¡Ñ-
  308.     «Γα¿µáΓѽ∞¡«Ñ º¡áτÑ¡¿Ñ;
  309.   * Ä»Ñαᵿ∩ Γ¿»á P, π¼Ñ¡∞ΦáεΘá∩ º¡áτÑ¡¿Ñ ßѼáΣ«αá. àß½¿  º¡áτÑ¡¿Ñ  ßѼáΣ«αá
  310.  
  311.                                     366
  312.  
  313.     «»π߬áÑΓß∩  ¡¿ªÑ  ¡π½Ñó«⌐ «Γ¼ÑΓ¬¿, óδ»«½¡∩εΘ¿⌐ «»Ñαáµ¿ε »α«µÑßß »α¿«ßΓá-
  314.     ¡áó½¿óáÑΓ ßó«ε αáí«Γπ;
  315.   * Ä»Ñαᵿ∩ Γ¿»á V, πóѽ¿τ¿óáεΘá∩ º¡áτÑ¡¿Ñ ßѼáΣ«αá. àß½¿ º¡áτÑ¡¿Ñ ßѼáΣ«αá
  316.     ó αѺπ½∞ΓáΓÑ «»Ñαᵿ¿ ßΓá¡«ó¿Γß∩ í«½∞ΦÑ ¿½¿ αáó¡« 0, «ñ¿¡ ¿º  »α«µÑßß«ó,
  317.     »α¿«ßΓá¡«ó½Ñ¡¡δσ  ó«  óαѼ∩  óδ»«½¡Ñ¡¿∩ «»Ñαᵿ¿ P, óδσ«ñ¿Γ ¿º ß«ßΓ«∩¡¿∩
  318.     »α¿«ßΓá¡«óá;
  319.   * ôß½«ó¡á∩ «»Ñαᵿ∩ Γ¿»á P, ß«¬αáΘÑ¡¡«  CP  (conditional  P),  π¼Ñ¡∞ΦáεΘá∩
  320.     º¡áτÑ¡¿Ñ ßѼáΣ«αá ¿ ó«ºóαáΘáεΘá∩ ½«ú¿τÑ߬«Ñ º¡áτÑ¡¿Ñ "¿ßΓ¿¡á" ó Γ«¼ ß½π-
  321.     τáÑ,  ¬«úñá  º¡áτÑ¡¿Ñ ßѼáΣ«αá «ßΓáÑΓß∩ »«½«ª¿Γѽ∞¡δ¼. àß½¿ ó αѺπ½∞ΓáΓÑ
  322.     «»Ñαᵿ¿ º¡áτÑ¡¿Ñ ßѼáΣ«αá ñ«½ª¡« ßΓáΓ∞ «Γα¿µáΓѽ∞¡δ¼ ¿½¿ ¡π½Ñóδ¼, ¡¿¬á-
  323.     ¬¿σ ñÑ⌐ßΓó¿⌐ ¡áñ ¡¿¼ ¡Ñ »α«¿ºó«ñ¿Γß∩ ¿  «»Ñαᵿ∩  ó«ºóαáΘáÑΓ  ½«ú¿τÑ߬«Ñ
  324.     º¡áτÑ¡¿Ñ "½«ª∞".
  325.     Ä»αÑñѽѡ¡δÑ  Γᬿ¼ «íαẫ¼ ßѼáΣ«αδ, íѺπß½«ó¡«, ¡¿¬á¬ ¡Ñ ßó∩ºá¡δ ß ßÑ-
  326. ¼áΣ«αἿ »«½∞º«óáΓѽ∞߬«ú« πα«ó¡∩, αáßß¼«ΓαÑ¡¡δ¼¿ ó ú½áóÑ 11.
  327.  
  328.  
  329.     E12.3.2 ÉÑ὿ºáµ¿∩ ßѼáΣ«α«óF
  330.  
  331.     ä¿⌐¬ßΓαá [Dijkstra 65] »«¬áºá½, τΓ« ßѼáΣ«αδ ¼«ª¡« αÑ὿º«óáΓ∞  íѺ  ¿ß-
  332. »«½∞º«óá¡¿∩  ß»Ñµ¿á½∞¡δσ  ¼áΦ¿¡¡δσ  ¿¡ßΓαπ¬µ¿⌐. ìá É¿ßπ¡¬Ñ 12.6 »αÑñßΓáó½Ñ¡δ
  333. αÑ὿ºπεΘ¿Ñ ßѼáΣ«αδ Σπ¡¬µ¿¿, ¡á»¿ßá¡¡δÑ ¡á ∩ºδ¬Ñ æ¿. öπ¡¬µ¿∩ Pprim í½«¬¿απ-
  334. ÑΓ ßѼáΣ«α »« αѺπ½∞ΓáΓá¼ »α«óÑન º¡áτÑ¡¿⌐,  ß«ñÑαªáΘ¿σß∩  ó  ¼áßß¿óÑ  val;
  335. ¬áªñδ⌐  »α«µÑßß«α  ó  ß¿ßΓѼѠ π»αáó½∩ÑΓ  º¡áτÑ¡¿Ñ¼ «ñ¡«ú« φ½Ñ¼Ñ¡Γá ¼áßß¿óá.
  336. ÅαѪñÑ τѼ ºáí½«¬¿α«óáΓ∞ ßѼáΣ«α, »α«µÑßß«α »α«óÑα∩ÑΓ,  ¡Ñ  ºáí½«¬¿α«óá¡  ½¿
  337. πªÑ  ßѼáΣ«α ñαπú¿¼¿ »α«µÑßß«αἿ (ß««ΓóÑΓßΓóπεΘ¿Ñ ¿¼ φ½Ñ¼Ñ¡Γδ ó ¼áßß¿óÑ val
  338. Γ«úñá ¿¼ÑεΓ º¡áτÑ¡¿∩, αáó¡δÑ 2), á ΓᬪѠ¡Ñ  »αÑñ»α¿¡¿¼áεΓß∩  ½¿  »«»δΓ¬¿  ó
  339. ñá¡¡δ⌐  ¼«¼Ñ¡Γ  ºáí½«¬¿α«óáΓ∞  ßѼáΣ«α ß« ßΓ«α«¡δ »α«µÑßß«α«ó ß í«½ÑÑ ¡¿º¬¿¼
  340. ¬«ñ«¼ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ (ß««ΓóÑΓßΓóπεΘ¿Ñ ¿¼ φ½Ñ¼Ñ¡Γδ ¿¼ÑεΓ º¡áτÑ¡¿∩, αáó¡δÑ  1).
  341. àß½¿ ½εí«Ñ ¿º πß½«ó¿⌐ óδ»«½¡∩ÑΓß∩, »α«µÑßß«α »ÑαÑπßΓá¡áó½¿óáÑΓ º¡áτÑ¡¿Ñ ßó«-
  342. Ñú«  φ½Ñ¼Ñ¡Γá ó 1 ¿ »«óΓ«α∩ÑΓ »«»δΓ¬π. è«úñá Σπ¡¬µ¿∩ Pprim «Γ¬αδóáÑΓ ó¡ÑΦ¡¿⌐
  343. µ¿¬½, »ÑαѼѡ¡á∩ µ¿¬½á ¿¼ÑÑΓ º¡áτÑ¡¿Ñ, ¡á Ññ¿¡¿µπ »αÑóδΦáεΘÑÑ ¬«ñ  ¿ñÑ¡Γ¿Σ¿-
  344. ¬áµ¿¿  Γ«ú«  »α«µÑßß«αá, ¬«Γ«αδ⌐ ¿ß»«½∞º«óá½ αÑßπαß »«ß½Ññ¡¿¼, ΓѼ ßá¼δ¼ úá-
  345. αá¡Γ¿απÑΓß∩, τΓ« ¡¿ «ñ¿¡ ¿º »α«µÑßß«α«ó ¡Ñ ¼«ªÑΓ ¼«¡«»«½∞¡« ºáó½áñÑΓ∞ αÑßπα-
  346. ß«¼ (ó ¬áτÑßΓóÑ ñ«¬áºáΓѽ∞ßΓóá ß«Φ½Ñ¼ß∩ ¡á [Dijkstra 65]  ¿  [Coffman  73]).
  347. öπ¡¬µ¿∩ Vprim «ßó«í«ªñáÑΓ ßѼáΣ«α ¿ «Γ¬αδóáÑΓ ñ½∩ ñαπú¿σ »α«µÑßß«α«ó ó«º¼«ª-
  348. ¡«ßΓ∞ »«½πτÑ¡¿∩ ¿ß¬½ετ¿Γѽ∞¡«ú« ñ«ßΓπ»á ¬ αÑßπαßπ »πΓѼ «τ¿ßΓ¬¿ ß««ΓóÑΓßΓóπ-
  349. εΘÑú«  ΓѬπΘÑ¼π  »α«µÑßß«απ  φ½Ñ¼Ñ¡Γá ó ¼áßß¿óÑ val ¿ »ÑαÑ¡áßΓα«⌐¬¿ º¡áτÑ¡¿∩
  350. lastid. ùΓ«íδ ºáΘ¿Γ¿Γ∞ αÑßπαß, ß½ÑñπÑΓ óδ»«½¡¿Γ∞ ß½ÑñπεΘ¿⌐ ¡áí«α ¬«¼á¡ñ:
  351.  
  352.     Pprim(ßѼáΣ«α);
  353.     ¬«¼á¡ñδ ¿ß»«½∞º«óá¡¿∩ αÑßπαßá;
  354.     Vprim(ßѼáΣ«α);
  355.  
  356.     é í«½∞Φ¿¡ßΓóÑ ¼áΦ¿¡ ¿¼ÑÑΓß∩ ¡áí«α φ½Ñ¼Ñ¡Γáα¡δσ  (¡Ññѽ¿¼δσ)  ¿¡ßΓαπ¬µ¿⌐,
  357. αÑ὿ºπεΘ¿σ «»Ñαᵿε í½«¬¿α«óá¡¿∩ í«½ÑÑ ñÑΦÑó묨 ßαÑñßΓóἿ, ¿í« µ¿¬½δ, óσ«-
  358. ñ∩Θ¿Ñ ó Σπ¡¬µ¿ε Pprim, αáí«ΓáεΓ ¼Ññ½Ñ¡¡« ¿ ß¡¿ªáεΓ »α«¿ºó«ñ¿Γѽ∞¡«ßΓ∞ ß¿ßΓÑ-
  359. ¼δ. Æá¬, ¡á»α¿¼Ñα, ó ¼áΦ¿¡áσ ßÑα¿¿ IBM 370 »«ññÑনóáÑΓß∩ ¿¡ßΓαπ¬µ¿∩ compare
  360. and  swap (ßαáó¡¿Γ∞ ¿ »ÑαÑßΓáó¿Γ∞), ó ¼áΦ¿¡Ñ AT&T 3B20 - ¿¡ßΓαπ¬µ¿∩ read and
  361. clear (»α«τ¿ΓáΓ∞ ¿ «τ¿ßΓ¿Γ∞). Åα¿ óδ»«½¡Ñ¡¿¿ ¿¡ßΓαπ¬µ¿¿ read and clear  »α«-
  362. µÑßß«α  ßτ¿ΓδóáÑΓ ß«ñÑন¼«Ñ ∩τÑ⌐¬¿ »á¼∩Γ¿, «τ¿ΘáÑΓ ÑÑ (ßíαáßδóáÑΓ ó 0) ¿ »«
  363. αѺπ½∞ΓáΓá¼ ßαáó¡Ñ¡¿∩ »Ñαó«¡áτá½∞¡«ú« ß«ñÑন¼«ú« ß 0 πßΓá¡áó½¿óáÑΓ ¬«ñ  ºá-
  364. óÑαΦÑ¡¿∩  ¿¡ßΓαπ¬µ¿¿.  àß½¿  Γπ ªÑ ¿¡ßΓαπ¬µ¿ε ¡áñ Γ«⌐ ªÑ ∩τÑ⌐¬«⌐ »áαώѽ∞¡«
  365. óδ»«½¡∩ÑΓ ÑΘÑ «ñ¿¡ »α«µÑßß«α, «ñ¿¡ ¿º ñóπσ  »α«µÑßß«α«ó  »α«τ¿ΓáÑΓ  »Ñαó«¡á-
  366. τá½∞¡«Ñ  ß«ñÑন¼«Ñ,  á ñαπú«⌐ - 0: ¡Ññѽ¿¼«ßΓ∞ «»Ñαᵿ¿ úáαá¡Γ¿απÑΓß∩ á»»á-
  367. αáΓ¡δ¼ »πΓѼ. Æá¬¿¼ «íαẫ¼, ºá ßτÑΓ ¿ß»«½∞º«óá¡¿∩ ñá¡¡«⌐ ¿¡ßΓαπ¬µ¿¿ Σπ¡¬µ¿ε
  368. Pprim ¼«ª¡« í佫 íδ αÑ὿º«óáΓ∞ ¼Ñ¡ÑÑ ß½«ª¡δ¼¿  ßαÑñßΓóἿ  (É¿ßπ¡«¬  12.7).
  369. Åα«µÑßß  »«óΓ«α∩ÑΓ ¿¡ßΓαπ¬µ¿ε read and clear ó µ¿¬½Ñ ñ« ΓÑσ »«α, »«¬á ¡Ñ íπ-
  370. ñÑΓ ßτ¿Γá¡« º¡áτÑ¡¿Ñ, «Γ½¿τ¡«Ñ «Γ ¡π½∩. ìáτá½∞¡«Ñ º¡áτÑ¡¿Ñ ¬«¼»«¡Ñ¡Γδ  ßѼá-
  371. Σ«αá, ßó∩ºá¡¡«⌐ ß í½«¬¿α«ó¬«⌐, ñ«½ª¡« íδΓ∞ αáó¡« 1.
  372.  
  373.                                     367
  374.  
  375.     èᬠ Γᬫóπε, ñá¡¡πε ßѼáΣ«α¡πε ¬«¡ßΓαπ¬µ¿ε ¡Ñ½∞º∩ αÑ὿º«óáΓ∞ ó ß«ßΓáóÑ
  376. ∩ñαá «»Ñαᵿ«¡¡«⌐ ß¿ßΓѼδ, »«ß¬«½∞¬π αáí«ΓáεΘ¿⌐ ß ¡Ñ⌐ »α«µÑßß ¡Ñ óδσ«ñ¿Γ  ¿º
  377. µ¿¬½á, »«¬á ¡Ñ ñ«ßΓ¿ú¡ÑΓ ßó«Ñ⌐ µÑ½¿. àß½¿
  378.  
  379.     ┌────────────────────────────────────────────────────────────┐
  380.     │ struct semaphore                                           │
  381.     │ {                                                          │
  382.     │    int val[NUMPROCS];  /* ºá¼«¬---1 φ½Ñ¼Ñ¡Γ ¡á ¬áªñδ⌐ »α«- │
  383.     │                        /* µÑßß«α */                        │
  384.     │    int lastid;         /* ¿ñÑ¡Γ¿Σ¿¬áΓ«α »α«µÑßß«αá, »«½π-  │
  385.     │                        /* τ¿óΦÑú« ßѼáΣ«α »«ß½Ññ¡¿¼ */     │
  386.     │ };                                                         │
  387.     │ int procid;            /* π¡¿¬á½∞¡δ⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α »α«µÑß- │
  388.     │                        /* ß«αá */                          │
  389.     │ int lastid;            /* ¿ñÑ¡Γ¿Σ¿¬áΓ«α »α«µÑßß«αá, »«½π-  │
  390.     │                        /* τ¿óΦÑú« ßѼáΣ«α »«ß½Ññ¡¿¼ */     │
  391.     │                                                            │
  392.     │ INIT(semaphore)                                            │
  393.     │    struct semaphore semaphore;                             │
  394.     │ {                                                          │
  395.     │    int i;                                                  │
  396.     │    for (i = 0; i < NUMPROCS; i++)                          │
  397.     │         semaphore.val[i] = 0;                              │
  398.     │ }                                                          │
  399.     │ Pprim(semaphore)                                           │
  400.     │    struct semaphore semaphore;                             │
  401.     │ {                                                          │
  402.     │    int i,first;                                            │
  403.     │                                                            │
  404.     │  loop:                                                     │
  405.     │    first = lastid;                                         │
  406.     │    semaphore.val[procid] = 1;                              │
  407.     │    /* »α«ñ«½ªÑ¡¿Ñ ¡á ß½ÑñπεΘÑ⌐ ßΓαá¡¿µÑ */                 │
  408.     └────────────────────────────────────────────────────────────┘
  409.  
  410.        É¿ßπ¡«¬ 12.6. ÉÑ὿ºáµ¿∩ ßѼáΣ«α¡«⌐ í½«¬¿α«ó¬¿ ¡á æ¿
  411.  
  412.  
  413. ßѼáΣ«α  ¿ß»«½∞ºπÑΓß∩  ñ½∩ í½«¬¿α«óá¡¿∩ ßΓαπ¬Γπαδ ñá¡¡δσ, »α«µÑßß, «í¡áαπª¿ó
  414. ßѼáΣ«α ºáí½«¬¿α«óá¡¡δ¼, »α¿«ßΓá¡áó½¿óáÑΓ ßó«Ñ óδ»«½¡Ñ¡¿Ñ, τΓ«íδ ∩ñα«  ¿¼Ñ½«
  415. 󫺼«ª¡«ßΓ∞  »ÑαѬ½ετ¿Γ∞ß∩  ¡á  ¬«¡ΓѬßΓ ñαπú«ú« »α«µÑßßá ¿ óδ»«½¡¿Γ∞ ñαπúπε
  416. »«½Ñº¡πε αáí«Γπ. æ »«¼«Θ∞ε Σπ¡¬µ¿⌐ Pprim ¿  Vprim  ¼«ª¡«  αÑ὿º«óáΓ∞  í«½ÑÑ
  417. ß½«ª¡δ⌐ ¡áí«α ßѼáΣ«α¡δσ «»Ñαᵿ⌐, ß««ΓóÑΓßΓóπεΘ¿⌐ Γ«¼π ß«ßΓáóπ, ¬«Γ«αδ⌐ «»-
  418. αÑñѽѡ ó αáºñѽѠ12.3.1.
  419.     ä½∩  ¡áτá½á  ñáñ¿¼ «»αÑñѽѡ¿Ñ ßѼáΣ«αᠬᬠßΓαπ¬Γπαδ, ß«ßΓ«∩ΘÑ⌐ ¿º »«½∩
  420. í½«¬¿α«ó¬¿ (π»αáó½∩εΘÑú« ñ«ßΓπ»«¼ ¬ ßѼáΣ«απ), º¡áτÑ¡¿∩ ßѼáΣ«αá  ¿  «τÑαÑñ¿
  421. »α«µÑßß«ó,  »α¿«ßΓá¡«ó½Ñ¡¡δσ  »« ßѼáΣ«απ. Å«½Ñ í½«¬¿α«ó¬¿ ß«ñÑαª¿Γ ¿¡Σ«α¼á-
  422. µ¿ε, «Γ¬αδóáεΘπε ó« óαѼ∩ óδ»«½¡Ñ¡¿∩ «»Ñαᵿ⌐ Γ¿»á P ¿ V ñ«ßΓπ» ¬ ñαπú¿¼ »«-
  423. ½∩¼ ßΓαπ¬Γπαδ Γ«½∞¬« «ñ¡«¼π »α«µÑßßπ. Å« ºáóÑαΦÑ¡¿¿ «»Ñαᵿ¿  º¡áτÑ¡¿Ñ  »«½∩
  424. ßíαáßδóáÑΓß∩.  ¥Γ« º¡áτÑ¡¿Ñ «»αÑñѽ∩ÑΓ, αáºαÑΦÑ¡ ½¿ »α«µÑßßπ ñ«ßΓπ» ¬ ¬α¿Γ¿-
  425. τÑ߬«¼π πτáßΓ¬π, ºáΘ¿ΘáѼ«¼π ßѼáΣ«α«¼. é ¡áτá½Ñ óδ»«½¡Ñ¡¿∩ á½ú«α¿Γ¼á «»Ñαá-
  426. µ¿¿ P (É¿ßπ¡«¬ 12.8) ∩ñα« ß »«¼«Θ∞ε  Σπ¡¬µ¿¿  Pprim  »αÑñ«ßΓáó½∩ÑΓ  »α«µÑßßπ
  427. »αá󫠿߬½ετ¿Γѽ∞¡«ú« ñ«ßΓπ»á ¬ ßѼáΣ«απ ¿ π¼Ñ¡∞ΦáÑΓ º¡áτÑ¡¿Ñ ßѼáΣ«αá. àß½¿
  428. ßѼáΣ«α  ¿¼ÑÑΓ  ¡Ñ«Γα¿µáΓѽ∞¡«Ñ  º¡áτÑ¡¿Ñ, ΓѬπΘ¿⌐ »α«µÑßß »«½πτáÑΓ ñ«ßΓπ» ¬
  429. ¬α¿Γ¿τÑ߬«¼π πτáßΓ¬π. Å« ºáóÑαΦÑ¡¿¿ αáí«Γδ »α«µÑßß ßíαáßδóáÑΓ í½«¬¿α«ó¬π ßÑ-
  430. ¼áΣ«αá (ß »«¼«Θ∞ε Σπ¡¬µ¿¿ Vprim), «Γ¬αδóá∩ ñ«ßΓπ» ¬ ßѼáΣ«απ ñ½∩ ñαπú¿σ »α«-
  431. µÑßß«ó, ¿ ó«ºóαáΘáÑΓ »α¿º¡á¬ πß»ÑΦ¡«ú«  ºáóÑαΦÑ¡¿∩.  àß½¿  ªÑ  ó  αѺπ½∞ΓáΓÑ
  432. π¼Ñ¡∞ΦÑ¡¿∩ º¡áτÑ¡¿Ñ ßѼáΣ«αá ßΓá¡«ó¿Γß∩ «Γα¿µáΓѽ∞¡δ¼, ∩ñα« »α¿«ßΓá¡áó½¿óáÑΓ
  433. óδ»«½¡Ñ¡¿Ñ »α«µÑßßá, ¿ß»«½∞ºπ∩ á½ú«α¿Γ¼,
  434.  
  435.                                     368
  436.  
  437.     ┌────────────────────────────────────────────────────────────┐
  438.     │  forloop:                                                  │
  439.     │    for (i = first; i < NUMPROCS; i++)                      │
  440.     │    {                                                       │
  441.     │         if (i == procid)                                   │
  442.     │         {                                                  │
  443.     │             semaphore.val[i] = 2;                          │
  444.     │             for (i = 1; i < NUMPROCS; i++)                 │
  445.     │                  if (i != procid && semaphore.val[i] == 2) │
  446.     │                      goto loop;                            │
  447.     │             lastid = procid;                               │
  448.     │             return;     /* πß»ÑΦ¡«Ñ ºáóÑαΦÑ¡¿Ñ, αÑßπαß     │
  449.     │                         /* ¼«ª¡« ¿ß»«½∞º«óáΓ∞              │
  450.     │                          */                                │
  451.     │         }                                                  │
  452.     │         else if (semaphore.val[i])                         │
  453.     │             goto loop;                                     │
  454.     │    }                                                       │
  455.     │    first = 1;                                              │
  456.     │    goto forloop;                                           │
  457.     │ }                                                          │
  458.     │ Vprim(semaphore)                                           │
  459.     │    struct semaphore semaphore;                             │
  460.     │ {                                                          │
  461.     │    lastid = (procid + 1) % NUMPROCS;  /* ¡á ß½ÑñπεΘ¿⌐      │
  462.     │                                       /* »α«µÑßß«α */      │
  463.     │    semaphore.val[procid] = 0;                              │
  464.     │ }                                                          │
  465.     └────────────────────────────────────────────────────────────┘
  466.  
  467.        É¿ßπ¡«¬ 12.6. ÉÑ὿ºáµ¿∩ ßѼáΣ«α¡«⌐ í½«¬¿α«ó¬¿ ¡á æ¿ (»α«ñ«½ªÑ¡¿Ñ)
  468.  
  469.  
  470. »«ñ«í¡δ⌐ á½ú«α¿Γ¼π sleep (ú½áóá 6): «ß¡«óδóá∩ß∞ ¡á º¡áτÑ¡¿¿ »α¿«α¿ΓÑΓá, ∩ñα«
  471. »α«óÑα∩ÑΓ »«ßΓπ»¿óΦ¿Ñ ß¿ú¡á½δ, ó¬½ετáÑΓ ΓѬπΘ¿⌐ »α«µÑßß ó ß»¿ß«¬ »α¿«ßΓá¡«ó-
  472. ½Ñ¡¡δσ  »α«µÑßß«ó, ó ¬«Γ«α«¼ »«ß½Ññ¡¿Ñ »αÑñßΓáó½Ñ¡δ ó »«α∩ñ¬Ñ »«ßΓπ»½Ñ¡¿∩, ¿
  473. óδ»«½¡∩ÑΓ »ÑαѬ½ετÑ¡¿Ñ ¬«¡ΓѬßΓá. Ä»Ñαᵿ∩ V (É¿ßπ¡«¬ 12.9) »«½πτáÑΓ  ¿ß¬½ε-
  474. τ¿Γѽ∞¡δ⌐ ñ«ßΓπ» ¬ ßѼáΣ«απ τÑαѺ Σπ¡¬µ¿ε Pprim ¿ πóѽ¿τ¿óáÑΓ º¡áτÑ¡¿Ñ ßѼá-
  475. Σ«αá.  àß½¿ «τÑαÑñ∞ »α¿«ßΓá¡«ó½Ñ¡¡δσ »« ßѼáΣ«απ »α«µÑßß«ó ¡Ñ»πßΓá, ∩ñα« óδ-
  476. í¿αáÑΓ ¿º ¡ÑÑ »Ñαóδ⌐ »α«µÑßß ¿ »ÑαÑó«ñ¿Γ Ñú« ó ß«ßΓ«∩¡¿Ñ "ú«Γ«ó¡«ßΓ¿  ¬  ºá-
  477. »π߬π".
  478.     Ä»Ñαᵿ¿  P  ¿  V  »«  ßó«Ñ¼π ñÑ⌐ßΓó¿ε »«σ«ª¿ ¡á Σπ¡¬µ¿¿ sleep ¿ wakeup.
  479. â½áó¡«Ñ αẽ¿τ¿Ñ ¼Ñªñπ ¡¿¼¿ ß«ßΓ«¿Γ ó Γ«¼, τΓ« ßѼáΣ«α  ∩ó½∩ÑΓß∩  ßΓαπ¬Γπα«⌐
  480. ñá¡¡δσ,  Γ«úñá  ¬á¬ ¿ß»«½∞ºπѼδ⌐ Σπ¡¬µ¿∩¼¿ sleep ¿ wakeup áñαÑß »αÑñßΓáó½∩ÑΓ
  481. ß«í«⌐ óßÑú« ½¿Φ∞ τ¿ß½«. àß½¿ ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ ßѼáΣ«αá - ¡π½Ñó«Ñ, »α¿  óδ-
  482. »«½¡Ñ¡¿¿ «»Ñαᵿ¿ P ¡áñ ßѼáΣ«α«¼ »α«µÑßß óßÑúñá »α¿«ßΓá¡áó½¿óáÑΓß∩, »«φΓ«¼π
  483. «»Ñαᵿ∩  P  ¼«ªÑΓ ºá¼Ñ¡∩Γ∞ Σπ¡¬µ¿ε sleep. Ä»Ñαᵿ∩ V, ΓѼ ¡Ñ ¼Ñ¡ÑÑ, óδó«ñ¿Γ
  484. ¿º ß«ßΓ«∩¡¿∩ »α¿«ßΓá¡«óá Γ«½∞¬« «ñ¿¡  »α«µÑßß,  Γ«úñá  ¬á¬  «ñ¡«»α«µÑßß«α¡á∩
  485. Σπ¡¬µ¿∩  wakeup  ó«º«í¡«ó½∩ÑΓ óßÑ »α«µÑßßδ, »α¿«ßΓá¡«ó½Ñ¡¡δÑ »« áñαÑßπ, ßó∩-
  486. ºá¡¡«¼π ß ß«íδΓ¿Ñ¼.
  487.     æ Γ«τ¬¿ ºαÑ¡¿∩ ßѼá¡Γ¿¬¿ ¿ß»«½∞º«óá¡¿Ñ Σπ¡¬µ¿¿ wakeup  «º¡áτáÑΓ:  ñá¡¡«Ñ
  488. ß¿ßΓѼ¡«Ñ  πß½«ó¿Ñ  í«½ÑÑ ¡Ñ πñ«ó½ÑΓó«α∩ÑΓß∩, ß½Ññ«óáΓѽ∞¡«, óßÑ »α¿«ßΓá¡«ó-
  489. ½Ñ¡¡δÑ »« πß½«ó¿ε »α«µÑßßδ ñ«½ª¡δ óδ⌐Γ¿ ¿º ß«ßΓ«∩¡¿∩ »α¿«ßΓá¡«óá. Æá¬,  ¡á»-
  490. α¿¼Ñα,  »α«µÑßßδ,  »α¿«ßΓá¡«ó½Ñ¡¡δÑ  ó  ßó∩º¿ ß ºá¡∩Γ«ßΓ∞ε íπΣÑαá, ¡Ñ ñ«½ª¡δ
  491. ñá½∞ΦÑ »αÑíδóáΓ∞ ó φΓ«¼ ß«ßΓ«∩¡¿¿, Ñß½¿ íπΣÑα í«½∞ΦÑ ¡Ñ ¿ß»«½∞ºπÑΓß∩, »«φΓ«-
  492. ¼π «¡¿ ó«º«í-
  493. ¡«ó½∩εΓß∩ ∩ñα«¼. àΘÑ «ñ¿¡ »α¿¼Ñα: Ñß½¿ ¡Ñ߬«½∞¬« »α«µÑßß«ó óδó«ñ∩Γ ñá¡¡δÑ ¡á
  494. ΓÑନ¡á½ ß »«¼«Θ∞ε Σπ¡¬µ¿¿ write, ΓÑନ¡á½∞¡δ⌐ ñαá⌐óÑα ¼«ªÑΓ »ÑαÑóÑßΓ¿ ¿σ  ó
  495.  
  496.  
  497.                                     369
  498.  
  499.     ┌───────────────────────────────────────────────────────┐
  500.     │ struct semaphore {                                    │
  501.     │        int lock;                                      │
  502.     │ };                                                    │
  503.     │                                                       │
  504.     │ Init(semaphore)                                       │
  505.     │        struct semaphore semaphore;                    │
  506.     │ {                                                     │
  507.     │        semaphore.lock = 1;                            │
  508.     │ }                                                     │
  509.     │                                                       │
  510.     │ Pprim(semaphore)                                      │
  511.     │        struct semaphore semaphore;                    │
  512.     │ {                                                     │
  513.     │        while (read_and_clear(semaphore.lock))         │
  514.     │              ;                                        │
  515.     │ }                                                     │
  516.     │                                                       │
  517.     │ Vprim(semaphore)                                      │
  518.     │        struct semaphore semaphore;                    │
  519.     │ {                                                     │
  520.     │        semaphore.lock = 1;                            │
  521.     │ }                                                     │
  522.     └───────────────────────────────────────────────────────┘
  523.  
  524.     É¿ßπ¡«¬ 12.7. Ä»Ñαᵿ¿ ¡áñ ßѼáΣ«α«¼, ¿ß»«½∞ºπεΘ¿Ñ ¿¡ßΓαπ¬µ¿ε
  525.                   read and clear
  526.  
  527.  
  528. ß«ßΓ«∩¡¿Ñ »α¿«ßΓá¡«óá ó ßó∩º¿ ß ¡Ñ󫺼«ª¡«ßΓ∞ε «íαáí«Γ¬¿ í«½∞Φ¿σ «íΩѼ«ó ¿¡-
  529. Σ«α¼áµ¿¿. Å«ºªÑ, ¬«úñá ñαá⌐óÑα íπñÑΓ ú«Γ«ó ¬ »α¿Ñ¼π ß½ÑñπεΘÑ⌐ »«αµ¿¿ ñá¡¡δσ,
  530. «¡ ó«º«í¡«ó¿Γ óßÑ »α¿«ßΓá¡«ó½Ñ¡¡δÑ ¿¼ »α«µÑßßδ. êß»«½∞º«óá¡¿Ñ «»Ñαᵿ⌐ P ¿ V
  531. ó  ΓÑσ  ß½πτá∩σ, ¬«úñá πßΓá¡áó½¿óáεΘ¿Ñ í½«¬¿α«ó¬π »α«µÑßßδ »«½πτáεΓ ñ«ßΓπ» ¬
  532. αÑßπαßπ »««τÑαÑñ¡«, á óßÑ «ßΓá½∞¡δÑ »α«µÑßßδ - ó »«α∩ñ¬Ñ »«ßΓπ»½Ñ¡¿∩  ºá»α«-
  533. ß«ó,  ∩ó½∩ÑΓß∩ í«½ÑÑ »αÑñ»«τΓ¿Γѽ∞¡δ¼. é ßαáó¡Ñ¡¿¿ ß «ñ¡«»α«µÑßß«α¡«⌐ »α«µÑ-
  534. ñπα«⌐ í½«¬¿α«óá¡¿∩ (sleep-lock) ñá¡¡á∩ ßσѼᠫíδτ¡« óδ¿úαδóáÑΓ, Γᬠ¬á¬ Ñß½¿
  535. »α¿ ¡áßΓπ»½Ñ¡¿¿ ß«íδΓ¿∩ óßÑ »α«µÑßßδ ó«º«í¡«ó½∩εΓß∩, í«½∞Φ¿¡ßΓó« ¿º ¡¿σ  ¼«-
  536. ªÑΓ  ó¡«ó∞ ¡áΓ¬¡πΓ∞ß∩ ¡á í½«¬¿α«ó¬π ¿ ß¡«óá »ÑαÑ⌐Γ¿ ó ß«ßΓ«∩¡¿Ñ »α¿«ßΓá¡«óá.
  537. æ ñαπú«⌐ ßΓ«α«¡δ, ó ΓÑσ ß½πτá∩σ, ¬«úñá ΓαÑíπÑΓß∩ óδóÑßΓ¿ ¿º ß«ßΓ«∩¡¿∩ »α¿«ß-
  538. Γá¡«óá óßÑ »α«µÑßßδ «ñ¡«óαѼѡ¡«, ¿ß»«½∞º«óá¡¿Ñ «»Ñαᵿ⌐ P ¿ V  »αÑñßΓáó½∩ÑΓ
  539. ¿ºóÑßΓ¡πε ß½«ª¡«ßΓ∞.
  540.     àß½¿  «»Ñαᵿ∩ ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ ßѼáΣ«αá, ∩ó½∩ÑΓß∩ ½¿ «¡á φ¬ó¿óá½Ñ¡Γ-
  541. ¡«⌐ Σπ¡¬µ¿¿ wakeup ?
  542.  
  543.     while (value(semaphore) < 0)
  544.           V(semaphore);
  545.  
  546.     àß½¿ ó¼ÑΦáΓѽ∞ßΓóá ß« ßΓ«α«¡δ ñαπú¿σ »α«µÑßß«ó ¡ÑΓ, ∩ñα« »«óΓ«α∩ÑΓ  µ¿¬½
  547. ñ« ΓÑσ »«α, »«¬á º¡áτÑ¡¿Ñ ßѼáΣ«αá ¡Ñ ßΓá¡ÑΓ í«½∞ΦÑ ¿½¿ αáó¡« 0, ¿í« φΓ« «º-
  548. ¡áτáÑΓ, τΓ« ó ß«ßΓ«∩¡¿¿ »α¿«ßΓá¡«óá »« ßѼáΣ«απ ¡ÑΓ í«½∞ΦÑ ¡¿ «ñ¡«ú« »α«µÑß-
  549. ßá. ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ, ¡Ñ½∞º∩ ¿ß¬½ε-
  550. τ¿Γ∞ ¿ Γá¬πε ó«º¼«ª¡«ßΓ∞, τΓ« ßαáºπ »«ß½Ñ Γ«ú«, ¬á¬ »α«µÑßß A »α¿ ΓÑßΓ¿α«óá-
  551. ¡¿¿  ßѼáΣ«αá ¡á «ñ¡«¿¼Ñ¡¡«¼ »α«µÑßß«αÑ «í¡áαπª¿½ ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ ßѼáΣ«αá,
  552. »α«µÑßß B ¡á ßó«Ñ¼ »α«µÑßß«αÑ óδ»«½¡∩ÑΓ «»Ñαᵿε P, π¼Ñ¡∞Φá∩ º¡áτÑ¡¿Ñ  ßѼá-
  553. Σ«αá  ñ« -1 (É¿ßπ¡«¬ 12.10). Åα«µÑßß A »α«ñ«½ª¿Γ ßó«Ñ óδ»«½¡Ñ¡¿Ñ, ñπ¼á∩, τΓ«
  554. ¿¼ ó«º«í¡«ó½Ñ¡δ óßÑ »α¿«ßΓá¡«ó½Ñ¡¡δÑ »« ßѼáΣ«απ  »α«µÑßßδ.  Æá¬¿¼  «íαẫ¼,
  555. µ¿¬½  óδ»«½¡Ñ¡¿∩ «»Ñαᵿ¿ ¡Ñ ñáÑΓ úáαá¡Γ¿¿ ó«º«í¡«ó½Ñ¡¿∩ óßÑσ »α¿«ßΓá¡«ó½Ñ¡-
  556. ¡δσ »α«µÑßß«ó, »«ß¬«½∞¬π «¡ ¡Ñ ∩ó½∩ÑΓß∩ φ½Ñ¼Ñ¡Γáα¡δ¼.
  557.  
  558.  
  559.                                     370
  560.  
  561.     ┌────────────────────────────────────────────────────────────┐
  562.     │ á½ú«α¿Γ¼ P     /* «»Ñαᵿ∩ ¡áñ ßѼáΣ«α«¼ Γ¿»á P */         │
  563.     │ óσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩:  (1) ßѼáΣ«α                           │
  564.     │                      (2) »α¿«α¿ΓÑΓ                         │
  565.     │ óδσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: 0 - ó ß½πτáÑ ¡«α¼á½∞¡«ú« ºáóÑαΦÑ¡¿∩   │
  566.     │                      -1 - ó ß½πτáÑ áóáα¿⌐¡«ú« óδσ«ñá ¿º    │
  567.     │                      ß«ßΓ«∩¡¿∩ »α¿«ßΓá¡«óá »« ß¿ú¡á½π, »α¿-│
  568.     │                      ¡∩Γ«¼π ó αѪ¿¼Ñ ∩ñαá                  │
  569.     │ {                                                          │
  570.     │    Pprim(semaphore.lock);                                  │
  571.     │    π¼Ñ¡∞Φ¿Γ∞ (semaphore.value);                            │
  572.     │    Ñß½¿ (semaphore.value >= 0)                             │
  573.     │    {                                                       │
  574.     │        Vprim(semaphore.lock);                              │
  575.     │        óÑα¡πΓ∞ (0);                                        │
  576.     │    }                                                       │
  577.     │    /* ß½ÑñπÑΓ »ÑαÑ⌐Γ¿ ó ß«ßΓ«∩¡¿Ñ »α¿«ßΓá¡«óá */           │
  578.     │    Ñß½¿ (»α«óÑα∩εΓß∩ ß¿ú¡á½δ)                              │
  579.     │    {                                                       │
  580.     │        Ñß½¿ (¿¼ÑÑΓß∩ ß¿ú¡á½, »αÑαδóáεΘ¿⌐ ¡áσ«ªñÑ¡¿Ñ ó ß«ß- │
  581.     │         Γ«∩¡¿¿ »α¿«ßΓá¡«óá)                                │
  582.     │        {                                                   │
  583.     │            πóѽ¿τ¿Γ∞ (semaphore.value);                    │
  584.     │            Ñß½¿ (ß¿ú¡á½ »α¿¡∩Γ ó αѪ¿¼Ñ ∩ñαá)              │
  585.     │            {                                               │
  586.     │               Vprim(semaphore.lock);                       │
  587.     │               óÑα¡πΓ∞ (-1);                                │
  588.     │            }                                               │
  589.     │            ó »α«Γ¿ó¡«¼ ß½πτáÑ                              │
  590.     │            {                                               │
  591.     │               Vprim(semaphore.lock);                       │
  592.     │               longjmp;                                     │
  593.     │            }                                               │
  594.     │        }                                                   │
  595.     │    }                                                       │
  596.     │    »«ßΓáó¿Γ∞ »α«µÑßߠ󠬫¡Ñµ ß»¿ß¬á »α¿«ßΓá¡«ó½Ñ¡¡δσ »« ßÑ-│
  597.     │     ¼áΣ«απ;                                                │
  598.     │    Vprim(semaphore.lock);                                  │
  599.     │    óδ»«½¡¿Γ∞ »ÑαѬ½ετÑ¡¿Ñ ¬«¡ΓѬßΓá;                       │
  600.     │    »α«óÑα¿Γ∞ ß¿ú¡á½δ (ß¼. óδΦÑ);                           │
  601.     │    óÑα¡πΓ∞ (0);                                            │
  602.     │ }                                                          │
  603.     └────────────────────────────────────────────────────────────┘
  604.  
  605.             É¿ßπ¡«¬ 12.8. Ç½ú«α¿Γ¼ óδ»«½¡Ñ¡¿∩ «»Ñαᵿ¿ P
  606.  
  607.  
  608.     Éáßß¼«Γα¿¼ ÑΘÑ «ñ¿¡ ΣÑ¡«¼Ñ¡, ßó∩ºá¡¡δ⌐ ß ¿ß»«½∞º«ó᡿Ѽ ßѼáΣ«α«ó ó  «ñ-
  609. ¡«»α«µÑßß«α¡«⌐ ß¿ßΓѼÑ. ÅαÑñ»«½«ª¿¼, τΓ« ñóá »α«µÑßßá, A ¿ B, ¬«¡¬πα¿απεΓ ºá
  610. ßѼáΣ«α. Åα«µÑßß A «í¡áαπª¿óáÑΓ, τΓ« ßѼáΣ«α ßó«í«ñÑ¡ ¿ τΓ« »α«µÑßß B »α¿«ß-
  611. Γá¡«ó½Ñ¡;  º¡áτÑ¡¿Ñ  ßѼáΣ«αá αáó¡« -1. è«úñá ß »«¼«Θ∞ε «»Ñαᵿ¿ V »α«µÑßß A
  612. «ßó«í«ªñáÑΓ ßѼáΣ«α, «¡ óδó«ñ¿Γ ΓѼ ßá¼δ¼ »α«µÑßß B ¿º ß«ßΓ«∩¡¿∩ »α¿«ßΓá¡«óá
  613. ¿ ó¡«ó∞ ñѽáÑΓ º¡áτÑ¡¿Ñ ßѼáΣ«αá ¡π½Ñóδ¼. ÆÑ»Ñα∞ »αÑñ»«½«ª¿¼, τΓ« »α«µÑßß A,
  614. »«-»αѪ¡Ñ¼π óδ»«½¡∩∩ß∞ ó αѪ¿¼Ñ ∩ñαá, »δΓáÑΓß∩ ß¡«óá ºáí½«¬¿α«óáΓ∞  ßѼáΣ«α.
  615. Åα«¿ºó«ñ∩  «»Ñαᵿε P, »α«µÑßß »α¿«ßΓá¡«ó¿Γß∩, »«ß¬«½∞¬π ßѼáΣ«α ¿¼ÑÑΓ ¡π½Ñ-
  616. ó«Ñ º¡áτÑ¡¿Ñ, ¡Ñß¼«Γα∩ ¡á Γ«, τΓ« αÑßπαß  »«¬á  ßó«í«ñÑ¡.  æ¿ßΓѼѠ »α¿ñÑΓß∩
  617. "αá߬«Φѽ¿Γ∞ß∩"  ¡á ñ«»«½¡¿Γѽ∞¡«Ñ »ÑαѬ½ετÑ¡¿Ñ ¬«¡ΓѬßΓá. æ ñαπú«⌐ ßΓ«α«¡δ,
  618. Ñß½¿  íδ  í½«¬¿α«ó¬á  íδ½á  αÑ὿º«óá¡á  ¡á  «ß¡«óÑ  «ñ¡«»α«µÑßß«α¡«⌐  ßσѼδ
  619.  
  620.  
  621.                                     371
  622.  
  623.     ┌────────────────────────────────────────────────────────────┐
  624.     │ á½ú«α¿Γ¼ V     /* «»Ñαᵿ∩ ¡áñ ßѼáΣ«α«¼ Γ¿»á V */         │
  625.     │ óσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩:  áñαÑß ßѼáΣ«αá                        │
  626.     │ óδσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: «ΓßπΓßΓóπÑΓ                           │
  627.     │ {                                                          │
  628.     │    Pprim(semaphore.lock);                                  │
  629.     │    πóѽ¿τ¿Γ∞ (semaphore.value);                            │
  630.     │    Ñß½¿ (semaphore.value <= 0)                             │
  631.     │    {                                                       │
  632.     │        πñ὿Γ∞ ¿º ß»¿ß¬á »α«µÑßß«ó, »α¿«ßΓá¡«ó½Ñ¡¡δσ »« ßÑ-│
  633.     │         ¼áΣ«απ, »Ñαóδ⌐ »« ßτÑΓπ »α«µÑßß;                   │
  634.     │        »ÑαÑóÑßΓ¿ Ñú« ó ß«ßΓ«∩¡¿Ñ ú«Γ«ó¡«ßΓ¿ ¬ ºá»π߬π;     │
  635.     │    }                                                       │
  636.     │    Vprim(semaphore.lock);                                  │
  637.     │ }                                                          │
  638.     └────────────────────────────────────────────────────────────┘
  639.  
  640.             É¿ßπ¡«¬ 12.9. Ç½ú«α¿Γ¼ óδ»«½¡Ñ¡¿∩ «»Ñαᵿ¿ V
  641.  
  642.  
  643. (sleep-lock), »α«µÑßß A »«½πτ¿½ íδ »αáó« ¡á »«óΓ«α¡«Ñ ¿ß»«½∞º«óá¡¿Ñ αÑßπαßá,
  644. »«ß¬«½∞¬π  ºá  φΓ«  óαѼ∩ ¡¿ «ñ¿¡ ¿º »α«µÑßß«ó ¡Ñ ß¼«ú íδ ºáí½«¬¿α«óáΓ∞ Ñú«.
  645. ä½∩ φΓ«ú« ß½πτá∩ ßσѼá sleep-lock í«½ÑÑ »«ñσ«ñ¿Γ, τѼ ßσѼá ß ¿ß»«½∞º«ó᡿Ѽ
  646. ßѼáΣ«α«ó.
  647.     è«úñá í½«¬¿απεΓß∩ ßαáºπ ¡Ñ߬«½∞¬«  ßѼáΣ«α«ó,  «τÑαÑñ¡«ßΓ∞  í½«¬¿α«óá¡¿∩
  648. ñ«½ª¡á  ¿ß¬½ετáΓ∞ ó«º¡¿¬¡«óÑ¡¿Ñ Γπ»¿¬«óδσ ß¿Γπᵿ⌐. é ¬áτÑßΓóÑ »α¿¼Ñαá αáßß-
  649. ¼«Γα¿¼ ñóá ßѼáΣ«αá, A ¿ B, ¿ ñóá á½ú«α¿Γ¼á, ΓαÑíπεΘ¿σ «ñ¡«óαѼѡ¡«⌐  í½«¬¿-
  650. α«ó¬¿  ßѼáΣ«α«ó.  àß½¿  íδ á½ú«α¿Γ¼δ πßΓá¡áó½¿ó὿ í½«¬¿α«ó¬π ¡á ßѼáΣ«αδ ó
  651. «íαáΓ¡«¼ »«α∩ñ¬Ñ, ¬á¬ ß½ÑñπÑΓ ¿º É¿ßπ¡¬á 12.11, »«ß½Ññ«óὫ íδ ó«º¡¿¬¡«óÑ¡¿Ñ
  652. Γπ»¿¬«ó«⌐ ß¿Γπᵿ¿; »α«µÑßß A ¡á «ñ¡«¿¼Ñ¡¡«¼ »α«µÑßß«αÑ ºáσóáΓδóáÑΓ  ßѼáΣ«α
  653. SA,  ó  Γ«  óαѼ∩  ¬á¬ »α«µÑßß B ¡á ßó«Ñ¼ »α«µÑßß«αÑ ºáσóáΓδóáÑΓ ßѼáΣ«α SB.
  654. Åα«µÑßß A »δΓáÑΓß∩ ºáσóáΓ¿Γ∞ ¿ ßѼáΣ«α SB, ¡« ó αѺπ½∞ΓáΓÑ «»Ñαᵿ¿ P  »ÑαÑ-
  655. σ«ñ¿Γ  ó  ß«ßΓ«∩¡¿Ñ »α¿«ßΓá¡«óá, »«ß¬«½∞¬π º¡áτÑ¡¿Ñ ßѼáΣ«αá SB ¡Ñ »αÑóδΦáÑΓ
  656. 0. Æ« ªÑ ßἫѠ»α«¿ßσ«ñ¿Γ ß »α«µÑßß«¼ B, ¬«úñá »«ß½Ññ¡¿⌐ »δΓáÑΓß∩  ºáσóáΓ¿Γ∞
  657. ßѼáΣ«α SA. ì¿ Γ«Γ, ¡¿ ñαπú«⌐ »α«µÑßßδ »α«ñ«½ªáΓ∞ß∩ πªÑ ¡Ñ ¼«úπΓ.
  658.     ä½∩ »αÑñ«ΓóαáΘÑ¡¿∩ ó«º¡¿¬¡«óÑ¡¿∩ »«ñ«í¡δσ ß¿Γπᵿ⌐ ¿ß»«½∞ºπεΓß∩ ß««ΓóÑΓ-
  659. ßΓóπεΘ¿Ñ  á½ú«α¿Γ¼δ «í¡áαπªÑ¡¿∩ «»áß¡«ßΓ¿ óºá¿¼¡«⌐ í½«¬¿α«ó¬¿, πßΓá¡áó½¿óáε-
  660. Θ¿Ñ ¡á½¿τ¿Ñ «»áß¡«⌐ ß¿Γπᵿ¿ ¿ ½¿¬ó¿ñ¿απεΘ¿Ñ ÑÑ. ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ, ¿ß»«½∞º«óá¡¿Ñ
  661. Γᬿσ á½ú«α¿Γ¼«ó "πΓ∩ªÑ½∩ÑΓ" ∩ñα«. Å«ß¬«½∞¬π τ¿ß½« ß¿Γπᵿ⌐, ó ¬«Γ«αδσ  »α«-
  662. µÑßß ñ«½ªÑ¡ «ñ¡«óαѼѡ¡« ºáσóáΓδóáΓ∞ ¡Ñ߬«½∞¬« ßѼáΣ«α«ó, ñ«ó«½∞¡« «úαá¡¿τÑ-
  663. ¡«, ½ÑúτÑ í佫 íδ αÑ὿º«óáΓ∞ á½ú«α¿Γ¼δ, »αÑñπ»αѪñáεΘ¿Ñ ó«º¡¿¬¡«óÑ¡¿Ñ Γπ»¿-
  664. ¬«óδσ  ß¿Γπᵿ⌐ ÑΘÑ ñ« Γ«ú«, ¬á¬ «¡¿ íπñπΓ ¿¼ÑΓ∞ ¼ÑßΓ«. àß½¿, ¬ »α¿¼Ñαπ, ¬á-
  665. ¬«⌐-Γ« ¡áí«α ßѼáΣ«α«ó óßÑúñá í½«¬¿απÑΓß∩ ó «ñ¡«¼ ¿ Γ«¼ ªÑ »«α∩ñ¬Ñ,  Γπ»¿¬«-
  666. óá∩  ß¿Γπᵿ∩ ¡¿¬«úñᠡѠ󫺡¿¬¡ÑΓ. ì« ó Γ«¼ ß½πτáÑ, ¬«úñá ºáσóáΓá ßѼáΣ«α«ó
  667. ó «íαáΓ¡«¼ »«α∩ñ¬Ñ ¿ºíѪáΓ∞ ¡Ñ
  668. πñáÑΓß∩, «»Ñαᵿ∩ CP »αÑñ«ΓóαáΓ¿Γ ó«º¡¿¬¡«óÑ¡¿Ñ Γπ»¿¬«ó«⌐ ß¿Γπᵿ¿ (ß¼.  É¿-
  669. ßπ¡«¬  12.12):  Ñß½¿  «»Ñαᵿ∩ ºáóÑαΦ¿Γß∩ ¡Ñπñáτ¡«, »α«µÑßß B «ßó«í«ñ¿Γ ßó«¿
  670. αÑßπαßδ, ñáíδ ¿ºíѪáΓ∞ óºá¿¼¡«⌐ í½«¬¿α«ó¬¿, ¿ »«ºªÑ ºá»πßΓ¿Γ á½ú«α¿Γ¼ ¡á óδ-
  671. »«½¡Ñ¡¿Ñ »«óΓ«α¡«, ß¬«αÑÑ óßÑú« Γ«úñá, ¬«úñá »α«µÑßß A ºáóÑαΦ¿Γ αáí«Γπ ß αÑ-
  672. ßπαß«¼.
  673.     ùΓ«íδ »αÑñπ»αÑñ¿Γ∞ «ñ¡«óαѼѡ¡«Ñ «íαáΘÑ¡¿Ñ »α«µÑß߫󠬠αÑßπαßπ, »α«úαá¼-
  674. ¼á «íαáí«Γ¬¿ »αÑαδóá¡¿⌐, ¬áºá½«ß∞ íδ, ¼«ú½á  ó«ß»«½∞º«óáΓ∞ß∩  ßѼáΣ«α«¼,  ¡«
  675. ¿º-ºá Γ«ú«, τΓ« «¡á ¡Ñ ¼«ªÑΓ »α¿«ßΓá¡áó½¿óáΓ∞ ßó«ε αáí«Γπ (ß¼. ú½áóπ 6), ¿ß-
  676. »«½∞º«óáΓ∞  «»Ñαᵿε P ó φΓ«⌐ »α«úαἼѠ¡Ñ½∞º∩. é¼ÑßΓ« φΓ«ú« ¼«ª¡« ¿ß»«½∞º«-
  677. óáΓ∞ "µ¿¬½¿τÑ߬πε í½«¬¿α«ó¬π" (spin lock) ¿ ¡Ñ »ÑαÑσ«ñ¿Γ∞ ó ß«ßΓ«∩¡¿Ñ »α¿«ß-
  678. Γá¡«óá, ¬á¬ ó ß½ÑñπεΘѼ »α¿¼ÑαÑ:
  679.  
  680.     while (! CP(semaphore));
  681.  
  682.  
  683.                                     372
  684.  
  685.      Åα«µÑßß A/Åα«µÑßß«α A              Åα«µÑßß B/Åα«µÑßß«α B
  686.     ┌───────────────────────────────────────────────────────────
  687.     │          ∙    ┌────────────────────────┐    ∙
  688.     │          ∙    │ ç¡áτÑ¡¿Ñ ßѼáΣ«αá = -1 │    ∙
  689.     │          ∙    └────────────────────────┘    ∙
  690.     │ »α«óÑα∩ÑΓ(º¡áτÑ¡¿Ñ ßѼá-                    ∙
  691.     │      Σ«αá < 0) ?                            ∙
  692.     │         (ñá)                                ∙
  693.     │       V(ßѼáΣ«α)                            ∙
  694.     │          ∙                                  ∙
  695.     │          ∙    ┌────────────────────────┐    ∙
  696.     │          ∙    │ ç¡áτÑ¡¿Ñ ßѼáΣ«αá =  0 │    ∙
  697.     │          ∙    └────────────────────────┘    ∙
  698.     │ »α«óÑα∩ÑΓ(º¡áτÑ¡¿Ñ ßѼá-                    ∙
  699.     │      Σ«αá < 0) ?                            ∙
  700.     │          ∙                                  ∙
  701.     │          ∙                              P(ßѼáΣ«α)
  702.     │          ∙                         ç¡áτÑ¡¿Ñ ßѼáΣ«αá = -1
  703.     │          ∙
  704.     │         (¡ÑΓ)
  705.     │       ìàéàÉìÄ !!
  706.     v
  707.   éαѼ∩
  708.  
  709.     É¿ßπ¡«¬ 12.10.  ìÑπñáτ¡«Ñ ¿¼¿Γᵿ∩ Σπ¡¬µ¿¿ wakeup »α¿ ¿ß»«½∞-
  710.                     º«óá¡¿¿ «»Ñαᵿ¿ V
  711.  
  712.  
  713. Ä»Ñαᵿ∩ »«óΓ«α∩ÑΓß∩ ó µ¿¬½Ñ ñ« ΓÑσ »«α, »«¬á º¡áτÑ¡¿Ñ ßѼáΣ«αá ¡Ñ  »αÑóδß¿Γ
  714. 0;  »α«úαἼᠠ«íαáí«Γ¬¿ »αÑαδóá¡¿⌐ ¡Ñ »α¿«ßΓá¡áó½¿óáÑΓß∩ ¿ µ¿¬½ ºáóÑαΦáÑΓß∩
  715. Γ«½∞¬« Γ«úñá, ¬«úñá º¡áτÑ¡¿Ñ ßѼáΣ«αá ßΓá¡ÑΓ »«½«ª¿Γѽ∞¡δ¼, »«ß½Ñ  τÑú«  φΓ«
  716. º¡áτÑ¡¿Ñ íπñÑΓ π¼Ñ¡∞ΦÑ¡« «»ÑαᵿÑ⌐ CP.
  717.     ùΓ«íδ  »αÑñ«ΓóαáΓ¿Γ∞  ß¿Γπᵿε óºá¿¼¡«⌐ í½«¬¿α«ó¬¿, ∩ñαπ ¡πª¡« ºá»αÑΓ¿Γ∞
  718. óßÑ »αÑαδóá¡¿∩, óδ»«½¡∩εΘ¿Ñ "µ¿¬½¿τÑ߬πε í½«¬¿α«ó¬π". ê¡áτÑ óδ»«½¡Ñ¡¿Ñ  »α«-
  719. µÑßßá, ºáσóáΓ¿óΦÑú« ßѼáΣ«α, íπñÑΓ »αÑαóá¡« ÑΘÑ ñ« Γ«ú«, ¬á¬ «¡ ß¼«ªÑΓ «ßó«-
  720. í«ñ¿Γ∞  ßѼáΣ«α;  Ñß½¿  »α«úαἼᠠ«íαáí«Γ¬¿ »αÑαδóá¡¿⌐ »«»δΓáÑΓß∩ ºáσóáΓ¿Γ∞
  721. φëàßѼáΣ«α, ¿ß»«½∞ºπ∩ "µ¿¬½¿τÑ߬πε í½«¬¿α«ó¬π", ∩ñα« ºáí½«¬¿απÑΓ ßἫ  ßÑ-
  722. í∩.  é  ¬áτÑßΓóÑ  »α¿¼Ñαá  «íαáΓ¿¼ß∩ ¬ É¿ßπ¡¬π 12.13. é ¼«¼Ñ¡Γ ó«º¡¿¬¡«óÑ¡¿∩
  723.  
  724.      Åα«µÑßß A/Åα«µÑßß«α A              Åα«µÑßß B/Åα«µÑßß«α B
  725.     ┌───────────────────────────────────────────────────────────
  726.     │    P(ßѼáΣ«α SA);                           ∙
  727.     │          ∙                                  ∙
  728.     │          ∙                                  ∙
  729.     │          ∙                                  ∙
  730.     │          ∙                            P(ßѼáΣ«α SB);
  731.     │          ∙                                  ∙
  732.     │          ∙                                  ∙
  733.     │          ∙                                  ∙
  734.     │          ∙                            P(ßѼáΣ«α SA);
  735.     │          ∙                          »α¿«ßΓá¡áó½¿óáÑΓß∩
  736.     │          ∙
  737.     │    P(ßѼáΣ«α SB);
  738.     │  »α¿«ßΓá¡áó½¿óáÑΓß∩
  739.     │
  740.     v                  éºá¿¼¡á∩ í½«¬¿α«ó¬á !!
  741.   éαѼ∩
  742.                       É¿ßπ¡«¬ 12.11.   é«º¡¿¬¡«óÑ¡¿Ñ Γπ»¿¬«ó«⌐ ß¿Γπᵿ¿ 
  743.                                    ¿º-ºá ß¼Ñ¡δ «τÑαÑñ¡«ßΓ¿ í½«¬¿α«óá¡¿∩
  744.  
  745.                                     373
  746.  
  747.  
  748. »αÑαδóá¡¿∩ º¡áτÑ¡¿Ñ ßѼáΣ«αá ¡Ñ »αÑóδΦáÑΓ 0, »«φΓ«¼π αѺπ½∞ΓáΓ«¼ óδ»«½¡Ñ¡¿∩  
  749. «»Ñαᵿ¿ CP óßÑúñá íπñÑΓ "½«ª∞". Åα«í½Ñ¼á αÑΦáÑΓß∩ »πΓѼ ºá»αÑΘÑ¡¿∩ óßÑσ 
  750. »αÑαδóá¡¿⌐ ¡á Γ« óαѼ∩, »«¬á ßѼáΣ«α ºáσóáτÑ¡ »α«µÑßß«¼.
  751.  
  752.  
  753.     E12.3.3 Åα¿¼Ñαδ á½ú«α¿Γ¼«óF
  754.  
  755.     é  ñá¡¡«¼  αáºñѽѠ ¼δ αáßß¼«Γα¿¼ τÑΓδαÑ á½ú«α¿Γ¼á ∩ñαá, αÑ὿º«óá¡¡δσ ß
  756. ¿ß»«½∞º«ó᡿Ѽ ßѼáΣ«α«ó. Ç½ú«α¿Γ¼  óδñѽѡ¿∩  íπΣÑαá  ¿½½εßΓα¿απÑΓ  ß½«ª¡πε
  757. ßσѼπ  í½«¬¿α«óá¡¿∩, ¡á »α¿¼ÑαÑ á½ú«α¿Γ¼á wait »«¬áºá¡á ß¿¡σα«¡¿ºáµ¿∩ óδ»«½-
  758. ¡Ñ¡¿∩ »α«µÑßß«ó, ßσѼá í½«¬¿α«óá¡¿∩ ñαá⌐óÑα«ó αÑ὿ºπÑΓ ¿º∩Θ¡δ⌐ »«ñσ«ñ ¬ αÑ-
  759. ΦÑ¡¿ε ñá¡¡«⌐ »α«í½Ñ¼δ, ¿ ¡á¬«¡Ñµ, ¼ÑΓ«ñ  αÑΦÑ¡¿∩  »α«í½Ñ¼δ  σ«½«ßΓ«⌐  αáí«Γδ
  760. »α«µÑßß«αá  »«¬áºδóáÑΓ,  τΓ« ¡πª¡« ßñѽáΓ∞, τΓ«íδ ¿ºíѪáΓ∞ ¬«¡¬παÑ¡µ¿¿ ¼Ñªñπ
  761. »α«µÑßßἿ.
  762.  
  763.  
  764.     E12.3.3.1 éδñѽѡ¿Ñ íπΣÑαáF
  765.  
  766.     ÄíαáΓ¿¼ß∩ ÑΘÑ αẠ¬ á½ú«α¿Γ¼π getblk, αáßß¼«ΓαÑ¡¡«¼π ¡á¼¿ ó ú½áóÑ 3. Ç½-
  767. ú«α¿Γ¼ αáí«ΓáÑΓ ß ΓαѼ∩ ßΓαπ¬ΓπαἿ ñá¡¡δσ: ºáú«½«ó¬«¼ íπΣÑαá,  σÑΦ-«τÑαÑñ∞ε
  768. íπΣÑα«ó ¿ ß»¿ß¬«¼ ßó«í«ñ¡δσ íπΣÑα«ó. ƒñα« ßó∩ºδóáÑΓ ßѼáΣ«α ß« óßѼ¿ φ¬ºÑ¼»-
  769. ½∩αἿ ¬áªñ«⌐ ßΓαπ¬Γπαδ. äαπú¿¼¿ ß½«óἿ, Ñß½¿ π ∩ñαá ¿¼ÑεΓß∩ ó αáß»«α∩ªÑ¡¿¿
  770. 200  íπΣÑα«ó, ºáú«½«ó«¬ ¬áªñ«ú« ¿º ¡¿σ ó¬½ετáÑΓ ó ßÑí∩ ßѼáΣ«α, ¿ß»«½∞ºπѼδ⌐
  771. ñ½∩ ºáσóáΓá íπΣÑαá; ¬«úñá »α«µÑßß óδ»«½¡∩ÑΓ ¡áñ ßѼáΣ«α«¼ «»Ñαᵿε P, ñαπú¿Ñ
  772. »α«µÑßßδ, Γ«ªÑ »«ªÑ½áóΦ¿Ñ ºáσóáΓ¿Γ∞ íπΣÑα, »α¿«ßΓá¡áó½¿óáεΓß∩  ñ«  ΓÑσ  »«α,
  773. »«¬á  »Ñαóδ⌐  »α«µÑßß  ¡Ñ  ¿ß»«½¡¿Γ «»Ñαᵿε V. ô ¬áªñ«⌐ σÑΦ-«τÑαÑñ¿ íπΣÑα«ó
  774. ΓᬪѠ¿¼ÑÑΓß∩ ßѼáΣ«α, í½«¬¿απεΘ¿⌐ ñ«ßΓπ» ¬ «τÑαÑñ¿. é «ñ¡«»α«µÑßß«α¡«⌐ ß¿ß-
  775. ΓÑ¼Ñ í½«¬¿α«ó¬á σÑΦ-«τÑ-
  776.  
  777.      Åα«µÑßß A/Åα«µÑßß«α A              Åα«µÑßß B/Åα«µÑßß«α B
  778.     ┌───────────────────────────────────────────────────────────
  779.     │    P(ßѼáΣ«α SA);                           ∙
  780.     │          ∙                                  ∙
  781.     │          ∙                            P(ßѼáΣ«α SB);
  782.     │          ∙                                  ∙
  783.     │          ∙                                  ∙
  784.     │          ∙                        Ñß½¿ (! CP(ßѼáΣ«α SA))
  785.     │          ∙                        {
  786.     │          ∙                            V(ßѼáΣ«α SB);
  787.     │          ∙                            »ÑαѺá»πßΓ¿Γ∞ á½ú«-
  788.     │          ∙                             α¿Γ¼
  789.     │          ∙                        }
  790.     │    P(ßѼáΣ«α SB);
  791.     │  »α¿«ßΓá¡áó½¿óáÑΓß∩
  792.     v
  793.   éαѼ∩
  794.  
  795.     É¿ßπ¡«¬ 12.12.   êß»«½∞º«óá¡¿Ñ  «»Ñαᵿ¿ P πß½«ó¡«ú« Γ¿»á ñ½∩
  796.                      »αÑñ«ΓóαáΘÑ¡¿∩ óºá¿¼¡«⌐ í½«¬¿α«ó¬¿
  797.  
  798.  
  799. αÑñ¿ ¡Ñ ¡πª¡á, ¿í« »α«µÑßß ¡¿¬«úñá ¡Ñ »ÑαÑσ«ñ¿Γ ó ß«ßΓ«∩¡¿Ñ »α¿«ßΓá¡«óá, «ß-
  800. Γáó½∩∩ «τÑαÑñ∞ ó ¡Ñß«ú½áß«óá¡¡«¼ (¡Ñπ»«α∩ñ«τÑ¡¡«¼) ó¿ñÑ. é ¼¡«ú«»α«µÑßß«α¡«⌐
  801. ß¿ßΓѼÑ, ΓѼ ¡Ñ ¼Ñ¡ÑÑ, ó«º¼«ª¡δ ß¿Γπᵿ¿, ¬«úñá ß «ñ¡«⌐ ¿  Γ«⌐  ªÑ  σÑΦ-«τÑ-
  802. αÑñ∞ε  αáí«ΓáεΓ ñóá »α«µÑßßá; ó ¬áªñδ⌐ ¼«¼Ñ¡Γ óαѼѡ¿ ßѼáΣ«α «Γ¬αδóáÑΓ ñ«ß-
  803.  
  804.  
  805.  
  806.  
  807.                                     374
  808.  
  809. Γπ» ¬ «τÑαÑñ¿ Γ«½∞¬« ñ½∩ «ñ¡«ú« »α«µÑßßá. Å« ΓѼ ªÑ »α¿τ¿¡á¼ ¿  ß»¿ß«¬  ßó«-
  810. í«ñ¡δσ íπΣÑα«ó ¡πªñáÑΓß∩ ó ßѼáΣ«αÑ ñ½∩ ºáΘ¿Γδ ß«ñÑαªáΘÑ⌐ß∩ ó ¡Ñ¼ ¿¡Σ«α¼áµ¿¿
  811. «Γ ¿ß¬áªÑ¡¿∩.
  812.     ìá É¿ßπ¡¬Ñ 12.14 »«¬áºá¡á »Ñαóá∩ τáßΓ∞ á½ú«α¿Γ¼á getblk, αÑ὿º«óá¡¡á∩ ó
  813. ¼¡«ú«»α«µÑßß«α¡«⌐  ß¿ßΓѼѠߠ¿ß»«½∞º«ó᡿Ѽ ßѼáΣ«α«ó. Åα«ß¼áΓα¿óá∩ íπΣÑα¡δ⌐
  814. ¬ÑΦ ó »«¿ß¬áσ π¬áºá¡¡«ú« í½«¬á, ∩ñα« ß »«¼«Θ∞ε «»Ñαᵿ¿ P ºáσóáΓδóáÑΓ  ßѼá-
  815. Σ«α,  »α¿¡áñ½ÑªáΘ¿⌐  σÑΦ-«τÑαÑñ¿.  àß½¿ ¡áñ ßѼáΣ«α«¼ πªÑ ¬Ñ¼-Γ« »α«¿ºóÑñÑ¡á
  816. «»Ñαᵿ∩ ñá¡¡«ú« Γ¿»á, ΓѬπΘ¿⌐ »α«µÑßß »α¿«ßΓá¡áó½¿óáÑΓß∩ ñ« ΓÑσ  »«α,  »«¬á
  817. »α«µÑßß,  ºáσóáΓ¿óΦ¿⌐  ßѼáΣ«α, ¡Ñ «ßó«í«ñ¿Γ Ñú«, óδ»«½¡¿ó «»Ñαᵿε V. è«úñá
  818. ΓѬπΘ¿⌐ »α«µÑßß »«½πτáÑΓ »αá󫠿߬½ετ¿Γѽ∞¡«ú« ¬«¡Γα«½∩ ¡áñ σÑΦ-«τÑαÑñ∞ε, «¡
  819. »α¿ßΓπ»áÑΓ ¬ »«¿ß¬π »«ñσ«ñ∩ΘÑú« íπΣÑαá. ÅαÑñ»«½«ª¿¼, τΓ« íπΣÑα  ¡áσ«ñ¿Γß∩  ó
  820. σÑΦ-«τÑαÑñ¿.  ƒñα« (»α«µÑßß A) »δΓáÑΓß∩ ºáσóáΓ¿Γ∞ íπΣÑα, ¡« Ñß½¿ «¡« ¿ß»«½∞-
  821. ºπÑΓ «»Ñαᵿε P ¿ Ñß½¿ íπΣÑα πªÑ ºáσóáτÑ¡, ∩ñαπ »α¿ñÑΓß∩ »α¿«ßΓá¡«ó¿Γ∞  ßó«ε
  822. αáí«Γπ,  «ßΓáó¿ó σÑΦ-«τÑαÑñ∞ ºáí½«¬¿α«óá¡¡«⌐ ¿ ¡Ñ ñ«»π߬á∩ Γᬿ¼ «íαẫ¼ «í-
  823. αáΘÑ¡¿⌐ ¬ ¡Ñ⌐ ß« ßΓ«α«¡δ ñαπú¿σ »α«µÑßß«ó, ñáªÑ Ñß½¿ »«ß½Ññ¡¿Ñ  óÑñπΓ  »«¿ß¬
  824. ¡ÑºáσóáτÑ¡¡δσ  íπΣÑα«ó.  ÅπßΓ∞ ó¼ÑßΓ« φΓ«ú« »α«µÑßß A ºáσóáΓδóáÑΓ íπΣÑα, ¿ß-
  825. »«½∞ºπ∩ «»Ñαᵿε CP; Ñß½¿ «»Ñαᵿ∩ ºáóÑαΦáÑΓß∩ πß»ÑΦ¡«, íπΣÑα ßΓá¡«ó¿Γß∩ «Γ-
  826. ¬αδΓδ¼ ñ½∩ »α«µÑßßá. Åα«µÑßß A  ºáσóáΓδóáÑΓ  ßѼáΣ«α,  »α¿¡áñ½ÑªáΘ¿⌐  ß»¿ß¬π
  827. ßó«í«ñ¡δσ  íπΣÑα«ó, óδ»«½¡∩∩ «»Ñαᵿε CP, »«ß¬«½∞¬π ßѼáΣ«α ºáσóáΓδóáÑΓß∩ ¡á
  828. ¡Ñ»α«ñ«½ª¿Γѽ∞¡«Ñ óαѼ∩ ¿, ß½Ññ«óáΓѽ∞¡«, »α¿«ßΓá¡áó½¿óáΓ∞ ßó«ε αáí«Γπ,  óδ-
  829. »«½¡∩∩  «»Ñαáµ¿ε  P, »α«µÑßß »α«ßΓ« ¡Ñ ¿¼ÑÑΓ ó«º¼«ª¡«ßΓ¿. ƒñα« πí¿αáÑΓ íπΣÑα
  830. ¿º ß»¿ß¬á ßó«í«ñ¡δσ íπΣÑα«ó, ß¡¿¼áÑΓ í½«¬¿α«ó¬π ß« ß»¿ß¬á ¿ ß σÑΦ-«τÑαÑñ¿  ¿
  831. ó«ºóαáΘáÑΓ ºáσóáτÑ¡¡δ⌐ íπΣÑα.
  832.  
  833.     │
  834.     │                      P(ßѼáΣ«α);
  835.     │            (ç¡áτÑ¡¿Ñ ßѼáΣ«αá ΓÑ»Ñα∞ αáó¡« 0)
  836.     │
  837.     │                       ÅαÑαδóá¡¿Ñ
  838.     │
  839.     │           CP(ßѼáΣ«α) ºáóÑαΦáÑΓß∩ ¡Ñπñáτ¡« ---
  840.     │                    ßѼáΣ«α ºáσóáτÑ¡
  841.     │
  842.     │     æÑ¼áΣ«α ¡Ñ «ßó«í«ªñáÑΓß∩ ñ« óδσ«ñá ¿º »αÑαδóá¡¿∩.
  843.     │
  844.     │     éδσ«ñ ¿º »αÑαδóá¡¿∩ íѺ Ñú« «íαáí«Γ¬¿ ¡Ñ󫺼«ªÑ¡.
  845.     │
  846.     │          Æπ»¿¬«óá∩ ß¿Γπᵿ∩ (óºá¿¼¡á∩ í½«¬¿α«ó¬á)
  847.     v
  848.   éαѼ∩
  849.  
  850.     É¿ßπ¡«¬ 12.13.   éºá¿¼¡á∩ í½«¬¿α«ó¬á »α¿ óδ»«½¡Ñ¡¿¿ »α«úαá¼¼δ
  851.                      «íαáí«Γ¬¿ »αÑαδóá¡¿∩
  852.  
  853.  
  854.     ÅαÑñ»«½«ª¿¼,  τΓ« «»Ñαᵿ∩ CP ¡áñ íπΣÑα«¼ ºáóÑαΦ¿½áß∞ ¡Ñπñáτ¡« ¿º-ºá Γ«-
  855. ú«, τΓ« ßѼáΣ«α, »α¿¡áñ½ÑªáΘ¿⌐ íπΣÑαπ, «¬áºá½ß∩ ºáσóáτÑ¡¡δ¼. Åα«µÑßß A «ßó«-
  856. í«ªñáÑΓ ßѼáΣ«α, ßó∩ºá¡¡δ⌐ ß σÑΦ-«τÑαÑñ∞ε, ¿ »α¿«ßΓá¡áó½¿óáÑΓß∩, »δΓá∩ß∞ óδ-
  857. »«½¡¿Γ∞ «»Ñαᵿε P ¡áñ ßѼáΣ«α«¼ íπΣÑαá. Ä»Ñαᵿ∩ P ¡áñ ßѼáΣ«α«¼ íπñÑΓ  óδ-
  858. »«½¡∩Γ∞ß∩,  ¡Ñß¼«Γα∩ ¡á Γ«, τΓ« «»Ñαᵿ∩ CP πªÑ »«ΓÑα»Ñ½á ¡Ñπñáτπ. Å« ºáóÑα-
  859. ΦÑ¡¿¿ óδ»«½¡Ñ¡¿∩ «»Ñαᵿ¿ »α«µÑßß A »«½πτáÑΓ ó½áßΓ∞ ¡áñ íπΣÑα«¼. Æá¬  ¬á¬  ó
  860. «ßΓáóΦÑ⌐ß∩  τáßΓ¿ á½ú«α¿Γ¼á »αÑñ»«½áúáÑΓß∩, τΓ« íπΣÑα ¿ σÑΦ-«τÑαÑñ∞ ºáσóáτÑ-
  861. ¡δ, »α«µÑßß A ΓÑ»Ñα∞ »δΓáÑΓß∩ ºáσóáΓ¿Γ∞ σÑΦ-«τÑαÑñ∞ (*).  Å«ß¬«½∞¬π  «τÑαÑñ-
  862.  
  863. ───────────────────────────────────────
  864. (*) é¼ÑßΓ« ºáσóáΓá σÑΦ-«τÑαÑñ¿ ó φΓ«¼ ¼ÑßΓÑ ¼«ª¡« í佫 íδ  πßΓá¡«ó¿Γ∞  ß««Γ-
  865.     óÑΓßΓóπεΘ¿⌐  Σ½áú,  »α«óÑα∩Ѽδ⌐  ñá½ÑÑ  »ÑαÑñ óδ»«½¡Ñ¡¿Ñ¼ «»Ñαᵿ¿ V, ¡«
  866.     τΓ«íδ »α«¿½½εßΓα¿α«óáΓ∞ ßσѼπ ºáσóáΓá ßѼáΣ«α«ó  ó  «íαáΓ¡«⌐  »«ß½Ññ«óá-
  867.     Γѽ∞¡«ßΓ¿,  ó ¿º½«ªÑ¡¿¿ ¼δ íπñѼ »α¿ñÑনóáΓ∞ß∩ αá¡ÑÑ «»¿ßá¡¡«ú« óáα¿á¡-
  868.     Γá.
  869.                                     375
  870.  
  871. ¡«ßΓ∞  ºáσóáΓá ºñÑß∞ (ß¡áτá½á ßѼáΣ«α íπΣÑαá, »«Γ«¼ ßѼáΣ«α «τÑαÑñ¿) «íαáΓ¡á
  872. óδΦÑπ¬áºá¡¡«⌐ «τÑαÑñ¡«ßΓ¿, ¡áñ ßѼáΣ«α«¼ óδ»«½¡∩ÑΓß∩ «»Ñαᵿ∩ CP.  àß½¿  »«-
  873. »δΓ¬á ºáσóáΓá ºá¬á¡τ¿óáÑΓß∩ ¡ÑπñáτÑ⌐, ¿¼ÑÑΓ ¼ÑßΓ« «íδτ¡á∩ «íαáí«Γ¬á, ΓαÑíπε-
  874. Θá∩ß∩  »«  σ«ñπ ºáñáτ¿. ì« Ñß½¿ ºáσóáΓ πñáÑΓß∩, ∩ñα« ¡Ñ ¼«ªÑΓ íδΓ∞ πóÑαÑ¡« ó
  875.  
  876.     ┌────────────────────────────────────────────────────────────┐
  877.     │ á½ú«α¿Γ¼ getblk           /* ¼¡«ú«»α«µÑßß«α¡á∩ óÑαß¿∩ */   │
  878.     │ óσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩:  ¡«¼Ñα Σá⌐½«ó«⌐ ß¿ßΓÑ¼δ                │
  879.     │                      ¡«¼Ñα í½«¬á                           │
  880.     │ óδσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: ºáσóáτÑ¡¡δ⌐ íπΣÑα, »αÑñ¡áº¡áτÑ¡¡δ⌐ ñ½∩│
  881.     │                      «íαáí«Γ¬¿ ß«ñÑন¼«ú« í½«¬á           │
  882.     │ {                                                          │
  883.     │    óδ»«½¡∩Γ∞ (»«¬á íπΣÑα ¡Ñ íπñÑΓ «í¡áαπªÑ¡)               │
  884.     │    {                                                       │
  885.     │       P(ßѼáΣ«α σÑΦ-«τÑαÑñ¿);                              │
  886.     │       Ñß½¿ (í½«¬ ¡áσ«ñ¿Γß∩ ó σÑΦ-«τÑαÑñ¿)                  │
  887.     │       {                                                    │
  888.     │          Ñß½¿ («»Ñαᵿ∩ CP(ßѼáΣ«α íπΣÑαá) ºáóÑαΦáÑΓß∩ ¡Ñ- │
  889.     │           πñáτ¡«)       /* íπΣÑα ºá¡∩Γ */                  │
  890.     │          {                                                 │
  891.     │             V(ßѼáΣ«α σÑΦ-«τÑαÑñ¿);                        │
  892.     │             P(ßѼáΣ«α íπΣÑαá);      /* »α¿«ßΓá¡«ó ñ« ¼«¼Ñ¡-│
  893.     │                                      * Γá «ßó«í«ªñÑ¡¿∩     │
  894.     │                                      */                    │
  895.     │             Ñß½¿ («»Ñαᵿ∩ CP(ßѼáΣ«α σÑΦ-«τÑαÑñ¿) ºáóÑαΦá-│
  896.     │              ÑΓß∩ ¡Ñπñáτ¡«)                                │
  897.     │             {                                              │
  898.     │                V(ßѼáΣ«α íπΣÑαá);                          │
  899.     │                »α«ñ«½ª¿Γ∞;     /* óδσ«ñ ó µ¿¬½ "óδ»«½¡∩Γ∞" │
  900.     │                                 */                         │
  901.     │             }                                              │
  902.     │             ó »α«Γ¿ó¡«¼ ß½πτáÑ Ñß½¿ (¡«¼Ñα πßΓα«⌐ßΓóá ¿½¿  │
  903.     │              ¡«¼Ñα í½«¬á ¿º¼Ñ¡¿½¿ß∞)                       │
  904.     │             {                                              │
  905.     │                V(ßѼáΣ«α íπΣÑαá);                          │
  906.     │                V(ßѼáΣ«α σÑΦ-«τÑαÑñ¿);                     │
  907.     │             }                                              │
  908.     │          }                                                 │
  909.     │          óδ»«½¡∩Γ∞ (»«¬á «»Ñαᵿ∩ CP(ßѼáΣ«α ß»¿ß¬á ßó«í«ñ-│
  910.     │           ¡δσ íπΣÑα«ó) ¡Ñ ºáóÑαΦ¿Γß∩ πß»ÑΦ¡«)              │
  911.     │             ;    /* "¬«½∞µÑó«⌐ µ¿¬½" */                    │
  912.     │          »«¼ÑΓ¿Γ∞ íπΣÑα ºá¡∩Γδ¼;                           │
  913.     │          πíαáΓ∞ íπΣÑα ¿º ß»¿ß¬á ßó«í«ñ¡δσ íπΣÑα«ó;         │
  914.     │          V(ßѼáΣ«α ß»¿ß¬á ßó«í«ñ¡δσ íπΣÑα«ó);              │
  915.     │          V(ßѼáΣ«α σÑΦ-«τÑαÑñ¿);                           │
  916.     │          óÑα¡πΓ∞ íπΣÑα;                                    │
  917.     │       }                                                    │
  918.     │       ó »α«Γ¿ó¡«¼ ß½πτáÑ   /* íπΣÑα «ΓßπΓßΓóπÑΓ ó σÑΦ-     │
  919.     │                             * «τÑαÑñ¿                      │
  920.     │                             */                             │
  921.     │       /* ºñÑß∞ ¡áτ¿¡áÑΓß∩ óδ»«½¡Ñ¡¿Ñ «ßΓáóΦÑ⌐ß∩ τáßΓ¿ á½ú«-│
  922.     │        * α¿Γ¼á                                             │
  923.     │        */                                                  │
  924.     │    }                                                       │
  925.     │ }                                                          │
  926.     └────────────────────────────────────────────────────────────┘
  927.  
  928.       É¿ßπ¡«¬ 12.14. éδñѽѡ¿Ñ íπΣÑαá ß ¿ß»«½∞º«ó᡿Ѽ ßѼáΣ«α«ó
  929.  
  930.  
  931.                                     376
  932.  
  933. Γ«¼, τΓ« ºáσóáτÑ¡ ¬«ααÑ¬Γ¡δ⌐ íπΣÑα, »«ß¬«½∞¬π ß«ñÑন¼«Ñ íπΣÑαá  ¼«ú½«  íδΓ∞
  934. αá¡ÑÑ ¿º¼Ñ¡Ñ¡« ñαπú¿¼ »α«µÑßß«¼, «í¡áαπª¿óΦ¿¼ íπΣÑα ó ß»¿ß¬Ñ ßó«í«ñ¡δσ íπΣÑ-
  935. α«ó ¿ ºáσóáΓ¿óΦ¿¼ ¡á óαѼ∩ Ñú« ßѼáΣ«α. Åα«µÑßß A, «ª¿ñá∩ «ßó«í«ªñÑ¡¿∩ ßѼá-
  936. Σ«αá,  ¡Ñ  ¿¼ÑÑΓ  ¡¿ ¼á½Ñ⌐ΦÑú« »αÑñßΓáó½Ñ¡¿∩ « Γ«¼, ∩ó½∩ÑΓß∩ ½¿ ¿¡ΓÑαÑßπεΘ¿⌐
  937. Ñú« íπΣÑα ΓѼ íπΣÑα«¼, ¬«Γ«αδ⌐ Ñ¼π ¡πªÑ¡, ¿ »«φΓ«¼π »αѪñÑ óßÑú«  «¡  ñ«½ªÑ¡
  938. πíÑñ¿Γ∞ß∩  ó »αáó¿½∞¡«ßΓ¿ ß«ñÑন¼«ú« íπΣÑαá; Ñß½¿ »α«óÑα¬á ñáÑΓ «Γα¿µáΓѽ∞-
  939. ¡δ⌐ αѺπ½∞ΓáΓ, á½ú«α¿Γ¼ ºá»π߬áÑΓß∩ ß¡áτá½á. àß½¿ ß«ñÑন¼«Ñ íπΣÑαá ¬«ααѬΓ-
  940. ¡«, »α«µÑßß A ºáóÑαΦáÑΓ óδ»«½¡Ñ¡¿Ñ á½ú«α¿Γ¼á.
  941.  
  942.     ┌────────────────────────────────────────────────────────────┐
  943.     │ ¼¡«ú«»α«µÑßß«α¡á∩ óÑαß¿∩ á½ú«α¿Γ¼á wait                    │
  944.     │ {                                                          │
  945.     │     ñ½∩ (;;)       /* µ¿¬½ */                              │
  946.     │     {                                                      │
  947.     │         »ÑαÑí«α óßÑσ »α«µÑßß«ó-»«Γ«¼¬«ó:                   │
  948.     │         Ñß½¿ (»«Γ«¼«¬ ¡áσ«ñ¿Γß∩ ó ß«ßΓ«∩¡¿¿ "»αѬαáΘÑ¡¿∩   │
  949.     │          ßπΘÑßΓó«óá¡¿∩")                                   │
  950.     │              óÑα¡πΓ∞ π»αáó½Ñ¡¿Ñ;                           │
  951.     │         P(zombie_semaphore);   /* ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ - 0 */│
  952.     │     }                                                      │
  953.     │ }                                                          │
  954.     └────────────────────────────────────────────────────────────┘
  955.  
  956.        É¿ßπ¡«¬ 12.15. î¡«ú«»α«µÑßß«α¡á∩ óÑαß¿∩ á½ú«α¿Γ¼á wait
  957.  
  958.  
  959.     ÄßΓáóΦπεß∩ τáßΓ∞ á½ú«α¿Γ¼á ¼«ª¡« αáßß¼«ΓαÑΓ∞ ó ¬áτÑßΓóÑ π»α᪡ѡ¿∩.
  960.  
  961.  
  962.     E12.3.3.2 WaitF
  963.  
  964.     êº ú½áóδ 7 ¼δ πªÑ º¡áѼ « Γ«¼, τΓ« ó« óαѼ∩ óδ»«½¡Ñ¡¿∩ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿
  965. wait »α«µÑßß »α¿«ßΓá¡áó½¿óáÑΓ ßó«ε αáí«Γπ ñ« ¼«¼Ñ¡Γá  ºáóÑαΦÑ¡¿∩  óδ»«½¡Ñ¡¿∩
  966. ßó«Ñú« »«Γ«¼¬á. é ¼¡«ú«»α«µÑßß«α¡«⌐ ß¿ßΓѼѠ»ÑαÑñ »α«µÑßß«¼ óßΓáÑΓ ºáñáτá ¡Ñ
  967. π»πßΓ¿Γ∞  »α¿ óδ»«½¡Ñ¡¿¿ á½ú«α¿Γ¼á wait »«Γ«¼¬á, »αѬαáΓ¿óΦÑú« ßπΘÑßΓó«óá¡¿Ñ
  968. ß »«¼«Θ∞ε Σπ¡¬µ¿¿ exit; Ñß½¿, ¡á»α¿¼Ñα, ó Γ« óαѼ∩, »«¬á ¡á «ñ¡«¼ »α«µÑßß«αÑ
  969. »α«µÑßß-α«ñ¿Γѽ∞ ºá»π߬áÑΓ Σπ¡¬µ¿ε wait, ¡á ñαπú«¼  »α«µÑßß«αÑ  Ñú«  »«Γ«¼«¬
  970. ºáóÑαΦ¿½  ßó«ε  αáí«Γπ, α«ñ¿ΓÑ½ε ¡ÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ¿ »α¿«ßΓá¡áó½¿óáΓ∞ ßó«Ñ óδ-
  971. »«½¡Ñ¡¿Ñ ó «ª¿ñá¡¿¿ ºáóÑαΦÑ¡¿∩ óΓ«α«ú« »«Γ«¼¬á. é ¬áªñ«⌐ ºá»¿ß¿ Γáí½¿µδ »α«-
  972. µÑß߫󠿼ÑÑΓß∩ ßѼáΣ«α, ¿¼Ñ¡πѼδ⌐ zombie_semaphore ¿ ¿¼ÑεΘ¿⌐ ó ¡áτá½Ñ  ¡π½Ñ-
  973. ó«Ñ  º¡áτÑ¡¿Ñ.  ¥Γ«Γ  ßѼáΣ«α  ¿ß»«½∞ºπÑΓß∩  »α¿  «αúá¡¿ºáµ¿¿ óºá¿¼«ñÑ⌐ßΓó¿∩
  974. wait/exit (É¿ßπ¡«¬ 12.15). è«úñá »«Γ«¼«¬ ºáóÑαΦáÑΓ αáí«Γπ, «¡ óδ»«½¡∩ÑΓ  ¡áñ
  975. ßѼáΣ«α«¼  ßó«Ñú« α«ñ¿Γѽ∩ «»Ñαᵿε V, óδó«ñ∩ α«ñ¿Γѽ∩ ¿º ß«ßΓ«∩¡¿∩ »α¿«ßΓá-
  976. ¡«óá, Ñß½¿ Γ«Γ »ÑαÑΦѽ ó ¡Ñú« ó« óαѼ∩ ¿ß»«½¡Ñ¡¿∩ Σπ¡¬µ¿¿ wait. àß½¿ »«Γ«¼«¬
  977. ºáóÑαΦ¿½ß∩ αá¡∞ΦÑ, τѼ α«ñ¿Γѽ∞ ºá»πßΓ¿½ Σπ¡¬µ¿ε wait, φëàΣá¬Γ íπñÑΓ «í¡á-
  978. απªÑ¡ α«ñ¿ΓѽѼ, ¬«Γ«αδ⌐ ΓπΓ ªÑ óδ⌐ñÑΓ ¿º ß«ßΓ«∩¡¿∩ «ª¿ñá¡¿∩. àß½¿ «íá  »α«-
  979. µÑßßá  ¿ß»«½¡∩εΓ Σπ¡¬µ¿¿ exit ¿ wait »áαώѽ∞¡«, ¡« »«Γ«¼«¬ ¿ß»«½¡∩ÑΓ Σπ¡¬-
  980. µ¿ε exit πªÑ »«ß½Ñ Γ«ú«, ¬á¬ α«ñ¿Γѽ∞ »α«óÑα¿½ Ñú« ßΓáΓπß, «»Ñαᵿ∩  V,  óδ-
  981. »«½¡Ñ¡¡á∩ »«Γ«¼¬«¼, ó«ß»αÑ»∩ΓßΓóπÑΓ »ÑαÑσ«ñπ α«ñ¿Γѽ∩ ó ß«ßΓ«∩¡¿Ñ »α¿«ßΓá¡«-
  982. óá. é σπñΦѼ ß½πτáÑ »α«µÑßß-α«ñ¿Γѽ∞ »α«ßΓ« »«óΓ«α∩ÑΓ µ¿¬½ ½¿Φ¡¿⌐ αáº.
  983.  
  984.  
  985.     E12.3.3.3 äαá⌐óÑαδF
  986.  
  987.     é  ¼¡«ú«»α«µÑßß«α¡«⌐ αÑ὿ºáµ¿¿ óδτ¿ß½¿Γѽ∞¡«⌐ ß¿ßΓÑ¼δ ¡á íáºÑ ¬«¼»∞εΓÑ-
  988. α«ó AT&T 3B20 ßѼáΣ«αδ ó ßΓαπ¬Γπαπ ºáúαπº«τ¡«ú« ¬«ñá ñαá⌐óÑα«ó ¡Ñ  ó¬½ετáεΓ-
  989. ß∩,  á  «»Ñαᵿ¿ Γ¿»á P ¿ V óδ»«½¡∩εΓß∩ ó Γ«τ¬áσ óσ«ñá ó ¬áªñδ⌐ ñαá⌐óÑα (ß¼.
  990. [Bach 84]). é ú½áóÑ 10 ¼δ ú«ó«α¿½¿ « Γ«¼, τΓ« ¿¡ΓÑαΣÑ⌐ß, αÑ὿ºπѼδ⌐ ñαá⌐óÑ-
  991. αἿ πßΓα«⌐ßΓó, σáαá¬ΓÑਧπÑΓß∩ «τÑ¡∞ ¡Ñí«½∞Φ¿¼ τ¿ß½«¼ Γ«τѬ óσ«ñá (¡á »αá¬-
  992.  
  993.                                     377
  994.  
  995. Γ¿¬Ñ ¿σ «¬«½« 20). çáΘ¿Γá ñαá⌐óÑα«ó «ßπΘÑßΓó½∩ÑΓß∩ ¡á πα«ó¡Ñ Γ«τѬ  óσ«ñá  ó
  996. ¡¿σ:
  997.  
  998.     P(ßѼáΣ«α ñαá⌐óÑαá);
  999.     «Γ¬αδΓ∞ (ñαá⌐óÑα);
  1000.     V(ßѼáΣ«α ñαá⌐óÑαá);
  1001.  
  1002.     àß½¿  ñ½∩ óßÑσ Γ«τѬ óσ«ñá ó ñαá⌐óÑα ¿ß»«½∞º«óáΓ∞ «ñ¿¡ ¿ Γ«Γ ªÑ ßѼáΣ«α,
  1003. ¡« »α¿ φΓ«¼ ñ½∩ αạδσ ñαá⌐óÑα«ó  -  αạδÑ  ßѼáΣ«αδ,  ¬α¿Γ¿τÑ߬¿⌐  πτáßΓ«¬
  1004. »α«úαá¼¼δ  ñαá⌐óÑαá  íπñÑΓ  ¿ß»«½¡∩Γ∞ß∩ »α«µÑßß«¼ ¼«¡«»«½∞¡«. æÑ¼áΣ«αδ ¼«úπΓ
  1005. ¡áº¡áτáΓ∞ß∩ ¬á¬ «Γñѽ∞¡«¼π πßΓα«⌐ßΓóπ, Γᬠ¿ ¬½áßßá¼ πßΓα«⌐ßΓó. Æá¬,  ¡á»α¿-
  1006. ¼Ñα, «Γñѽ∞¡δ⌐ ßѼáΣ«α ¼«ªÑΓ íδΓ∞ ßó∩ºá¡ ¿ ß «Γñѽ∞¡δ¼ Σ¿º¿τÑ߬¿¼ ΓÑନ¡á½«¼
  1007. ¿  ß«  óßѼ¿ ΓÑନ¡á½á¼¿ ßαáºπ. é »Ñαó«¼ ß½πτáÑ íδßΓα«ñÑ⌐ßΓó¿Ñ ß¿ßΓѼδ óδΦÑ,
  1008. ¿í« »α«µÑßßδ, «íαáΘáεΘ¿Ñß∩ ¬ ΓÑନ¡á½π, ¡Ñ ºáσóáΓδóáεΓ ßѼáΣ«α, ¿¼ÑεΘ¿⌐  «Γ-
  1009. ¡«ΦÑ¡¿Ñ  ¬  ñαπú¿¼ ΓÑନ¡á½á¼, ¬á¬ ó« óΓ«α«¼ ß½πτáÑ. äαá⌐óÑαδ ¡Ñ¬«Γ«αδσ πßΓ-
  1010. α«⌐ßΓó, «ñ¡á¬«, »«ññÑনóáεΓ ó¡πΓαÑ¡¡εε ßó∩º∞ ß ñαπú¿¼¿ ñαá⌐óÑαἿ; ó  Γᬿσ
  1011. ß½πτá∩σ ¿ß»«½∞º«óá¡¿Ñ «ñ¡«ú« ßѼáΣ«αá ñ½∩ ¬½áßßá πßΓα«⌐ßΓó «í½ÑúτáÑΓ »«¡¿¼á-
  1012. ¡¿Ñ  ºáñáτ¿.  é ¬áτÑßΓóÑ á½∞ΓÑα¡áΓ¿óδ ó óδτ¿ß½¿Γѽ∞¡«⌐ ß¿ßΓѼѠ3B20A »αÑñ«ß-
  1013. Γáó½Ñ¡á ó«º¼«ª¡«ßΓ∞ Γᬫú« ¬«¡Σ¿úπα¿α«óá¡¿∩ «Γñѽ∞¡δσ πßΓα«⌐ßΓó, »α¿ ¬«Γ«α«¼
  1014. »α«úαá¼¼δ ñαá⌐óÑαá ºá»π߬áεΓß∩ ¡á Γ«τ¡« π¬áºá¡¡δσ »α«µÑßß«αáσ.
  1015.     Åα«í½Ñ¼δ ó«º¡¿¬áεΓ Γ«úñá, ¬«úñá ñαá⌐óÑα »αÑαδóáÑΓ αáí«Γπ ß¿ßΓÑ¼δ  ¿  Ñú«
  1016. ßѼáΣ«α  ºáσóáτÑ¡: »α«úαἼᠫíαáí«Γ¬¿ »αÑαδóá¡¿⌐ ¡Ñ ¼«ªÑΓ íδΓ∞ óδºóá¡á, Γá¬
  1017. ¬á¬ ¿¡áτѠ󫺡¿¬½á íδ πú஧á αáºαπΦÑ¡¿∩ ñá¡¡δσ. æ ñαπú«⌐  ßΓ«α«¡δ,  ∩ñα«  ¡Ñ
  1018. ¼«ªÑΓ «ßΓáó¿Γ∞ »αÑαδóá¡¿Ñ ¡Ñ«íαáí«Γá¡¡δ¼. æ¿ßΓѼá 3B20A óδßΓαá¿óáÑΓ »αÑαδóá-
  1019. ¡¿∩  ó  «τÑαÑñ∞  ¿ ªñÑΓ ¼«¼Ñ¡Γá «ßó«í«ªñÑ¡¿∩ ßѼáΣ«αá, ¬«úñá ó맮ó »α«úαá¼¼δ
  1020. «íαáí«Γ¬¿ »αÑαδóá¡¿⌐ ¡Ñ íπñÑΓ ¿¼ÑΓ∞ «»áß¡δÑ »«ß½ÑñßΓó¿∩.
  1021.  
  1022.  
  1023.     E12.3.3.4 ö¿¬Γ¿ó¡δÑ »α«µÑßßδF
  1024.  
  1025.     è«úñá ∩ñα« óδ»«½¡∩ÑΓ »ÑαѬ½ετÑ¡¿Ñ ¬«¡ΓѬßΓá ó «ñ¡«»α«µÑßß«α¡«⌐  ß¿ßΓѼÑ,
  1026. «¡«  Σπ¡¬µ¿«¡¿απÑΓ  ó  ¬«¡ΓѬßΓÑ »α«µÑßßá, πßΓπ»áεΘÑú« π»αáó½Ñ¡¿Ñ (ß¼. ú½áóπ
  1027. 6). àß½¿ ó ß¿ßΓѼѠ¡ÑΓ »α«µÑßß«ó, ú«Γ«óδσ ¬ ºá»π߬π, ∩ñα« »ÑαÑσ«ñ¿Γ ó ß«ßΓ«-
  1028. ∩¡¿Ñ »α«ßΓ«∩ ó ¬«¡ΓѬßΓÑ »α«µÑßßá, óδ»«½¡∩óΦÑú«ß∩ »«ß½Ññ¡¿¼. Å«½πτ¿ó  »αÑαδ-
  1029. óá¡¿Ñ  «Γ  Γá⌐¼Ñαá ¿½¿ ñαπú¿σ »Ñα¿ΣÑα¿⌐¡δσ πßΓα«⌐ßΓó, «¡« «íαáíáΓδóáÑΓ Ñú« ó
  1030. ¬«¡ΓѬßΓÑ Γ«ú« ªÑ »α«µÑßßá.
  1031.     é ¼¡«ú«»α«µÑßß«α¡«⌐ ß¿ßΓѼѠ∩ñα« ¡Ñ ¼«ªÑΓ »α«ßΓá¿óáΓ∞ ó  ¬«¡ΓѬßΓÑ  »α«-
  1032. µÑßßá,  óδ»«½¡∩óΦÑú«ß∩  »«ß½Ññ¡¿¼. Å«ß¼«Γα¿¼, τΓ« »α«¿º«⌐ñÑΓ »«ß½Ñ Γ«ú«, ¬á¬
  1033. »α«µÑßß, »α¿«ßΓá¡«ó¿óΦ¿⌐ ßó«ε αáí«Γπ ¡á »α«µÑßß«αÑ A,  óδ⌐ñÑΓ  ¿º  ß«ßΓ«∩¡¿∩
  1034. »α¿«ßΓá¡«óá.  Åα«µÑßß ó µÑ½«¼ ú«Γ«ó ¬ ºá»π߬π, ¡« «¡ ºá»π߬áÑΓß∩ ¡Ñ ßαáºπ ªÑ
  1035. »« óδσ«ñÑ ¿º ß«ßΓ«∩¡¿∩ »α¿«ßΓá¡«óá, ñáªÑ ¡Ñß¼«Γα∩ ¡á Γ«,  τΓ«  Ñú«  ¬«¡ΓѬßΓ
  1036. πªÑ  ¡áσ«ñ¿Γß∩ ó αáß»«α∩ªÑ¡¿¿ »α«µÑßß«αá A. àß½¿ φëà»α«µÑßß óδí¿αáÑΓß∩ ñ½∩
  1037. ºá»πß¬á »α«µÑßß«α«¼ B, »«ß½Ññ¡¿⌐ »ÑαѬ½ετáÑΓß∩ ¡á Ñú« ¬«¡ΓѬßΓ ¿ ó«º«í¡«ó½∩-
  1038. ÑΓ Ñú« óδ»«½¡Ñ¡¿Ñ. è«úñá ó αѺπ½∞ΓáΓÑ »αÑαδóá¡¿∩ »α«µÑßß«α A óδ⌐ñÑΓ ¿º »α«ß-
  1039. Γ«∩, «¡ íπñÑΓ »α«ñ«½ªáΓ∞ ßó«ε αáí«Γπ ó ¬«¡ΓѬßΓÑ »α«µÑßßá A ñ« ΓÑσ »«α, »«¬á
  1040. ¡Ñ »α«¿ºóÑñÑΓ »ÑαѬ½ετÑ¡¿Ñ ¬«¡ΓѬßΓá. Æá¬¿¼  «íαẫ¼,  ó  ΓÑτÑ¡¿Ñ  ¬«α«Γ¬«ú«
  1041. »α«¼ÑªπΓ¬á  óαѼѡ¿ ß «ñ¡¿¼ ¿ ΓѼ ªÑ áñαÑß¡δ¼ »α«ßΓαá¡ßΓó«¼ (ó τáßΓ¡«ßΓ¿, ß«
  1042. ßΓѬ«¼ ∩ñαá) íπñπΓ óÑßΓ¿ αáí«Γπ (¿, τΓ« óÑß∞¼á óÑα«∩Γ¡«, »α«¿ºó«ñ¿Γ∞ ºá»¿ß∞)
  1043. ßαáºπ ñóá »α«µÑßß«αá.
  1044.     ÉÑΦÑ¡¿Ñ φΓ«⌐ »α«í½Ñ¼δ ß«ßΓ«¿Γ ó ß«ºñá¡¿¿ ¡Ñ¬«Γ«α«ú« Σ¿¬Γ¿ó¡«ú« »α«µÑßßá;
  1045. ¬«úñá »α«µÑßß«α ¡áσ«ñ¿Γß∩ ó ß«ßΓ«∩¡¿¿ »α«ßΓ«∩, ∩ñα«  »ÑαѬ½ετáÑΓß∩  ¡á  ¬«¡-
  1046. ΓѬßΓ  Σ¿¬Γ¿ó¡«ú«  »α«µÑßßá, ñѽá∩ φëଫ¡ΓѬßΓ ΓѬπΘ¿¼ ñ½∩ íѺñÑ⌐ßΓóπεΘÑú«
  1047. »α«µÑßß«αá. è«¡ΓѬßΓ Σ¿¬Γ¿ó¡«ú« »α«µÑßßá ß«ßΓ«¿Γ Γ«½∞¬« ¿º ßΓѬá ∩ñαá;  φΓ«Γ
  1048. »α«µÑßß ¡Ñ ∩ó½∩ÑΓß∩ óδ»«½¡¿¼δ¼ ¿ ¡Ñ óδí¿αáÑΓß∩ ñ½∩ ºá»π߬á. Å«ß¬«½∞¬π ¬áªñδ⌐
  1049. »α«µÑßß«α  »α«ßΓá¿óáÑΓ  ó ¬«¡ΓѬßΓÑ ßó«Ñú« ß«íßΓóÑ¡¡«ú« Σ¿¬Γ¿ó¡«ú« »α«µÑßßá,
  1050. ¡áóαÑñ¿Γ∞ ñαπú ñαπúπ »α«µÑßß«αδ πªÑ ¡Ñ ¼«úπΓ.
  1051.  
  1052.  
  1053.  
  1054.  
  1055.                                     378
  1056.  
  1057.     E12.4 æêæÆàîÇ TUNISF
  1058.  
  1059.     Å«½∞º«óáΓѽ∞߬¿⌐ ¿¡ΓÑαΣÑ⌐ß ß¿ßΓѼδ Tunis ß«ó¼ÑßΓ¿¼ ß á¡á½«ú¿τ¡δ¼  ¿¡ΓÑα-
  1060. ΣÑ⌐ß«¼ ß¿ßΓѼδ UNIX, ¡« ∩ñα« φΓ«⌐ ß¿ßΓѼδ, αáºαáí«Γá¡¡«Ñ ¡á ∩ºδ¬Ñ Concurrent
  1061. Euclid,  ß«ßΓ«¿Γ  ¿º  »α«µÑßß«ó, π»αáó½∩εΘ¿σ ¬áªñ«⌐ τáßΓ∞ε ß¿ßΓѼδ. Åα«í½Ñ¼á
  1062. óºá¿¼¡«ú« ¿ß¬½ετÑ¡¿∩ αÑΦáÑΓß∩ ó ß¿ßΓѼѠTunis ñ«ó«½∞¡«  »α«ßΓ«,  Γᬠ ¬á¬  ó
  1063. ¬áªñδ⌐  ¼«¼Ñ¡Γ  óαѼѡ¿  ¿ß»«½¡∩ÑΓß∩ ¡Ñ í«½ÑÑ «ñ¡«⌐ ¬«»¿¿ π»αáó½∩Ѽ«ú« ∩ñα«¼
  1064. »α«µÑßßá, ¬α«¼Ñ Γ«ú«, »α«µÑßßδ αáí«ΓáεΓ Γ«½∞¬« ß  ΓѼ¿  ßΓαπ¬ΓπαἿ  ñá¡¡δσ,
  1065. ¬«Γ«αδÑ ¿¼ »α¿¡áñ½ÑªáΓ. æ¿ßΓѼ¡δÑ »α«µÑßßδ á¬Γ¿ó¿º¿απεΓß∩ ºá»α«ßἿ ¡á óó«ñ,
  1066. ºáΘ¿Γπ  «τÑαÑñ¿  ºá»α«ß«ó  «ßπΘÑßΓó½∩ÑΓ »α«µÑñπαá »α«úαá¼¼¡«ú« ¼«¡¿Γ«αá. ¥Γá
  1067. »α«µÑñπαá πß¿½¿óáÑΓ óºá¿¼¡«Ñ ¿ß¬½ετÑ¡¿Ñ, αáºαÑΦá∩ ñ«ßΓπ» ¬ ßó«Ñ⌐ ¿ß»«½¡∩Ѽ«⌐
  1068. τáßΓ¿ ó ¬áªñδ⌐ ¼«¼Ñ¡Γ óαѼѡ¿ ¡Ñ í«½ÑÑ, τѼ «ñ¡«¼π »α«µÑßßπ. îÑσá¡¿º¼  ¼«¡¿-
  1069. Γ«αá  «Γ½¿τáÑΓß∩  «Γ ¼Ñσá¡¿º¼á ßѼáΣ«α«ó ΓѼ, τΓ«, ó«-»Ñαóδσ, í½áú«ñáα∩ »«ß-
  1070. ½Ññ¡¿¼ πß¿½¿óáÑΓß∩ ¼«ñπ½∞¡«ßΓ∞ »α«úαá¼¼ («»Ñαᵿ¿ P ¿ V »α¿ßπΓßΓóπεΓ ¡á óσ«-
  1071. ñÑ ó »α«µÑñπαπ ¼«¡¿Γ«αá ¿ ¡á óδσ«ñÑ ¿º ¡ÑÑ),  á  ó«-óΓ«αδσ,  ßúÑ¡Ñα¿α«óá¡¡δ⌐
  1072. ¬«¼»¿½∩Γ«α«¼  ¬«ñ  πªÑ  ß«ñÑαª¿Γ  φ½Ñ¼Ñ¡Γδ ß¿¡σα«¡¿ºáµ¿¿. ò«½Γ «Γ¼ÑτáÑΓ, τΓ«
  1073. αáºαáí«Γ¬á Γᬿσ ß¿ßΓѼ «í½ÑúτáÑΓß∩, Ñß½¿ ¿ß»«½∞ºπÑΓß∩ ∩ºδ¬,  »«ññÑনóáεΘ¿⌐
  1074. ¼«¡¿Γ«αδ  ¿  ó¬½ετáεΘ¿⌐  »«¡∩Γ¿Ñ  »áαώѽ¿º¼á (ß¼. [Holt 83], ßΓα.190). Åα¿
  1075. óßѼ »α¿ φΓ«¼ ó¡πΓαÑ¡¡∩∩ ßΓαπ¬Γπαá ß¿ßΓѼδ Tunis «Γ½¿τáÑΓß∩ «Γ  Γαáñ¿µ¿«¡¡«⌐
  1076. αÑ὿ºáµ¿¿ ß¿ßΓѼδ UNIX αáñ¿¬á½∞¡δ¼ «íαẫ¼.
  1077.  
  1078.  
  1079.     E12.5 ôçèêà îàæÆÇ é öôìèûêÄìêÉÄéÇìêê îìÄâÄÅÉÄûàææÄÉì¢ò æêæÆàîF
  1080.  
  1081.     é  ñá¡¡«⌐ ú½áóÑ ¡á¼¿ í뫨 αáßß¼«ΓαÑ¡δ ñóá ¼ÑΓ«ñá αÑ὿ºáµ¿¿ ¼¡«ú«»α«µÑß-
  1082. ß«α¡δσ óÑαß¿⌐ ß¿ßΓѼδ UNIX: ¬«¡Σ¿úπαᵿ∩, ß«ßΓ«∩Θá∩ ¿º ú½áó¡«ú« ¿  »«ñτ¿¡Ñ¡-
  1083. ¡«ú«  »α«µÑßß«α«ó, ó ¬«Γ«α«⌐ Γ«½∞¬« «ñ¿¡ »α«µÑßß«α (ú½áó¡δ⌐) Σπ¡¬µ¿«¡¿απÑΓ ó
  1084. αѪ¿¼Ñ ∩ñαá, ¿ ¼ÑΓ«ñ, «ß¡«óá¡¡δ⌐ ¡á ¿ß»«½∞º«óá¡¿¿  ßѼáΣ«α«ó  ¿  ñ«»π߬áεΘ¿⌐
  1085. «ñ¡«óαѼѡ¡«Ñ  ¿ß»«½¡Ñ¡¿Ñ  ó αѪ¿¼Ñ ∩ñαá óßÑσ ¿¼ÑεΘ¿σß∩ ó ß¿ßΓѼѠ»α«µÑßß«ó.
  1086. Äíá ¼ÑΓ«ñá ¿¡óáα¿á¡Γ¡δ ¬ ¬«½¿τÑßΓóπ »α«µÑßß«α«ó, «ñ¡á¬« ú«ó«α¿Γ∞ « Γ«¼,  τΓ«
  1087. ß  α«ßΓ«¼ τ¿ß½á »α«µÑßß«α«ó «íΘá∩ »α«¿ºó«ñ¿Γѽ∞¡«ßΓ∞ ß¿ßΓѼδ πóѽ¿τ¿óáÑΓß∩ ß
  1088. ½¿¡Ñ⌐¡«⌐ ß¬«α«ßΓ∞ε, ¡Ñ½∞º∩. Å«ΓÑα¿ »α«¿ºó«ñ¿Γѽ∞¡«ßΓ¿ ó«º¡¿¬áεΓ,  ó«-»Ñαóδσ,
  1089. ¬á¬ ß½ÑñßΓó¿Ñ ¬«¡¬παÑ¡µ¿¿ ºá αÑßπαßδ »á¼∩Γ¿, ¬«Γ«αá∩ óδαáªáÑΓß∩ ó πóѽ¿τÑ¡¿¿
  1090. »α«ñ«½ª¿Γѽ∞¡«ßΓ¿  «íαáΘÑ¡¿∩ ¬ »á¼∩Γ¿. é«-óΓ«αδσ, ó ßσѼÑ, «ß¡«óá¡¡«⌐ ¡á ¿ß-
  1091. »«½∞º«óá¡¿¿ ßѼáΣ«α«ó, ¬ φΓ«⌐ ¬«¡¬παÑ¡µ¿¿ ñ«íáó½∩ÑΓß∩ ß«»Ñα¡¿τÑßΓó« ºá ßѼá-
  1092. Σ«αδ; »α«µÑßßδ ºáτáßΓπε «í¡áαπª¿óáεΓ ßѼáΣ«αδ ºáσóáτÑ¡¡δ¼¿, í«½∞ΦÑ »α«µÑßß«ó
  1093. ¡áσ«ñ¿Γß∩ ó «τÑαÑñ¿, ñ«½ú«Ñ óαѼ∩ «ª¿ñá∩ »«½πτÑ¡¿∩ ñ«ßΓπ»á ¬ ßѼáΣ«αá¼. ÅÑα-
  1094. óá∩ ßσѼá, «ß¡«óá¡¡á∩ ¡á ¿ß»«½∞º«óá¡¿¿ ú½áó¡«ú« ¿ »«ñτ¿¡Ñ¡¡«ú«  »α«µÑßß«α«ó,
  1095. Γ«ªÑ  ¡Ñ  ½¿Φѡᠠ¡Ññ«ßΓáΓ¬«ó:  »« ¼ÑαÑ πóѽ¿τÑ¡¿∩ τ¿ß½á »α«µÑßß«α«ó ú½áó¡δ⌐
  1096. »α«µÑßß«α ßΓá¡«ó¿Γß∩ πº¬¿¼ ¼ÑßΓ«¼ ó ß¿ßΓѼÑ, »«ß¬«½∞¬π Γ«½∞¬« «¡ «ñ¿¡  ¼«ªÑΓ
  1097. Σπ¡¬µ¿«¡¿α«óáΓ∞ ó αѪ¿¼Ñ ∩ñαá. ìÑß¼«Γα∩ ¡á Γ«, τΓ« í«½ÑÑ ó¡¿¼áΓѽ∞¡«Ñ ΓÑσ¡¿-
  1098. τÑ߬«Ñ  »α«Ñ¬Γ¿α«óá¡¿Ñ »«ºó«½∩ÑΓ ß«¬αáΓ¿Γ∞ ¬«¡¬παÑ¡µ¿ε ñ« αáºπ¼¡«ú« ¼¿¡¿¼π¼á
  1099. ¿ ó ¡Ñ¬«Γ«αδσ ß½πτá∩σ »α¿í½¿º¿Γ∞ ß¬«α«ßΓ∞ »«óδΦÑ¡¿∩ »α«¿ºó«ñ¿Γѽ∞¡«ßΓ¿  ß¿ß-
  1100. ΓÑ¼δ »α¿ πóѽ¿τÑ¡¿¿ τ¿ß½á »α«µÑßß«α«ó ¬ ½¿¡Ñ⌐¡«⌐ (ß¼., ¡á»α¿¼Ñα, [Beck 85]),
  1101. óßÑ  »«ßΓα«Ñ¡¡δÑ  ß  ¿ß»«½∞º«ó᡿Ѽ ß«óαѼѡ¡«⌐ ΓÑσ¡«½«ú¿¿ ¼¡«ú«»α«µÑßß«α¡δÑ
  1102. ß¿ßΓÑ¼δ ¿¼ÑεΓ »αÑñѽ, ºá ¬«Γ«αδ¼ αáßΦ¿αÑ¡¿Ñ ß«ßΓáóá »α«µÑßß«α«ó ¡Ñ ß«»α«ó«ª-
  1103. ñáÑΓß∩ πóѽ¿τÑ¡¿Ñ¼ »α«¿ºó«ñ¿Γѽ∞¡«ßΓ¿ ß¿ßΓѼδ.
  1104.  
  1105.  
  1106.     E12.6 ôÅÉÇåìàìêƒF
  1107.  
  1108.   1. ÉÑΦ¿ΓÑ »α«í½Ñ¼π Σπ¡¬µ¿«¡¿α«óá¡¿∩ ¼¡«ú«»α«µÑßß«α¡δσ ß¿ßΓѼ  Γᬿ¼  «íαá-
  1109.      º«¼,  τΓ«íδ óßÑ »α«µÑßß«αδ ó ß¿ßΓѼѠ¼«ú½¿ Σπ¡¬µ¿«¡¿α«óáΓ∞ ó αѪ¿¼Ñ ∩ñ-
  1110.      αá, ¡« ¡Ñ í«½ÑÑ «ñ¡«ú« «ñ¡«óαѼѡ¡«. Æá¬«Ñ αÑΦÑ¡¿Ñ íπñÑΓ «Γ½¿τáΓ∞ß∩  «Γ
  1111.      »Ñαó«⌐  ¿º »αÑñ½«ªÑ¡¡δσ ó ΓѬßΓÑ ßσѼ, úñÑ Γ«½∞¬« «ñ¿¡ »α«µÑßß«α (ú½áó-
  1112.      ¡δ⌐) »αÑñ¡áº¡áτÑ¡ ñ½∩ αÑ὿ºáµ¿¿ Σπ¡¬µ¿⌐ ∩ñαá. èᬠñ«í¿Γ∞ß∩ Γ«ú«, τΓ«íδ
  1113.      ó αѪ¿¼Ñ ∩ñαá ó ¬áªñδ⌐ ¼«¼Ñ¡Γ óαѼѡ¿ ¡áσ«ñ¿½ß∩ Γ«½∞¬« «ñ¿¡ »α«µÑßß«α ?
  1114.      èá¬πε ßΓαáΓÑú¿ε «íαáí«Γ¬¿ »αÑαδóá¡¿⌐ »α¿ φΓ«¼ ¼«ª¡« ßτ¿ΓáΓ∞ »α¿Ñ¼½Ñ¼«⌐?
  1115.  
  1116.  
  1117.                                     379
  1118.  
  1119.   2.  êß»«½∞ºπ∩ ß¿ßΓѼ¡δÑ Σπ¡¬µ¿¿ αáí«Γδ ß αáºñѽ∩Ѽ«⌐ «í½áßΓ∞ε »á¼∩Γ¿, »α«-
  1120.      ΓÑßΓ¿απ⌐ΓÑ »α«úαá¼¼π, αÑ὿ºπεΘπε ßѼáΣ«α¡πε í½«¬¿α«ó¬π (É¿ßπ¡«¬ 12.6).
  1121.      Å«ß½Ññ«óáΓѽ∞¡«ßΓ¿ «»Ñαᵿ⌐ P-V ¡áñ ßѼáΣ«α«¼ ¼«úπΓ ¡Ñºáó¿ß¿¼« «ñ¿¡  «Γ
  1122.      ñαπú«ú« óδ»«½¡∩Γ∞ ¡Ñ߬«½∞¬« »α«µÑßß«ó. èᬿ¼ «íαẫ¼ ó »α«úαἼѠ߽Ññπ-
  1123.      ÑΓ αÑ὿º«óáΓ∞ ¿¡ñ¿¬áµ¿ε ¿ «íαáí«Γ¬π «Φ¿í«¬ ?
  1124.   3. Éáºαáí«Γá⌐ΓÑ á½ú«α¿Γ¼ óδ»«½¡Ñ¡¿∩ «»Ñαᵿ¿ CP (πß½«ó¡δ⌐ Γ¿» «»Ñαᵿ¿ P),
  1125.      ¿ß»«½∞ºπ∩ ΓѬßΓ á½ú«α¿Γ¼á «»Ñαᵿ¿ P.
  1126.   4. ÄíΩ∩ß¡¿ΓÑ, ºáτѼ ó á½ú«α¿Γ¼áσ «»Ñαᵿ⌐ P ¿ V (É¿ßπ¡¬¿ 12.8 ¿ 12.9) ¡πª-
  1127.      ¡á í½«¬¿α«ó¬á »αÑαδóá¡¿⌐. é ¬á¬¿Ñ ¼«¼Ñ¡Γδ ÑÑ ß½ÑñπÑΓ «ßπΘÑßΓó½∩Γ∞ ?
  1128.   5. Å«τѼπ »α¿ óδ»«½¡Ñ¡¿¿ "µ¿¬½¿τÑ߬«⌐ í½«¬¿α«ó¬¿" ó¼ÑßΓ« ßΓ᫬¿:
  1129.                 while (! CP(ßѼáΣ«α));
  1130.      ∩ñα«  ¡Ñ  ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ «»Ñαᵿε P íѺπß½«ó¡«ú« Γ¿»á ? (é ¬áτÑßΓóÑ
  1131.      ¡áó«ñ∩ΘÑú« ó«»α«ßá: τΓ« »α«¿º«⌐ñÑΓ ó Γ«¼ ß½πτáÑ, Ñß½¿ »α«µÑßß  ºá»πßΓ¿Γ
  1132.      «»Ñαᵿε P ¿ »α¿«ßΓá¡«ó¿Γß∩ ?)
  1133.   6.  ÄíαáΓ¿¼ß∩ ¬ á½ú«α¿Γ¼π getblk, »α¿óÑñÑ¡¡«¼π ó ú½áóÑ 3. Ä»¿Φ¿ΓÑ αÑ὿ºá-
  1134.      µ¿ε á½ú«α¿Γ¼á ó ¼¡«ú«»α«µÑßß«α¡«⌐ ß¿ßΓѼѠñ½∩ ß½πτá∩, ¬«úñá í½«¬ «ΓßπΓ-
  1135.      ßΓóπÑΓ ó íπΣÑα¡«¼ ¬ÑΦÑ.
  1136.  *7. ÅαÑñ»«½«ª¿¼, τΓ« »α¿ óδ»«½¡Ñ¡¿¿  á½ú«α¿Γ¼á  óδñѽѡ¿∩  íπΣÑαᠠ󫺡¿¬½á
  1137.      ταѺóδτá⌐¡«  ß¿½∞¡á∩  ¬«¡¬παÑ¡µ¿∩ ºá ßѼáΣ«α, »α¿¡áñ½ÑªáΘ¿⌐ ß»¿ß¬π ßó«-
  1138.      í«ñ¡δσ íπΣÑα«ó. Éáºαáí«Γá⌐ΓÑ ßσѼπ «ß½áí½Ñ¡¿∩ ¬«¡¬παÑ¡µ¿¿ ºá ßτÑΓ  αáº-
  1139.      í¿Ñ¡¿∩ ß»¿ß¬á ßó«í«ñ¡δσ íπΣÑα«ó ¡á ñóá »«ñß»¿ß¬á.
  1140.  *8. ÅαÑñ»«½«ª¿¼, τΓ« π ΓÑନ¡á½∞¡«ú« ñαá⌐óÑαá ¿¼ÑÑΓß∩ ßѼáΣ«α, º¡áτÑ¡¿Ñ ¬«-
  1141.      Γ«α«ú« »α¿ ¿¡¿µ¿á½¿ºáµ¿¿ ßíαáßδóáÑΓß∩ ó 0 ¿ »« ¬«Γ«α«¼π »α«µÑßßδ »α¿«ß-
  1142.      Γá¡áó½¿óáεΓ  ßó«ε  αáí«Γπ ó ß½πτáÑ »ÑαÑ»«½¡Ñ¡¿∩ íπΣÑαá óδó«ñá ¡á ΓÑନ-
  1143.      ¡á½. è«úñá ΓÑନ¡á½ ú«Γ«ó ¬ »α¿Ñ¼π ß½ÑñπεΘÑ⌐ »«αµ¿¿ ñá¡¡δσ, «¡  óδó«ñ¿Γ
  1144.      ¿º  ß«ßΓ«∩¡¿∩ «ª¿ñá¡¿∩ óßÑ »α«µÑßßδ, »α¿«ßΓá¡«ó½Ñ¡¡δÑ »« ßѼáΣ«απ. Éáº-
  1145.      αáí«Γá⌐ΓÑ ßσѼπ ó«º«í¡«ó½Ñ¡¿∩ »α«µÑßß«ó, ¿ß»«½∞ºπεΘπε «»Ñαᵿ¿ Γ¿»á P ¿
  1146.      V. é ß½πτáÑ ¡Ñ«íσ«ñ¿¼«ßΓ¿ óóÑñ¿ΓÑ ñ«»«½¡¿Γѽ∞¡δÑ Σ½áú¿ ¿ ßѼáΣ«αδ.  èá¬
  1147.      ñ«½ª¡á óÑßΓ¿ ßÑí∩ ßσѼá ó Γ«¼ ß½πτáÑ, Ñß½¿ »α«µÑßßδ óδó«ñ∩Γß∩ ¿º ß«ßΓ«-
  1148.      ∩¡¿∩  «ª¿ñá¡¿∩  »«  »αÑαδóá¡¿ε,  ¡« »α¿ φΓ«¼ ΓѬπΘ¿⌐ »α«µÑßß«α ¡Ñ ¿¼ÑÑΓ
  1149.      ó«º¼«ª¡«ßΓ¿ í½«¬¿α«óáΓ∞ »αÑαδóá¡¿∩ ¡á ñαπú¿σ »α«µÑßß«αáσ ?
  1150.  *9. àß½¿ Γ«τ¬¿ óσ«ñá ó ñαá⌐óÑα ºáΘ¿ΘáεΓß∩  ßѼáΣ«αἿ,  ñ«½ª¡«  ß«í½εñáΓ∞ß∩
  1151.      πß½«ó¿Ñ  «ßó«í«ªñÑ¡¿∩  ßѼáΣ«αá  ó ß½πτáÑ »ÑαÑσ«ñá »α«µÑßßá ó ß«ßΓ«∩¡¿Ñ
  1152.      »α¿«ßΓá¡«óá. èᬠφΓ« αÑ὿ºπÑΓß∩ ¡á »αá¬Γ¿¬Ñ  ?  èᬿ¼  «íαẫ¼  ñ«½ª¡á
  1153.      »α«¿ºó«ñ¿Γ∞ß∩  «íαáí«Γ¬á »αÑαδóá¡¿⌐, »«ßΓπ»áεΘ¿σ ó Γ« óαѼ∩, »«¬á ßѼá-
  1154.      Σ«α ñαá⌐óÑαá ºáí½«¬¿α«óá¡ ?
  1155.  10. ÄíαáΓ¿¼ß∩ ¬ ß¿ßΓѼ¡δ¼ Σπ¡¬µ¿∩¼ πßΓᡫ󬿠¿ ¬«¡Γα«½∩ ß¿ßΓѼ¡«ú«  óαѼѡ¿
  1156.      (ú½áóá  8).  ÉạδÑ  »α«µÑßß«αδ ¼«úπΓ ¿¼ÑΓ∞ αẽ¿τ¡πε Γá¬Γ«óπε τáßΓ«Γπ.
  1157.      èᬠó φΓ«¼ ß½πτáÑ π¬áºá¡¡δÑ Σπ¡¬µ¿¿ ñ«½ª¡δ αáí«ΓáΓ∞ ?
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.                                     380
  1180.  
  1181.