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