<title>Unix overview CHAP12</title>



     12

         




      ᪮ ⠭  ⥬ UNIX । ᯮ짮
୮ ⥪, 饩   ,    ਩
ன.  ୠ  ⥪,  ⨢, 砥  ᥡ  
 , ᮢ⭮ ᯮ    ਩ ன⢠ (-
㭮 12.1), ᯮ 訬 ﬨ   㢥祭  ந⥫-
  ⥬,  易묨   ६ ᯮ ᮢ  ࠧ
.   㭪樮 ᨬ  㣨,    ࠡ   -
  ⥬  ஬ 樮 ⥬.  ᮢ  ⠪ ⥬
祬   ⫨砥    ୮ ⥬ -  ࠭
ᥬ⨪ 饭   ⥬ 㭪樨 -   ⮬    -
  ६      㣮. ,  ᮦ,  
ਢ  ᭨  ୮ ६, 易    믮
. ⤥  ⥬ 뢠 ⥬  ᮥ-
묨  ࠬ, ᪮   ਩ ன⢠ 㯭 
  ஢.  ᪫祭 ᮡ ७ 砥,   饩
   ஢  ࠧ稩  ⥬  ᮥ묨 -
ࠬ  ⠫묨 ᠬ  ⥬.
    ࠫ쭠 ࠡ ᪮쪨 ஢  ०     믮
ࠧ ᮢ ᮧ  ஡, 易  ࠭ 楫⭮
  蠥  ᯮ짮 ᮮ⢥ 堭 .
  㤥 , 祬 ᪨ ਠ ⥬ UNIX   
ਭ   ⥬  ᥭ  室  ,  
⠪  ᬮ७  ਠ, ।祭  ࠡ  㪠
।.

    +-----------+   +-----------+               +-----------+
    |  |   |  |               |  |
    |     1     |   |     2     |  ...........  |     n     |
    +-----+-----+   +-----+-----+               +-----+-----+
----------+-------+-------+--------------+------------+-----------
              +---+----+     +-----------+-------------+
              |  |     | ਩ ன⢠ |
              +--------+     +-------------------------+

           㭮 12.1. ୠ 䨣



        12.1 ,    

      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.  ࠭ ७  ᯮ짮   ⥬ ᮮ⢥-
    饩 । ⬮.
  ᯮᮡ   ᬮਬ  ஡,  쥬  ᯮᮡ  㤥
饭 ⤥쭮 ࠦ.


        12.2    

    ⥬   ࠬ,    -  (master) - 
ࠡ  ० ,  㣮 - 稭 (slave) - ⮫쪮  ० -
,    ॠ  設 ⨯ VAX 11/780  (. [Goble 81]).
 ⥬, ॠ 砫   設, 稫 ᢮ 쭥襥
ࠧ⨥  ⥬     ᪮쪨 稭묨 ࠬ.
   ⢥⢥  ࠡ  饭  -
樮 ⥬   뢠. 稭   믮
ᮢ  ०   ନ      ந-
 饭  ⥬ 㭪.
    롮  ,  ஬ 㤥 믮  , ந-
  ᮮ⢥⢨  ⬮ ᯥਧ樨 (㭮 12.3).  ᮮ⢥-
饩  ⠡ ᮢ   ,  ஥ 뢠-
 䨪 ࠭ ; ।  ,    
뢠,          稭.  

                                    363

ந 饭  ⥬ 㭪樨, 믮  稭  -
, 稭  ⠭ 祭  䨪樨 -
  ⠪ ࠧ, ⮡  㪠뢠   ,  ४砥
⥪  㣨  (㭮 12.4).   ᪠  믮-
   訬 ਮ⮬ ।   ᮢ,    
믮   .  믮 ⥬ 㭪樨 -
蠥,    䨪樨  ७ࠨ ⭮,  
 頥  稭 .
    ᫨   믮   , ⥫쭮, -
   ࠡ뢠    ᪮॥   ⠢  
