©®linuxÉçÇø©® °®ÐÄÔ®Öú ©® LinuxÈÏÖ¤©®ÏµÁÐ½Ì³Ì ©® Òµ½ç¶¯Ì¬©® Õ¾ÎñÐÂÎÅ ©® ¹«Ë¾ÕÐÆ¸©® ½¨ÒéÁôÑÔ ©® ÍøÖ·´óÈ« ©®LPIרÌâ©® CISCOרÌâ
ÉèΪÊ×Ò³
¼ÓÈëÊÕ²Ø
¹ÜÀíÍŶÓ
JSP  
JAVA  
PERL  
 ÄúµÄλÖãºÊ×Ò³ > article > unix > unixÌá¸ß >
À¸Ä¿µ¼À¸
×ÊÁÏËÑË÷
ÈÈÃÅÎÄÕÂ
¡¤20%µÄSOLARIS֪ʶ½â¾ö80%µÄÎÊÌâ
¡¤SolarisÆô¶¯¹ý³ÌÏê½â zt
¡¤²é¿´SolarisϵͳӲ¼þÅäÖõÄÃüÁî
¡¤UnixϵÁÐshell³ÌÐò±àд(ÖÐ)
¡¤STRUTS Ô´Âëѧϰ±Ê¼Ç
¡¤SOLARIS¼¼ÇÉÆª
¡¤snortÔ´Âë·ÖÎö
¡¤UnixϵÁÐshell³ÌÐò±àд(ÏÂ)
¡¤ÔÚsolaris 10/x86ϰ²×°oracle
¡¤solaris 10 Ó²Å̰²×°
¡¤Solaris°²È«ÅäÖÃÊÖ²á
¡¤ApacheÔ´´úÂë·ÖÎö¡ª¡ª¹ØÓÚÄ£¿é
¡¤HP-UX»ù±¾Ö¸Áî¿ìËٲο¼
¡¤ Tomcat ServerÔ´ÂëÆô¶¯·ÖÎö
¡¤Solaris8 Ë«Íø¿¨ÅäÖã¨Â·ÓÉÆ÷ÓÃ
×îÐÂÎÄÕÂ
¡¤solarisϵͳ°²È«ÅäÖÃ
¡¤RHEL5.0²Ù×÷ϵͳÏÂNFS·þÎñµÄÅä
¡¤Solaris Linux 9ÏÂVsftpdµÄÅäÖÃ
¡¤ÔÚHP-UXϽ¨Á¢Ö»¹éÊôÓÚij¸öĿ¼
¡¤SolarWinds2002ʹÓÃ˵Ã÷
¡¤´ÓÍⲿ´æ´¢»®Å̲¢¼ÓÈëvg,ΪfsÀ©
¡¤Òò´ø¿âÎÊÌâµ¼ÖÂϵͳ¹âÏË¿¨±¨´í
¡¤Unix϶àÏß³ÌÖÐÌõ¼þ±äÁ¿µÄʹÓÃ
¡¤UNIXºÍLinuxÖÐÐźŵĸöÊý
¡¤²»Í¬µÄÀàUNIX²Ù×÷ϵͳÃÜÂëÆÆ½â
¡¤AIXϵͳÏÂDominoÓʼþ·þÎñÆ÷°²×°
¡¤ÏÞÖÆROOTÓû§Ô¶³ÌµÇ½UNIXϵͳ
¡¤Unix²Ù×÷ϵͳÈëÇÖ×·×Ù·´»÷Õ½
¡¤AIX CDE²»ÄÜÆô¶¯µÄ¹ÊÕÏÒ»°ãÐÔ½â
¡¤CentOS4.4ÓÃVSFTPD¼ÜÉèFTP·þÎñ
Google
 
