BBSˮľÇ廪վ¡Ã¾«»ªÇø
·¢ÐÅÈË: coolzhang (coolzhang), ÐÅÇø: Linux
±ê Ìâ: linux bible µÚÈýÕ ´æ´¢¹ÜÀí
·¢ÐÅÕ¾: BBS ˮľÇ廪վ (Mon Oct 25 17:46:28 1999)
·¢ÐÅÈË: coolzhang (coolzhang), ÐÅÇø: UNIX
±ê Ìâ: linux bible µÚÈýÕ ´æ´¢¹ÜÀí
·¢ÐÅÕ¾: Î人°×ÔÆ»Æº×Õ¾ (Mon Oct 25 14:24:45 1999), Õ¾ÄÚÐżþ
µÚÈýÕ ´æ´¢¹ÜÀí
´æ´¢¹ÜÀí×Óϵͳʱ²Ù×÷ϵͳÖÐ×îÖØÒªµÄ×é³É²¿·ÖÖ®Ò»¡£ÔÚÔçÆÚ¼ÆËãʱ´ú£¬ÓÉÓÚÈËÃÇ
ËùÐèÒªµÄÄÚ´æÊýĿԶԶ´óÓÚÎïÀíÄڴ棬ÈËÃÇÉè¼Æ³öÁ˸÷ÖÖ¸÷ÑùµÄ²ßÂÔÀ´½â¾ö´ËÎÊÌ⣬
ÆäÖÐ×î³É¹¦µÄÊÇÐéÄâÄÚ´æ¼¼Êõ¡£ËüʹµÃϵͳÖÐΪÓÐÏÞÎïÀíÄڴ澺ÕùµÄ½ø³ÌËùÐèÄÚ´æ
¿Õ¼äµÃµ½Âú×ã¡£
ÐéÄâÄÚ´æ¼¼Êõ²»½ö½ö¿ÉÈÃÎÒÃÇ¿ÉÒÔʹÓøü¶àµÄÄڴ棬Ëü»¹ÌṩÁËÒÔϹ¦ÄÜ£º
¾Þ´óµÄѰַ¿Õ¼ä
²Ù×÷ϵͳÈÃϵͳ¿´ÉÏÈ¥ÓбÈʵ¼ÊÄÚ´æ´óµÃ¶àµÄÄÚ´æ¿Õ¼ä¡£ÐéÄâÄÚ´æ¿ÉÒÔÊÇϵͳÖÐʵ
¼ÊÎïÀí¿Õ¼äµÄÐí¶à±¶¡£Ã¿¸ö½ø³ÌÔËÐÐÔÚÆä¶ÀÁ¢µÄÐéÄâµØÖ·¿Õ¼äÖС£ÕâЩÐéÄâ¿Õ¼äÏà
»¥Ö®¼ä¶¼ÍêÈ«¸ôÀ뿪À´£¬ËùÒÔ½ø³Ì¼ä²»»á»¥ÏàÓ°Ï졣ͬʱ£¬Ó²¼þÐéÄâÄÚ´æ»ú¹¹¿ÉÒÔ
½«ÄÚ´æµÄÄ³Ð©ÇøÓòÉèÖóɲ»¿Éд¡£ÕâÑù¿ÉÒÔ±£»¤´úÂëÓëÊý¾Ý²»»áÊܶñÒâ³ÌÐòµÄ¸ÉÈÅ¡£
ÄÚ´æÓ³Éä
ÄÚ´æÓ³Éä¼¼Êõ¿ÉÒÔ½«Ó³ÏóÎļþºÍÊý¾ÝÎļþÖ±½ÓÓ³Éäµ½½ø³ÌµÄµØÖ·¿Õ¼ä¡£ÔÚÄÚ´æÓ³Éä
ÖУ¬ÎļþµÄÄÚÈݱ»Ö±½ÓÁ¬½Óµ½½ø³ÌÐéÄâµØÖ·¿Õ¼äÉÏ¡£
¹«Æ½µÄÎïÀíÄÚ´æ·ÖÅä
ÄÚ´æ¹ÜÀí×ÓϵͳÔÊÐíϵͳÖÐÿ¸öÔËÐеĽø³Ì¹«Æ½µØ¹²ÏíϵͳÖеÄÎïÀíÄÚ´æ¡£
¹²ÏíÐéÄâÄÚ´æ
¾¡¹ÜÐéÄâÄÚ´æÔÊÐí½ø³ÌÓÐÆä¶ÀÁ¢µÄÐéÄâµØÖ·¿Õ¼ä£¬µ«ÓÐʱҲÐèÒªÔÚ½ø³ÌÖ®¼ä¹²ÏíÄÚ
´æ¡£ÀýÈçÓпÉÄÜϵͳÖÐÓм¸¸ö½ø³ÌͬʱÔËÐÐBASHÃüÁîÍâ¿Ç³ÌÐò¡£ÎªÁ˱ÜÃâÔÚÿ¸ö½ø
³ÌµÄÐéÄâÄÚ´æ¿Õ¼äÄÚ¶¼´æÔÚBASH³ÌÐòµÄ¿½±´£¬½ÏºÃµÄ½â¾ö°ì·¨ÊÇϵͳÎïÀíÄÚ´æÖÐÖ»
´æÔÚÒ»·ÝBASHµÄ¿½±´²¢ÔÚ¶à¸ö½ø³Ì¼ä¹²Ïí¡£¶¯Ì¬¿âÔòÊÇÁíÍâÒ»ÖÖ½ø³Ì¼ä¹²ÏíÖ´Ðдú
ÂëµÄ·½Ê½¡£¹²ÏíÄÚ´æ¿ÉÓÃÀ´×÷Ϊ½ø³Ì¼äͨѶ(IPC)µÄÊֶΣ¬¶à¸ö½ø³Ìͨ¹ý¹²ÏíÄÚ´æ
À´½»»»ÐÅÏ¢¡£LinuxÖ§³ÖSYSTEM VµÄ¹²ÏíÄÚ´æIPC»úÖÆ¡£
3.1 ÐéÄâÄÚ´æµÄ³éÏóÄ£ÐÍ
ÔÚÌÖÂÛLinuxÊÇÈçºÎ¾ßÌåʵÏÖ¶ÔÐéÄâÄÚ´æµÄÖ§³Öǰ£¬ÓбØÒª¿´Ò»Ï¸ü¼òµ¥µÄ³éÏóÄ£ÐÍ¡£
ÔÚ´¦ÀíÆ÷Ö´ÐгÌÐòʱÐèÒª½«Æä´ÓÄÚ´æÖжÁ³öÔÙ½øÐÐÖ¸Áî½âÂë¡£ÔÚÖ¸Áî½âÂë֮ǰËü±ØÐë
ÏòÄÚ´æÖÐij¸öλÖÃÈ¡³ö»òÕß´æÈëij¸öÖµ¡£È»ºóÖ´ÐдËÖ¸Áî²¢Ö¸Ïò³ÌÐòÖÐÏÂÒ»ÌõÖ¸Áî¡£
Ôڴ˹ý³ÌÖд¦ÀíÆ÷±ØÐëÆµ·±·ÃÎÊÄڴ棬ҪôȡָȡÊý£¬ÒªÃ´´æ´¢Êý¾Ý¡£
ÐéÄâÄÚ´æÏµÍ³ÖеÄËùÓеØÖ·¶¼ÊÇÐéÄâµØÖ·¶ø²»ÊÇÎïÀíµØÖ·¡£Í¨¹ý²Ù×÷ϵͳËùά»¤µÄÒ»
ϵÁбí¸ñÓÉ´¦ÀíÆ÷ʵÏÖÓÉÐéÄâµØÖ·µ½ÎïÀíµØÖ·µÄת»»¡£
ΪÁËʹת»»¸ü¼Ó¼òµ¥£¬ÐéÄâÄÚ´æÓëÎïÀíÄÚ´æ¶¼ÒÔÒ³ÃæÀ´×éÖ¯¡£²»Í¬ÏµÍ³ÖÐÒ³ÃæµÄ´óС
¿ÉÒÔÏàͬ£¬Ò²¿ÉÒÔ²»Í¬£¬ÕâÑù½«´øÀ´¹ÜÀíµÄ²»±ã¡£Alpha AXP´¦ÀíÆ÷ÉÏÔËÐеÄLinux
Ò³Ãæ´óСΪ8KB£¬¶øIntelX86ϵͳÉÏʹÓÃ4KBÒ³Ãæ¡£Ã¿¸öÒ³ÃæÍ¨¹ýÒ»¸ö½ÐÒ³Ãæ¿òºÅµÄ
Êý×ÖÀ´±êʾ(PFN)¡£
Ò³ÃæÄ£Ê½ÏµÄÐéÄâµØÖ·ÓÉÁ½²¿·Ö¹¹³É£ºÒ³Ãæ¿òºÅºÍÒ³ÃæÄÚÆ«ÒÆÖµ¡£Èç¹ûÒ³Ãæ´óСΪ4KB£¬
ÔòÐéÄâµØÖ·µÄ11£º0λ±íʾÐéÄâµØÖ·Æ«ÒÆÖµ£¬12λÒÔÉϱíʾÐéÄâÒ³Ãæ¿òºÅ¡£´¦ÀíÆ÷´¦Àí
ÐéÄâµØÖ·Ê±±ØÐëÍê³ÉµØÖ··ÖÀ빤×÷¡£ÔÚÒ³±íµÄ°ïÖúÏ£¬Ëü½«ÐéÄâÒ³Ãæ¿òºÅת»»³ÉÎïÀíÒ³
Ãæ¿òºÅ£¬È»ºó·ÃÎÊÎïÀíÒ³ÃæÖÐÏàÓ¦Æ«ÒÆ´¦¡£
XºÍYµÄÐéÄâµØÖ·¿Õ¼ä£¬ËüÃÇÓµÓи÷×ÔµÄÒ³±í¡£ÕâЩҳ±í½«¸÷¸ö½ø³ÌµÄÐéÄâÒ³ÃæÓ³Éäµ½
ÄÚ´æÖеÄÎïÀíÒ³Ãæ¡£ÔÚͼÖУ¬½ø³ÌXµÄÐéÄâÒ³Ãæ¿òºÅ0±»Ó³Éäµ½ÁËÎïÀíÒ³Ãæ¿òºÅ4¡£ÀíÂÛ
ÉÏÿ¸öÒ³±íÈë¿ÚÓ¦°üº¬ÒÔÏÂÄÚÈÝ£º
ÓÐЧ±ê¼Ç£¬±íʾ´ËÒ³±íÈë¿ÚÊÇÓÐЧµÄ
Ò³±íÈë¿ÚÃèÐðµÄÎïÀíÒ³Ãæ¿òºÅ
·ÃÎÊ¿ØÖÆÐÅÏ¢¡£ÓÃÀ´ÃèÐð´ËÒ³¿ÉÒÔ½øÐÐÄÄЩ²Ù×÷£¬ÊÇ·ñ¿Éд£¿ÊÇ·ñ°üº¬Ö´ÐдúÂë?
ÐéÄâÒ³Ãæ¿òºÅÊÇΪҳ±íÖÐµÄÆ«ÒÆ¡£ÐéÄâÒ³Ãæ¿òºÅ5¶ÔÓ¦±íÖеĵÚ6¸öµ¥Ôª£¨0ÊǵÚÒ»¸ö£©¡£
ΪÁ˽«ÐéÄâµØÖ·×ª»»ÎªÎïÀíµØÖ·£¬´¦ÀíÆ÷Ê×ÏȱØÐëµÃµ½ÐéÄâµØÖ·Ò³Ãæ¿òºÅ¼°Ò³ÄÚÆ«ÒÆ¡£
Ò»°ã½«Ò³Ãæ´óСÉèΪ2µÄ´ÎÃÝ¡£½«Í¼3.1ÖеÄÒ³Ãæ´óСÉèΪ0x2000×Ö½Ú£¨Ê®½øÖÆÎª8192£©
²¢ÇÒÔÚ½ø³ÌYµÄÐéÄâµØÖ·¿Õ¼äÖÐij¸öµØÖ·Îª0x2194£¬Ôò´¦ÀíÆ÷½«Æäת»»ÎªÐéÄâÒ³Ãæ¿òºÅ1
¼°Ò³ÄÚÆ«ÒÆ0x194¡£
´¦ÀíÆ÷ʹÓÃÐéÄâÒ³Ãæ¿òºÅΪË÷ÒýÀ´·ÃÎÊ´¦ÀíÆ÷Ò³±í£¬¼ìË÷Ò³±íÈë¿Ú¡£Èç¹ûÔÚ´ËλÖõÄÒ³
±íÈë¿ÚÓÐЧ£¬Ôò´¦ÀíÆ÷½«´Ó´ËÈë¿ÚÖеõ½ÎïÀíÒ³Ãæ¿òºÅ¡£Èç¹û´ËÈë¿ÚÎÞЧ£¬ÔòÒâζ×Å´¦
ÀíÆ÷´æÈ¡µÄÊÇÐéÄâÄÚ´æÖÐÒ»¸ö²»´æÔÚµÄÇøÓò¡£ÔÚÕâÖÖÇé¿öÏ£¬´¦ÀíÆ÷ÊDz»ÄܽøÐеØÖ·×ª
»»µÄ£¬Ëü±ØÐ뽫¿ØÖÆ´«µÝ¸ø²Ù×÷ϵͳÀ´Íê³ÉÕâ¸ö¹¤×÷¡£
ij¸ö½ø³ÌÊÔͼ·ÃÎÊ´¦ÀíÆ÷ÎÞ·¨½øÐÐÓÐЧµØÖ·×ª»»µÄÐéÄâµØÖ·Ê±£¬´¦ÀíÆ÷ÈçºÎ½«¿ØÖÆ´«µÝ
µ½²Ù×÷ϵͳÒÀÀµÓÚ¾ßÌåµÄ´¦ÀíÆ÷¡£Í¨³£µÄ×ö·¨ÊÇ£º´¦ÀíÆ÷Òý·¢Ò»¸öÒ³ÃæÊ§Ð§´í¶øÏÝÈë²Ù
×÷ϵͳºËÐÄ£¬ÕâÑù²Ù×÷ϵͳ½«µÃµ½ÓйØÎÞЧÐéÄâµØÖ·µÄÐÅÏ¢ÒÔ¼°·¢ÉúÒ³Ãæ´íÎóµÄÔÒò¡£
ÔÙÒÔͼ3.1ΪÀý£¬½ø³ÌYµÄÐéÄâÒ³Ãæ¿òºÅ1±»Ó³É䵽ϵͳÎïÀíÒ³Ãæ¿òºÅ4£¬ÔòÔÙÎïÀíÄÚ´æÖÐ
µÄÆðʼλÖÃΪ0x8000(4 * 0x2000)¡£¼ÓÉÏ0x194×Ö½ÚÆ«ÒÆÔòµÃµ½×îÖÕµÄÎïÀíµØÖ·0x8194¡£
ͨ¹ý½«ÐéÄâµØÖ·Ó³Éäµ½ÎïÀíµØÖ·£¬ÐéÄâÄÚ´æ¿ÉÒÔÒÔÈκÎ˳ÐòÓ³É䵽ϵͳÎïÀíÒ³Ãæ¡£ÀýÈç
£¬
½ø³ÌXµÄÐéÄâÒ³Ãæ¿òºÅ0±»Ó³Éäµ½ÎïÀíÒ³Ãæ¿òºÅ1¶øÐéÄâÒ³Ãæ¿òºÅ7±»Ó³Éäµ½ÎïÀíÒ³Ãæ¿òºÅ
0£¬
ËäÈ»ºóÕßµÄÐéÄâÒ³Ãæ¿òºÅÒª¸ßÓÚǰÕß¡£ÕâÑùÐéÄâÄÚ´æ¼¼Êõ´øÀ´ÁËÓÐȤµÄ½á¹û£ºÐéÄâÄÚ´æ
ÖеÄÒ³ÃæÎÞÐëÔÚÎïÀíÄÚ´æ±£³ÖÌØ¶¨Ë³Ðò¡£
3.1.1 ÇëÇó»»Ò³
ÔÚÎïÀíÄÚ´æ±ÈÐéÄâÄÚ´æÐ¡µÃ¶àµÄϵͳÖУ¬²Ù×÷ϵͳ±ØÐëÌá¸ßÎïÀíÄÚ´æµÄʹÓÃЧÂÊ¡£½ÚÊ¡
ÎïÀíÄÚ´æµÄÒ»ÖÖ·½·¨Êǽö¼ÓÔØÄÇЩÕýÔÚ±»Ö´ÐгÌÐòʹÓõÄÐéÄâÒ³Ãæ¡£±ÈÈç˵£¬Ä³¸öÊý¾Ý
¿â³ÌÐò¿ÉÄÜÒª¶Ôij¸öÊý¾Ý¿â½øÐвéѯ²Ù×÷£¬´Ëʱ²¢²»ÊÇÊý¾Ý¿âµÄËùÓÐÄÚÈݶ¼Òª¼ÓÔØµ½ÄÚ
´æÖÐÈ¥£¬¶øÖ»¼ÓÔØÄÇЩҪÓõIJ¿·Ö¡£Èç¹û´ËÊý¾Ý¿â²éѯÊÇÒ»¸öËÑË÷²éѯ¶øÎÞÐë¶ÔÊý¾Ý¿â
½øÐÐÌí¼Ó¼Ç¼²Ù×÷£¬Ôò¼ÓÔØÌí¼Ó¼Ç¼µÄ´úÂëÊǺÁÎÞÒâÒåµÄ¡£ÕâÖÖ½ö½«Òª·ÃÎʵÄÐéÄâÒ³Ãæ
ÔØÈëµÄ¼¼Êõ½ÐÇëÇó»»Ò³¡£
µ±½ø³ÌÊÔͼ·ÃÎʵ±Ç°²»ÔÚÄÚ´æÖеÄÐéÄâµØÖ·Ê±£¬´¦ÀíÆ÷ÔÚÒ³±íÖÐÎÞ·¨ÕÒµ½ËùÒýÓõØÖ·µÄ
Èë¿Ú¡£¶ÔÓÚÐéÄâÒ³Ãæ¿òºÅ2£¬½ø³ÌXµÄÒ³±íÖÐûÓÐÈë¿Ú£¬ÕâÑùµ±½ø³ÌXÊÔͼ·ÃÎÊÐéÄâÒ³Ãæ¿ò
ºÅ2ÄÚÈÝʱ£¬´¦ÀíÆ÷²»Äܽ«´ËµØÖ·×ª»»³ÉÎïÀíµØÖ·¡£Õâʱ´¦ÀíÆ÷֪ͨ²Ù×÷ϵͳÓÐÒ³Ãæ´íÎó
·¢Éú¡£
Èç¹û·¢ÉúÒ³Ãæ´íµÄÐéÄâµØÖ·ÊÇÎÞЧµÄ£¬Ôò±íÃ÷½ø³ÌÔÚÊÔͼ·ÃÎÊÒ»¸ö²»´æÔÚµÄÐéÄâµØÖ·¡£
Õâ¿ÉÄÜÊÇÓ¦ÓóÌÐò³ö´í¶øÒýÆðµÄ£¬ÀýÈçËüÊÔͼ¶ÔÄÚ´æ½øÐÐÒ»¸öËæ»úµÄд²Ù×÷¡£´Ëʱ²Ù×÷
ϵͳ½«ÖÕÖ¹´ËÓ¦ÓõÄÔËÐÐÒÔ±£»¤ÏµÍ³ÖÐÆäËû½ø³Ì²»Êܴ˳ö´í½ø³ÌµÄÓ°Ïì¡£
Èç¹û³ö´íÐéÄâµØÖ·ÊÇÓÐЧµÄ£¬µ«ÊÇËüÖ¸ÏòµÄÒ³Ãæµ±Ç°²»ÔÚÄÚ´æÖУ¬Ôò²Ù×÷ϵͳ±ØÐ뽫´Ë
Ò³Ãæ´Ó´ÅÅÌÓ³ÏóÖжÁÈëµ½ÄÚ´æÖÐÀ´¡£ÓÉÓÚ·ÃÅÌʱ¼ä½Ï³¤£¬½ø³Ì±ØÐëµÈ´ýÒ»¶Îʱ¼äÖ±µ½Ò³
Ãæ±»È¡³öÀ´¡£Èç¹ûϵͳÖл¹´æÔÚÆäËû½ø³Ì£¬²Ù×÷ϵͳ¾Í»áÔÚ¶ÁÈ¡Ò³Ãæ¹ý³ÌÖеĵȴý¹ý³Ì
ÖÐÑ¡ÔñÆäÖÐÖ®Ò»À´ÔËÐС£¶ÁÈ¡»ØÀ´µÄÒ³Ãæ½«±»·ÅÔÚÒ»¸ö¿ÕÏеÄÎïÀíÒ³Ãæ¿òÖУ¬Í¬Ê±´Ë½ø
³ÌµÄÒ³±íÖн«Ìí¼Ó¶ÔÓ¦´ËÐéÄâÒ³Ãæ¿òºÅµÄÈë¿Ú¡£×îºó½ø³Ì½«´Ó·¢ÉúÒ³Ãæ´íÎóµÄµØ·½ÖØÐÂ
¿ªÊ¼ÔËÐС£´ËʱÕû¸öÐéÄâÄÚ´æ·ÃÎʹý³Ì¸æÒ»¶ÎÂ䣬´¦ÀíÆ÷ÓÖ¿ÉÒÔ¼ÌÐø½øÐÐÐéÄâµØÖ·µ½Îï
ÀíµØÖ·×ª»»£¬¶ø½ø³ÌÒ²µÃÒÔ¼ÌÐøÔËÐС£
LinuxʹÓÃÇëÇó»»Ò³½«¿ÉÖ´ÐÐÓ³Ïó¼ÓÔØµ½½ø³ÌµÄÐéÄâÄÚ´æÖС£µ±ÃüÁîÖ´ÐÐʱ£¬¿ÉÖ´ÐеÄÃü
ÁîÎļþ±»´ò¿ª£¬Í¬Ê±ÆäÄÚÈݱ»Ó³Éäµ½½ø³ÌµÄÐéÄâÄÚ´æ¡£ÕâЩ²Ù×÷ÊÇͨ¹ýÐÞ¸ÄÃèÐð½ø³ÌÄÚ
´æÓ³ÏóµÄÊý¾Ý½á¹¹À´Íê³ÉµÄ£¬´Ë¹ý³Ì³ÆÎªÄÚ´æÓ³É䡣Ȼ¶øÖ»ÓÐÓ³ÏóµÄÆðʼ²¿·Ö±»µ÷ÈëÎï
ÀíÄڴ棬ÆäÓಿ·ÖÈÔÈ»ÁôÔÚ´ÅÅÌÉÏ¡£µ±Ó³ÏóÖ´ÐÐʱ£¬Ëü»á²úÉúÒ³Ãæ´íÎó£¬ÕâÑùLinux½«¾ö
¶¨½«´ÅÅÌÉÏÄÄЩ²¿·Öµ÷ÈëÄÚ´æ¼ÌÐøÖ´ÐС£
3.1.2 ½»»»
Èç¹û½ø³ÌÐèÒª°ÑÒ»¸öÐéÄâÒ³Ãæµ÷ÈëÎïÀíÄÚ´æ¶øÕýºÃϵͳÖÐûÓпÕÏеÄÎïÀíÒ³Ãæ£¬²Ù×÷ϵ
ͳ±ØÐ붪ÆúλÓÚÎïÀíÄÚ´æÖеÄÄ³Ð©Ò³ÃæÀ´ÎªÖ®ÌÚ³ö¿Õ¼ä¡£
Èç¹ûÄÇЩ´ÓÎïÀíÄÚ´æÖжªÆú³öÀ´µÄÒ³ÃæÀ´×ÔÓÚ´ÅÅÌÉϵĿÉÖ´ÐÐÎļþ»òÕßÊý¾ÝÎļþ£¬²¢ÇÒ
ûÓÐÐ޸ĹýÔò²»ÐèÒª±£´æÄÇÐ©Ò³Ãæ¡£µ±½ø³ÌÔÙ´ÎÐèÒª´ËÒ³ÃæÊ±£¬Ö±½Ó´Ó¿ÉÖ´ÐÐÎļþ»òÕß
Êý¾ÝÎļþÖжÁ³ö¡£
µ«ÊÇÈç¹ûÒ³Ãæ±»Ð޸Ĺý£¬Ôò²Ù×÷ϵͳ±ØÐë±£ÁôÒ³ÃæµÄÄÚÈÝÒÔ±¸ÔٴηÃÎÊ¡£ÕâÖÖÒ³Ãæ±»³Æ
ΪdirtyÒ³Ãæ£¬µ±´ÓÄÚ´æÖÐÒÆ³öÀ´Ê±£¬ËüÃDZØÐë±£´æÔÚ½Ð×ö½»»»ÎļþµÄÌØÊâÎļþÖС£Ïà¶Ô
ÓÚ´¦ÀíÆ÷ºÍÎïÀíÄÚ´æµÄËÙ¶È£¬·ÃÎʽ»»»ÎļþµÄËÙ¶ÈÊǷdz£»ºÂýµÄ£¬²Ù×÷ϵͳ±ØÐëÔÚ½«Õâ
ЩdirtyÒ³ÃæÐ´Èë´ÅÅ̺ͽ«Æä¼ÌÐø±£ÁôÔÚÄÚ´æÖÐ×ö³öÑ¡Ôñ¡£
Ñ¡Ôñ¶ªÆúÒ³ÃæµÄËã·¨¾³£ÐèÒªÅжÏÄÄÐ©Ò³ÃæÒª¶ªÆú»òÕß½»»»£¬Èç¹û½»»»Ë㷨ЧÂʺܵͣ¬
Ôò»á·¢Éú"µßô¤"ÏÖÏó¡£ÔÚÕâÖÖÇé¿öÏ£¬Ò³Ãæ²»¶ÏµÄ±»Ð´Èë´ÅÅÌÓÖ´Ó´ÅÅÌÖжÁ»ØÀ´£¬ÕâÑù
Ò»À´²Ù×÷ϵͳ¾ÍÎÞ·¨½øÐÐÆäËûÈκι¤×÷¡£ÒÔͼ3.1ΪÀý£¬Èç¹ûÎïÀíÒ³Ãæ¿òºÅ1±»Æµ·±Ê¹ÓÃ
£¬
ÔòÒ³Ãæ¶ªÆúËã·¨½«Æä×÷Ϊ½»»»µ½Ó²Å̵ĺîÑ¡ÕßÊDz»Ç¡µ±µÄ¡£Ò»¸ö½ø³Ìµ±Ç°¾³£Ê¹ÓõÄÒ³
Ãæ¼¯ºÏ½Ð×ö¹¤×÷¼¯¡£¸ßЧµÄ½»»»²ßÂÔÄܹ»È·±£ËùÓнø³ÌµÄ¹¤×÷¼¯±£´æÔÚÎïÀíÄÚ´æÖС£
LinuxʹÓÃ×î½ü×îÉÙʹÓã¨LRU£©Ò³ÃæË¥ÀÏËã·¨À´¹«Æ½µØÑ¡Ôñ½«Òª´ÓϵͳÖÐÅׯúµÄÒ³Ãæ¡£
ÕâÖÖ²ßÂÔΪϵͳÖеÄÿ¸öÒ³ÃæÉèÖÃÒ»¸öÄêÁ䣬ËüËæÒ³Ãæ·ÃÎÊ´ÎÊý¶ø±ä»¯¡£Ò³Ãæ±»·ÃÎʵÄ
´ÎÊýÔ½¶àÔòÒ³ÃæÄêÁäÔ½ÄêÇ᣻Ïà·´ÔòԽ˥ÀÏ¡£ÄêÁä½ÏÀϵÄÒ³ÃæÊÇ´ý½»»»Ò³ÃæµÄ×î¼ÑºîÑ¡
Õß¡£
3.1.3 ¹²ÏíÐéÄâÄÚ´æ
ÐéÄâÄÚ´æÈöà¸ö½ø³ÌÖ®¼ä¿ÉÒÔ·½±ãµØ¹²ÏíÄÚ´æ¡£ËùÓеÄÄÚ´æ·ÃÎʶ¼ÊÇͨ¹ýÿ¸ö½ø³Ì×ÔÉí
µÄÒ³±í½øÐС£¶ÔÓÚÁ½¸ö¹²ÏíͬһÎïÀíÒ³ÃæµÄ½ø³Ì£¬ÔÚ¸÷×ÔµÄÒ³±íÖбØÐë°üº¬ÓÐÖ¸ÏòÕâÒ»
ÎïÀíÒ³Ãæ¿òºÅµÄÒ³±íÈë¿Ú¡£
Á½¸ö½ø³Ì¹²ÏíÎïÀíÒ³Ãæ¿òºÅ4¡£¶Ô½ø³ÌXÀ´ËµÆä¶ÔÓ¦µÄÐéÄâÒ³Ãæ¿òºÅΪ4¶ø½ø³ÌYµÄΪ6¡£
Õâ¸öÓÐȤµÄÏÖÏó˵Ã÷£º¹²ÏíÎïÀíÒ³ÃæµÄ½ø³Ì¶ÔÓ¦´ËÒ³ÃæµÄÐéÄâÄÚ´æÎ»ÖÿÉÒÔ²»Í¬¡£
3.1.4 ÎïÀíÓëÐéÄâѰַģʽ
²Ù×÷ϵͳ×ÔÉíÒ²ÔËÐÐÔÚÐéÄâÄÚ´æÖеÄÒâÒå²»´ó¡£Èç¹û²Ù×÷ϵͳ±»ÆÈά»¤×ÔÉíµÄÒ³±íÄǽ«
ÊÇÒ»¸öÁîÈ˶ñÐĵķ½°¸¡£¶àÊýͨÓô¦ÀíÆ÷ͬʱ֧³ÖÎïÀíѰַºÍÐéÄâѰַģʽ¡£ÎïÀíѰַ
ģʽÎÞÐèÒ³±íµÄ²ÎÓëÇÒ´¦ÀíÆ÷²»»á½øÐÐÈκεØÖ·×ª»»¡£LinuxºËÐÄÖ±½ÓÔËÐÐÔÚÎïÀíµØÖ·¿Õ
¼äÉÏ¡£
Alpha AXP´¦ÀíÆ÷ûÓÐÌØÊâµÄÎïÀíѰַģʽ¡£Ëü½«ÄÚ´æ¿Õ¼ä»®·ÖΪ¼¸¸öÇøÓò²¢½«ÆäÖÐÁ½¸ö
Ö¸¶¨ÎªÎïÀíÓ³É䵨ַ¡£ºËÐĵØÖ·¿Õ¼ä±»³ÆÎªKSEGµØÖ·¿Õ¼ä£¬ËüλÓÚµØÖ·0xfffffc000000
0000
ÒÔÉÏÇøÓò¡£ÎªÁËÖ´ÐÐλÓÚKSEGµÄºËÐÄ´úÂë»ò·ÃÎÊÄÇÀïµÄÊý¾Ý£¬´úÂë±ØÐëÔÚºËÐÄģʽÏÂÖ´
ÐС£
AlphaÉϵÄLinuxºËÐÄ´ÓµØÖ·0xfffffc0000310000¿ªÊ¼Ö´ÐÐ.
3.1.5 ·ÃÎÊ¿ØÖÆ
Ò³±íÈë¿Ú°üº¬ÁË·ÃÎÊ¿ØÖÆÐÅÏ¢¡£ÓÉÓÚ´¦ÀíÆ÷ÒѾ½«Ò³±íÈë¿Ú×÷ΪÐéÄâµØÖ·µ½ÎïÀíµØÖ·µÄ
Ó³
É䣬ÄÇô¿ÉÒԺܷ½±ãµØÊ¹Ó÷ÃÎÊ¿ØÖÆÐÅÏ¢À´Åжϴ¦ÀíÆ÷ÊÇ·ñÔÚÒÔÆäÓ¦Óеķ½Ê½À´·ÃÎÊÄÚ
´æ¡£
Öî¶àÒòËØÊ¹µÃÓбØÒªÑϸñ¿ØÖƶÔÄÚ´æÇøÓòµÄ·ÃÎÊ¡£ÓÐЩÄڴ棬Èç°üº¬Ö´ÐдúÂëµÄ²¿·Ö£¬
ÏÔ
ȻӦ¸ÃÊÇÖ»¶ÁµÄ£¬²Ù×÷ϵͳ¾ö²»ÄÜÔÊÐí½ø³Ì¶Ô´ËÇøÓòµÄд²Ù×÷¡£Ïà·´°üº¬Êý¾ÝµÄÒ³ÃæÓ¦
¸Ã
ÊÇ¿ÉдµÄ£¬µ«ÊÇÈ¥Ö´ÐÐÕâ¶ÎÊý¾Ý¿Ï¶¨½«µ¼Ö´íÎó·¢Éú¡£¶àÊý´¦ÀíÆ÷ÖÁÉÙÓÐÁ½ÖÖÖ´Ðз½Ê½
£º
ºËÐÄ̬ÓëÓû§Ì¬¡£ÈκÎÈ˶¼²»»áÔÊÐíÔÚÓû§Ì¬ÏÂÖ´ÐкËÐÄ´úÂë»òÕßÔÚÓû§Ì¬ÏÂÐ޸ĺËÐÄ
Êý
¾Ý½á¹¹¡£
Ò³±íÈë¿ÚÖеķÃÎÊ¿ØÖÆÐÅÏ¢ÊÇ´¦ÀíÆ÷Ïà¹ØµÄ£»Alpha AXP´¦ÀíÆ÷µÄPTE(Page Table Entr
y)¡£
ÕâЩλÓòµÄº¬ÒåÈçÏ£º
V ÓÐЧ£¬Èç¹û´ËλÖÃ룬±íÃ÷´ËPTEÓÐЧ
FOE ¡°Ö´ÐÐʱʧЧ¡±£¬ÎÞÂÛºÏʱֻҪִÐаüº¬ÔÚ´ËÒ³ÃæÖеÄÖ¸Á´¦ÀíÆ÷¶¼½«±¨¸æÒ³Ãæ
´íÎó²¢½«¿ØÖÆ´«µÝ
FOW ¡°Ð´Ê±Ê§Ð§¡±, ³ýÁËÒ³Ãæ´íÎó·¢ÉúÔÚ¶Ô´ËÒ³ÃæµÄдʱ£¬ÆäËûÓëÉÏÏàͬ¡£
FOR ¡°¶ÁʱʧЧ¡±£¬³ýÁËÒ³Ãæ´íÎó·¢ÉúÔÚ¶Ô´ËÒ³ÃæµÄ¶Áʱ£¬ÆäËûÓëÉÏÏàͬ¡£
ASM µØÖ·¿Õ¼äÆ¥Åä¡£±»²Ù×÷ϵͳÓÃÓÚÇåϴת»»»º³åÖеÄijЩÈë¿Ú¡£
KRE ÔËÐÐÔÚºËÐÄģʽϵĴúÂë¿ÉÒÔ¶Á´ËÒ³Ãæ¡£
URE ÔËÐÐÔÚÓû§Ä£Ê½ÏµĴúÂë¿ÉÒÔ¶Á´ËÒ³Ãæ¡£
GH ½«Õû¸ö¿éÓ³Éäµ½µ¥¸ö¶ø²»ÊǶà¸öת»»»º³åʱµÄÒþº¬Á£¶È¡£
KWE ÔËÐÐÔÚºËÐÄģʽϵĴúÂë¿ÉÒÔд´ËÒ³Ãæ¡£
UWE ÔËÐÐÔÚÓû§Ä£Ê½ÏµĴúÂë¿ÉÒÔд´ËÒ³Ãæ¡£
page frame number
¶ÔÓÚVλÖÃλµÄPTE£¬´ËÓò°üº¬Á˶ÔÓ¦´ËPTEµÄÎïÀíÒ³Ãæ¿òºÅ£»¶ÔÓÚÎÞЧPTE£¬´ËÓò²»
Ϊ0£¬Ëü°üº¬ÁËÒ³ÃæÔÚ½»»»ÎļþÖÐλÖõÄÐÅÏ¢¡£
ÒÔÏÂÁ½Î»ÓÉLinux¶¨Ò岢ʹÓá£
_PAGE_DIRTY
Èç¹ûÖÃ룬´ËÒ³ÃæÒª±»Ð´Èë½»»»Îļþ¡£
_PAGE_ACCESSED
LinuxÓÃËü±íÊ¾Ò³ÃæÒѾ±»·ÃÎʹý¡£
3.2 ¸ßËÙ»º³å
Èç¹ûÓÃÉÏÊöÀíÂÛÄ£ÐÍÀ´ÊµÏÖÒ»¸öϵͳ£¬Ëü¿ÉÄÜ¿ÉÒÔ¹¤×÷£¬µ«Ð§Âʲ»»á¸ß¡£²Ù×÷ϵͳÉè¼Æ
Õߺʹ¦ÀíÆ÷Éè¼ÆÕß¶¼ÔÚŬÁ¦ÒÔÌá¸ßϵͳµÄÐÔÄÜ¡£³ýÁËÖÆÔì¸ü¿ìµÄCPUºÍÄÚ´æÍ⣬×îºÃµÄ°ì
·¨ÊÇÔÚ¸ßËÙ»º³åÖÐά»¤ÓÐÓÃÐÅÏ¢ºÍÊý¾ÝÒÔ¼Ó¿ìijЩ²Ù×÷¡£LinuxʹÓÃÁËÐí¶àÓë¸ßËÙ»º³åÏà
¹ØµÄÄÚ´æ¹ÜÀí²ßÂÔ¡£
Buffer Cache
Õâ¸öbuffer cacheÖаüº¬Á˱»¿éÉ豸Çý¶¯Ê¹ÓõÄÊý¾Ý»º³å¡£
ÕâЩ»º³åµÄµ¥ÔªµÄ´óСһ°ã¹Ì¶¨(ÀýÈç˵512×Ö½Ú)²¢ÇÒ°üº¬´Ó¿éÉ豸¶Á³ö»òÕßдÈë
µÄÐÅÏ¢¿é¡£¿éÉ豸ÊǽöÄܹ»ÒԹ̶¨´óС¿é½øÐжÁд²Ù×÷µÄÉ豸¡£ËùÓеÄÓ²Å̶¼ÊÇ¿é
É豸¡£
ÀûÓÃÉ豸±êÖ¾·ûºÍËùÐè¿éºÅ×÷Ë÷Òý¿ÉÒÔÔÚbuffer
cacheÖÐѸËÙµØÕÒµ½Êý¾Ý¡£¿éÉ豸ֻÄܹ»Í¨¹ýbuffer
cacheÀ´´æÈ¡¡£Èç¹ûÊý¾ÝÔÚbuffer
cacheÖпÉÒÔÕÒµ½ÔòÎÞÐè´ÓÎïÀí¿éÉ豸(ÈçÓ²ÅÌ)ÖжÁÈ¡£¬ÕâÑù¿ÉÒÔ¼ÓËÙ·ÃÎÊ¡£
Page Cache
ÓÃÀ´¼ÓËÙÓ²ÅÌÉÏ¿ÉÖ´ÐÐÓ³ÏóÎļþÓëÊý¾ÝÎļþµÄ´æÈ¡¡£
Ëüÿ´Î»º³åÒ»¸öÒ³ÃæµÄÎļþÄÚÈÝ¡£Ò³Ãæ´Ó´ÅÅÌÉ϶ÁÈëÄÚ´æºó»º´æÔÚpage
cacheÖС£
Swap Cache
Ö»ÓÐÐ޸ĹýµÄÒ³Ãæ´æ´¢ÔÚ½»»»ÎļþÖС£
Ö»ÒªÕâÐ©Ò³ÃæÔÚдÈëµ½½»»»ÎļþºóûÓб»Ð޸ģ¬ÔòÏ´δËÒ³Ãæ±»½»»»³öÄÚ´æÊ±£¬
¾Í²»±ØÔÙ½øÐиüÐÂд²Ù×÷£¬ÕâÐ©Ò³Ãæ¶¼¿ÉÒÔ¼òµ¥µÄ¶ªÆú¡£ÔÚ½»»»Æµ·±·¢ÉúµÄϵͳ
ÖУ¬Swap Cache¿ÉÒÔʡϺܶ಻±ØÒªÇÒºÄʱµÄ´ÅÅ̲Ù×÷¡£
Hardware Caches
Ò»¸ö³£¼ûµÄhardware
cacheÊÇ´¦ÀíÆ÷ÖеÄÒ³±íÈë¿Úcache¡£´¦ÀíÆ÷²»×ÜÊÇÖ±½Ó¶Áȡҳ±í¶øÊÇÔÚÐèҪʱ
»º´æÒ³ÃæµÄת»»¡£ÕâÖÖcacheÓÖ½Ð×öת»»ÅÔÊÓ»º³å(Translation Look-aside
Buffers)£¬Ëü°üº¬ÏµÍ³ÖÐÒ»¸ö»ò¶à¸ö´¦ÀíÆ÷µÄÒ³±íÈë¿ÚµÄ»º³å¿½±´¡£
µ±·¢³ö¶ÔÐéÄâµØÖ·µÄÒýÓÃʱ£¬´¦ÀíÆ÷ÊÔͼÕÒµ½ÏàÆ¥ÅäµÄTLBÈë¿Ú¡£Èç¹ûÕÒµ½ÔòÖ±½Ó
½«ÐéÄâµØÖ·×ª»»³ÉÎïÀíµØÖ·²¢¶ÔÊý¾Ý½øÐд¦Àí¡£Èç¹ûûÓÐÕÒµ½ÔòÏò²Ù×÷ϵͳѰÇó°ï
Öú¡£´¦ÀíÆ÷½«Ïò²Ù×÷ϵͳ·¢³öTLBʧÅäÐźţ¬ËüʹÓÃÒ»¸öÌØ¶¨µÄϵͳ»úÖÆÀ´½«´ËÒì
³£
֪ͨ²Ù×÷ϵͳ¡£²Ù×÷ϵͳÔòΪ´ËµØÖ·Æ¥Åä¶Ô²úÉúеÄTLBÈë¿Ú¡£µ±²Ù×÷ϵͳÇå³ý´Ë
Ò쳣ʱ£¬´¦ÀíÆ÷½«ÔٴνøÐÐÐéÄâµØÖ·×ª»»¡£ÓÉÓÚ´ËʱÔÚTLBÖÐÒѾÓÐÏàÓ¦µÄÈë¿Ú£¬
Õâ´Î²Ù×÷½«³É¹¦¡£
ʹÓøßËÙ»º´æµÄȱµãÔÚÓÚLinux±ØÐëÏûºÄ¸ü¶àµÄʱ¼äºÍ¿Õ¼äÀ´Î¬»¤ÕâЩ»º´æ£¬²¢ÇÒ
µ±»º´æÏµÍ³±ÀÀ£Ê±ÏµÍ³Ò²½«±ÀÀ£¡£
3.3 Linux Ò³±í
Linux×ÜÊǼٶ¨´¦ÀíÆ÷ÓÐÈý¼¶Ò³±í¡£Ã¿¸öÒ³±íͨ¹ýËù°üº¬µÄϼ¶Ò³±íµÄÒ³Ãæ¿òºÅÀ´·ÃÎÊ¡£
ÿ¸öÓòÌṩÁËij¸öÖ¸¶¨Ò³±íµÄÆ«ÒÆ¡£ÎªÁ˽«ÐéÄâµØÖ·×ª»»³ÉÎïÀíµØÖ·£¬´¦ÀíÆ÷±ØÐëµÃµ½
ÿ
¸öÓòµÄÖµ¡£Õâ¸ö¹ý³Ì½«³ÖÐøÈý´ÎÖ±µ½¶ÔÓ¦ÓÚÐéÄâµØÖ·µÄÎïÀíÒ³Ãæ¿òºÅ±»ÕÒµ½¡£×îºóÔÙʹ
ÓÃ
ÐéÄâµØÖ·ÖеÄ×îºóÒ»¸öÓò£¬µÃµ½ÁËÒ³ÃæÖÐÊý¾ÝµÄµØÖ·¡£
ΪÁËʵÏÖ¿çÆ½Ì¨ÔËÐУ¬LinuxÌṩÁËһϵÁÐת»»ºêʹµÃºËÐÄ¿ÉÒÔ·ÃÎÊÌØ¶¨½ø³ÌµÄÒ³±í¡£
ÕâÑùºËÐÄÎÞÐèÖªµÀÒ³±íÈë¿ÚµÄ½á¹¹ÒÔ¼°ËüÃǵÄÅÅÁз½Ê½¡£
ÕâÖÖ²ßÂÔÏ൱³É¹¦£¬ÎÞÂÛÔÚ¾ßÓÐÈý¼¶Ò³±í½á¹¹µÄAlpha AXP»¹ÊÇÁ½¼¶Ò³±íµÄIntel X86´¦
ÀíÆ÷ÖУ¬Linux×ÜÊÇʹ ÓÃÏàͬµÄÒ³±í²Ù×Ý´úÂë¡£
3.4 Ò³Ãæ·ÖÅäÓë»ØÊÕ
¶ÔϵͳÖÐÎïÀíÒ³ÃæµÄÇëÇóÊ®·ÖƵ·±¡£ÀýÈçµ±Ò»¸ö¿ÉÖ´ÐÐÓ³Ïó±»µ÷ÈëÄÚ´æÊ±£¬²Ù×÷ϵͳ±Ø
ÐëΪÆä·ÖÅäÒ³Ãæ¡£µ±Ó³ÏóÖ´ÐÐÍê±ÏºÍÐ¶ÔØÊ±ÕâÐ©Ò³Ãæ±ØÐë±»ÊÍ·Å¡£ÎïÀíÒ³ÃæµÄÁíÒ»¸öÓÃ
;ÊÇ´æ´¢Ò³±íÕâЩºËÐÄÊý¾Ý½á¹¹¡£ÐéÄâÄÚ´æ×ÓϵͳÖиºÔðÒ³Ãæ·ÖÅäÓë»ØÊÕµÄÊý¾Ý½á¹¹ºÍ
»úÖÆ¿ÉÄÜÓô¦×î´ó¡£
ϵͳÖÐËùÓеÄÎïÀíÒ³ÃæÓðüº¬mem_map_t½á¹¹µÄÁ´±ímem_mapÀ´ÃèÐð£¬ÕâЩ½á¹¹ÔÚϵͳÆô
¶¯Ê±³õʼ»¯¡£Ã¿¸ömem_map_tÃèÐðÁËÒ»¸öÎïÀíÒ³Ãæ¡£ÆäÖÐÓëÄÚ´æ¹ÜÀíÏà¹ØµÄÖØÒªÓòÈçÏ£º
count
¼Ç¼ʹÓôËÒ³ÃæµÄÓû§¸öÊý¡£µ±Õâ¸öÒ³ÃæÔÚ¶à¸ö½ø³ÌÖ®¼ä¹²Ïíʱ£¬ËüµÄÖµ´óÓÚ1¡£
age ´ËÓòÃèÐðÒ³ÃæµÄÄêÁ䣬ÓÃÓÚÑ¡Ôñ½«Êʵ±µÄÒ³ÃæÅׯú»òÕßÖû»³öÄÚ´æÊ±¡£
map_nr
¼Ç¼±¾mem_map_tÃèÐðµÄÎïÀíÒ³Ãæ¿òºÅ¡£
Ò³Ãæ·ÖÅä´úÂëʹÓÃfree_areaÊý×éÀ´Ñ°ÕÒºÍÊÍ·ÅÒ³Ãæ£¬´Ë»úÖÆ¸ºÔðÕû¸ö»º³å¹ÜÀí¡£ÁíÍâ´Ë
´úÂëÓë´¦ÀíÆ÷ʹÓõÄÒ³Ãæ´óСºÍÎïÀí·ÖÒ³»úÖÆÎ޹ء£
free_areaÖеÄÿ¸öÔªËØ¶¼°üº¬Ò³Ãæ¿éµÄÐÅÏ¢¡£Êý×éÖеÚÒ»¸öÔªËØÃèÐð1¸öÒ³Ãæ£¬µÚ¶þ¸ö
±íʾ2¸öÒ³Ãæ´óСµÄ¿é¶ø½ÓÏÂÀ´±íʾ4¸öÒ³Ãæ´óСµÄ¿é£¬×ÜÖ®¶¼ÊÇ2µÄ´ÎÃݱ¶´óС¡£listÓò
±íʾһ¸ö¶ÓÁÐÍ·£¬Ëü°üº¬Ö¸Ïòmem_mapÊý×éÖÐpageÊý¾Ý½á¹¹µÄÖ¸Õë¡£ËùÓеĿÕÏÐÒ³Ãæ¶¼ÔÚ
´Ë¶ÓÁÐÖС£mapÓòÊÇÖ¸Ïòij¸öÌØ¶¨Ò³Ãæ³ß´çµÄÒ³Ãæ×é·ÖÅäÇé¿öλͼµÄÖ¸Õë¡£µ±Ò³ÃæµÄµÚN
¿é
¿ÕÏÐʱ£¬Î»Í¼µÄµÚNλ±»ÖÃλ¡£
free_area½á¹¹¡£µÚÒ»¸öÔªËØÓиö×ÔÓÉÒ³Ãæ£¨Ò³Ãæ¿òºÅ0£©£¬µÚ¶þ¸öÔªËØÓÐ4¸öÒ³Ãæ´óСµÄ
2¸ö×ÔÓɿ飬ǰһ¸ö´ÓÒ³Ãæ¿òºÅ4¿ªÊ¼¶øºóÒ»¸ö´ÓÒ³Ãæ¿òºÅ56¿ªÊ¼¡£
3.4.1 Ò³Ãæ·ÖÅä
LinuxʹÓÃBuddyËã·¨À´ÓÐЧµÄ·ÖÅäÓë»ØÊÕÒ³Ãæ¿é¡£Ò³Ãæ·ÖÅä´úÂëÿ´Î·ÖÅä°üº¬Ò»¸ö»ò
Õß¶à¸öÎïÀíÒ³ÃæµÄÄÚ´æ¿é¡£Ò³ÃæÒÔ2µÄ´ÎÃݵÄÄÚ´æ¿éÀ´·ÖÅä¡£ÕâÒâζ×ÅËü¿ÉÒÔ·ÖÅä1¸ö¡¢
2¸öºÍ4¸öÒ³ÃæµÄ¿é¡£Ö»ÒªÏµÍ³ÖÐÓÐ×ã¹»µÄ¿ÕÏÐÒ³ÃæÀ´Âú×ãÕâ¸öÒªÇó(nr_free_pages>
min_free_page)£¬ÄÚ´æ·ÖÅä´úÂ뽫ÔÚfree_areaÖÐѰÕÒÒ»¸öÓëÇëÇó´óСÏàͬµÄ¿ÕÏп顣
free_areaÖеÄÿ¸öÔªËØ±£´æ×ÅÒ»¸ö·´Ó³ÕâÑù´óСµÄÒÑ·ÖÅäÓë¿ÕÏÐÒ³ÃæµÄλͼ¡£ÀýÈ磬
free_areaÊý×éÖеڶþ¸öÔªËØÖ¸ÏòÒ»¸ö·´Ó³´óСΪËĸöÒ³ÃæµÄÄÚ´æ¿é·ÖÅäÇé¿öµÄÄÚ´æÓ³
Ïó¡£
·ÖÅäËã·¨Ê×ÏÈËÑѰÂú×ãÇëÇó´óСµÄÒ³Ãæ¡£Ëü´Ófree_areaÊý¾Ý½á¹¹µÄlistÓò×ÅÊÖÑØÁ´À´
ËÑË÷¿ÕÏÐÒ³Ãæ¡£Èç¹ûûÓÐÕâÑùÇëÇó´óСµÄ¿ÕÏÐÒ³Ãæ£¬ÔòËüËÑË÷Á½±¶ÓÚÇëÇó´óСµÄÄÚ´æ¿é
¡£
Õâ¸ö¹ý³ÌÒ»Ö±½«³ÖÐøµ½free_area±»ËÑË÷Íê»òÕÒµ½Âú×ãÒªÇóµÄÄÚ´æ¿éΪֹ¡£Èç¹ûÕÒµ½µÄ
Ò³Ãæ¿é´óÓÚÇëÇóµÄ¿éÔò¶ÔÆä½øÐзָîÒÔʹÆä´óСÓëÇëÇó¿éÆ¥Åä¡£ÓÉÓÚ¿é´óС¶¼ÊÇ2µÄ´Î
ÃÝËùÒÔ·Ö¸î¹ý³ÌÊ®·Ö¼òµ¥¡£¿ÕÏп鱻Á¬½øÏàÓ¦µÄ¶ÓÁжøÕâ¸öÒ³Ãæ¿é±»·ÖÅ䏸µ÷ÓÃÕß¡£
µ±ÏµÍ³ÖÐÓдóСΪÁ½¸öÒ³Ãæ¿éµÄÇëÇó·¢³öʱ£¬µÚÒ»¸ö4Ò³Ãæ´óСµÄÄÚ´æ¿é£¨´ÓÒ³Ãæ¿òºÅ
4¿ªÊ¼£©½«·Ö³ÉÁ½¸ö2Ò³Ãæ´óСµÄ¿é¡£Ç°Ò»¸ö£¬´ÓÒ³Ãæ¿òºÅ4¿ªÊ¼µÄ£¬½«·ÖÅä³öÈ¥·µ»Ø¸ø
ÇëÇóÕߣ¬¶øºóÒ»¸ö£¬´ÓÒ³Ãæ¿òºÅ6¿ªÊ¼£¬½«±»Ìí¼Óµ½free_areaÊý×éÖбíʾÁ½¸öÒ³Ãæ´óС
µÄ¿ÕÏпéµÄÔªËØ1ÖС£
3.4.2 Ò³Ãæ»ØÊÕ
½«´óµÄÒ³Ãæ¿é´òËé½øÐзÖÅ佫Ôö¼ÓϵͳÖÐÁãËé¿ÕÏÐÒ³Ãæ¿éµÄÊýÄ¿¡£Ò³Ãæ»ØÊÕ´úÂëÔÚÊʵ±
ʱ»úÏÂÒª½«ÕâÐ©Ò³Ãæ½áºÏÆðÀ´Ðγɵ¥Ò»´óÒ³Ãæ¿é¡£ÊÂʵÉÏÒ³Ãæ¿é´óС¾ö¶¨ÁËÒ³ÃæÖØÐÂ×é
ºÏµÄÄÑÒ׳̶ȡ£
µ±Ò³Ãæ¿é±»ÊÍ·Åʱ£¬´úÂ뽫¼ì²éÊÇ·ñÓÐÏàͬ´óСµÄÏàÁÚ»òÕßbuddyÄÚ´æ¿é´æÔÚ¡£Èç¹ûÓУ¬
Ôò½«ËüÃǽáºÏÆðÀ´ÐγÉÒ»¸ö´óСΪÔÀ´Á½±¶µÄпÕÏп顣ÿ´Î½áºÏÍêÖ®ºó£¬´úÂ뻹Ҫ¼ì
²éÊÇ·ñ¿ÉÒÔ¼ÌÐøºÏ²¢³É¸ü´óµÄÒ³Ãæ¡£×î¼ÑÇé¿öÊÇϵͳµÄ¿ÕÏÐÒ³Ãæ¿é½«ºÍÔÊÐí·ÖÅäµÄ×î´ó
ÄÚ´æÒ»Ñù´ó¡£
Èç¹ûÊÍ·ÅÒ³Ãæ¿òºÅ1£¬Ëü½«ºÍ¿ÕÏÐÒ³Ãæ¿òºÅ0½áºÏ×÷Ϊ´óСΪ2¸öÒ³ÃæµÄ¿ÕÏпéÅÅÈë
free_areaµÄµÚÒ»¸öÔªËØÖС£
3.5 ÄÚ´æÓ³Éä
Ó³ÏóÖ´ÐÐʱ£¬¿ÉÖ´ÐÐÓ³ÏóµÄÄÚÈݽ«±»µ÷Èë½ø³ÌÐéÄâµØÖ·¿Õ¼äÖС£¿ÉÖ´ÐÐÓ³ÏóʹÓõĹ²Ïí
¿âͬÑùÈç´Ë¡£È»¶ø¿ÉÖ´ÐÐÎļþʵ¼ÊÉϲ¢Ã»Óе÷ÈëÎïÀíÄڴ棬¶øÊǽö½öÁ¬½Óµ½½ø³ÌµÄÐéÄâ
ÄÚ´æ¡£µ±³ÌÐòµÄÆäËû²¿·ÖÔËÐÐʱÒýÓõ½Õⲿ·Öʱ²Å°ÑËüÃÇ´Ó´ÅÅÌÉϵ÷ÈëÄÚ´æ¡£½«Ó³ÏóÁ¬
½Óµ½½ø³ÌÐéÄâµØÖ·¿Õ¼äµÄ¹ý³Ì³ÆÎªÄÚ´æÓ³Éä¡£
ÿ¸ö½ø³ÌµÄÐéÄâÄÚ´æÓÃÒ»¸ömm_structÀ´±íʾ¡£Ëü°üº¬µ±Ç°Ö´ÐеÄÓ³Ïó£¨ÈçBASH£©ÒÔ¼°Ö¸
Ïòvm_area_structµÄ´óÁ¿Ö¸Õ롣ÿ¸övm_area_structÊý¾Ý½á¹¹ÃèÐðÁËÐéÄâÄÚ´æµÄÆðʼÓë
½áÊøÎ»Ö㬽ø³Ì¶Ô´ËÄÚ´æÇøÓòµÄ´æÈ¡È¨ÏÞÒÔ¼°Ò»×éÄÚ´æ²Ù×÷º¯Êý¡£ÕâЩº¯Êý¶¼ÊÇLinuxÔÚ
²Ù×ÝÐéÄâÄÚ´æÇøÓòʱ±ØÐëÓõ½µÄ×Ó³ÌÐò¡£ÆäÖÐÒ»¸ö¸ºÔð´¦Àí½ø³ÌÊÔͼ·ÃÎʲ»ÔÚµ±Ç°ÎïÀí
ÄÚ´æÖеÄÐéÄâÄÚ´æ(ͨ¹ýÒ³ÃæÊ§Ð§)µÄÇé¿ö¡£´Ëº¯Êý½Ðnopage¡£ËüÓÃÔÚLinuxÊÔͼ½«¿ÉÖ´ÐÐ
Ó³ÏóµÄÒ³Ãæµ÷ÈëÄÚ´æÊ±¡£
¿ÉÖ´ÐÐÓ³ÏóÓ³Éäµ½½ø³ÌÐéÄâµØÖ·Ê±½«²úÉúÒ»×éÏàÓ¦µÄvm_area_structÊý¾Ý½á¹¹¡£Ã¿¸ö
vm_area_structÊý¾Ý½á¹¹±íʾ¿ÉÖ´ÐÐÓ³ÏóµÄÒ»²¿·Ö£º¿ÉÖ´ÐдúÂë¡¢³õʼ»¯Êý¾Ý(±äÁ¿)¡¢
δ³õʼ»¯Êý¾ÝµÈµÈ¡£LinuxÖ§³ÖÐí¶à±ê×¼µÄÐéÄâÄÚ´æ²Ù×÷º¯Êý£¬´´½¨vm_area_structÊý¾Ý
½á¹¹Ê±ÓÐÒ»×éÏàÓ¦µÄÐéÄâÄÚ´æ²Ù×÷º¯ÊýÓëÖ®¶ÔÓ¦¡£
3.6 ÇëÇó»»Ò³
µ±¿ÉÖ´ÐÐÓ³Ïóµ½½ø³ÌÐéÄâµØÖ·¿Õ¼äµÄÓ³ÉäÍê³Éºó£¬Ëü¾Í¿ÉÒÔ¿ªÊ¼ÔËÐÐÁË¡£ÓÉÓÚÖ»
ÓкÜÉÙ²¿·ÖµÄÓ³Ïóµ÷ÈëÄڴ棬ËùÒԺܿì¾Í»á·¢Éú¶Ô²»ÔÚÎïÀíÄÚ´æÖеÄÐéÄâÄÚ´æÇø
ÓòµÄ·ÃÎÊ¡£µ±½ø³Ì·ÃÎÊÎÞÓÐЧҳ±íÈë¿ÚµÄÐéÄâµØÖ·Ê±£¬´¦ÀíÆ÷½«ÏòLinux±¨¸æÒ»
¸öÒ³Ãæ´íÎó¡£
Ò³Ãæ´íÎó´øÓÐʧЧ·¢ÉúµÄÐéÄâµØÖ·¼°Òý·¢Ê§Ð§µÄ·Ã´æ·½Ê½¡£Linux±ØÐëÕÒµ½±íʾ´Ë
ÇøÓòµÄvm_area_struct½á¹¹¡£¶Ôvm_area_structÊý¾Ý½á¹¹µÄËÑѰËٶȾö¶¨ÁË´¦Àí
Ò³Ãæ´íÎóµÄЧÂÊ£¬¶øËùÓÐvm_area_struct½á¹¹ÊÇͨ¹ýÒ»ÖÖAVL(Adelson-Velskii
and Landis)Ê÷½á¹¹Á¬ÔÚÒ»ÆðµÄ¡£Èç¹ûÎÞ·¨ÕÒµ½vm_area_structÓë´ËʧЧÐéÄâµØÖ·
µÄ¶ÔÓ¦¹ØÏµ£¬ÔòϵͳÈÏΪ´Ë½ø³Ì·ÃÎÊÁË·Ç·¨ÐéÄâµØÖ·¡£ÕâʱLinux½«Ïò½ø³Ì·¢ËÍ
SIGSEGVÐźţ¬Èç¹û½ø³ÌûÓдËÐźŵĴ¦Àí¹ý³ÌÔòÖÕÖ¹ÔËÐС£
Èç¹ûÕÒµ½´Ë¶ÔÓ¦¹ØÏµ£¬Linux½ÓÏÂÀ´¼ì²éÒýÆð¸ÃÒ³Ãæ´íÎóµÄ·Ã´æÀàÐÍ¡£Èç¹û½ø³Ì
ÒÔ·Ç·¨·½Ê½·ÃÎÊÄڴ棬±ÈÈç¶Ô²»¿ÉÐ´ÇøÓò½øÐÐд²Ù×÷£¬ÏµÍ³½«²úÉúÄÚ´æ´íÎóµÄ
Ðźš£
Èç¹ûLinuxÈÏÎªÒ³Ãæ³ö´íÊǺϷ¨µÄ£¬ÄÇôËüÐèÒª¶ÔÕâÖÖÇé¿ö½øÐд¦Àí¡£
Ê×ÏÈLinux±ØÐëÇø·ÖλÓÚ½»»»ÎļþÖеÄÒ³ÃæºÍÄÇЩλÓÚ´ÅÅÌÉϵĿÉÖ´ÐÐÓ³Ïó¡£
Alpha AXPµÄÒ³±íÖÐÓпÉÄÜ´æÔÚÓÐЧλûÓÐÉèÖõ«ÊÇÔÚPFNÓòÖÐÓзÇ0ÖµµÄÒ³±íÈë
¿Ú¡£ÔÚÕâÖÖÇé¿öÏ£¬PFNÓòָʾµÄÊÇ´ËÒ³ÃæÔÚ½»»»ÎļþÖеÄλÖá£ÈçºÎ´¦Àí½»»»
ÎļþÖеÄÒ³Ãæ½«ÔÚÏÂÕÂÌÖÂÛ¡£
²»ÊÇËùÓеÄvm_area_structÊý¾Ý½á¹¹¶¼ÓÐÒ»×éÐéÄâÄÚ´æ²Ù×÷º¯Êý£¬ËüÃÇÓеÄÉõ
ÖÁûÓÐnopageº¯Êý¡£ÕâÊÇÒòΪLinuxͨ¹ý·ÖÅäеÄÎïÀíÒ³Ãæ²¢ÎªÆä´´½¨ÓÐЧµÄÒ³
±íÈë¿ÚÀ´ÐÞÕýÕâ´Î·ÃÎÊ¡£Èç¹ûÕâ¸öÄÚ´æÇøÓò´æÔÚnopage²Ù×÷º¯Êý£¬Linux½«µ÷ÓÃ
Ëü¡£
Ò»°ãLinuxnopageº¯Êý±»ÓÃÀ´´¦ÀíÄÚ´æÓ³Éä¿ÉÖ´ÐÐÓ³Ïó£¬Í¬Ê±ËüʹÓÃÒ³Ãæcache
ÇëÇóµÄÒ³Ãæµ÷ÈëÎïÀíÄÚ´æÖÐÈ¥¡£
µ±ÇëÇóµÄÒ³Ãæµ÷ÈëÎïÀíÄÚ´æÊ±£¬´¦ÀíÆ÷Ò³±íÒ²±ØÐë¸üС£¸üÐÂÕâЩÈë¿Ú±ØÐë½ø
ÐÐÏà¹ØÓ²¼þ²Ù×÷£¬ÌرðÊÇ´¦ÀíÆ÷ʹÓÃTLBʱ¡£ÕâÑùµ±Ò³ÃæÊ§Ð§±»´¦ÀíÍê±Ïºó£¬½ø
³Ì½«´Ó·¢ÉúʧЧÐéÄâÄÚ´æ·ÃÎʵÄλÖÃÖØÐ¿ªÊ¼ÔËÐС£
3.7 LinuxÒ³Ãæcache
LinuxʹÓÃÒ³ÃæcacheµÄÄ¿µÄÊǼӿì¶Ô´ÅÅÌÉÏÎļþµÄ·ÃÎÊ¡£ÄÚ´æÓ³ÉäÎļþÒÔÿ´Î
Ò»Ò³µÄ·½Ê½¶Á³ö²¢½«ÕâÐ©Ò³Ãæ´æ´¢ÔÚÒ³ÃæcacheÖС£Í¼3.6±íÃ÷Ò³ÃæcacheÓÉ
page_hash_table£¬Ö¸Ïòmem_map_tÊý¾Ý½á¹¹µÄÖ¸ÕëÊý×é×é³É¡£
LinuxÖеÄÿ¸öÎļþͨ¹ýÒ»¸öVFS inode£¨ÔÚÎļþϵͳһÕÂÖн²Ðð£©Êý¾Ý½á¹¹
À´±êʶ²¢ÇÒÿ¸öVFSinode¶¼ÊÇΨһµÄ£¬Ëü¿ÉÒÔ²¢½ö¿ÉÒÔÃèÐðÒ»¸öÎļþ¡£Ò³±íµÄ
Ë÷Òý´ÓÎļþµÄVFSinodeºÍÎļþµÄÆ«ÒÆÖÐÅÉÉú³öÀ´¡£
´ÓÒ»¸öÄÚ´æÓ³ÉäÎļþÖжÁ³öÒ³Ãæ£¬ÀýÈç²úÉú»»Ò³ÇëÇóʱҪ½«Ò³Ãæ¶Á»ØÄÚ´æÖУ¬
ϵͳ³¢ÊÔ´ÓÒ³ÃæcacheÀ´¶Á³ö¡£Èç¹ûÒ³ÃæÔÚcacheÖУ¬Ôò·µ»ØÒ³ÃæÊ§Ð§´¦Àí¹ý³Ì
Ò»¸öÖ¸Ïòmem_map_tÊý¾Ý½á¹¹£»·ñÔò´ËÒ³Ãæ½«´Ó°üº¬Ó³ÏóµÄÎļþϵͳÖжÁÈëÄÚ´æ
²¢ÎªÖ®·ÖÅäÎïÀíÒ³Ãæ¡£
ÔÚÓ³ÏóµÄ¶ÁÈëÓëÖ´Ðйý³ÌÖУ¬Ò³Ãæcache²»¶ÏÔö³¤¡£µ±²»ÔÙÐèҪij¸öÒ³ÃæÊ±£¬
¼´²»ÔÙ±»Èκνø³ÌʹÓÃʱ£¬Ëü½«±»´ÓÒ³ÃæcacheÖÐɾ³ý¡£
3.8 »»³öÓ붪ÆúÒ³Ãæ
µ±ÏµÍ³ÖÐÎïÀíÄÚ´æ¼õÉÙʱ£¬LinuxÄÚ´æ¹ÜÀí×Óϵͳ±ØÐëÊÍ·ÅÎïÀíÒ³Ãæ¡£Õâ¸öÈÎÎñ
ÓɺËÐĽ»»»ºǫ́½ø³Ì(kswapd)À´Íê³É¡£
ºËÐĽ»»»ºǫ́½ø³ÌÊÇÒ»ÖÖÌØÊâµÄºËÐÄÏ̡߳£ËüÊÇûÓÐÐéÄâÄÚ´æµÄ½ø³Ì£¬ÔÚÎïÀí
µØÖ·¿Õ¼äÉÏÒÔºËÐÄ̬ÔËÐС£ºËÐĽ»»»ºǫ́½ø³ÌµÄÃû×ÖÈÝÒ×ʹÈËÎó½â£¬ÆäʵËüÍê
³ÉµÄ¹¤×÷±È½ö½ö½«Ò³Ãæ½»»»µ½ÏµÍ³µÄ½»»»ÎļþÖÐÒª¶àµÃ¶à¡£ÆäÄ¿±êÊDZ£Ö¤ÏµÍ³
ÖÐÓÐ×ã¹»µÄ¿ÕÏÐÒ³ÃæÀ´Î¬³ÖÄÚ´æ¹ÜÀíϵͳÔËÐÐЧÂÊ¡£
´Ë½ø³ÌÓɺËÐĵÄinit½ø³ÌÔÚϵͳÆô¶¯Ê±ÔËÐУ¬±»ºËÐĽ»»»¶¨Ê±Æ÷ÖÜÆÚÐԵĵ÷Óá£
µ±¶¨Ê±Æ÷µ½Ê±ºó£¬½»»»ºǫ́½ø³Ì½«¼ì²éϵͳÖеĿÕÏÐÒ³ÃæÊýÊÇ·ñÌ«ÉÙ¡£ËüʹÓÃ
Á½¸ö±äÁ¿£ºfree_pages_highºÍfree_page_lowÀ´ÅжÏÊÇ·ñ¸ÃÊÍ·ÅÒ»Ð©Ò³Ãæ¡£Ö»
ҪϵͳÖеĿÕÏÐÒ³ÃæÊý´óÓÚfree_pages_high£¬ºËÐĽ»»»ºǫ́½ø³Ì²»×öÈκι¤
×÷£»Ëü½«Ë¯Ãßµ½ÏÂÒ»´Î¶¨Ê±Æ÷µ½Ê±¡£ÔÚ¼ì²éÖУ¬ºËÐĽ»»»ºǫ́½ø³Ì½«µ±Ç°±»Ð´
µ½½»»»ÎļþÖеÄÒ³ÃæÊýÒ²¼ÆËãÔÚÄÚ£¬ËüʹÓÃnr_async_pagesÀ´¼Ç¼Õâ¸öÊýÖµ£»
µ±ÓÐÒ³Ãæ±»ÅÅÈë×¼±¸Ð´µ½½»»»Îļþ¶ÓÁÐÖÐʱ£¬Ëü½«µÝÔöÒ»´Î£¬Í¬Ê±µ±Ð´Èë²Ù×÷
Íê³ÉºóµÝ¼õÒ»´Î¡£Èç¹ûϵͳÖеĿÕÏÐÒ³ÃæÊýÔÚfree_pages_highÉõÖÁfree_pages_low
ÒÔÏÂʱ£¬ºËÐĽ»»»ºǫ́½ø³Ì½«Í¨¹ýÈý¸ö;¾¶À´¼õÉÙϵͳÖÐʹÓõÄÎïÀíÒ³ÃæµÄ¸öÊý£º
¼õÉÙ»º³åÓëÒ³ÃæcacheµÄ´óС£¬
½«ÏµÍ³VÀàÐ͵ÄÄÚ´æÒ³Ãæ½»»»³öÈ¥£¬
»»³ö»òÕß¶ªÆúÒ³Ãæ¡£
Èç¹ûϵͳÖпÕÏÐÒ³ÃæÊýµÍÓÚfree_pages_low£¬ºËÐĽ»»»ºǫ́½ø³Ì½«ÔÚÏ´ÎÔËÐÐÖ®
ǰÊÍ·Å6¸öÒ³Ãæ¡£·ñÔòËüÖ»ÊÍ·Å3¸ö¡£ÒÔÉÏÈýÖÖ·½·¨½«ÒÀ´ÎʹÓÃÖ±µ½ÏµÍ³Êͷųö×ã
¹»µÄ¿ÕÏÐÒ³Ãæ¡£µ±ºËÐĽ»»»ºǫ́½ø³ÌÊÔͼÊÍ·ÅÎïÀíÒ³ÃæÊ±Ëü½«¼Ç¼ʹÓõÄ×îºóÒ»
ÖÖ·½·¨¡£ÏÂÒ»´ÎËü»áÊ×ÏÈÔËÐÐÉÏ´Î×îºó³É¹¦µÄËã·¨¡£
µ±Êͷųö×ã¹»Ò³Ãæºó£¬ºËÐĽ»»»ºǫ́½ø³Ì½«ÔÙ´Î˯Ãßµ½Ï´ζ¨Ê±Æ÷µ½Ê±¡£Èç¹ûµ¼
ÖºËÐĽ»»»ºǫ́½ø³ÌÊÍ·ÅÒ³ÃæµÄÔÒòÊÇϵͳÖеĿÕÏÐÒ³ÃæÊýСÓÚfree_pages_low£¬
ÔòËüֻ˯Ã߯½Ê±µÄÒ»°ëʱ¼ä¡£Ò»µ©¿ÕÏÐÒ³ÃæÊý´óÓÚfree_pages_lowÔòºËÐĽ»»»½ø
³ÌµÄ˯Ãßʱ¼äÓÖ»áÑÓ³¤¡£
3.8.1 ¼õÉÙPage CacheºÍBuffer CacheµÄ´óС
Page CacheºÍBuffer cacheÖеÄÒ³Ãæ½«±»ÓÅÏÈ¿¼ÂÇÊͷŵ½free_areaÊý×éÖС£Page
CacheÖаüº¬µÄÊÇÄÚ´æÓ³ÉäÎļþµÄÒ³Ãæ£¬ÆäÖÐÓÐЩ¿ÉÄÜÊDz»±ØÒªµÄ£¬ËüÃÇÀË·ÑÁËϵ
ͳµÄÄÚ´æ¡£¶øBuffer,CacheÖаüº¬µÄÊÇ´ÓÎïÀíÉ豸ÖжÁдµÄ»º³åÊý¾Ý£¬ÓÐЩ¿ÉÄÜ
Ò²ÊDz»±ØÒªµÄ¡£µ±ÏµÍ³ÖÐÎïÀíÒ³Ãæ¿ªÊ¼ºÄ¾¡Ê±£¬´ÓÕâЩcacheÖжªÆúÒ³Ãæ±È½Ï¼òµ¥
£¨Ëü²»ÐèÒªÏó´ÓÄÚ´æÖн»»»Ò»Ñù£¬ÎÞÐë¶ÔÎïÀíÉ豸½øÐÐд²Ù×÷£©¡£³ýÁË»áʹ¶ÔÎïÀí
É豸¼°ÄÚ´æÓ³ÉäÎļþµÄ·ÃÎÊËٶȽµµÍÍâ£¬Ò³Ãæ¶ªÆú²ßÂÔûÓÐÌ«¶àµÄ¸±×÷Óá£Èç¹û²ß
ÂԵõ±£¬ÔòËùÓнø³ÌµÄËðʧÏàͬ¡£
ÿ´ÎºËÐĽ»»»ºǫ́½ø³Ì¶¼»á³¢ÊÔȥѹËõÕâЩcache¡£
ËüÊ×Ïȼì²émem_mapÒ³ÃæÊý×éÖеÄÒ³Ãæ¿é¿´ÊÇ·ñÓпÉÒÔ´ÓÎïÀíÄÚ´æÖжªÆú³öÈ¥µÄ¡£µ±
ϵͳÖеĿÕÏÐÒ³ÃæÊý½µµÍµ½Ò»¸öΣÏÕˮƽʱ£¬ºËÐĺǫ́½»»»½ø³ÌƵ·±½øÐн»»»£
lockËã
·¨£¬Ã¿´ÎÔÚÕû¸ömem_mapÒ³ÃæÊý×éÖжÔÒ³Ãæ½øÐмì²é¡£
ºËÐĺǫ́½»»»½ø³Ì½«¼ì²éÿ¸öÒ³Ãæ¿´ÊÇ·ñÒѾ±»page cache»òÕßbuffer cache»º³å¡£
¶ÁÕß¿ÉÄÜÒѾעÒâµ½¹²ÏíÒ³Ãæ²»ÔÚ±»¿¼ÂǶªÆúµÄÒ³ÃæÖ®ÁУ¬ÕâÖÖÒ³Ãæ²»»áͬʱ³öÏÖÔÚ
ÕâÁ½ÖÖcacheÖС£Èç¹ûÒ³Ãæ²»ÔÚÕâÁ½ÕßÖÐÈκÎÒ»ÖÖÖ®ÖÐʱ£¬Ëü½«¼ì²émem_mapÒ³ÃæÊý×é
ÖеÄÏÂÒ»¸öÒ³Ãæ¡£
»º´æÔÚbuffer cache(»òÕßÒ³ÃæÖеĻº³å±»»º´æ)ÖеÄÒ³Ãæ¿ÉÒÔʹ»º³å·ÖÅäºÍ»ØÊÕ¸ü¼Ó
ÓÐЧ¡£ÄÚ´æÑ¹Ëõ´úÂ뽫Á¦Í¼ÊÍ·ÅÔÚÊܼìÒ³ÃæÖаüº¬µÄ»º³åÇø¡£
Èç¹ûÒ³ÃæÖаüº¬µÄËùÓлº³åÇø¶¼±»ÊÍ·Å£¬Õâ¸öÒ³ÃæÒ²½«±»ÊÍ·Å¡£Èç¹ûÊܼìÒ³ÃæÔÚLinux
µÄpagecacheÖУ¬ÔòËü»á´Ópage cacheÖÐɾ³ý²¢ÊÍ·Å¡£
Èç¹ûÊͷųöÀ´ÁË×ã¹»µÄÒ³Ãæ£¬ºËÐĽ»»»ºǫ́½ø³Ì½«µÈ´ýµ½ÏÂÒ»´Î±»»½ÐÑ¡£ÕâЩ±»ÊͷŵÄ
Ò³Ãæ¶¼²»ÊÇÈκνø³ÌÐéÄâÄÚ´æµÄÒ»²¿·Ö£¬ÕâÑùÎÞÐë¸üÐÂÒ³±í¡£Èç¹ûûÓÐ×ã¹»µÄ»º³åÒ³Ãæ
¶ªÆúÔò½»»»½ø³Ì½«ÊÔͼ½«Ò»Ð©¹²ÏíÒ³Ãæ½»»»³öÈ¥¡£
3.8.2 »»³öϵͳVÄÚ´æÒ³Ãæ
ϵͳV¹²ÏíÄÚ´æÊÇÒ»ÖÖÓÃÀ´ÔÚ½ø³ÌÖ®¼äͨ¹ý¹²ÏíÐéÄâÄÚ´æÀ´ÊµÏÖ½ø³ÌͨѶµÄ»úÖÆ¡£½ø³Ì
ÊÇÈçºÎ¹²ÏíÄڴ潫ÔÚIPCÒ»ÕÂÖÐÏêϸÌÖÂÛ¡£ÏÖÔÚÖ»ÐèҪ˵Ã÷ϵͳV¹²ÏíÄÚ´æµÄÈκÎÇøÓò¶
¿ÉÒÔÓÃÒ»¸öshmid_dsÊý¾Ý½á¹¹À´±íʾ¾Í×ã¹»ÁË¡£
´Ë½á¹¹°üº¬Ò»¸öÖ¸Ïòvm_areaµÄÁ´±íÖ¸Õ룬vm_areaÊÇΪÿ¸ö¹²Ïí´ËÐéÄâÄÚ´æÇøÓòÉè¼Æ
µÄ½á¹¹¡£ËüÃÇÖ®¼äͨ¹ývm_next_sharedºÍvm_prev_sharedÖ¸ÕëÀ´Á¬½Ó¡£Ã¿¸öshmid_ds
Êý¾Ý½á¹¹°üº¬Ò»¸öÒ³±íÈë¿Ú£¬Ã¿¸öÈë¿ÚÃèÐðÎïÀíÒ³ÃæÓë¹²ÏíÐéÄâÒ³ÃæÖ®¼äµÄÓ³Éä¹ØÏµ¡£
ºËÐĽ»»»ºǫ́½ø³ÌͬÑùʹÓÃclockËã·¨À´½«ÏµÍ³V¹²ÏíÄÚ´æÒ³Ãæ½»»»³öÈ¥¡£
ÿ´ÎÔËÐÐʱ£¬ËüÒª¼ÇµÃÄĸö¹²ÏíÐéÄâÄÚ´æÇøÓòµÄÄĸöÒ³ÃæÊÇ×îºóÒ»¸ö±»½»»»³öÈ¥
µÄ¡£Á½¸öË÷Òý¿ÉÒÔÐÖúËüÍê³ÉÕâÏ×÷£¬ÆäÒ»ÊÇÒ»×éshmid_dsÊý¾Ý½á¹¹µÄË÷Òý£¬
ÁíÒ»¸öÊÇϵͳV¹²ÏíÄÚ´æÇøÓòµÄÒ³±íÈë¿ÚÁ´±íµÄË÷Òý¡£ÕâÄܹ»±£Ö¤¶ÔϵͳV¹²ÏíÄÚ
´æÇøÓò×÷³ö¹«Æ½µÄÑ¡Ôñ¡£
ÓÉÓÚ¶ÔÓÚ¸ø¶¨µÄϵͳV¹²ÏíÐéÄâÄÚ´æµÄÎïÀíÒ³Ãæ¿òºÅ±»±£´æÔÚËùÓй²Ïí´ËÐéÄâÄÚ´æ
ÇøÓò½ø³ÌµÄÒ³±íÖУ¬ºËÐĽ»»»ºǫ́½ø³Ì±ØÐëͬʱÐÞ¸ÄËùÓеÄÒ³±íÒÔ±íÊ¾Ò³Ãæ²»ÔÙÔ
ºËÐÄ
½»»»ºǫ́½ø³Ì¿ÉÒÔÔÚÿ¸ö¹²Ïí½ø³ÌµÄÒ³±íÖеÄÒ³±íÈë¿ÚÖÐÕÒµ½ËüÃÇ(ͨ¹ý
vm_area_structÊý¾Ý½á¹¹)¡£Èç¹û¶ÔÓ¦´ËϵͳV¹²ÏíÄÚ´æµÄÒ³ÃæµÄ½ø³ÌÒ³±íÈë¿ÚÊÇÓÐ
ЧµÄ£¬Ëü¿ÉÒÔ½«Æäת±ä³ÉÎÞЧ£¬ÕâÑù»»³öÒ³±íÈë¿ÚºÍ¹²ÏíÒ³ÃæµÄÓû§Êý½«¼õÒ»¡£»»
³öϵͳV¹²ÏíÒ³±íÈë¿ÚµÄ¸ñʽÖаüº¬Ò»¸ö¶ÔÓ¦ÓÚÒ»×éshmid_dsÊý¾Ý½á¹¹µÄË÷ÒýÒÔ¼°
Ò»¸ö¶ÔϵͳV¹²ÏíÄÚ´æÇøÓòµÄÒ³±íÈë¿ÚË÷Òý¡£
Èç¹ûËùÓй²Ïí½ø³ÌµÄÒ³±í¶¼±»Ð޸ĺó´ËÒ³ÃæµÄ¼ÇÊýΪ0Ôò¹²ÏíÒ³Ãæ¿ÉÒÔ±»Ð´µ½½»»»
ÎļþÖС£Í¬ÑùÖ¸Ïò´ËϵͳV¹²ÏíÄÚ´æÇøÓòµÄshmid_dsÊý¾Ý½á¹¹Á´±íÖеÄÒ³±íÈë¿ÚÒ²
±»»»³öÒ³±íÈë¿Ú´úÌæ¡£»»³öÒ³±íÈë¿ÚËäÈ»ÎÞЧµ«ÊÇËü°üº¬Ò»×é´ò¿ªµÄ½»»»ÎļþµÄË÷
Òý£¬Í¬Ê±»¹ÄÜÕÒµ½»»³öÒ³ÃæÔÚÎļþÖÐµÄÆ«ÒÆ¡£µ±Ò³ÃæÖØÐ±»´øÈëÎïÀíÄÚ´æÊ±£¬ÕâЩ
ÐÅϢʮ·ÖÓÐÓá£
3.8.3 »»³öºÍ¶ªÆúÒ³Ãæ
½»»»ºǫ́½ø³ÌÒÀ´Î¼ì²éϵͳÖеÄÿ¸ö½ø³ÌÒÔÈ·ÈÏË×îÊʺϽ»»»³öÈ¥¡£
±È½ÏºÃµÄºòÑ¡ÕßÊÇÄÇЩ¿ÉÒÔ±»½»»»³öÈ¥£¨ÓÐЩÊDz»¿É±»½»»»³öÈ¥µÄ£©²¢ÇÒÖ»ÓÐÒ»¸ö
»òÕß¼¸¸öÒ³ÃæÔÚÄÚ´æÖеĽø³Ì¡£Ö»ÓÐÄÇЩ°üº¬µÄÊý¾ÝÎÞ·¨¼ìË÷µÄÒ³Ãæ²Å»á´ÓÎïÀíÄÚ
´æÖн»»»µ½ÏµÍ³½»»»ÎļþÖÐÈ¥¡£
¿ÉÖ´ÐÐÓ³ÏóµÄÐí¶àÄÚÈݶ¼¿ÉÒÔ´ÓÓ³ÏóÎļþÖжÁ³ö²¢ÇÒ¿ÉÒÔºÜÈÝÒ×ÖØ¶Á³öÀ´¡£ÀýÈ磬
Ó³ÏóÖеĿÉÖ´ÐÐÖ¸Áî²»Äܱ»Ó³Ïó±¾ÉíÐ޸ģ¬ËùÒÔ¾ö²»»áдµ½½»»»ÎļþÖÐÈ¥¡£ÕâЩҳ
ÃæÖ±½Ó¶ªÆú¾Í¿ÉÒÔ¡£µ±½ø³ÌÔÙ´ÎÒýÓÃËüÃÇʱ£¬Ö»ÐèÒª´Ó¿ÉÖ´ÐÐÓ³ÏóÎļþÖжÁÈëÄÚ´æ
¼´¿É¡£
Ò»µ©È·¶¨Á˽«Òª±»½»»»³öÈ¥µÄ½ø³Ì£¬½»»»ºǫ́½ø³Ì½«ËÑË÷ÆäÕû¸öÐéÄâÄÚ´æÇøÓòÒÔÕÒ
µ½ÄÇЩûÓй²Ïí»òÕß¼ÓËøµÄÇøÓò¡£
Linux²¢²»»á½«Ñ¡ÖеĽø³ÌµÄÕû¸ö¿É½»»»Ò³Ãæ¶¼½»»»³öÈ¥£¬Ëüֻɾ³ýһС²¿·ÖÒ³Ãæ¡£
Èç¹ûÄÚ´æ±»¼ÓËøÔòÒ³Ãæ²»Äܱ»½»»»»òÕß¶ªÆú¡£
Linux½»»»Ë㷨ʹÓÃÒ³ÃæË¥ÀÏËã·¨¡£Ã¿¸öÒ³ÃæÓÐÒ»¸ö¼ÆÊýÆ÷À´¸æËߺËÐĽ»»»ºǫ́½ø³Ì
Õâ¸öÒ³ÃæÊÇ·ñÖµµÃ½»»»³öÈ¥£¨´Ë¼ÆÊýÆ÷°üº¬ÔÚmem_map_t½á¹¹ÖУ©¡£µ±Ò³ÃæÃ»ÓÐʹÓÃ
»òÕßûÓÐÕÒµ½Ê±½«»áË¥ÀÏ£»½»»»ºǫ́½ø³Ì½ö½ö½»»»³öÄÇЩÀÏÒ³Ãæ¡£È±Ê¡²Ù×÷ÊÇ£ºÃ¿´ÎÒý
ÓÃÆä
Á佫¼Ó3£¬×î´óֵΪ20¡£Ã¿´ÎºËÐĽ»»»ºǫ́½ø³ÌÔËÐÐËüÀ´Ê¹Ò³ÃæË¥ÀÏ-
½«ÄêÁä¼õ1¡£Õâ¸öȱʡ²Ù×÷¿ÉÒԸı䲢ÇÒÓÉÓÚÕâ¸öÔÒòËüÃDZ»´æ´¢ÔÚswap_controlÊý
¾Ý½á¹¹ÖС£
Èç¹ûÒ³Ãæ±äÀÏÁË(age=0)£¬Ôò½»»»ºǫ́½ø³Ì½«½øÒ»²½À´´¦ÀíËü¡£dirtyÒ³Ãæ¿ÉÒÔ±»½»
»»³öÈ¥¡£LinuxÔÚPTEÖÐʹÓÃÒ»¸öÓ²¼þÏà¹ØÎ»À´ÃèÐðÒ³ÃæµÄÕâ¸öÌØÐÔ£¨¼ûͼ3.2£©¡£
È»¶ø²»ÊÇËùÓеÄdirtyÒ³Ãæ¶¼ÓбØÒªÐ´Èëµ½½»»»ÎļþÖÐÈ¥¡£½ø³ÌµÄÿ¸öÐéÄâÄÚ´æø
Óò¿ÉÄÜ
ÓÐÆä×ÔÉíµÄ½»»»²Ù×÷(ÓÉvm_area_struct½á¹¹ÖеÄvm_opsÖ¸Õë±íʾ)£¬ÔÚ
½»»»Ê±Ê¹ÓõÄÊÇÕâЩ·½·¨¡£·ñÔò£¬½»»»ºǫ́½ø³Ì½«ÔÚ½»»»ÎļþÖзÖÅäÒ»¸öÒ³Ãæ²¢
½«Ò³ÃæÐ´µ½É豸ÉÏÈ¥¡£
Ò³ÃæµÄÒ³±íÈë¿Ú±»±êÖ¾³ÉÎÞЧµ«ÊÇËü°üº¬ÁËÒ³ÃæÔÚÔÚ½»»»ÎļþÖÐλÖõÄÐÅÏ¢£¬°üÀ¨
Ò»¸ö±íÊ¾Ò³ÃæÔÚ½»»»ÎļþÖÐλÖÃµÄÆ«ÒÆÖµÒÔ¼°Ê¹ÓõÄÊÇÄĸö½»»»Îļþ¡£µ«ÊDz»¹Üʹ
ÓõÄÊÇÄÄÖÖ½»»»Ëã·¨£¬ÒÔǰÄǸöÎïÀíÒ³Ãæ½«±»±êÖ¾³É¿ÕÏв¢·ÅÈëfree_areaÖС£
Clean£¨»òÕßnot dirty£©µÄÒ³Ãæ¿ÉÒÔ¶ªÆúͬʱ·ÅÈëfree_areaÒÔ±¸ÖØÐÂʹÓá£
Èç¹ûÓÐ×ã¹»µÄ¿É½»»»½ø³ÌÒ³Ãæ±»½»»»³öÈ¥»ò¶ªÆú£¬Ôò½»»»ºǫ́½ø³Ì½«ÔÙ´Î˯Ãß¡£
Ï´ÎËüÐÑÀ´Ê±½«¿¼ÂÇϵͳÖеÄÏÂÒ»¸ö½ø³Ì¡£Í¨¹ýÕâÖÖ·½·¨£¬½»»»ºǫ́½ø³ÌÒ»µ
µãµØ½«Ã¿
¸ö½ø³ÌµÄ¿É½»»»»ò¿É¶ªÆúÎïÀíÒ³ÃæÊÕ»ØÖªµÀϵͳÔٴδ¦ÓÚÆ½ºâ״̬¡£
Õâ±È½«Õû¸ö½ø³Ì½»»»³öÈ¥Òª¹«Æ½µÃ¶à¡£
3.9 The Swap Cache
µ±½«Ò³Ãæ½»»»µ½½»»»ÎļþÖÐʱ£¬Linux×ÜÊDZÜÃâÒ³ÃæÐ´£¬³ý·Ç±ØÐëÕâÑù×ö¡£µ±Ò³Ãæ
ÒѾ±»½»»»³öÄڴ浫Êǵ±Óнø³ÌÔٴηÃÎÊʱÓÖÒª½«ËüÖØÐµ÷ÈëÄÚ´æ¡£Ö»ÒªÒ³ÃæÔÚÄÚ
´æÖÐûÓб»Ð´¹ý£¬Ôò½»»»ÎļþÖеĿ½±´ÊÇÓÐЧµÄ¡£
LinuxʹÓÃswap cacheÀ´¸ú×ÙÕâÐ©Ò³Ãæ¡£Õâ¸öswap cacheÊÇÒ»¸öÒ³±íÈë¿ÚÁ´±í£¬Ã¿
¸ö¶ÔÓ¦ÓÚϵͳÖеÄÎïÀíÒ³Ãæ¡£ÕâÊÇÒ»¸ö¶ÔÓ¦ÓÚ½»»»³öÒ³ÃæµÄÒ³±íÈë¿Ú²¢ÇÒÃèÐðÒ³Ãæ
·ÅÖÃÔÚÄĸö½»»»ÎļþÖÐÒÔ¼°ÔÚ½»»»ÎļþÖеÄλÖá£
Èç¹ûswap
cacheÈë¿ÚΪ·Ç0Öµ£¬Ôò±íʾÔÚ½»»»ÎļþÖеÄÕâһҳûÓб»Ð޸ġ£Èç¹û´ËÒ³±»ÐÞ¸Ä
£¨»òÕßдÈ룩¡£ÔòÆäÈë¿Ú´Óswap cacheÖÐɾ³ý¡£
µ±LinuxÐèÒª½«Ò»¸öÎïÀíÒ³Ãæ½»»»µ½½»»»Îļþʱ£¬Ëü½«¼ì²éswap cache£¬Èç¹û¶ÔÓ¦
´ËÒ³Ãæ´æÔÚÓÐЧÈë¿Ú£¬Ôò²»±Ø½«Õâ¸öÒ³ÃæÐ´µ½½»»»ÎļþÖС£ÕâÊÇÒòΪ×Ô´ÓÉϴδӽ»
»»ÎļþÖн«Æä¶Á³öÀ´£¬ÄÚ´æÖеÄÕâ¸öÒ³Ãæ»¹Ã»Óб»Ð޸ġ£
swap cacheÖеÄÈë¿ÚÊÇÒÑ»»³öÒ³ÃæµÄÒ³±íÈë¿Ú¡£ËüÃÇËä±»±ê¼ÇΪÎÞЧµ«ÊÇΪLinux
ÌṩÁËÒ³ÃæÔÚÄĸö½»»»ÎļþÖÐÒÔ¼°ÎļþÖеÄλÖõÈÐÅÏ¢¡£
3.10 Ò³ÃæµÄ»»Èë
±£´æÔÚ½»»»ÎļþÖеÄdirtyÒ³Ãæ¿ÉÄܱ»ÔÙ´ÎʹÓõ½£¬ÀýÈ磬µ±Ó¦ÓóÌÐòÏò°üº¬ÔÚÒÑ
½»»»³öÎïÀíÒ³ÃæÉϵÄÐéÄâÄÚ´æÇøÓòдÈëʱ¡£¶Ô²»ÔÚÎïÀíÄÚ´æÖеÄÐéÄâÄÚ´æÒ³ÃæµÄ·Ã
Îʽ«Òý·¢Ò³Ãæ´íÎó¡£ÓÉÓÚ´¦ÀíÆ÷²»Äܽ«´ËÐéÄâµØÖ·×ª»»³ÉÎïÀíµØÖ·£¬´¦ÀíÆ÷½«Í¨Öª
²Ù×÷ϵͳ¡£ÓÉÓÚÒѱ»½»»»³öÈ¥£¬´ËʱÃèÐð´ËÒ³ÃæµÄÒ³±íÈë¿Ú±»±ê¼Ç³ÉÎÞЧ¡£´¦ÀíÆ÷
²»ÄÜ´¦ÀíÕâÖÖÐéÄâµØÖ·µ½ÎïÀíµØÖ·µÄת»»£¬ËùÒÔËü½«¿ØÖÆ´«µÝ¸ø²Ù×÷ϵͳ£¬Í¬Ê±Í¨
Öª²Ù×÷ÏµÍ³Ò³Ãæ´íÎóµÄµØÖ·ÓëÔÒò¡£ÕâЩÐÅÏ¢µÄ¸ñʽÒÔ¼°´¦ÀíÆ÷ÈçºÎ½«¿ØÖÆ´«µÝ¸ø
²Ù×÷ϵͳÓë¾ßÌåÓ²¼þÓйء£
´¦ÀíÆ÷Ïà¹ØÒ³Ãæ´íÎó´¦Àí´úÂ뽫¶¨Î»ÃèÐð°üº¬³ö´íÐéÄâµØÖ·¶ÔÓ¦µÄÐéÄâÄÚ´æÇøÓòµÄ
vm_area_structÊý¾Ý½á¹¹¡£
Ëüͨ¹ýÔڴ˽ø³ÌµÄvm_area_structÖвéÕÒ°üº¬³ö´íÐéÄâµØÖ·µÄλÖÃÖ±µ½ÕÒµ½ÎªÖ¹¡£
ÕâЩ´úÂëÓëʱ¼ä¹ØÏµÖش󣬽ø³ÌµÄvm_area_structÊý¾Ý½á¹¹ÌØÒâ°²ÅųÉʹ²éÕÒ²Ù×÷
ʱ¼ä¸üÉÙ¡£
Ö´ÐÐÍêÕâЩ´¦ÀíÆ÷Ïà¹Ø²Ù×÷²¢ÇÒÕÒµ½³ö´íÐéÄâµØÖ·µÄÓÐЧÄÚ´æÇøÓòºó£¬Ò³Ãæ´í´¦Àí
¹ý³ÌÆäÓಿ·ÖºÍÇ°ÃæÀàËÆ¡£
ͨÓÃÒ³Ãæ´í´¦Àí´úÂëΪ³ö´íÐéÄâµØÖ·Ñ°ÕÒÒ³±íÈë¿Ú¡£Èç¹ûÕÒµ½µÄÒ³±íÈë¿ÚÊÇÒ»¸öÒÑ
»»³öÒ³Ãæ£¬Linux±ØÐ뽫Æä½»»»½øÈëÎïÀíÄÚ´æ¡£ÒÑ»»³öÒ³ÃæµÄÒ³±íÈë¿ÚµÄ¸ñʽÀàÐÍ
Óйأ¬µ«ÊÇËùÓеĴ¦ÀíÆ÷½«ÕâÐ©Ò³Ãæ±ê¼Ç³ÉÎÞЧ²¢°Ñ¶¨Î»´ËÒ³ÃæµÄ±ØÒªÐÅÏ¢·ÅÈëÒ³
±íÈë¿ÚÖС£LinuxÀûÓÃÕâЩÐÅÏ¢ÒÔ±ã½«Ò³Ãæ½»»»½øÎïÀíÈëÄÚ´æ¡£
´ËʱLinuxÖªµÀ³ö´íÐéÄâÄÚ´æµØÖ·²¢ÇÒÓµÓÐÒ»¸ö°üº¬Ò³ÃæÎ»ÖÃÐÅÏ¢µÄÒ³±íÈë¿Ú¡£
vm_area_structÊý¾Ý½á¹¹¿ÉÄܰüº¬½«´ËÐéÄâÄÚ´æÇøÓò½»»»µ½ÎïÀíÄÚ´æÖеÄ×Ó³ÌÐò:
swapin¡£Èç¹û¶Ô´ËÐéÄâÄÚ´æÇøÓò´æÔÚswapinÔòLinux»áʹÓÃËü¡£ÕâÊÇÒÑ»»³öϵͳV¹²
ÏíÄÚ´æÒ³ÃæµÄ´¦Àí¹ý³Ì-ÒòΪÒÑ»»³öϵͳV¹²ÏíÒ³ÃæºÍÆÕͨµÄÒÑ»»³öÒ³ÃæÓÐÉÙÐí²»Í¬¡£
Èç¹ûûÓÐswapin²Ù×÷£¬Õâ¿ÉÄÜÊÇLinux¼Ù¶¨ÆÕÍ¨Ò³ÃæÎÞÐëÌØÊâ´¦Àí¡£
ϵͳ½«·ÖÅäÎïÀíÒ³Ãæ²¢½«ÒÑ»»³öÒ³Ãæ¶ÁÈë¡£¹ØÓÚÒ³ÃæÔÚ½»»»ÎļþÖÐλÖÃÐÅÏ¢´ÓÒ³±í
Èë¿ÚÖÐÈ¡³ö¡£
Èç¹ûÒýÆðÒ³Ãæ´íÎóµÄ·ÃÎʲ»ÊÇд²Ù×÷ÔòÒ³Ãæ±»±£ÁôÔÚswap cacheÖв¢ÇÒËüµÄÒ³±íÈë
¿Ú²»ÔÙ±ê¼ÇΪ¿Éд¡£Èç¹ûÒ³ÃæËæºó±»Ð´È룬Ôò½«²úÉúÁíÒ»¸öÒ³Ãæ´íÎó£¬ÕâÊ±Ò³Ãæ±»
±ê¼ÇΪdirty£¬Í¬Ê±ÆäÈë¿Ú´ÓswapcacheÖÐɾ³ý¡£
Èç¹ûÒ³ÃæÃ»Óб»Ð´²¢ÇÒ±»ÒªÇóÖØÐ»»³ö£¬Linux¿ÉÒÔÃâ³ýÕâ´Îд£¬ÒòÎªÒ³ÃæÒѾ´æ
ÔÚÓÚ½»»»ÎļþÖС£
Èç¹ûÒýÆðÒ³Ãæ´Ó½»»»ÎļþÖжÁ³öµÄ²Ù×÷ÊÇд²Ù×÷£¬Õâ¸öÒ³Ãæ½«±»´Óswap cacheÖÐ
ɾ³ý²¢ÇÒÆäÒ³±íÈë¿Ú±»±ê¼Ç ³ÉdirtyÇÒ¿Éд¡£
--
¡ù À´Ô´:¡¤BBS ˮľÇ廪վ bbs.net.tsinghua.edu.cn¡¤[FROM: 202.114.2.2]
BBSˮľÇ廪վ¡Ã¾«»ªÇø