᢮ ।  . 宦 ⨢஢  ਢ    ᭥
㧪      ୮ ⥬ ᫥ 室  -
⥬ 㭪樨  ᢮ ᮮ⢥ ᮢ  믮 
  権. ᫨   ,    稭  
   ᯮ ⥬ 㭪樨,   믮 
०  ,  믮 㤥 த  ᫥饣 ४祭
⥪.   ॠ஢  ࠧ ॥, ᫨    -
    ⠭  ⮬  䫠; ஢ ⠭
䫠  ६ ࠡ⪨ । 뢠  ⠩,  
ந   ⮣ ४祭 ⥪  ᨬ  १    ⠩
⨪.  㣮 ஭, 稭    ࢠ ࠡ 
  ⠢  ४ ⥪ ,    -
 ᯥ樠쭮 ⭮ ॠ樨.

    +------------------------------------------------------------+
    |  schedule_process  (஢)              |
    | 室 ଠ:                             |
    | 室 ଠ:                            |
    | {                                                          |
    |    믮  ( ᪠  㤥 ࠭   -|
    |     ᮢ)                                                |
    |    {                                                       |
    |        ᫨ (ࠡ    )         |
    |            ( ᮢ  । ⮢  믮- |
    |            )                                            |
    |                , 騩 訩 ਮ |
    |                । 㦥  ;                 |
    |         ⨢ 砥   /* ࠡ   稭- |
    |                              *   */           |
    |            ( ᮢ  ।,   㦤-|
    |               )                        |
    |                , 騩 訩 ਮ |
    |                । 㦥  ;                 |
    |        ᫨ ( ᪠  室    ᮢ) |
    |            㦠 設, 室  ﭨ -|
    |            ;                                           |
    |           /*  ⮣ ﭨ 設 室  १|
    |            * 뢠 */                                 |
    |    }                                                       |
    |     ࠭   । ⮢  믮-  |
    |     ;                                                   |
    |    ४  ⥪ ࠭ , - |
    |       믮;                                   |
    | }                                                          |
    +------------------------------------------------------------+

              㭮 12.3.  ᯥਧ樨



                                    364

    +------------------------------------------------------------+
    |  syscall   /* ࠢ  맮 ⥬- |
    |                     *  㭪樨 */                       |
    | 室 ଠ:   ⥬ 㭪樨                 |
    | 室 ଠ: १ 믮 ⥬ 㭪樨|
    | {                                                          |
    |    ᫨ (ࠡ   稭 )         |
    |    {                                                       |
    |        ⠭ 祭  䨪樨 -|
    |           ᮮ⢥饩  ⠡ ᮢ;     |
    |        ந ४祭 ⥪;                  |
    |    }                                                       |
    |    믮   ॠ樨 ⥬ 㭪樨;|
    |    ७ந 祭  䨪樨 ,   |
    |     ⮡  㪠뢠  "" (稭);          |
    |    ᫨ (    믮 㣨   |
    |     )                                              |
    |        ந ४祭 ⥪;                  |
    | }                                                          |
    +------------------------------------------------------------+

    㭮 12.4.  ࠡ⪨ 饭  ⥬ 㭪樨

    ணࠬ ࠡ⪨ 뢠  ⠩  稭  ᫥-
  ਮ筮 १᪠ ᮢ,   ᪠  쭮  -
짮     祩. ஬ ⮣,  ᥪ㭤  ண-
ࠬ 뢮 稭   ﭨ ⢨ (). -
稭  롨ࠥ  믮    訬  ਮ⮬
।  ᮢ,   㦤   .
    ⢥  ⮬,  楫⭮     ࣠-
 ᭮,   ᯥਧ樨, ᪮   ।-
  롮   믮 ࠧ    .  ਬ,
᫨  䨣樨       稭,  -
祭   ⮣,   稭  롥  믮-
  ०      . ᫨     -
  ࠫ쭮, ⢫ ⥭  ,   ਢ
 ᪠ ᮤন ᭮ ࠭⢠ .
        ⮩ ஡   ᯮᮡ. -,
    㪠,      稭  ஢