FreeBSDºËÐÄÈëÃÅ
[ ×÷Õß:LinuxÁªÃËÊÕ¼¯  ¼ÓÈëʱ¼ä:2006-06-14 00:46:28  À´×Ô:LinuxÁªÃËÊÕ¼¯ ]
c 9wMLinuxÁªÃË
elf_insert_brand_entry(&linux_brand) i386/linux/linux_sysvec.c 9wMLinuxÁªÃË
initclocks(NULL) kern/kern_clock.c 9wMLinuxÁªÃË
mbinit(NULL) kern/uipc_mbuf.c 9wMLinuxÁªÃË
clst_init(NULL) kern/tty_subr.c 9wMLinuxÁªÃË
shmnit(NULL) kern/sysv_shm.c 9wMLinuxÁªÃË
seminit(NULL) kern/sysv_sem.c 9wMLinuxÁªÃË
msginit(NULL) kern/sysc_msg.c 9wMLinuxÁªÃË
kludge_splimp(&x_save_spl) kern/uipc_domain.c 9wMLinuxÁªÃË
ifinit(NULL) net/if.c 9wMLinuxÁªÃË
domaininit(NULL) kern/uipc_domain.c 9wMLinuxÁªÃË
kludge_splx(&x_save_spl) kern/uipc_domain.c 9wMLinuxÁªÃË
kmstartup(NULL) kern/subr_prof.c 9wMLinuxÁªÃË
sched_setup(NULL) kern/init_main.c 9wMLinuxÁªÃË
xxx_vfs_mountroot(NULL) kern/init_main.c 9wMLinuxÁªÃË
xxx_vfs_root_fdtab(NULL) kern/init_main.c 9wMLinuxÁªÃË
swapinit(NULL) kern/init_main.c 9wMLinuxÁªÃË
proc0_post(NULL) kern/init_main.c 9wMLinuxÁªÃË
kthread_init(NULL) kern/init_main.c|| 9wMLinuxÁªÃË
kproc_start(&page_kp) vm/vm_pageout.c|| 9wMLinuxÁªÃË
kproc_start(&vm_kp) vm/vm_pageout.c|| 9wMLinuxÁªÃË
kproc_start(&up_kp) kern/vfs_bio.c|| 9wMLinuxÁªÃË
scheduler(NULL) vm/vm_glue.c 9wMLinuxÁªÃË
(||±íʾÓжà¸ö³ÌÐò£© 9wMLinuxÁªÃË
proc-post£¨£©±»ºô½Ðºó£¬main£¨£©¾ÍÊÇÔÚ¶ÔÓ¦process 0 µÄkernelµÄÐéÄâ 9wMLinuxÁªÃË
ÄÚ´æÀﶯ×÷¡£kthread_init(),kproc_start(&page_kp),kproc_start(&vm_kp) 9wMLinuxÁªÃË
,kproc_start(&up_kp)µÈÕ⼸¸ö½ø³Ì£¬ÔÚfork£¨£©ºóÏà¼Ì±»µ÷Óá£Ëü¾ÍÊÇÏà 9wMLinuxÁªÃË
Ó¦µÄ½ø³Ì1£¬2£¬3£¬4µÈ¡£ 9wMLinuxÁªÃË
³ýprocess 1 ÒÔÍ⣬ÆäËûµÄ½ø³Ìµ÷Óò¢²»·µ»Øµ÷ÓõĵØÖ·¡££¨Ò²¾ÍÊÇ£¬main() 9wMLinuxÁªÃË
µÄ¸úËæÖ´Ðк󣬲¢²»·µ»Ølocore.s£©¡£¶ÔÓÚprocess #1µÄkernelµÄÐéÄâÄڴ棬 9wMLinuxÁªÃË
ÔÚkthread_init()·µ»Øºó£¬main()µÄ¸úËæ¾ÍÍêÁË£¬»Øµ½locore.sºó,process #1 9wMLinuxÁªÃË
µÄ½ø³Ì¿Õ¼äµÄÅäÖÃÎļþ/sbin/init¾Í±»Ö´ÐС£ 9wMLinuxÁªÃË
main()ÔÚprocess #0¶ÔÓ¦µÄkernelÐéÄâÄÚ´æÔËÐк󣬽øÈëʱ¼äÁ´±íscheduler()¡£ 9wMLinuxÁªÃË
Õâ¸ö²¢²»·µ»Ø¡£ÄÇÏÖÔÚ¾ÍÓÐÎå¸ö½ø³ÌÁË¡£ 9wMLinuxÁªÃË
È»ºó£¬fork() µÄµ÷ÓÃÔÚÏÂÃæËµÃ÷¡£ 9wMLinuxÁªÃË
1£¬·ÖÅäprocess ID£¬±£Ö¤struct proc()ÓõĿռ䡣 9wMLinuxÁªÃË
2£¬¸´ÖƸ¸Ç×µÄprocessµÄÐéÄâÄÚ´æ¿Õ¼ä£¬×÷³ÉÎïÀíÄÚ´æµÄ±ä»»±í¡£¶Ô 9wMLinuxÁªÃË
Ó¦Á½¸ö½ø³Ì£¬²ÉÓÃÏà¶ÔÓ¦µÄÎïÀíÄÚ´æ±í¡£ 9wMLinuxÁªÃË
3£¬¸ø»Ø¸¸Ç×µÄstruct procºÍstruct user£¬È»ºó¶Ô×Ó½ø³ÌµÄstructºÍ 9wMLinuxÁªÃË
struct user½øÐгõʼ»¯¡£ 9wMLinuxÁªÃË
4£¬kernelµÄstackerÒ²½øÐи´ÖÆ¡£ 9wMLinuxÁªÃË
5£¬·µ»Ø¸¸½ø³Ìºó£¬±ê¼ÇÉú³ÉµÄ×Ó½ø³Ì¡£Íê³É´¦Àí¡£ 9wMLinuxÁªÃË
µ«ÊÇ£¬process #0 -- 4 ÕâÎå¸ö½ø³ÌµÄÐéÄâÄÚ´æÀïÃæÊ²Ã´¶¼Ã»ÓС£ÕâЩÊǺËÐÄ 9wMLinuxÁªÃË
½ø³ÌµÄÌØÊⲿ·Ö¡£½ø³Ì0£¬2£¬3Êǵ÷½Úϵͳ´æÔڵĽø³ÌµÄÖ´ÐÐÓÅÏȼ¶£¬¼àÊÓÎïÀí 9wMLinuxÁªÃË
ÄÚ´æµÄ²»×㣬Èç¹û²»¹»¾ÍʹÓÃswapÇø½øÐн»»»¡£½ø³Ì4µÄ×÷ÓþÍÊǶ¨ÆÚµ÷²éºËÐÄ 9wMLinuxÁªÃË
µÄunixÎļþϵͳµÄ¹ÜÀíÐÅÏ¢ÓëÇý¶¯³ÌÐòµÄ¹ÜÀíÐÅÏ¢µÄÒ»ÖÂÐÔ£¬Ê¹ËüµÄÐÅÏ¢Ò»Ö± 9wMLinuxÁªÃË
ÊÇ×îеġ£ 9wMLinuxÁªÃË
9wMLinuxÁªÃË
1.3.3 /sbin/init 9wMLinuxÁªÃË
´ÓkernelÀïÃæ¿´£¬/sbin/init¾ÍÊǵ¥Ò»µÄ½ø³Ì¿Õ¼äÀﶯ×÷£¬ÓëÒ»°ãµÄ 9wMLinuxÁªÃË
user programÒ»Ñù£¬ÌṩuserʹÓõÄunixÎļþϵͳµÄ»·¾³µÄ·þÎñ¡£ 9wMLinuxÁªÃË
ºËÐÄÆô¶¯ºó×î³õµÄ¶¯×÷¾ÍÊÇ/sbin/init¡£×÷ÓÃÈçÏ£º 9wMLinuxÁªÃË
¡£È·±£file systemµÄÒ»ÖÂÐÔ£¬½øÐÐmount¡£ 9wMLinuxÁªÃË
¡£Ö®ºó£¬networkµÄÉ趨ºÍ¸÷ÖÖdaemonµÄÆô¶¯¡£ 9wMLinuxÁªÃË
¡£¼àÊÓÖն˵ÄloginµÄÅäÖúͶ¯×÷״̬¡£Õâ¸ö¶¯×÷ÍêÁ˺ó£¨logout£©£¬ 9wMLinuxÁªÃË
Ð޸ĺÍÅäÖà login¡£ 9wMLinuxÁªÃË
Ò²¾ÍÊÇ˵£¬Èç¹ûûÓÐËü£¬Óû§¾Í²»ÄÜʹÓÃunixÎļþϵͳ¡£»¹ÓоÍÊÇ£¬Èç¹ûboot 9wMLinuxÁªÃË
progam²ÎÊýÖ¸¶¨-sµÄ»°£¬Ëü¾Í¹ý¶Éµ½µ¥Ò»µÄÓû§Ä£Ê½¡£Ïà¶ÔÀ´Ëµ£¬ÆÕͨµÄÓû§ 9wMLinuxÁªÃË
ģʽҲ¾ÍÊÇmultiģʽ¡£ÎªÁËʹÆÕͨÓû§Äܹ»Ê¹ÓÃϵͳ£¬/sbin/initµÄ²Î¿¼Îļþ 9wMLinuxÁªÃË
Ö÷ÒªÔÚ/etcĿ¼Àï·Å×Å¡£Ö÷Òª¾ÍÊÇÔËÐÐ/etc/rcÎļþ¶Ôϵͳ½øÐгõʼ»¯¡£ 9wMLinuxÁªÃË
/etc/rcÎļþµÄÖ÷ÒªÄÚÈݺÍ×÷ÓÃÈçÏ£º 9wMLinuxÁªÃË
¡£Ê¹ÏµÍ³Äܹ»Ê¹ÓÃswapÇø 9wMLinuxÁªÃË
¡£¼ì²é/etc/fstab,¼ì²éËüµÄÁ¬¹áÐÔ£¬Èç¹ûÓÐÎÊÌâ¾Íתµ½µ¥Ò»µÄÓû§Ä£Ê½ 9wMLinuxÁªÃË
¡£mount nfsÒÔÍâµÄÎļþϵͳ 9wMLinuxÁªÃË
¡£¶ÁÈënetwork µÄÉ趨ºÍ¸÷ÖÖdaemon½ø³ÌµÄÉ趨Çé¿öµÄ¼Ç¼Îļþ 9wMLinuxÁªÃË
/etc/c.conf£¬Õâ¸öÄÚÈÝ×÷Ϊshell scriptµÄ±äÁ¿É趨£¬ÒÔϵľÍÊÇ 9wMLinuxÁªÃË
¸÷¸öshellµÄ¶¯×÷µ÷Õû 9wMLinuxÁªÃË
¡£serialµÄ³õʼ»¯£¨/etc/rc.serial£© 9wMLinuxÁªÃË
¡£ÔËÐÐPCMCIA¿¨µÄ²å°Î¼à¿ØÊØ»¤½ø³Ì£¨/etc/rc.pccard£© 9wMLinuxÁªÃË
¡£networkµÄ²¿·Ö³õʼ»¯£¨/etc/rc.network£© 9wMLinuxÁªÃË
¡£Èç¹ûÓÐnfsµÄʱºò¾Í½øÐÐmount²Ù×÷ 9wMLinuxÁªÃË
¡£networkµÄ×îÖÕ³õʼ»¯£¨/etc/rc.network£ºÆô¶¯ºÍentworkÓйصÄdaemon£© 9wMLinuxÁªÃË
¡£¹²ÓпâµÄÓйØÐÅÏ¢µÄ³õʼ»¯ 9wMLinuxÁªÃË
¡£intd,lpd,sendmailµÄÆô¶¯ 9wMLinuxÁªÃË
¡£ÒÀÀµÏµÍ³µÄһЩ³õʼ»¯½ø³Ì 9wMLinuxÁªÃË
/etc/rcµÄ´¦ÀíÍêÁ˺ó£¬/sbin/init¾Í¶Ô/etc/ttysµÈ¼ÇÊöµÄһЩÖն˵ÄÓû§login½øÐÐ 9wMLinuxÁªÃË
¼àÊÓ¡£¶ÔÓÚÕâ¸ö£¬/etc/ttysÀïÖ¸¶¨µÄÖÕ¶Ë£¬fork()ºóµÄ½ø³ÌÀ 9wMLinuxÁªÃË
¡£exec£¨£©Ö¸¶¨µÄ³ÌÐò£¨ÆÕͨµÄÇé¿öÊÇ/usr/libexec/getty£© 9wMLinuxÁªÃË
¡£/usr/libexec/getty½øÐÐÖÕ¶ËËٶȵȵÄÉ趨¡£Ìáʾlogin:,µÈ´ýÓû§ÊäÈë 9wMLinuxÁªÃË
¡£Óû§ÊäÈëºó£¬Ãû×Ö×÷Ϊ²ÎÊýexec() /etc/bin/login 9wMLinuxÁªÃË
¡£/usr/bin/login¾ÍÌáʾ³öpasswd:£¬µÈ´ýÓû§µÄÊäÈë 9wMLinuxÁªÃË
¡£×¼±¸userÃûºÍpasswd£¬¶ÔÊäÈëµÄÓû§Ãû½øÐÐÈ·¶¨£¬ÕýÈ·µÄ»°¾Íexec()Óû§ 9wMLinuxÁªÃË
shell 9wMLinuxÁªÃË
9wMLinuxÁªÃË
ÏÂͼ¾ÍÊÇ/sbin/initµÄ¼àÊÓ½ø³Ìͼ£º 9wMLinuxÁªÃË
9wMLinuxÁªÃË
process #1 9wMLinuxÁªÃË
--------------------------------------------------------> 9wMLinuxÁªÃË
/sbin/init | ^ 9wMLinuxÁªÃË
| fork() | | fork() 9wMLinuxÁªÃË
+ exec() exec() exec() | | exec() 9wMLinuxÁªÃË
process #n |---------->+--------->+------------------*+-------- 9wMLinuxÁªÃË
getty login userµÄlogin shell process #m 9wMLinuxÁªÃË
9wMLinuxÁªÃË
(µÚÒ»ÕÂÍ꣬ÏÂÒ»Õ½éÉÜÎļþϵͳºÍÇý¶¯³ÌÐò£¬liangvy) 9wMLinuxÁªÃË
9wMLinuxÁªÃË
9wMLinuxÁªÃË
FreeBSDºËÐÄ̽ÌÖ.4.Çý¶¯³ÌÐòƪ 9wMLinuxÁªÃË
9wMLinuxÁªÃË
·­Ò룺liangvy liangvy@bigfoot.com icewolf.leon 9wMLinuxÁªÃË
°æÈ¨ËùÓУ¬¿ÉÒÔתÌù
µÚ¶þÕ ÎļþϵͳºÍÉ豸Çý¶¯³ÌÐò 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ÂÛ̳ÌÖÂÛ
·ÖÒ³£º1 [2] 3 4 5
¡¾ÆÀÂÛ¡¿¡¾¼ÓÈëÊղؼС¿¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿¡¾¹Ø±Õ¡¿
¡ù Ïà¹ØÁ´½Ó
ÎÞÏà¹ØÐÅÏ¢