1993.1.6

SUBJECT: UNIXÀÇ FilesystemÀÇ ±¸Á¶¿Í file Á¾·ù

CONTENTS
0. FilesystemÀ̶õ ?
1. FilesystemÀÇ ±¸Á¶
   1) ÀϹÝÀûÀÎ ±¸Á¶
   2) SunÀÇ ±¸Á¶
   3) boot block
   4) super block
   5) inode list
2. UNIXÀÇ file Á¾·ù
   1) ordinary file(ÀÏ¹Ý file)
   2) directory file
   3) special file(Ư¼ö file)

DESCRIPTION:
0. FilesystemÀ̶õ ?
   * ½Ã½ºÅÛÀº '¿©·¯°³ÀÇ ¹°¸®Àû disk'¸¦ °¡Áö¸ç, °¢ disk´Â 'Çϳª ÀÌ»óÀÇ filesystem'À» °®´Â´Ù.
   * kernelÀº ³í¸®Àû ¼öÁØ¿¡¼­´Â disk°¡ ¾Æ´Ï¶ó filesystemÀ» ´Ù·ç¸ç,
     °¢ filesystemÀ» device number·Î ½Äº°ÇÏ´Â '³í¸®Àû device'·Î Ãë±ÞÇÑ´Ù.
     'device number'¶õ /dev ¹Ø¿¡ ÀÖ´Â, ¿¹¸¦ µé¾î /dev/sd0a, /dev/sd0gÇÏ´Â °ÍÀ» ÀǹÌÇÑ´Ù.
     "df" command¸¦ ¼öÇàÇØ º¸¸é ÀÌ·± '³í¸®Àû device'µéÀÌ ³ªÅ¸³ª°í 'mount point'·Î mountµÇ¾î
     ÀÖÀ½À» º¸¿© ÁØ´Ù.
   * fileÀº ¾î¶² Á¤º¸ÀÇ ¸ðÀÓÀ» ÁöĪÇÏ´Â °ÍÀε¥ 
     ÀϹÝÀûÀ¸·Î fileÀº º¸Á¶±â¾ïÀåÄ¡(µð½ºÅ©, Å×ÀÌÇÁ)¿¡ º¸Á¸µÈ´Ù.
     filesystemÀ̶õ ÀÌ·¯ÇÑ fileµéÀÇ ÁýÇÕÀÌ ÀûÀýÇÑ ÇüÅ·Π±¸¼ºµÇ¾îÁø °ÍÀ» ÁöĪÇÑ´Ù.
   * UNIXÀÇ filesystemÀº °èÃþÀûÀÎ tree±¸Á¶ÀÌ´Ù.
     ±×·¡¼­ fileµéÀÌ ÇϳªÀÇ level·Î µÇ¾îÀÖÁö ¾Ê°í º¹¼öÀÇ level¿¡ ¼ÓÇÑ´Ù.
   * filesystemÀÇ top Áï level 1 Àº 'root(/)' µð·ºÅ丮ÀÌ´Ù.
   * 'filesystemÀÇ »ý¼º'Àº "mkfs(or newfs)"¶ó´Â ¸í·É¾î·Î ¸¸µé¾î Áø´Ù.