᫥  믮   . ᫨    ࠢ -
쪮 ᮢ,  室    ᡠ஢  㧪  (
  ஢ 砥 讥 ⢮ ᮢ,   ६ 
㣨   ⠨).  । 㧪  -
ࠬ    . -,     ᫥    ⥬,
⮡      ६  ⬥ ᯥਧ樨 ਭ ⨥
⮫쪮  ,  ⮣ ᯮ 堭,  ᥬࠬ.


        12.3 

    প ⥬ 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 ⠪  ⠭ ஢. ⮡ । -
  樨, 㦭 ᤥ ⠪, ⮡ 楤 ஢ -
  : ஢  ஢   ⠭ ᫥ ꥤ
  , ⮡    ६  ஢   ⮫-
  .


        12.3.1 । ᥬ஢

     ।⠢ ᮡ ࠡ뢠  ஬  楫᫥  ꥪ,
 ண । ᫥騥  () 樨:
  *  樠 ᥬ,  १ ன ᥬ ᢠ -
    ⥫쭮 祭;
  *  ⨯ P, 㬥 祭 ᥬ. ᫨  祭  ᥬ

                                    366

    ᪠    㫥 ⬥⪨, 믮騩   ਮ-
     ᢮ ࠡ;
  *  ⨯ V, 㢥稢 祭 ᥬ. ᫨ 祭 ᥬ
     १ 樨 ⠭   ࠢ 0,    ᮢ,
    ਮ⠭    ६  믮 樨 P, 室  ﭨ
    ਮ⠭;
  * ᫮  ⨯ P, ᮪饭  CP  (conditional  P),  㬥
    祭 ᥬ   ᪮ 祭 "⨭"  ⮬ -
    砥,    祭 ᥬ ⠥ ⥫. ᫨  १
    樨 祭 ᥬ   ⥫  㫥, -
     ⢨    ந     頥  ᪮
    祭 "".
    ।  ⠪ ࠧ ᥬ, ᫮,   易  -
