ºìÁªLinuxÃÅ»§
Linux°ïÖú

LinuxϵͳÄں˽ṹѧϰ

·¢²¼Ê±¼ä:2008-03-25 09:44:07À´Ô´:ºìÁª×÷Õß:Goando
¡¡¡¡LinuxÄÚºËÖ÷ÒªÓÉÎå¸ö×Óϵͳ×é³É:½ø³Ìµ÷¶È£¬ÄÚ´æ¹ÜÀí£¬ÐéÄâÎļþϵͳ£¬ÍøÂç½Ó¿Ú£¬½ø³Ì¼äͨÐÅ

¡¡¡¡1.½ø³Ìµ÷¶È£¨SCHED£©:¿ØÖƽø³Ì¶ÔCPUµÄ·ÃÎÊ¡£

¡¡¡¡2.ÄÚ´æ¹ÜÀí£¨MM£©£ºÔÊÐí¶à¸ö½ø³Ì°²È«µÄ¹²ÏíÖ÷ÄÚ´æÇøÓò¡£

¡¡¡¡3.ÐéÄâÎļþϵͳ£¨VFS£©£ºÒþ²ØÁ˸÷ÖÖÓ²¼þµÄ¾ßÌåϸ½Ú£¬ÎªËùÓеÄÉ豸ÌṩÁËͳһµÄ½Ó¿Ú£¬VFSÌṩÁ˶à´ïÊýÊ®ÖÖ²»Í¬µÄÎļþϵͳ¡£ÐéÄâÎļþϵͳ¿ÉÒÔ·ÖΪÂß¼­ÎļþϵͳºÍÉ豸Çý¶¯³ÌÐò¡£É豸Çý¶¯³ÌÐòָΪÿһÖÖÓ²¼þ¿ØÖÆÆ÷Ëù±àдµÄÉ豸Çý¶¯³ÌÐòÄ£¿é¡£

¡¡¡¡4.ÍøÂç½Ó¿Ú£¨NET£©£ºÌṩÁ˶Ը÷ÖÖÍøÂç±ê×¼µÄ´æÈ¡ºÍ¸÷ÖÖÍøÂçÓ²¼þµÄÖ§³Ö¡£ÍøÂç½Ó¿Ú¿ÉÒÔ·ÖΪÍøÂçЭÒéºÍÍøÂçÇý¶¯³ÌÐò¡£ÍøÂçЭÒ鲿·Ö¸ºÔðʵÏÖÿһÖÖ¿ÉÄܵÄÍøÂç´«ÊäЭÒé¡£ÍøÂçÉ豸Çý¶¯³ÌÐò¸ºÔðÓëÓ²¼þÉ豸ͨѶ£¬Ã¿Ò»ÖÖ¿ÉÄܵÄÓ²¼þÉ豸¶¼ÓÐÏàͬµÄÉ豸Çý¶¯³ÌÐò¡£

¡¡¡¡5.½ø³Ì¼äµÄͨѶ£¨IPC£©£ºÖ§³Ö½ø³Ì¼ä¸÷ÖÖͨÐÅ»úÖÆ

¡¡¡¡ÏµÍ³Êý¾Ý½á¹¹
¡¡¡¡ÔÚLinuxµÄÄÚºËÊÓÏßÖУ¬ÓÐһЩÊý¾Ý½á¹¹Ê¹ÓÃƵ¶È½Ï¸ß£¬ËüÃÇÊÇ£ºtask_struct.

¡¡¡¡LinuxÄÚºËÀûÓÃÒ»¸öÊý¾Ý½á¹¹£¨task_struct£©´ú±íÒ»¸ö½ø³Ì£¬´ú±í½ø³ÌµÄÊý¾Ý½á¹¹Ö¸ÕëÏò³ÉÁËÒ»¸ötaskÊý×é¡£Õâ¸öÊý×éµÄ´óСÓÉNR_TASKS(ĬÈÏΪ512),±íÃ÷LinuxϵͳÖÐ×î¶àÄÜͬʱÔËÐеĽø³ÌÊý¡£

¡¡¡¡Mm_struct
¡¡¡¡Ã¿¸ö½ø³ÌµÄÐéÄâÄÚ´æÓÉÒ»¸ömm_struct½á¹¹Ìå´ú±í£¬¸Ã½á¹¹Êµ¼ÊÉÏ°üº¬Á˵±Ç°Ö´ÐÐÓ³ÏñµÄÓйØÐÅÏ¢£¬²¢ÇÒ°üº¬ÁËÒ»×éÖ¸Ïòvm_area_struct½á¹¹µÄÖ¸Õ룬vw_area_struct½á¹¹ÃèÊöÁËÐéÄâÄÚ´æµÄÒ»¸öÇøÓò

¡¡¡¡Inode
¡¡¡¡ÐéÄâÎļþϵͳÖеÄÎļþ£¬Ä¿Â¼µÈ¾ùÓɶÔÓ¦µÄË÷Òý½Úµã£¨inode£©´ú±í¡£Ã¿¸öVFSË÷Òý½ÚµãÖеÄÄÚÈÝÓÉÎļþϵͳרÊôµÄÀý³ÌÌṩ¡£VFSË÷Òý½ÚµãÖ»´æÔÚÓëÄÚºËÄÚ´æÖУ¬Êµ¼Ê±£´æÓÚVFSµÄË÷Òý½Úµã¸ßËÙ»º´æÖС£