1. FilesystemÀÇ ±¸Á¶

   0) ÇÑ filesystemÀº boot block, super block, inode list, data blockÀÇ ³× ¿ä¼Ò·Î ±¸¼ºµÇ¾î ÀÖ´Ù.

   1) ÀϹÝÀûÀÎ ±¸Á¶
                  +-------------+-----------------+---------------------+
      Disk drive  |  partition  |    partition    |      partition      |
                  +-------------+-----------------+---------------------+
                                |                 |
                  +-------------+                 +-------------------------------+
                  |                                                               |
                  +------------+-------------+--------------+---------------------+
      Filesystem  | boot block | super block |  inode list  |      data block     |
                  +------------+-------------+--------------+---------------------+
                                             |              |
                                 +-----------+              +-----+
                                 |                                |
                                 +--------+--------+-----+--------+
                                 | i-nofr | i-node | ... | i-nofr |
                                 +--------+--------+-----+--------+

   2) SunÀÇ ±¸Á¶
      * original UNIX filesystemÀÇ °æ¿ì,
        óÀ½ filsystemÀÌ ¸¸µé¾îÁ³À» ¶§ »ý¼ºµÇ´Â fileµéÀº ÀÎÁ¢ÇÑ setcorµé¿¡ Çü¼ºµÈ´Ù.
        ½Ã°£ÀÌ Áö³²¿¡ µû¶ó »ý¼ºµÇ°í Áö¿öÁö°í º¯°æµÇ´Â fileµéÀº filesystem ³»ÀÇ
        free blockµéÀ» ã¾Æ ¿©±â Àú±â ÇÒ´çµÈ´Ù.
        ¶ÇÇÑ free block list¿¡ ÀÖ´Â free block numberµéµµ ÀÎÁ¢ÇØ ÀÖÁö ¾Ê°í ¿©±â Àú±â »êÀçÇÑ
        block numberµéÀÌ list up µÇ°Ô µÈ´Ù.
        °á±¹ file ÇÑ °³°¡ disk Àüü ¿©±â Àú±â¿¡ ³Î·Á ÀÖ´Â Çö»óÀÌ ¹ß»ýÇÑ´Ù.
      * filesystemÀÇ data ¿ë·®ÀÌ Áõ°¡Çϸ鼭 µ¿½Ã¿¡ fragment°¡ Áõ°¡Çϸ鼭
        ÇÑ fileÀÇ ¸ðµç data blockÀ» seekÇÏ´Â ½Ã°£ÀÌ ¿À·¡ °É¸°´Ù.
        °Ô´Ù°¡ inodeµéÀÌ filesystemÀÇ ¾Õ ºÎºÐ¿¡ ¸ð¿© ÀÖÀ½À¸·Î ÀÎÇØ
        ÀÌ·± Çö»óÀÌ ´õ¿í ¾ÇÈ­µÈ´Ù.
        ¾î¶² °æ¿ì´Â read/writeÇÏ´Â ½Ã°£ º¸´Ùµµ seek timeÀÌ ´õ °É¸®±âµµ ÇÑ´Ù.
      * ÀÌ·± Çö»óÀ» Á¶±ÝÀ̳ª ÁÙ¿© º¸·Á°í BSD¿¡¼­´Â  'cylinder group'À̶ó´Â ¾Ë°í¸®ÁòÀÌ µîÀåÇÑ´Ù.

            super block
                 ¦¢
      boot block ¦¢      first cylinder group              second cylinder group
           ¡é    ¡é |--------------------------------|--------------------------------| 
        +-----+-----+----+----+-----+----------------+----+----+-----+----------------+
        |     |     |    |    |     | data block     |    |    |     | data block     |
        +-----+-----+----+----+-----+----------------+----+----+-----+----------------+
                      ¡è    ¡è   ¡è
       backup super block   ¦¢   ¦¢
                            ¦¢ inode table
           cylinder group block

      * SunÀÇ filesystemÀº 'cylinder group'À» »ç¿ëÇÏ´Â
        Berkely Fat Fast FilesystemÀ¸·Î ±¸ÇöµÇ¾î ÀÖ´Ù.

      * SunÀÇ °æ¿ì ÇÑ °³ÀÇ 'cylinder group'Àº default 16 cylinder·Î ±¸¼ºµÈ´Ù.
        'cylinder group block'Àº 'cylinder group'À» Á¤ÀÇÇÑ´Ù.

      * 'cylinder group'À» »ç¿ëÇÑ filesystemÀÇ Æ¯Â¡:
        ¨ç ÇÑ fileÀÇ data blockµéÀÌ ºÐ»êµÇ´Â Á¤µµ°¡ ÁÙ¾îµê:
           'cylinder group'À» »ç¿ëÇصµ fileµéÀÇ fragment´Â ¿©ÀüÇÏ°ÚÁö¸¸,
           original UNIX filesystem¿¡¼­ ¹ß»ýÇÏ´Â
           ½É°¢ÇÑ scattering Çö»óÀº ³ªÅ¸³ªÁö ¾ÊÀ» °ÍÀÌ´Ù.
           ÀÌ´Â filesystemÀÌ directory¿Í ±×¿¡ ¼ÓÇÑ fileµéÀ» µ¿ÀÏ 'cylinder group'³»¿¡
           ÇÒ´çÇÏ¿© Áֱ⠶§¹®ÀÌ´Ù.
        ¨è file seek timeÀÇ Çâ»ó:
           ÇÑ fileÀÇ data blockµéÀ» ãÀ» ¶§ Á¦ÀÏ ±ä seek¶óµµ 16 cylinder¸¦ ³ÑÁö ¾Ê´Â´Ù.
        ¨é large fileÀÇ 'cylinder group' µ¶Á¡ ¹æÁö:
           large fileµéÀº 'cylinder group'´ç 2 Mbyte¸¦ ÇÒ´çÇÏ¸ç ¿©·¯ 'cylinder group'¿¡
           ºÐ»ê½ÃŲ´Ù. 
           ÀÌ´Â ±ä seek ÈÄ¿¡¾ß ´ÜÁö 2 Mbyte¾¿À» read/write¸¦ ÇÒ ¼ö ÀÖ°Ô µÇ´Â ´ÜÁ¡ÀÌ »ý±ä´Ù.

   3) boot block
      * filesystemÀÇ ½ÃÀۺο¡ À§Ä¡. ÀüÇüÀûÀ¸·Î ù ¹ø° sector¸¦ Â÷ÁöÇÑ´Ù.
      * SunÀÇ °æ¿ì ÀÌ Ã¹ ¹ø° 'disk sector - 512 byte disk block'¿¡´Â disk labelÀÌ µé¾î°¡°í
        ±× µÚ '15 disk sector - 15 disk block'¿¡ boot blockÀÌ µû¸¥´Ù.
        ±×¸®°í ÀÌ label°ú boot blockÀº 8192 byteÀÇ 'filesystem block'À» Çü¼ºÇÑ´Ù.
      * boot block¿¡´Â OS¸¦ boot or ÃʱâÈ­Çϱâ À§ÇÑ bootstrap code¸¦ ³ÖÀ» ¼ö ÀÖ´Ù.
        ÀÌ code´Â kernelÀÇ º¹»çº»À» memory¿¡ ÀûÀçÇÏ¿© À̸¦ ¼öÇàÇÏ´Â °ÍÀÌ ¸ñÀûÀÌ´Ù.
        ÀÌ bootstrap code´Â ´ÜÁö ¸î °³ÀÇ ¸í·ÉÀ¸·Î ±¸¼ºµÈ °£´ÜÇÑ ÇÁ·Î±×·¥ÀÏ ¼öµµ ÀÖ´Ù.

      ¡Ø SunÀÇ °æ¿ì¸¦ º¸¸é, PROMÀÌ boot diskÀÇ boot block¿¡ ÀÖ´Â  bootstrap code¸¦ ã°Ô µÇ°í
         bootstrap codeÀÇ table¿¡´Â root filesystemÀÇ "boot" file block number°¡ ±â·ÏµÇ¾î ÀÖ¾î
         ÀÌ block number¿¡ ÀÖ´Â  "boot" fileÀ» memory·Î loadÇÑ´Ù.
         ÀÌ "boot" fileÀº filesystem¿¡ ÀÖ´Â kernel(/vmunix, /kernel/unix ...)À» memory·Î loadÇÏ°í
         memoryÀÇ kernel ½ÃÀÛ ¹øÁö·Î controlÀ» ¿Å°Ü kernelÀÇ ¼öÇàÀ» ½ÃÀÛÄÉ ÇÑ´Ù.

      * systemÀ» bootÇϱâ À§Çؼ± ´ÜÁö ÇϳªÀÇ boot blockÀÌ ÇÊ¿äÇϱâ´Â ÇÏÁö¸¸,
        ½ÇÁ¦ ¸ðµç filesystemÀÌ boot block¸¦ °¡Áö°í ÀÖ´Ù.
        Çϳª¸¦ Á¦¿ÜÇÑ ³ª¸ÓÁö boot blockµéÀº ºñ¾î ÀÖÀ» °ÍÀÌ´Ù.

   4) super block
      * filesystem¿¡ ´ëÇÑ ¸ðµç Áß¿äÇÑ Á¤º¸¸¦ ÀúÀåÇÏ´Â °÷ÀÌ´Ù.
        super block¿¡ ÀÖ´Â filesystem »óŸ¦ ±â¼úÇÏ´Â ¿©·¯ field¸¦ º¸¸é,
           - filesystemÀÇ Å©±â
           - filesystem ³»ÀÇ free block ¼ö
           - inodeÀÇ list Å©±â
           - filesystem ³»ÀÇ free inode ¼ö
           - filesystem ³»ÀÇ free inodeÀÇ list
           - free inode listÀÇ ´ÙÀ½ free inodeÀÇ index
           - free block list¿Í free inode list¸¦ À§ÇÑ lock fieldµé
      * ±âŸ fieldµé¿¡ ´ëÇؼ±  /usr/include/ufs/fs.h ÂüÁ¶.

      ¡Ø filesystemÀ» mountÇÒ ¶§, superblockÀ» memory·Î copyÇÑ´Ù.
      fileÀ» ¸¸µé°í Áö¿ì°í ÇÏ´Â ¸ðµç µ¿ÀÛµéÀº  memory ³»ÀÇ superblockÀ» µ¿½Ã¿¡ updateÇÑ´Ù.
      SunÀÇ °æ¿ì Á¤±âÀûÀ¸·Î memoryÀÇ superblockÀ» diskÀÇ superblock·Î syncÇÑ´Ù.
      'filesystemÀÌ ±úÁø´Ù'°í ÇÏ´Â Çö»ó(´ë°³ Àü¿øÀÌ ³ª°¨À¸·Î ÀÎÇØ ¹ß»ýÇÑ´Ù)Àº
      ÀϹÝÀûÀ¸·Î memoryÀÇ superblockÀ» disk¿¡ writeÇÏ·Á´Ù OS°¡ crash¸¦ ³¿À¸·Î¼­ ¹ß»ýÇÑ´Ù.
   
   5) inode list
      * process°¡ diskÀÇ fileÀ» accessÇϱâ À§ÇÑ µµ±¸·Î 'inode table = inode list'¸¦ ÀÌ¿ëÇÑ´Ù.
      * ¾î´À ÇÑ fileÀ̳ª directory°¡ ¸¸µé¾îÁú °æ¿ì ±×¿¡ ÇØ´çµÇ´Â ÇϳªÀÇ inode°¡ ¸¸µé¾î Áö°í
        ±× inode°¡ inode list¿¡ µî·ÏµÇ´Âµ¥, ÀÌ ¶§ µî·ÏµÈ ¹øÈ£¸¦ 'inode number'¶ó ÇÑ´Ù.
      * inode Çϳª´Â 64 byteÀÇ Å©±âÀÌ°í, ¾î¶² fileÀ̳ª directory¿¡ ´ëÇÑ ¸ðµç Á¤º¸°¡
        ÇØ´ç inode¿¡ ´ã°ÜÁ® ÀÖ¾î fileÀ» ´ëÇ¥ÇÑ´Ù.
      * °¢ filesystemÀÇ root directoryÀÇ inode number´Â 1 ÀÌ´Ù.
      * ÇÑ inode¿¡ ´ã°ÜÁø ³»¿ëÀ» º¸¸é ´ÙÀ½°ú °°´Ù.(SunÀÇ °æ¿ì)
        - file type, access mode
        - linkµÈ °¹¼ö
        - ownerÀÇ UID, GID
        - fileÀÇ Å©±â(byte¼ö)
        - fileÀÌ ¸¶Áö¸·À¸·Î access, writeµÇ°í inode°¡ changeµÈ ½Ã°£
        - 'direct'·Î  data blockÀ» °¡¸®Å°´Â 12 pointerÀÇ array
          ÀÌ´Â file size¸¦ 96 Kbyte(8192x12/1024)±îÁö È®ÀåÇÒ ¼ö ÀÖ´Ù.
        - 'indirect' pointer 3 °³
          'single indirect' data blockÀº file size¸¦ 96 Kbyte¿¡¼­ 16 Mbyte±îÁö ÇÒ´çÇÒ ¼ö ÀÖÀ½.
          'double indirect' data blockÀº 16 Mbytes¿¡¼­ 32 Gbytes±îÁö ÇÒ´ç °¡´ÉÇÔ. 
          'triple indirect' data blockÀº SunOS¿¡¼­´Â »ç¿ëµÇÁö ¾ÊÀ½.
        - file¿¡ ÀÇÇØ »ç¿ëµÈ physical blockÀÇ ¼ö
 
      ¡Ø fileÀÇ Å©±â¿Í 'inodeÀÇ data block pointer'ÀÇ °ü°è 
         - fileÀÇ ÃÖ´ë Å©±â : ¨ç + ¨è + ¨é ÇÏ¸é µÈ´Ù.
              ¨ç 'direct' pointer 12 °³ : 8192 x 12 / 1024 = 96 Kbyte
              ¨è 'single indirect' pointer 1 °³ : 8192 x 2048 / 1024 = 16 Mbyte
              ¨é 'double indirect' pointer 1 °³ : 8192 x 2048 x 2048 /1024 = 32 Gbyte
         - À§ °è»ê¿¡¼­ 2048Àº ¾î¶»°Ô ³ª¿Â °ÍÀΰ¡ ?
            data 1 blockÀ» °¡¸®Å°´Â pointerÀÇ size°¡ 4 byteÀ̱⿡,
            'indirect' pointer°¡ °¡¸®Å² 8192 byte Å©±âÀÇ data block 1°³°¡ °¡Áú¼ö ÀÖ´Â
            4 byte Â¥¸® pointer°¹¼ö´Â  2048°³°¡ µÇ´Â °ÍÀÌ´Ù.

