LinuxÖеÄÄÚ´æ·ÖÅäºÍÊÍ·ÅÖ®slab·Ö¸îÆ÷
slab·ÖÅäÆ÷ÐÎÏóµØËµ¾ÍÊÇÏÈÓÉ»ï°é»úÖÆÉêÇë¿ÕÏÐÄÚ´æ¿Õ¼ä£¬È»ºóslab·ÖÅäÆ÷ÔÙ°ÑÕâ¸öÄÚ´æ¿Õ¼ä½øÐзָ°´Í¬Ñù´óСÀ´½øÐзָ×îºóÔÙÓÃһЩÊý¾Ý½á¹¹À´½øÐйÜÀí¡£ÉÏÃæÖ»ÊÇÐÎÏóµØËµ·¨¡£ÎÒÃÇÆ½Ê±°ÑÓÉslab½øÐзָîºóµÄÄÚ´æÎÒÃdzÆÖ®Îª¸ßËÙ»º´æÄÚ´æ¡£ÕâÑù¿´À´¾ÍÖªµÀËùνµÄ¸ßËÙ¾ÍÊÇ˵²»ÊÇÿ´Î·ÖÅäºÍÊÍ·ÅÄÚ´æ¶¼ÒªÕÒ»ï°é»úÖÆ£¬¿ÉÒÔÏÈ·ÃÎÊÕâЩ¸ßËÙÄÚ´æµÄ£¬ºÍÎÒÃÇÇ°ÃæÎÄÕÂÖÐÌáµ½µÄÀäÈÈÇøÊÇÒ»¸ö×÷Óõġ£ÎÒÃǻᷢÏÖÎÒÃÇÔÀ´ËµµÄÀäÈÈÇøºÍ»ï°é»úÖÆ£¬¶¼ÊÇÒÔҳΪµ¥Î»½øÐзÖÅäµÄ¡£Õâ¾ÍÓеãÏÞÖÆÁË£¬ÎªÊ²Ã´ÎÒ²»¿ÉÒÔÔÙ°´Ð¡µãµÄÄÚ´æÈ¥·ÖÅäÄØ£¿ËùÒԾͲúÉúÁËslab·ÖÅäÆ÷ÁË¡£
µ±ÎÒÃÇ´Ó¸ßËÙ»º´æÄÚ´æÖзÖÅä¶ÔÏóʱ£¨ÕâÀïÎÒÃDz»ÔÙ˵ÄÚ´æÒ³ÁË£¬ÎÒÃǸÃΪ¶ÔÏ󣬼´ÄÚ´æ¶ÔÏ󣩣¬Ê×Ïȼì²é¶ÔÓ¦´¦ÀíÆ÷µÄ¸ßËÙ»º´æÄÚ´æÕóÁÐÖÐÊÇ·ñÓÐδʹÓõÄÄÚ´æ¶ÔÏó¡£Ê²Ã´ÊÇ´¦ÀíÆ÷µÄ¸ßËÙ»º´æÄÚ´æÕóÁУ¿--kmem_cache_t½á¹¹ÀïÃæÒ²ÎªÃ¿¸ö´¦ÀíÆ÷Ô¤ÁôÒ»¸ö¸ßËÙ»º³åÄÚ´æÕóÁУ¨struct array_cache£©£¬ÎÒÃǶ¼ÊÇÓÃÆä³ÉÔ±*array[NR_CPUS]Õâ¸öÖ¸ÕëÊý×éÀïÃæµÄÿ¸ö³ÉÔ±¶¼ÊÇÖ¸Ïòstruct array_cache½á¹¹±äÁ¿£¬½ô¸úÔÚstruct array_cache½á¹¹ºóÃæµÄÊÇÁ¬Ðø´æ·ÅµÄ¸Ãstruct array_cache½á¹¹Ö¸¶¨¸öÊýµÄ¶ÔÏóÖ¸Õ룬ÕâЩָÕëÖ¸ÏòµÄ¶ÔÏó¾ÍÊǽ«À´Òª±»·ÖÅäµÄ¿Õ¼ä¡£kmem_cache_t½á¹¹¾ÍÊÇËãÊÇÎÒÃÇ˵µÄ¸ßËÙ»º´æÄÚ´æµÄÃèÊö½á¹¹¡£
Èç¹ûÎÒÃÇ·¢ÏÖ¶ÔÓ¦´¦ÀíÆ÷µÄ¸ßËÙ»º´æÄÚ´æÕóÁÐÖÐÓÐδʹÓõÄÄÚ´æ¶ÔÏó£¬Ö±½Ó°ÑÎÒÃǸղÅ˵µÄstruct arrary_cache½á¹¹Ö¸¶¨¸öÊýµÄ¶ÔÏóÖ¸Õë´«¸øµ÷ÓÃÕß¡£Èç¹ûûÓУ¬ÄÇôÊ×ÏȲéÕÒ¹²Ïí¸ßËÙ»º´æÄÚ´æÕóÁÐÖÐÊÇ·ñÓпÉÓõĶÔÏó£¬ÔÚ¸ßËÙ»º´æÄÚ´æÃèÊö½á¹¹£¨struct kmem_cache_t£©ÖÐÓÐÒ»¸ö³ÉÔ±¿ÉÒÔ·ÃÎʵ½Ëü£¬¾ÍÊÇstruct kmem_list3 listsÖеÄshare³ÉÔ±¡£ÆäʵÕâ¸öÊÇÕæÕý¶à¸öcpuµÄʱºò²Å»á²ÉÈ¡µÄ·½°¸¡£Èç¹û·¢ÏÖÕâÀïÓпÉÓÃÄÚ´æ¶ÔÏóµÄ»°£¬ÎÒÃÇÏȰÑÄÚ´æ¶ÔÏóµÄµØÖ·¸´ÖƵ½¶ÔÓ¦´¦ÀíÆ÷µÄ¸ßËÙ»º´æÄÚ´æÕóÁÐÖУ¬ÔÙ´Ó´¦ÀíÆ÷µÄ¸ßËÙ»º´æÄÚ´æÕóÁÐÖзÖÅä¶ÔÏó¡£
Ò»°ãÇé¿öÈç¹û¹²Ïí¸ßËÙ»º´æÄÚ´æÕóÁÐÖÐҲûÓпÉÓöÔÏóʱ£¬ÎÒÃǾÍÈ¥²éÕÒ²¿·Ö¿ÕÏкÍÈ«²¿¿ÕÏÐslabÁÐ±í¡£struct kmem_list3 listsÊǸßËÙ»º´æÄÚ´æÃèÊö½á¹¹struct kmem_cache_tµÄ³ÉÔ±£¬Õâ¸öÁ´±í½á¹¹¾ÍÊÇÓÃÀ´ÃèÊöÉÏÊöµÄslabÁÐ±í¡£Á´±í½á¹¹ÃèÊöÁËÈýÖÖ¸ßËÙ»º´æÄڴ浥룬ÓÉÒ»¸östruct slab½á¹¹¹ÜÀíµÄÒ»×éÌØ¶¨´óСµÄÄÚ´æ¶ÔÏó½Ð×öÒ»¸ö¸ßËÙ»º´æÄڴ浥룬һ¸öÄڴ浥λ°üÀ¨Ò»Ð©´óСһÖµÄÄÚ´æ¶ÔÏó¡¢Ò»Ð©É«¿é£¨²»»á±»µ÷Óõģ¬Ö»ÊÇÆðµ½¶ÔÆëµÄÓÃ;£©¡¢Ò»¸östruct slab½á¹¹¡¢Óëÿ¸öÄ
Ïà¹ØÎĵµ£º
££¿×½¨¾ü(Kongove.CN)
2008.11.12
Ê×ÏÈ£¬ÈÃÎÒÃÇÀ´¿´¼¸×éÁîÈËÕñ·ÜµÄÊý¾Ý¡£ÏÖÔÚ¶©ÔÄLinuxÄÚºËÓʼþÁбí[1]£¬Ã¿ÌìµÄÓʼþÁ÷Á¿´ó¸ÅÔÚ500·Ý×óÓÒ£»Ö´ÐÐ"grep "^P:"
MAINTAINERS |sort -u|wc
-l"£¬¶ÔÄÚºË×Óϵͳά»¤Õß½øÐÐͳ¼Æ£¬µÃµ½µÄ½á¹ûÊÇ534ÈË£»´Ó2007µ½2008Ä꣬ƽ¾ùÿÌìÓÐ4300ÐдúÂëÌí¼Óµ½Äںˣ¬ÓÐ180 ......
²»ÖªµÀÔÚʲçÛʱºò£¬×ªÔØLinux ³öÏÖÁË module ÕâÖÖ¶«Î÷£¬µÄÈ·£¬ËüÊÇ Linux µÄÒ»´ó¸ïС£ÓÐÁË module Ö®ºó£¬Ð´
device driver ²»ÔÙÊÇÒ»Ïî¶ñÃΣ¬ÐÞ¸Ä kernel Ò²²»ÔÙÊÇÒ»¼þÍ´¿àµÄÊÂÁË¡£ÒòΪÄã²»ÐèҪÿ´ÎÒª²âÊÔ driver ¾ÍÖØÐÂ
compile kernel Ò»´Î¡£ÄǼòÖ±ÊÇ»áÀÛËÀÈË¡£Module ¿ÉÒÔÔÊÐíÎÒÃǶ¯Ì¬µÄ¸Ä±ä kernel£¬¼ÓÔØ device
dri ......
ÒýÓãºhttp://blog.chinaunix.net/u/12207/showart_2061214.html
¹ØÓÚ2.6.31Óöµ½µÄÎÊÌâ
´íÎóÌáʾ1£º
drivers/built-in.o(.init.text+0x3bad): In function `con_init':
include/trace/events/kmem.h:47: undefined reference to `.L1452'
½â¾ö£º
vi /usr/src/linux/drivers/char/vt.c ÕÒµ½static int __init con_init ......
linuxϾ²Ì¬¿âǶÌ×ʹÓÃ
ǰÌáÊÇÄã»áÔÚlinuxϵ÷Óþ²Ì¬¿âºÍ¶¯Ì¬¿âºÍMakfile±à³Ì(µ±È»²»»áMakfileÖ±½ÓÔÚÖÕ¶ËÃüÁîÒ²³É)
±¾ÀýÊÇÏÈÓÉStringLen.h,StringLen.cÉú³Élibrak.a
È»ºóÀûÓÃStringLen2.h£¬StringLen2.²¢µ÷ÓÃlibrak.aÉú³Élibrak2.a
×îºóÀûÓÃStringLen3.h,StringLen3.cµ÷ÓÃlibrak2.a Éú³Élibrak3.so
------------------ ......