LinuxÖеÄÄÚ´æ·ÖÅäºÍÊÍ·ÅÖ®bootmam_init()º¯Êý·ÖÎö
Á˽âÁËLinuxÄÚ´æ¹ÜÀíµÄ»ù±¾ÖªÊ¶ºó£¬ÎÒÃÇÀ´Ñо¿Ò»ÏÂLinuxÄÚ´æµÄ·ÖÅäºÍÊÍ·Å¡£ÎÒÃÇ»á·ÖÁ½¸ö²¿·ÖÀ´Ñо¿µÄ¡£ÎÒÃÇÏòÀ´Ì½ÌÖϵͳÆô¶¯³õÆÚÄÚ´æµÄ·ÖÅäºÍÊÍ·Å¡£Õâ¸ö½×¶Î¿ÉÒÔÉêÇëµ½´óƬµÄÎïÀíÄڴ棬µ«ÊÇҪעÒâµ½ÒÔÏÂÁ½µã£¡
1£©ÆäʵϵͳÆô¶¯³õÆÚÊÇÖ¸ÔÚinit_mem()֮ǰµÄ½×¶Î£¬ÔÚÕâ¸ö½×¶ÎÓÉÓÚÖ»ÐèÒªÉÙÁ¿µÄÄڴ棨Äں˱àÒëÐèÒªµÄÄڴ棬ҳ֡λÂë±í£¬Ò³±í£¬initrd£©£¬ËùÒÔ¿ÉÒÔÉêÇëµ½´óƬµÄÎïÀíÄڴ棬µ«ÊÇÎÒÃÇ»¹Òª×¢Òâµ½µÄÊÇ£¬Èç¹ûÔÚÕâ¸ö½×¶Î²»ÊÍ·ÅÕâЩÄÚ´æµÄ»°£¬init_mem()ÒÔºóµÄÄÚºËÊDz»¿ÉÒÔÔÙ¶ÔÕⲿ·ÖÄÚ´æ²Ù×÷µÄ£¨·ÖÅäºÍÊÍ·Å£©¡£
2£©Õâ¸ö½×¶Î£¬ÎÒÃÇÖ»¿ÉÒÔ·ÖÅäµÍ¶ËÄڴ棬·ÖÅä²»Á˸߶ËÄڴ棬ÒòΪÕâ¸öʱºòÄÚ´æÊÇûÓÐÄÚºËÂß¼µØÖ·µÄ¡£
ºÃÁË£¬ÏÖÔÚÎÒÃÇ¿ªÊ¼À´Ñо¿ÓëÕâ¸ö½×¶ÎÓйصĺ¯Êý£¬Í¨¹ýÕâЩº¯ÊýµÄ·ÖÎö£¬ÎÒÃÇ¿ÉÒÔ¸üÇå³þÄÚ´æ¹ÜÀíÊÇÔõÑùµÄ¡£ÎÒÃÇÏÈÀ´Ñо¿bootmem_init()ϵͳÆô¶¯½×¶ÎÄÚ´æ¹ÜÀí³õʼ»¯¡£Õâ¸öº¯ÊýÊÇÔÚstart_kernel()µÄsetup_arch()µÄpaging_init()µ÷Óõġ£ÎÒÃÇÏÖÔÚÀ´¿´¿´paging_init()µÄ¾ßÌå´úÂë¡£
void __init paging_init(struct meminfo *mi, struct machine_desc *mdesc)
{
void *zero_page;
int node;
bootmem_init(mi);
struct meminfo *miÆäʵÊÇ´Ósetup_arch()º¯Êý´«¹ýÀ´µÄÈ«¾Ö±äÁ¿£¬Õâ¸öÈ«¾Ö±äÁ¿ÊÇmeminfo£¬Õâ¸ö±äÁ¿¼Ç¼ÁËϵͳÄÚ´æÐÅÏ¢£¬¾ßÌåÀ´ËµÊǼǼÁËbankµÄÐÅÏ¢¡£ÎÒÃÇÀ´¿´¿´bootmem_init(mi)¾ßÌå×öЩʲô£¡
static void __init bootmem_init(struct meminfo *mi)
{
struct node_info node_info[MAX_NUMNODES], *np = node_info;
unsigned int bootmap_pages, bootmap_pfn, map_pg;
int node, initrd_node;
bootmap_pages = find_memend_and_nodes(mi, np);
¶ÔÓÚstruct node_infoÕâ¸ö½á¹¹ÌåÊÇÓÃÀ´ÃèÊöÄÚ´æ½Úµã£¨node£©µÄÐÅÏ¢µÄ£¬ÕâÀïµÄnode_info±äÁ¿ÊÇÕâ¸ö½á¹¹ÌåµÄÊý×飬*npÕâÊÇÖ¸ÏòÕâ¸öÊý×éµÄÖ¸Õ룬ÎÒÃÇÏÈÀ´¿´¿´find_memend_and_nodes(mi, np);Õâ¸öº¯Êý¡£
find_memend_and_nodes(struct meminfo *mi, struct node_info *np)
{
unsigned int i, bootmem_pages = 0, memend_pfn = 0;
for (i = 0; i < MAX_NUMNODES; i++) {
np[i].start = -1U;
np[i].end = 0;
np[i].bootmap_pages = 0;
}
ÕâÀïÊǶԸղÅ˵µÄÄǸö½á¹¹Ìå½øÐгõʼ»¯£¬Ò»Ö±°ÑÕû¸öÊý×éµÄÿ¸öµ¥Ôª³õʼ»¯ÍêΪֹ¡£
for (i =
Ïà¹ØÎĵµ£º
ÕâÖ»ÊÇÔÝʱµÄ¼Ç¼£¬ÒÔºó»á°ÑËü¹éÀൽstart_kernel()º¯ÊýµÄ·ÖÎö¡£ÔÚ·ÖÎö֮ǰ£¬ÎÒÏÈҪ˵˵¼¸¸ö¸ÅÄî¡£
ÄÚºËÇÀÕ¼£ºÔÚ2.6Äں˼ÓÈëÁËÇÀÕ¼µÄÄÜÁ¦£¬¾ÍÊÇ˵µ÷¶È³ÌÐòÓа취ÔÚÒ»¸öÄں˼¶µÄÈÎÎñÕýÔÚÖ´ÐеÄʱºò´Óе÷¶È¡£µ«ÊDZØÐëÒª±£Ö¤ÖØÐµ÷¶ÈÒª°²È«£¬ÕâÑù¾ÍÒª¿¿Ò»°ÑËøÀ´±£Ö¤ÁË¡£
¼ÆÊýÆ÷£¨thread_info.[reempt_ ......
Swap£¬¼´½»»»Çø£¬³ýÁ˰²×°LinuxµÄʱºò£¬ÓжàÉÙÈ˹ØÐĹýËüÄØ?Æäʵ£¬SwapµÄµ÷Õû¶ÔLinux·þÎñÆ÷£¬ÌرðÊÇWeb·þÎñÆ÷µÄÐÔÄÜÖÁ¹ØÖØÒª¡£Í¨¹ýµ÷ÕûSwap£¬ÓÐʱ¿ÉÒÔÔ½¹ýϵͳÐÔÄÜÆ¿¾±£¬½ÚʡϵͳÉý¼¶·ÑÓá£
¡¡¡¡SwapµÄÔÀíÊÇÒ»¸ö½Ï¸´ÔÓµÄÎÊÌ⣬ÐèÒª´óÁ¿µÄƪ·ùÀ´ËµÃ÷¡£ÔÚÕâÀïÖ»×÷¼òµ¥µÄ½éÉÜ£¬ÔÚÒÔºóµÄÎÄÕÂÖн«ºÍ´ó¼ÒÏêϸÌÖÂÛSwapʵÏÖµÄϸ½Ú ......
ÔÚLinuxϵͳÖУ¬ÖÕ¶ËÉ豸·Ç³£ÖØÒª£¬Ã»ÓÐÖÕ¶ËÉ豸£¬ÏµÍ³½«ÎÞ·¨ÏòÓû§·´À¡ÐÅÏ¢£¬LinuxÖаüº¬¿ØÖÆÌ¨¡¢´®¿ÚºÍαÖÕ¶Ë3ÀàÖÕ¶ËÉ豸¡£
14.1ÖÕ¶ËÉ豸
ÔÚLinuxϵͳÖУ¬ÖÕ¶ËÊÇÒ»ÖÖ×Ö·ûÐÍÉ豸£¬ËüÓжàÖÖÀàÐÍ£¬Í¨³£Ê¹ÓÃttyÀ´¼ò³Æ¸÷ÖÖÀàÐ͵ÄÖÕ¶ËÉ豸¡£ttyÊÇTeletypeµÄËõд£¬TeletypeÊÇ×îÔç³öÏÖµÄÒ»ÖÖÖÕ¶ËÉ豸£¬ ......
1. cd -> ·µ»Ø½øÈë´ËĿ¼֮ǰËùÔÚµÄĿ¼£ºcd -
2. ÉÏÒ»ÌõÃüÁî ->
!! È«²¿µÄÉÏÒ»ÌõÃüÁî
!* ÉÏÒ»ÌõÃüÁîµÄÈ«²¿²ÎÊý
& ......
1.Æô¶¯linux£¬´ó¸ÅÔÚ2ÃëÖаÉ!¾ÍÕâÑùµÄ½çÃæ!°´ÈýϼüÅÌE
(°´µÚÒ»´ÎE¼ü½øÈëÈçͼ1.)
ͼ1°´µÚ¶þÏÂE¼ü½øÈëÈçͼ2
ͼ2°´µÚÈýÏÂE¼ü½øÈëÈçͼ3
¿´µ½Í¼3µÄ½çÃæÓ¦¸ÃÓÐЩİÉú°É!ÏÖÔÚÎÒÃÇÊäÈëÒ»¾äÃüÁî / 1
(¼ÇµÃ£ºÊäÈë“б¸Ü”ºó°´Ò»Ï“¿Õ¸ñ”ÔÚÊäÈë1£¬½ÓÏÂÈ¥¾Í°´“»Ø³µ¼ü”)
ÊäÈëÃüÁî»Ø³µÖ®ºó£¬Ëü» ......