¡¡¡¡¹ØÓÚÔ´´úÂëµÄÔĶÁ
¡¡¡¡Linux ÄÚºËÔ´´úÂëµÄ½á¹¹

¡¡¡¡LinuxÄÚºËÔ´´úÂëλÓÚ/usr/src/linuxĿ¼Ï¡£


¡¡¡¡/include×ÓĿ¼°üº¬Á˽¨Á¢Äں˴úÂëʱËùÐèµÄ´ó²¿·Ö°üº¬Îļþ£¬Õâ¸öÄ£¿éÀûÓÃÆäËûÄ£¿éÖؽ¨Äںˡ£

¡¡¡¡/init ×ÓĿ¼°üº¬ÁËÄں˵ijõʼ»¯´úÂ룬ÕâÊÇÄں˹¤×÷µÄ¿ªÊ¼µÄÆðµã¡£

¡¡¡¡/arch×ÓĿ¼°üº¬ÁËËùÓÐÓ²¼þ½á¹¹Ìض¨µÄÄں˴úÂë¡£È磺i386,alpha

¡¡¡¡/drivers×ÓĿ¼°üº¬ÁËÄÚºËÖÐËùÓеÄÉ豸Çý¶¯³ÌÐò£¬Èç¿éÉ豸ºÍSCSIÉ豸¡£

¡¡¡¡/fs×ÓĿ¼°üº¬ÁËËùÓеÄÎļþϵͳµÄ´úÂë¡£Èç:ext2,vfatµÈ¡£

¡¡¡¡/net×ÓĿ¼°üº¬ÁËÄں˵ÄÁ¬Íø´úÂë¡£

¡¡¡¡/mm×ÓĿ¼°üº¬ÁËËùÓÐÄÚ´æ¹ÜÀí´úÂë¡£

¡¡¡¡/ipc×ÓĿ¼°üº¬Á˽ø³Ì¼äͨÐÅ´úÂë¡£

¡¡¡¡/kernel×ÓĿ¼°üº¬ÁËÖ÷Äں˴úÂë¡£

¡¡¡¡ÏÂÃæ¸ø³öÔĶÁÔ´´úÂëµÄÏßË÷:

¡¡¡¡ÏµÍ³µÄÆô¶¯ºÍ³õʼ»¯£º

¡¡¡¡ÔÚ»ùÓÚIntelµÄϵͳÉÏ£¬µ±loadlin.exe»òLILO°ÑÄÚºË×°Èëµ½ÄÚ´æ²¢°Ñ¿ØÖÆȨ´«µÝ¸øÄÚºËʱ£¬Äں˿ªÊ¼Æô¶¯¡£¹ØÓÚÕâÒ»²¿·ÖÇë¿´£¬arch/i386/kernel/head.S,head.S½øÐÐÌض¨½á¹¹µÄÉèÖã¬È»ºóÌøתµ½init/main.cµÄmain()Àý³Ì¡£

¡¡¡¡ÄÚ´æ¹ÜÀí£º

¡¡¡¡ÄÚ´æ¹ÜÀíµÄ´úÂëÖ÷ÒªÔÚ/mm£¬µ«ÊÇÌض¨½á¹¹µÄ´úÂëÔÚarchkernel,µ÷¶È³ÌÐòÔÚkernel/sched.c,forkµÄ´úÂëÔÚkernel/fork.c,ÄÚºËÀý³Ì´¦Àí³ÌÐòÔÚinclude/linux/interrupt.h£¬task_structÊý¾Ý½á¹¹ÔÚinlucde/linux/sched.hÖС£

¡¡¡¡PCI:

¡¡¡¡PCIαÇý¶¯³ÌÐòÔÚdrivers/pci/pci.c,Æ䶨ÒåÔÚinclulde/linux/pci.h¡£Ã¿Ò»Öֽṹ¶¼ÓÐһЩÌض¨µÄPCI BIOS´úÂ룬IntelµÄÔÚarch/alpha/kernel/bios32.cÖС£

¡¡¡¡½ø³Ì¼äͨÐÅ£º

¡¡¡¡ËùÓеÄSystemVIPC¶ÔÏóȨÏÞ¶¼°üº¬ÔÚipc_permÊý¾Ý½á¹¹ÖУ¬Õâ¿ÉÒÔÔÚinclude/linux/ipc.hÖÐÕÒµ½¡£SystemVÏûÏ¢ÊÇÔÚipc/msg.cÖÐʵÏÖ¡£¹²ÏíÄÚ´æÔÚipc/shm.cÖÐʵÏÖ¡£ÐźÅÁ¿ÔÚipc/sem.cÖУ¬¹ÜµÀÔÚ/ipc/pipe.cÖÐʵÏÖ¡£

¡¡¡¡Öжϴ¦Àí£º

¡¡¡¡Äں˵ÄÖжϴ¦Àí´úÂ뼸ºõËùÓеÄ΢´¦ÀíÆ÷ÌØÓеġ£Öжϴ¦Àí´úÂëÔÚarch/i386/kernel/irq.cÖУ¬Æ䶨ÒåÔÚinclude/asm-i386/irq.hÖС£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