ࠬ 짮⥫᪮ ஢, ᬮ७묨   11.


        12.3.2  ᥬ஢

     [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 ᥣ 㤥 "". ஡ 蠥 ⥬ 饭 
뢠   ६,  ᥬ 墠祭 ᮬ.


        12.3.3 ਬ ⬮

        ࠧ   ᬮਬ  ⬠ , ॠ 
ᯮ짮 ᥬ஢.   뤥      ᫮
奬  ஢,  ਬ ⬠ wait  ᨭ஭ 믮-
 ᮢ, 奬 ஢ ࠩ஢ ॠ  室  -
襭  ஡,  , ⮤  襭  ஡  宫⮩  ࠡ
  뢠,   㦭 ᤥ, ⮡  ७樨 
ᠬ.


        12.3.3.1 뤥 

    ⨬  ࠧ   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


    ⠢  ⬠  ᬮ  ⢥ ࠦ.


        12.3.3.2 Wait

      7  㦥   ⮬,   ६ 믮 ⥬ 㭪樨
wait  ਮ⠭ ᢮ ࠡ    襭  믮
᢮ ⮬.  ୮ ⥬ । ᮬ ⠥  
   믮 ⬠ wait ⮬, ४⨢襣 ⢮
  㭪樨 exit; ᫨, ਬ,   ६,    
-த⥫ ᪠ 㭪 wait,  㣮      ⮬
訫  ᢮  ࠡ, த⥫  室 ਮ⠭ ᢮ -
   襭 ண ⮬.    ⠡ -
ᮢ  ᥬ, 㥬 zombie_semaphore  騩  砫  㫥-
  祭.    ᥬ  ᯮ    ࣠樨 ⢨
wait/exit (㭮 12.15).  ⮬ 蠥 ࠡ,  믮  
ᥬ஬  ᢮ த⥫  V, 뢮 த⥫  ﭨ ਮ-
, ᫨  襫    ६ ᯮ 㭪樨 wait. ᫨ ⮬
訫 ࠭, 祬 த⥫ ⨫ 㭪 wait,  䠪 㤥 -
㦥 த⥫,    멤  ﭨ . ᫨   -
  ᯮ 㭪樨 exit  wait ࠫ쭮,  ⮬ ᯮ 㭪-
 exit 㦥 ᫥ ⮣,  த⥫ ஢ਫ  ,   V,  -
 ⮬, ९ 室 த⥫  ﭨ ਮ⠭-
.  襬 砥 -த⥫   横 譨 ࠧ.


        12.3.3.3 ࠩ

      ୮ ॠ樨 ᫨⥫쭮 ⥬   -
஢ AT&T 3B20 ᥬ   㧮筮  ࠩ஢   -
,    樨 ⨯ P  V 믮  窠 室   ࠩ (.
[Bach 84]).   10  ਫ  ⮬,  䥩, ॠ㥬 ࠩ-
ࠬ ன, ࠪਧ 祭 訬 ᫮ 祪 室 ( ࠪ-

                                    377

⨪   20).  ࠩ஢ ⢫  ஢ 祪  室  
:

    P(ᥬ ࠩ);
     (ࠩ);
    V(ᥬ ࠩ);

    ᫨    祪 室  ࠩ ᯮ짮     ᥬ,
  ⮬  ࠧ ࠩ஢  -  ࠧ  ᥬ,  ᪨  ⮪
ணࠬ  ࠩ  㤥  ᯮ ᮬ 쭮.  
  ⤥쭮 ன, ⠪  ᠬ ன. ,  -
, ⤥ ᥬ   易   ⤥ 䨧᪨ ନ
    ᥬ ନ ࠧ.  ࢮ 砥 த⢨ ⥬ ,
 , 騥  ନ,  墠뢠 ᥬ, 騩  -
襭    㣨 ନ,   ஬ 砥. ࠩ  -
ன, , ন ७   㣨 ࠩࠬ;   ⠪
 ᯮ짮  ᥬ   ன 砥 -
  .   ⢥ ୠ⨢  ᫨⥫쭮 ⥬ 3B20A ।-
⠢  ⠪ 䨣஢ ⤥ ன,  ஬
ணࠬ ࠩ ᪠  筮 㪠 .
    ஡  ⮣,  ࠩ 뢠 ࠡ ⥬    
ᥬ  墠祭: ணࠬ ࠡ⪨ 뢠    맢, ⠪
    ஧ ࠧ襭 .  㣮  ஭,    
 ⠢ 뢠 ࠡ⠭. ⥬ 3B20A ࠨ 뢠-
    ।     ᢮ ᥬ,  맮 ணࠬ
ࠡ⪨ 뢠  㤥   ᫥⢨.


        12.3.3.4 ⨢ 

      믮 ४祭 ⥪  ୮  ⥬,
  㭪樮    ⥪ , 㯠饣 ࠢ (. 
6). ᫨  ⥬  ᮢ, ⮢  ,  室  -
ﭨ   ⥪ , 믮襣 ᫥. 稢  -
    ⠩  㣨 ਩ ன,  ࠡ뢠  
⥪ ⮣  .
     ୮ ⥬    ⠨   ⥪  -
,  믮襣  ᫥. ᬮਬ,  ந ᫥ ⮣, 
, ਮ⠭訩 ᢮ ࠡ   A,  멤    ﭨ
ਮ⠭.    楫 ⮢  ,   ᪠  ࠧ 
 室  ﭨ ਮ⠭,  ᬮ  ,      ⥪
㦥  室  ᯮ殮  A. ᫨   롨ࠥ 
᪠ ஬ B, ᫥ ४砥   ⥪  -
  믮.   १ 뢠  A 멤  -
,  㤥 த ᢮ ࠡ  ⥪  A   , 
 ந ४祭 ⥪.   ࠧ,    祭  ⪮
஬⪠  ६    ⥬   ࠭⢮ ( ⭮, 
⥪ )   ࠡ (,  쬠 ⭮, ந )
ࠧ  .
    襭 ⮩ ஡ ⮨  ᮧ ண 䨪⨢ ;
  室  ﭨ ,   ४砥    -
⥪  䨪⨢  ,   ⥪ ⥪騬  饣
. ⥪ 䨪⨢  ⮨ ⮫쪮  ⥪ ;  
   믮   롨ࠥ  ᪠. ᪮ 
  ⠨   ⥪ ᢮ ᮡ⢥ 䨪⨢ ,
।    㦥  .




                                    378

        12.4  TUNIS

    짮⥫᪨ 䥩 ⥬ Tunis ᮢ⨬    -
䥩ᮬ ⥬ UNIX,   ⮩ ⥬, ࠧࠡ⠭  몥 Concurrent
Euclid,  ⮨    ᮢ, ࠢ   ⥬. ஡
 ᪫祭 蠥  ⥬ Tunis 쭮  ,  ⠪    
    ६  ᯮ     ࠢ塞 ஬
, ஬ ⮣,  ࠡ ⮫쪮   ⥬  ࠬ  ,
  ਭ. ⥬  ⨢ ᠬ  ,
  ।  ᮢ  ⢫ 楤 ணࠬ . 
楤 ᨫ  ᪫祭, ࠧ   ᢮ ᯮ塞
    ६  , 祬  . 堭  -
  ⫨砥   堭 ᥬ஢ ⥬, , -,  -
 ᨫ 쭮 ணࠬ (樨 P  V   -
  楤    室  ),    -,  ᣥ஢
஬    㦥  ᮤন   ᨭ஭樨.  ⬥砥, 
ࠧࠡ⪠ ⠪ ⥬ 砥, ᫨ ᯮ ,  ন騩
    騩  ⨥  ࠫ (. [Holt 83], .190). 
ᥬ  ⮬ ७  ⥬ Tunis ⫨砥   ࠤ樮
ॠ樨 ⥬ UNIX ࠤ ࠧ.


        12.5      

         뫨 ᬮ७  ⮤ ॠ樨 -
 ᨩ ⥬ UNIX: 䨣,      稭-
  ஢,  ன ⮫쪮   () 㭪樮 
० ,  ⮤, ᭮  ᯮ짮  ᥬ஢    ᪠騩
६  ᯮ   ०     ⥬ ᮢ.
 ⮤ ਠ   ஢,    ⮬,  
  ⮬ ᫠ ஢  ந⥫쭮 ⥬ 㢥稢 
 ᪮, .  ந⥫쭮 ,  -,
 ᫥⢨ ७樨   ,  ࠦ  㢥祭
த⥫쭮  饭  . -,  奬, ᭮  -
짮 ᥬ஢,  ⮩ ७樨  ᮯ୨⢮  ᥬ-
;   㦨 ᥬ 墠祭묨,  ᮢ
室  ।,  ६  祭 㯠  ᥬࠬ. -
 奬, ᭮  ᯮ짮   稭  ஢,
⮦    襭  ⪮:    㢥祭 ᫠ ஢ 
 ⠭ 㧪 ⮬  ⥬, ᪮ ⮫쪮    
㭪樮஢  ० . ᬮ  ,   ⥫쭮 孨-
᪮  ஥஢  ᮪ ७  ࠧ㬭 㬠
    ਡ ᪮ 襭 ந⥫쭮  -
⥬  㢥祭 ᫠ ஢   (., ਬ, [Beck 85]),
  ஥    ᯮ짮 ᮢ६ 孮 
⥬  ।,   ७ ⠢ ஢  ᮯ஢-
 㢥祭 ந⥫쭮 ⥬.


        12.6 

  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
