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