2. UNIXÀÇ file Á¾·ù

   1) ordinary file(ÀÏ¹Ý file)
      * ÀÌ fileÀº OS¿¡ ÀÇÇØ ±ÔÁ¤µÈ Ư¼öÇÑ ±¸Á¶¸¦ °®Áö ¾Ê´Â fileÀ» ÁöĪÇÏ´Â °ÍÀ¸·Î
        ÀϹÝÀûÀÎ data file, program source fileµîÀÇ 'text file'°ú
        ½ÇÇà °¡´ÉÇÑ 'binary file'ÀÌ ÀÖ´Ù.
      * ´Ù¸¥ OS¿¡ ºñÇØ UNIXÀÇ fileÀº ¸Å¿ì simpleÇÏ´Ù.
        ordinary fileÀÇ '³»¿ë'°ú 'À̸§'°£¿¡´Â ¾Æ¹« ¿¬°üÀÌ ¾ø°í,
        °¢ file µÚ¿¡ È®ÀåÀÚ¸¦ »ç¿ëÇÑ´Ù¸é ÀÌ´Â »ç¿ëÀÚÀÇ ÆíÀÇÀÏ »Ó
        ¾î¶² °íÁ¤ÀûÀÎ Àǹ̸¦ ´ã°í ÀÖ´Â °ÍÀº ¾Æ´Ï´Ù.
        DOS¿¡¼­ ½ÇÇà fileÀÇ È®ÀåÀÚ¸¦ .COM, .EXE, .BAT·Î ÇÑÁ¤ÇØ ³õ¾Ò´Âµ¥
        UNIX¿¡¼­´Â ÀÌ·± Á¦ÇÑÀÌ ÀüÇô ¾ø´Ù.
        µû¶ó¼­ ordinary file¿¡ ´ã°ÜÁ® ÀÖ´Â ³»¿ëÀ¸·Î¼­ ordinary fileÀÌ ±¸º°µÉ »Ó
        '¸ðµÎ µ¿ÀÏÇÑ ÇüÅÂÀÇ file·Î Ãë±Þ'¹Þ´Â´Ù.
        ÀÌó·³ UNIX´Â fileÀÇ ±¸Á¶¸¦ OS¿¡¼­ °áÁ¤ÇÏÁö ¾Ê´Â´Ù. ÀÌ Á¡ÀÌ ´Ù¸¥ OS¿Í´Â ´Ù¸¥ Á¡.
      * file¸íÀ» Áִµ¥ ¾à°£ÀÇ ¿¹¿Ü´Â ÀÖ´Ù.
        ¾î¶² ÇÁ·Î±×·¥µéÀº Ưº°ÇÑ È®ÀåÀÚ¸¦ ¿ä±¸ÇÏ´Â °æ¿ì°¡ ÀÖ´Ù.
        ¿¹¸¦ µé¸é, ¾î¼Àºí·¯´Â .s·Î ³¡³ª´Â assembly code¸¦ ÀÔ·Â ¹Þ¾Æ
        .o¿Í °°Àº object code¸¦ ¸¸µé¸ç linker/loader´Â .o ÇüÅÂÀÇ fileÀ» ÀÔ·ÂÀ¸·Î ¿ä±¸ÇÑ´Ù.
      * ±×·¸Áö¸¸ UNIX´Â ±âº»ÀûÀ¸·Î OSÀÇ °£¼·À» ¹ÞÁö ¾Ê°í
        »ç¿ëÀÚ°¡ ¿øÇϴ´ë·Î ·¹ÄÚµåÀÇ ±¸Á¶¸¦ ÀÚÀ¯·Ó°Ô ±¸¼ºÇÒ ¼ö ÀÖ¾î
        ÇÁ·Î±×·¡¸Ó¿¡°Ô´Â Æí¸®ÇÔÀ» Á¦°øÇÑ´Ù.
        »ç¿ëÀÚ´Â ÇÑ fileÀÇ ³»ºÎÀû ÀúÀå ±¸Á¶¿¡ Á÷Á¢ ½Å°æ¾²Áö ¾Ê¾Æµµ file Á¶ÀÛÀ» ÇÒ ¼ö ÀÖ´Ù. 
      * UNIXÀÇ file I/O´Â °¢ fileÀÌ µð½ºÅ©¿¡ ¾î¶»°Ô ÀúÀåµÇ¾î Àִ°¡¸¦ ½Å°æ ¾²Áö ¾Ê°í 
        ¾×¼¼½º µÇµµ·Ï kernel¿¡¼­  bufferingÀÛ¾÷À» ÇØ ÁØ´Ù.
        ÀÌ´Â fileÀ» ´Ü¼øÈ÷ byte·Î ¿¬°áµÈ ÇüÅ·Π°£ÁÖÇÒ ¼ö ÀÖ°Ô ÇØ ÁØ´Ù.
        Áï ½Ã½ºÅÛ¿¡¼­ ÇÑ fileÀº data blockÀ¸·Î ³ª´µ¾îÁ® µð½ºÅ©»óÀÇ ¿©±â Àú±â¿¡ ÀúÀåµÇ¾î ÀÖÁö¸¸
        »ç¿ëÀÚ¿¡°Ô´Â ³í¸®ÀûÀ¸·Î ¸ðµç ¹ÙÀÌÆ®µéÀÌ ÇÑÁÙ·Î ¿¬°áµÈ °Íó·³ º¸ÀδÙ.
      * ¿ä¾àÇϸé, 
        ¨ç fileÀ̶õ squentialÇÏ°Ô or randomÇÏ°Ô accessµÉ ¼ö ÀÖ´Â "logical sequence bytes"ÀÌ´Ù.
        ¨è fileÀÇ ±¸Á¶´Â À̸¦ ¾×¼¼½ºÇÏ´Â ÇÁ·Î±×·¥¿¡ ÀÇÇÏ¿© Á¦¾îµÇ´Â °ÍÀÌÁö
           OS¿¡ ÀÇÇØ Á¦¾îµÇ´Â °ÍÀÌ ¾Æ´Ï´Ù.

   2) directory file
      * µð·ºÅ丮´Â file À̸§µéÀÇ ÀúÀå â°í¿Í °°´Ù.
        µð·ºÅ丮 °³³äÀº DOS¿Í °°Àº OS¸¦ »ç¿ëÇغ» »ç¿ëÀÚµµ ¸ðµÎ Ä£¼÷ÇÒ °ÍÀÌ´Ù.
        ¿Ö³Ä¸é UNIXÀÇ file ±¸Á¶ÀÎ Æ®¸® ÇüÅÂÀÇ °èÃþÀûÀÎ ±¸Á¶´Â ´Ù´Â OS¿¡¼­µµ ¸ð¹æÀ» ¸¹ÀÌ 
        ÇÏ¿´±â ¶§¹®ÀÌ´Ù.
      * µð·ºÅ丮´Â °¢ fileÀÇ À̸§°ú ±× file ÀÚü¸¦ ¼­·Î ¿¬°á½ÃÄÑ ÁÖ´Â ¿ªÇÒÀ» ÇϹǷÎ
        file ½Ã½ºÅÛÀÇ ÀüüÀû ±¸Á¶¸¦ °áÁ¤Áö¾î ÁØ´Ù.
      * µð·ºÅ丮´Â ¸¹Àº fileµéÀ» Æ÷ÇÔÇÏ¸ç ¶ÇÇÑ ¸¶Âù°¡Áö·Î ¿©·¯ fileµéÀ» °®´Â ¼­ºê µð·ºÅ丮¸¦
        °¡Áú ¼ö ÀÖ´Ù.
      * µð·ºÅ丮´Â ordinary file°ú ±¸º°µÇ´Â °³³äÀÌÁö¸¸ ÀÐÈú ¶§´Â ordinary file°ú ¶È°°ÀÌ ÇൿÇÑ´Ù.
      * ¸ðµç µð·ºÅ丮´Â Àû¾îµµ '.'¿Í '..'¶ó´Â fileÀ» °¡Áö°í ÀÖ¾î¾ß Çϴµ¥.
        '.'Àº µð·ºÅ丮 file ÀÚü¸¦ Áö½ÃÇÏ°í '..'Àº ±× µð·ºÅ丮ÀÇ »óÀ§ µð·ºÅ丮¸¦ ³ªÅ¸³½´Ù.
        À̵é fileµéÀ» ÀÌ¿ëÇÏ¿© Àüü file ½Ã½ºÅÛÀ» ·çÆ®¿¡¼­ºÎÅÍ Â÷·Ê·Î ³»·Á¿À¸é¼­ ¸ðµç fileÀ»
        Ž»öÇÒ ¼ö ÀÖ´Ù.
      * pathname(°æ·Î¸í)
        ¸ðµç fileÀº ÀÚ½ÅÀÌ ¼ÓÇØ ÀÖ´Â µð·ºÅ丮°¡ ÀÖÀ¸¹Ç·Î ¾î´À ÇÑ fileÀ» ÁöÁ¤Çϱâ À§Çؼ­´Â
        ±× file¸íÀº ¹°·Ð ±×fileÀÌ ¼ÓÇØ ÀÖ´Â µð·ºÅ丮¸íµµ ÁöÁ¤ÇØ¾ß ÇÑ´Ù.
        µû¶ó¼­ fileÀ» ÁöÁ¤Çϱâ À§Çؼ­´Â °ü·Ã µð·ºÅ丮¸í°ú file¸í ±×¸®°í '/'·Î ÀÌ·ç¾îÁö´Â
        pathname(°æ·Î¸í)ÀÌ ÇÊ¿äÇÏ´Ù.
           - Àý´ë path
           - »ó´ë path

   3) special file(Ư¼ö file)
      * special fileÀº UNIX filesystemÀÇ °¡Àå Ưº°ÇÑ °æ¿ì Áß ÇϳªÀÓ.
        UNIX´Â 'fileÀÇ °³³ä'À» ½Ã½ºÅÛ¿¡ ¿¬°áµÇ¾î ÀÖ´Â 'ÁÖº¯ÀåÄ¡¿¡±îÁö È®Àå'½ÃŲ´Ù.
        printer, disk, tape, main memory µî°ú °°Àº ÁÖº¯ÀåÄ¡µéÀº file ±¸Á¶»óÀÇ
        file À̸§À¸·Î ³ªÅ¸³­´Ù.
        Áï °¢°¢ÀÇ I/O device´Â Àû¾îµµ ÇϳªÀÇ special file¿¡ ¿¬°áµÈ´Ù.
      * special fileÀº ordinary file°ú ´Þ¸®
        °ü·Ã device¸¦ ±¸µ¿ÇÏ¿© µ¥ÀÌŸ¸¦ read/writeÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â  channelÀ» Çü¼ºÇØ ÁØ´Ù. 
        device driver¿Í ¿¬°áÇØ ÁÖ´Â special file·Î /dev¹Ø¿¡ ÀÖÀ½.
        systemÀÇ ¸ðµç input/output(I/O)´Â /dev directory¸¦ ÅëÇØ ÀÌ·ç¾î(channel)µÈ´Ù.
      * "mknod" command·Î special fileÀ» ¸¸µê. 

   4) socket(BSD)
      * process°£¿¡ communicationÀ» ºü¸£°í ½Å·Ú¼º ÀÖ°Ô ¼öÇàÇØ ÁØ´Ù.
        UNIX¿¡´Â ¿©·¯ Á¾·ùÀÇ socketµéÀÌ ÀÖÁö¸¸ ´ëºÎºÐ 'network'À» °æÀ¯ÇÏ¿©
        ¼­·Î ´Ù¸¥ host°£ process¸¦ connectionÇØ Áִµ¥ »ç¿ëµÈ´Ù.
        ¹°·Ð single hostÀÇ process°£ non-network communicationÀ» À§Çؼ­µµ »ç¿ë °¡´ÉÇÏ´Ù.
      * socketÀº ƯÁ¤ host¿¡ localÇÏ°Ô ÀÖÀ¸¸é¼­
        'network port'º¸´Ù´Â filesystem object¸¦ ÅëÇØ ÂüÁ¶µÈ´Ù.
      * ºñ·Ï socket fileÀº directory entry·Î ´Ù¸¥ processµé¿¡°Ô º¸¿©ÁöÁö¸¸
        socket connection¿¡ Æ÷ÇÔµÇÁö ¾ÊÀº processµéÀº read/writeÇÒ ¼ö ¾ø´Ù.
      * socketÀ» »ç¿ëÇÏ´Â À¯ÀÏÇÑ UNIX programÀº printing systemÀ» Ãë±ÞÇÏ´Â °ÍµéÀÌ´Ù.
      * 'socketÀ̶ó´Â file type'Àº 4.3+BSD¿¡¼­¸¸ »ç¿ëµÊ.
        SVR4¿¡¼­µµ IPC(interprocess communication)À» À§ÇØ socketÀ» »ç¿ëÇÏÁö¸¸,
        ÀÌ´Â kernel ³»ºÎ¿¡ Á¸ÀçÇÏ´Â soketÀ̶ó´Â file typeÀÌ ¾Æ´Ï°í
        socket functionµéÀ» library level¿¡¼­ Á¦°øÇÏ´Â °ÍÀÌ´Ù. 
      * "socket" system call¿¡ ÀÇÇØ »ý¼º
        "rm" or "unlink" system call¿¡ ÀÇÇØ Áö¿öÁü.

   5) Named Pipe(FIFOs - ATT)
      * µ¿ÀÏ host¿¡¼­ ¼öÇàµÇ´Â ¼­·Î °ü·ÃÀÌ ¾ø´Â process°£¿¡ data¸¦ ±³È¯ÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù.
      * "mknod"·Î »ý¼º

   6) Hard link
      * hard link¸¦ ÀÌÇØÇϱâ À§Çؼ­´Â linkÀÇ °³³äÀ» ¿ì¼± ÀÌÇØÇØ¾ß ÇÑ´Ù.
      * "link"ÀÇ °³³ä: 
        - "link"¶ó´Â °³³äÀ» ÀÌÇØÇÏ´Â ÇÑ ¹æ¹ýÀº
          filesystemÀÇ directory°¡ ¾î¶»°Ô °èÃþÀûÀ¸·Î ±¸Á¶¸¦ Çü¼ºÇÏ°í ÀÖÀ¸¸ç
          ¾î¶»°Ô "cd" command·Î ¿©·¯ directory¸¦ À̵¿ÇÒ ¼ö Àִ°¡¸¦ ÀÌÇØÇÏ´Â °ÍÀÌ´Ù.
        - °¢ directory´Â ±âº»ÀûÀ¸·Î ÃÖ¼ÒÇÑ µÎ °³ÀÇ fileÀ» °¡Áø´Ù.
             ¨ç directory ÀÚ½ÅÀ» Ç¥ÇöÇÏ´Â dot(.)
             ¨è ÀÚ½ÅÀÇ parent directory¸¦ Ç¥ÇöÇÏ´Â  dot-dot(..)
        - ÀÌ µÎ fileÀÌ directoryµéÀ» ¿¬°áÇÏ¿© filesystemÀÇ °èÃþÀû ±¸Á¶¸¦ Çü¼ºÇÑ´Ù.
          °¢ directoryÀÇ parent¿Í sub-directory¸¦ dot(.)¿Í dot-dot(..) file·Î ¿¬°á ÇÏ´Â °ÍÀÌ´Ù. 
          Áï ¨ç 'current directoryÀÇ dot-dot(..) file'ÀÇ inode
                = 'parent directoryÀÇ dot(.) file'ÀÇ inode
             ¨è 'current directoryÀÇ dot(.) file'ÀÇ inode
                = 'sub directoryÀÇ dot-dot(..) file'ÀÇ inode
        - sub directory°¡ ¿©·¯ °³ÀÎ directoryÀÇ °æ¿ì
          sub directoryµéÀÇ dot-dot(..) fileÀÇ inode´Â
          À̵é parent directoryÀÇ dot(.) fileÀÇ inode¿Í °°À» °ÍÀÌ´Ù.
          ´Þ¸® Ç¥ÇöÇϸé, sub directoryµéÀÇ °¢ 'drectory entry'´Â
          current directoryÀÇ dot-dot(..) file Áï parenet directoryÀÇ inode¸¦ °¡¸®Å°´Â °ÍÀÌ´Ù.
        - ÀÌó·³ 'ÇϳªÀÇ inode'¿¡ '¿©·¯ °³ÀÇ (direcory) file'ÀÌ '¿¬°á(link)'µÇ¾î ÀÖÀ» ¼ö ÀÖ°í,
          ÀÌó·³ '¿¬°á(link)µÈ °¹¼ö'¸¦ 'link °¹¼ö'¶ó ÇÑ´Ù.
      * hard link¶õ ?
        - À§¿¡¼­ directory¸¦ µé¾î ¼³¸íÇÑ linkÀÇ °³³ä¼­
          ¿©·¯°³ÀÇ (directory) fileµéÀÌ
          ÇÑ °³ÀÇ inode number¸¦ »ç¿ëÇØ ¼­·Î ¿¬°áµÉ ¼ö ÀÖÀ½À» º¸¾Ò´Ù.
        - hard link¶õ ÀÌ·¯ÇÑ link¿Í °°Àº °³³äÀÌ´Ù.
          ÇÑ fileÀÇ inode¿¡ ¿©·¯ fileµéÀÇ inode¸¦ ÀÏÄ¡½ÃÅ´À¸·Î½á
          ¼­·Î¸¦ ¿¬°á(link)½ÃÅ°´Â ¹æ½ÄÀÎ °ÍÀÌ´Ù.
        - hard link´Â 'directory file'ÀÇ link ±¸Á¶¸¦ 'ordinary file'·Î È®Àå½ÃŲ °ÍÀÌ´Ù.
          Áï "ln"À̶ó´Â command¸¦ »ç¿ëÇÏ¿© 'link¶ó´Â ³»ºÎÀû Ç¥Çö'À»
          ½ÇÁ¦ (hard) linkµÈ fileµé·Î º¸¿© ÁØ´Ù.
        - hard link¸¦ È®ÀÎÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀº 
          symbolic linkó·³ filename¿¡¼­ È®ÀÎÇÒ ¼ö ÀÖ´Â °ÍÀÌ ¾Æ´Ï°í, 
          'link °¹¼ö'°¡ 2 ÀÌ»óÀΰ¡¸¦ È®ÀÎÇÏ°í
          inode number°¡ °°Àº fileÀ» ã¾Æ¾ß ÇÏ´Â °ÍÀÌ´Ù.
        - hard link´Â fileÀÌ Á¸ÀçÇÒ ¶§¸¸ ¸¸µé¾î Áú ¼ö ÀÖ´Ù.
          Áï inode°¡ ¹Ì¸® Á¸ÀçÇÏ°í ÀÖ¾î¾ß 'µ¿ÀÏ inode'¸¦ °®´Â fileÀ» ¸¸µé ¼ö Àִ°Í.
        - filesystemÀ» crossÇÏ¿© hard link¸¦ Çü¼ºÇÒ ¼ö´Â ¾ø´Ù.
        - hard linkµÈ fileÁß Çϳª¸¦ Áö¿ü´Ù°í ÇÏ¿© ½ÇÁ¦ ±× fileÀ» Áö¿ü´Ù°í ÇÒ ¼ö ÀÖ´Â °ÍÀº ¾Æ´Ï´Ù.
          hard linkµÇ¾î ÀÖ´Â ´Ù¸¥ fileÀÌ µ¿ÀÏ inode¸¦ »ç¿ëÇϱ⠶§¹®ÀÌ´Ù.
          fileÀ» Áö¿ü´Ù ÇÔÀº ±× fileÀÌ »ç¿ëÇÏ°í ÀÖ´Â indoe°¡ releaseµÊÀ» ÀǹÌÇÑ´Ù.
         
        
           
   
   7) Symbolic link(BSD)
      * ÇÑ fileÀ» ´Ü¼øÈ÷ '´Ù¸¥ À̸§(pathname)'À¸·Î Áö½ÃÇÏ´Â file typeÀÌ´Ù. 
      * 

  
Revision History
Created        on Jan. 6 ,1993