LinuxÄÚºËÖ÷º¯ÊýÆÊÎöÓëÆÊÎö
LinuxÄÚºËÖ÷º¯ÊýÆÊÎöÓëÆÊÎö
LinuxÄÚºËÊÇÒ»¸öÖØ´ó¶øÖØ´óµÄϵͳ£¬ÆäÖеÄÖ÷º¯ÊýÆð×ÅÖÁ¹ØÖ÷ÒªµÄ×÷Óã¬ËüÊÇÕû¸öϵͳµÄÈë¿Úµã£¬ÈÏÕæ³õʼ»¯ÖÖÖÖ×Óϵͳ¡¢Çý¶¯³ÌÐòºÍÄÚºËÄ£¿é£¬×îÖÕÆô¶¯Õû¸ö²Ù×÷ϵͳ¡£±¾ÎĽ«Õë¶ÔLinuxÄÚºËÖ÷º¯Êý¾ÙÐÐÆÊÎöÓëÆÊÎö£¬Í¨¹ýÏêϸµÄ´úÂëʾÀýÀ´Õ¹Ê¾ÆäÒªº¦¹¦Ð§ºÍÖ´ÐÐÁ÷³Ì¡£
ÔÚLinuxÄÚºËÖУ¬Ö÷º¯ÊýµÄÈë¿ÚµãλÓÚinit/main.cÎļþÖеÄstart_kernel()º¯ÊýÖС£Õâ¸öº¯ÊýÊÇÕû¸öÄں˵ÄÆðµã£¬Ëü½«ÈÏÕæµ÷ÀíºÍÖ´ÐÐÖÖÖÖ³õʼ»¯ÊÂÇ飬ÒÔÈ·±£ÏµÍ³Äܹ»Õý³£Æô¶¯¡£ÏÂÃæÊÇstart_kernel()º¯ÊýµÄ¼ò»¯°æ±¾£º
asmlinkage void __init start_kernel(void) { // ³õʼ»¯Äں˵÷ÀíÆ÷ sched_init(); // ³õʼ»¯ÄÚ´æÖÎÀí×Óϵͳ mm_init(); // ³õʼ»¯Îļþϵͳ fs_init(); // Æô¶¯½¹µã×Óϵͳ kernel_init(); // ½øÈëϵͳµÄÖ÷Ñ»· kernel_loop(); }
µÇ¼ºó¸´ÖÆ
ÔÚÉÏÃæµÄ´úÂëÖУ¬ÎÒÃÇ¿ÉÒÔ¿´µ½start_kernel()º¯ÊýÒÀ´ÎŲÓÃÁ˼¸¸öÖ÷ÒªµÄ³õʼ»¯º¯Êý£¬°üÀ¨sched_init()¡¢mm_init()¡¢fs_init()ºÍkernel_init()¡£½ÓÏÂÀ´ÎÒÃǼòÒªÏÈÈÝÕâЩº¯ÊýµÄ×÷Óãº
sched_init(): ³õʼ»¯Äں˵÷ÀíÆ÷£¬°üÀ¨ÉèÖÃÀú³Ìµ÷ÀíÕ½ÂÔ¡¢½¨ÉèidleÀú³ÌµÈ¡£
mm_init(): ³õʼ»¯ÄÚ´æÖÎÀí×Óϵͳ£¬°üÀ¨½¨ÉèÒ³±í¡¢Ò³±íÓ³ÉäµÈ¡£
fs_init(): ³õʼ»¯Îļþϵͳ£¬°üÀ¨¹ÒÔØÎļþϵͳ¡¢½¨Éè³õʼ»¯Àú³ÌµÈ¡£
kernel_init(): Æô¶¯½¹µã×Óϵͳ£¬°üÀ¨³õʼ»¯×°±¸Çý¶¯¡¢×¢²áϵͳŲÓõȡ£
ÔÚŲÓÃÍêÉÏÊöº¯Êýºó£¬start_kernel()º¯Êý½«½øÈëkernel_loop()º¯Êý£¬×îÏÈϵͳµÄÖ÷Ñ»·¡£ÔÚÖ÷Ñ»·ÖУ¬Äں˽«Ò»Ö±¼ì²â²¢´¦Öóͷ£ÖÖÖÖÖÐÖ¹¡¢ÏµÍ³Å²ÓúÍÍⲿÊÂÎñ£¬ÒÔά³ÖϵͳµÄÔËÐС£
ÏÂÃæÎÒÃǸø³öÒ»¸ö¼òÆÓµÄʾÀý´úÂ룬À´Õ¹Ê¾start_kernel()º¯ÊýµÄÖ´ÐÐÁ÷³Ì£º
#include <linux/kernel.h> asmlinkage void __init start_kernel(void) { // Êä³öÄÚºËÆô¶¯ÐÅÏ¢ printk("Starting kernel... "); // ³õʼ»¯Äں˵÷ÀíÆ÷ printk("Initializing scheduler... "); sched_init(); // ³õʼ»¯ÄÚ´æÖÎÀí×Óϵͳ printk("Initializing memory management... "); mm_init(); // ³õʼ»¯Îļþϵͳ printk("Initializing file system... "); fs_init(); // Æô¶¯½¹µã×Óϵͳ printk("Starting core subsystem... "); kernel_init(); // ½øÈëϵͳµÄÖ÷Ñ»· printk("Entering kernel loop... "); kernel_loop(); }
µÇ¼ºó¸´ÖÆ
ͨ¹ýÒÔÉÏ´úÂëʾÀý£¬ÎÒÃÇ¿ÉÒÔ¿´µ½start_kernel()º¯ÊýµÄ»ù±¾Ö´ÐÐÁ÷³Ì£¬ÒÔ¼°¸÷¸ö×ÓϵͳµÄ³õʼ»¯Àú³Ì¡£ÉîÈëÏàʶºÍÃ÷È·LinuxÄÚºËÖ÷º¯ÊýµÄ¹¦Ð§ºÍÖ´ÐÐÁ÷³Ì£¬¿ÉÒÔ×ÊÖúÎÒÃǸüºÃµØÃ÷È·Õû¸öϵͳµÄÔËÐлúÖÆ£¬´Ó¶øÓÐÖúÓÚ¾ÙÐÐÄں˵÷ÊԺͿª·¢ÊÂÇé¡£
×ܵÄÀ´Ëµ£¬LinuxÄÚºËÖ÷º¯ÊýÊÇÕû¸öϵͳµÄ½¹µã²¿·Ö£¬Ëü¼ç¸º×ÅÆô¶¯ºÍÖÎÀíϵͳµÄÖ÷ҪʹÃü¡£Í¨¹ýÉîÈëÆÊÎöºÍÃ÷È·Ö÷º¯ÊýµÄ¹¦Ð§ºÍÖ´ÐÐÁ÷³Ì£¬ÎÒÃÇ¿ÉÒÔ¸üºÃµØÕÆÎÕÄں˵ÄÔËÐлúÖÆ£¬ÎªÏµÍ³µÄÓÅ»¯ºÍÀ©Õ¹ÌṩÖ÷ÒªµÄ²Î¿¼¡£
ÒÔÉϾÍÊÇLinuxÄÚºËÖ÷º¯ÊýÆÊÎöÓëÆÊÎöµÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