µÚ¶þÕ ÎļþϵͳºÍÉ豸Çý¶¯³ÌÐò
9wMLinuxÁªÃË9wMLinuxÁªÃËÕâÕÂÖ÷Òª½éÉÜÎļþϵͳºÍÌØÊâµÄÉ豸ÎļþÒÔ¼°ËüÃǵĶÔÓ¦¹ØÏµ¡£
9wMLinuxÁªÃË9wMLinuxÁªÃË2..1 diskÉ쵀 unix file system µÄ»ù±¾ÖªÊ¶
9wMLinuxÁªÃËÊ×ÏȽéÉÜһϾµäµÄunix file systemµÄ˼ά·½·¨¡£
9wMLinuxÁªÃËdisk µÄ partition¾ÍÊÇ´Ó0µ½512byteµÄÁ¬Ðø³¤¶ÈµÄblockµÄ¶«Î÷¡£ÕâÀïÓÐ
9wMLinuxÁªÃË1.file/directoryÓйصĹ̶¨³¤¶ÈµÄÐÅÏ¢,i-node
9wMLinuxÁªÃË2.file/directoryµÄ±¾Ì壬data block
9wMLinuxÁªÃ˵ÄÁ½Ñù²»Í¬µÄ¶«Î÷¡£partitionµÄÇ°ÃæµÄ¸½½ü¿é(block#16 ,1--15ÓÃÓÚboot
9wMLinuxÁªÃËprogram )¾ÍÊÇi-node,data blockÓõÄÁìÓòµÈµÈµÄ¿ªÊ¼Î»ÖÃ(blockºÅ)
9wMLinuxÁªÃ˺ͳ¤¶È(blockÊýÁ¿)µÈµÄ¼Ç¼£¬½Ð×ösuper-block¡£Ò»¸öblock¿ÉÄܵÄÈÝÁ¿Ö»
9wMLinuxÁªÃËÄÜÓй̶¨ÊýÄ¿µÄi-node£¬ËùÒÔÈç¹û·ÖÅäÁ˹̶¨µÄi-node,ÊÕ¼Á˽ڵãºÅºÍ½Ú
9wMLinuxÁªÃ˵ãµÄ¿éºÅºÍ¿éµÄλÖþͿÉÒÔ¼ÆËã³öÀ´¡£
9wMLinuxÁªÃËi-node¾ÍÊÇ
9wMLinuxÁªÃË¡£±íÃ÷i-nodeµÄÖÖÀà(file ,direstory,deviceµÈ)
9wMLinuxÁªÃË¡£Õâ¸ö½Úµã²Î¿¼µÄ´ÎÊý(Ŀ¼Êý)
9wMLinuxÁªÃË¡£²Î¿¼£¬×÷³É£¬±ä»¯µÄʱ¼ä
9wMLinuxÁªÃË¡£È¨ÏÞ
9wMLinuxÁªÃË¡£ËùÓÐÕßµÄuser id / group id
9wMLinuxÁªÃË¡£±¾ÌåµÄ³¤¶È
9wMLinuxÁªÃË¡£ÊÕ¼¯±¾ÌåµÄdata blockµÄblockºÅÂëµÄ¹Ì¶¨³¤¶ÈµÄ¶ÔÓ¦±í
9wMLinuxÁªÃ˵ÄһЩ¼Ç¼¡£ÒòΪdata blockµÄ¶ÔÓ¦±íÊǹ̶¨µÄ¹ØÏµ£¬±È
9wMLinuxÁªÃËÈç10¸ö£¬×¾ÍÄܹ»×÷³ö512*10=5kΪֹµÄfile¡£
9wMLinuxÁªÃË9wMLinuxÁªÃ˵±Îļþ±È¿é´óµÄʱºò£¬unix¾Í²ÉÓóÉ×éÁª½áµÄ·½Ê½¶ÔËüÃǽøÐйÜÀí¡£¾ÍÊÇ
9wMLinuxÁªÃ˰ÑËùÓеĿÕÏпéÒÔÒ»¶¨ÊýĿΪһ×éµÄ·½·¨×÷³Éµ¥Ïò¿ÕÏпéstacker¡£
9wMLinuxÁªÃËÌØ±ðµØ£¬ÎļþµÄ´ÓÏÈÍ·µÄbyteλÖÿªÊ¼ºÍi-nodeÄڵĶÔÓ¦±íÓÐ×ÅÃÜÇеĹØÏµ¡£
9wMLinuxÁªÃ˶øÇÒ£¬¶ÔÓÚi-nodeµÄÊäÈëÊä³ö£¬¿ÉÒÔ¶ÔÓ¦Ö¸¶¨Î»ÖõÄÊý¾Ý¿é½øÐжÁд¡£ÖØÒª
9wMLinuxÁªÃ˵ÄÊÇ£¬ºËÐÄ¿ÉÒÔÒÀÕÕÕâ¸ö¹ÜÀí±í¶Ôio×°ÖýøÐйÜÀí¡£
9wMLinuxÁªÃËunix¶ÔioÉ豸µÄ²Ù×÷Ò²ÊÇ×÷Ϊ£¨ÌØÊ⣩Îļþ½øÐеġ£¶ÔÓÚÓÃi-node½øÐÐ
9wMLinuxÁªÃËÃèÊöµÄioÉ豸£¬data blockÊý¾Ý¿éµÄ¶ÔÓ¦±í¾Íû±ØÒªÁË¡£Õâ¸ö²¿·ÖµÄioÉ豸
9wMLinuxÁªÃ˵Äʶ±ð¾Íͨ¹ýdeviceºÅÂëÀ´½øÐС£ÏòÕâЩ¶Ôi-node½øÐÐÊäÈëÊä³ö´¦ÀíµÄ£¬
9wMLinuxÁªÃ˾ÍÓÖÉ豸Çý¶¯ºÅÇø±ð£¬À´½øÐÐdevice driverÇý¶¯¡£
9wMLinuxÁªÃËÄÇô£¬½ÚµãÔõôµÄ½øÐвéÕÒÄØ£¿partitionµÄ×î³õµÄĿ¼£¨¸ùĿ¼£©¾ÍÊÇ£¬
9wMLinuxÁªÃË´ÓµÚ¶þ¸öi-node¿ªÊ¼£¬Ò»¸öÒ»¸ö˳×Å½Úµã½øÐвéÕÒ¡£
9wMLinuxÁªÃ˱ÈÈ磬¶ÔÓÚĿ¼/uuu/vvv/.../yyy/zzzµÄ²éÕÒ·½Ê½£¬ÓÐÕâÖÖ¹ØÏµ£º
9wMLinuxÁªÃË¡£i-node #2 Ëù´æ·ÅµÄÊÇroot directory¡£¶ÁÈëËüµÄ±¾Ì壬¾Í¿ÉÒÔÕÒµ½
9wMLinuxÁªÃËÏàÓ¦µÄuuuËù¶ÔÓ¦µÄi-node¡£
9wMLinuxÁªÃË¡£¶ÁÈëÕâ¸öi-nodeËù´æ·ÅµÄdirectoryµÄi-node±¾Ì壬ÕÒµ½ÏàÓ¦µÄvvv½Úµã¡£
9wMLinuxÁªÃË......
9wMLinuxÁªÃ˲éÕÒ¶ÔÓ¦yyyµÄ½Úµã
9wMLinuxÁªÃË¡£¶ÁÈëÕâ¸ö½ÚµãµÄ±¾ÌåÐÅÏ¢£¬ÕâÀï°üº¬Ä¿Â¼±¾ÌâµÄÄÚÈÝ£¬ÕâÑù¾Í¿ÉÒÔÕÒµ½
9wMLinuxÁªÃËzzzËù¶ÔÓ¦µÄi-node¡£
9wMLinuxÁªÃËĿ¼ÀïÃæÓÉÓڼǼÁ˶ÔÓ¦ÎļþÃûµÄ½ÚµãºÅ£¬ËùÒÔ£¬Ò²ÓпÉÄÜͬһ¸ö½ÚµãºÅ
9wMLinuxÁªÃ˸ù¾ÝÎļþÃû²»Ò»Ñù£¬¾Í¿ÉÒÔÕÒµ½²»Í¬µÄĿ¼Ãû¡£Õâ¾ÍÊÇÓ²Á¬½Ó(hard link).
9wMLinuxÁªÃ˵«ÊÇ£¬½ÚµãºÅÓÐÖ»´æÔÚÓÚ½ÚµãËùÔڵķÖÇøµÄº¬Ò壬ËùÒÔ£¬²»Í¬µÄ·ÖÇø£¬
9wMLinuxÁªÃËÕâÖÖÓ²Á¬½Ó¾Í²»¾ßÓдæÔڵĿÉÄÜÐÔ¡£ÎªÁ˽â¾öÕâ¸öì¶Ü£¬¾ÍÓÐÁË·ûºÅÁ¬½Ó
9wMLinuxÁªÃË£¨symble link£©µÄ˵·¨¡£µ±½ÚµãÊÇÊäÈë·ûºÅÁ¬½ÓµÄʱºò£¬·ûºÅÁ¬½Ó¾Í°üº¬
9wMLinuxÁªÃËÁËÕâ¸ö½ÚµãµÄdata blockËùÖ¸¶¨µÄ·¾¶Ãû¡£µ«ÊÇ£¬¿ÕÁ¬½ÓºÍloopÁ¬½ÓÕâÖÖ
9wMLinuxÁªÃËÇé¿öÒ²ÊÇÔÊÐíµÄ£¬ËùÒÔºËÐÄÒªÖ¸¶¨Ñ»·Á¬½ÓµÄ×î´ó´ÎÊý¡£¾ßÌåÓɲÎÊý
9wMLinuxÁªÃËMAXSYMLINKS(@sys/param.h)Ö¸¶¨¡£
9wMLinuxÁªÃËÕâÑù£¬¶à¸ö·ÖÇø½¨Á¢Ò»¸öÎļþϵͳ¾ÍÓпÉÄÜÁË¡£Æô¶¯ºËÐĵķÖÇø×÷Ϊһ¸ö
9wMLinuxÁªÃËÒÑ´æµÄÎļþϵͳ£¬ÆäËûµÄ·ÖÇø¾Í¼Þ½Óµ½Ä¿Â¼²ãÉÏÃæ¡£Õâ¸ö²Ù×÷¹ý³Ì¾ÍÊÇmount¡£
9wMLinuxÁªÃËÀûÓÃmountÖ¸Á¾Í¿ÉÒÔʵÏÖÉÏÃæµÄ²Ù×÷¡£µ«ÊÇ£¬mount֮ǰµÄĿ¼£¬ÔÚmountºó
9wMLinuxÁªÃ˾͸øÆÁ±ÎÁË£¬Ö±µ½mount½áÊø£¬ÄÇЩĿ¼¾Í¿ÉÒÔÔÙÏÖ¡£
9wMLinuxÁªÃËÒÔÉϾÍÊǾµäµÄunixÎļþϵͳÀíÂÛ¡£µ«ÊÇ£¬¶ÔÓÚ¶ÁÈëÁËi-node£¬¾ÍÈ¥¶Á
9wMLinuxÁªÃËdata block £¬ÕâÖÖÇé¿ö£¬¶ÔÓÚÒ»¸ö±È½Ï´óµÄ·ÖÇø£¬Ó²ÅÌ´ÅÍ·Ïòdisk headµÄ¾à
9wMLinuxÁªÃËÀë¾ÍÌ«´óÁË¡£×ܵÄÀ´Ëµ£¬·ÃÎÊʱ¼ä¾Í»á±ä³¤¡£ÔÚÕâÀïÓÐһЩָµ¼Ë¼Ï룺
9wMLinuxÁªÃË¡£·ÖÇøÒª±È½ÏС£¬¶à·ÖÐ¡Çø
9wMLinuxÁªÃË¡£Á˽ⳬ¼¶¿éµÄµØÎ»£¬³¬¼¶¿é¼Ç¼ÁË·ÖÇøµÄÐÅÏ¢£¬¿¼ÂÇÓÉÓÚ½éÖʵÄÔÒò¶ø
9wMLinuxÁªÃËʹÕâ¸ö³¬¼¶¿éÔì³ÉË𺦣¬ËùÒÔ£¬ÔÚ·ÖÇøÄÚ²¿¾Í±ØÐëΪËü×¼±¸¶à¼¸¸ö¿½±´¡£
9wMLinuxÁªÃË¡£Ä¿Â¼ºÍËüϲãµÄÎļþ£¬ÒªÔÚÏàͬµÄÁìÓòÄÚ·ÅÖá£
9wMLinuxÁªÃË¡£È·±£µ¥Î»data blockÒª±È´ÅÅ̵Äblock´ó¡£
9wMLinuxÁªÃË¿¼ÂÇÁËһЩ¶«Î÷ºó£¬¾¹ý¸ÄÁ¼±ê×¼£¬freebsd¾Í²ÉÓÃÒ»¸ö½Ð×öFFSµÄÎļþϵ
9wMLinuxÁªÃËͳ£¨Fast File System£©,µ«ÕâÖ»ÊÇi-nodeÁìÓò/dataÁìÓòµÄÅäÖ÷½·¨µÄ±ä»¯£¬»ù
9wMLinuxÁªÃ˱¾µÄ¿¼ÂÇ·½·¨²¢Ã»Óб䡣¶Ô´ÅÅÌ·ÖÇø½øÐÐÎļþϵͳµÄ¹¹ÔìµÄ³õʼ»¯ÓÉÃüÁînewfs
9wMLinuxÁªÃËÌṩ¡£¿´¿´ËüµÄsource¾ÍÖªµÀÔõôÅäÖõÄÁË¡£ÆäËûµÄ¹¹Ôì(......)¶ÔÓ¦ÓÚkernel
9wMLinuxÁªÃ˵Äsource£¬¶ÔÓÚ¹¹³Éboot programµÄÎļþdisk.cºÍsys.c(@i386/boot/biosboot)
9wMLinuxÁªÃ˱Ƚϼòµ¥Ò×¶®£¨µ¥´¿ÐÔ£©¡£
9wMLinuxÁªÃËÉÏÃæ½²ÊöµÄi-node¶ÔdiskµÄpartitionµÄ¼Ç¼ÐÎʽ£¬ÏêϸµÄ£¨source£©ÔÚ
9wMLinuxÁªÃËstruct dinode(@ufs/ufs/dinode.h)ÀïÃæÓС£ÔÚºËÐÄÄÚ²¿Ê¹Óõ쬰üº¬Õâ¸ö¶«Î÷
9wMLinuxÁªÃ˵ÄÊÇstruct inode(@ufs/ufs.inode.h)¡£
9wMLinuxÁªÃË9wMLinuxÁªÃËÃèÊöioÉ豸µÄÎļþ½ÐÌØÊâÎļþ(special file)£¬Ëû¶ÔÓ¦µÄi-nodeÓÐÁ½¸öÖÖ
9wMLinuxÁªÃËÀࣺ
9wMLinuxÁªÃË¡£¿éÐÍ(block)
9wMLinuxÁªÃ˺Í×°ÖõĹÌÓеÄÊý¾Ý¼Ç¼µÄµ¥Î»£¨´ó¶àÊýµÄÇé¿öÊÇ512byte£©Î޹ء£¶Áд
9wMLinuxÁªÃ˵Ä×îСµ¥Î»ÊÇ1byte£¬¿ÉÒÔÔÚÈÎÒâµÄ³¡ËùÀïÈÎÒⳤ¶ÈµÄdata¡£ºËÐĶԸ÷¸ö
9wMLinuxÁªÃËblockÐ͵ÄÌØÊâÎļþ½øÐй̶¨µÄ¼Ç¼µ¥Î»³¤¶È£¨±¶Êý£©½øÐлº³å(buffer)
9wMLinuxÁªÃ˹ÜÀí£¬ÕâÑù¾Í¿ÉÒÔ´¦ÀíÈÎÒⳤ¶ÈµÄ¶ÁдÁË.
9wMLinuxÁªÃË¡£ÎÄ×ÖÐÍ(char)
9wMLinuxÁªÃ˶ÁдµÄ»ù±¾µ¥Î»ÊÇ£¬Êܵ½×°ÖùÌÓеÄdate¼Ç¼µ¥Î»³¤µÄÏÞ¶¨¡£Ã»ÓÐblock
9wMLinuxÁªÃËÐ͵Ļº³å¹ÜÀí£¬¶ÔÓ¦ÓÚ×°ÖõÄÎïÀíÌØÐÔ£¬¶ÁдÊôÓÚרÓ᣻òÕß˵£¬ÊǶÁд
9wMLinuxÁªÃËÁ½Óá£
9wMLinuxÁªÃ˳ýÁËÍøÂç½Ó¿ÚÖ®Í⣬io×°ÖÿÉÒÔÈ«²¿·ÖΪÎÄ×ÖÐͺͿéÐÍÁ½¸ö´óÀà¡£×ܵÄÀ´Ëµ£¬
9wMLinuxÁªÃË´ÅÅ̲Ù×÷µÄÁ½Ñù¶¼Ó㬵«ÆäËûµÄio×°ÖÃÖ»ÓÐÎÄ×ÖÐÍ¡£»¹ÓоÍÊÇһЩû¶ÔÓ¦ÎïÀíÉè
9wMLinuxÁªÃ˱¸µÄkernel modulesÌṩµÄÐéÄâÉ豸ҲÓУ¬ËüÃǶÔÓ¦×ÅÎÄ×ÖÐ͵ÄÌØÊâÎļþ¡£ÌØÊâ
9wMLinuxÁªÃËÎļþϰ¹ß·ÅÔÚĿ¼/devÀïÃæ¡£
9wMLinuxÁªÃË9wMLinuxÁªÃ˶ÔÓÚÌØÊâÉ豸ÎļþµÄi-nodeÓÐblockºÍchatÁ½¸öÀ࣬É豸ͨ¹ýÇý¶¯ºÅ½øÐмǼ
9wMLinuxÁªÃË¡
LinuxÁªÃËÊÕ¼¯ÕûÀí ,תÌùÇë±êÃ÷ÔʼÁ´½Ó,ÈçÓÐÈκÎÒÉÎÊ»¶ÓÀ´±¾Õ¾
LinuxÂÛ̳ÌÖÂÛ