Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

LinuxÄÚ´æ¹ÜÀíÖ®slab·ÖÅäÆ÷·ÖÎö(ÐøËÄ)


Æß£ºkmem_cache_free£¨£©µÄʵÏÖ
kmem_cache_freeÓÃÓÚ°Ñ´ÓslabÖзÖÅäµÄ¶ÔÏóÊͷŵô£¬Í¬·ÖÅäÒ»Ñù£¬ËüÊ×ÏÈ»á°ÑËü·Åµ½ACÖУ¬Èç¹ûACÂúÁË£¬Ôò°Ñ¶ÔÏóÊͷŵ½shareÁ´ÖУ¬Èç¹ûshareÒ²ÂúÁË£¬Ò²¾Í°ÑËüÊÍ·ÅÖÁslab¡£À´¿´¾ßÌåµÄ´úÂ룺
void kmem_cache_free (kmem_cache_t *cachep, void *objp)
{
     unsigned long flags;
 
     local_irq_save(flags);
     __cache_free(cachep, objp);
     local_irq_restore(flags);
}
º¯Êýµ÷ÓÃ__cache_free(),´úÂëÈçÏ£º
static inline void __cache_free (kmem_cache_t *cachep, void* objp)
{
     struct array_cache *ac = ac_data(cachep);
 
     check_irq_off();
     //DEBUGÓ㬺öÂÔ
     objp = cache_free_debugcheck(cachep, objp, __builtin_return_address(0));
     //Èç¹ûACÖеĶÔÏñûÓг¬¹ýÏÞÖÆ£¬ÄǾͰÑËüÊͷŵ½ACÖС£
     if (likely(ac->avail < ac->limit)) {
         STATS_INC_FREEHIT(cachep);
         ac_entry(ac)[ac->avail++] = objp;
         return;
     } else {
         //Èç¹ûACÖжÔÏóÊýÄ¿µ½ÁËÏÞÖµ£¬Ôòcache_flusharray£¨£©ºó£¬ÔٰѶÔÏñ¼ÓÈëACÖÐ
         STATS_INC_FREEMISS(cachep);
         cache_flusharray(cachep, ac);
         ac_entry(ac)[ac->avail++] = objp;
     }
}
Èç¹ûµ±Ç°ACÖжÔÏóÊýÒѾ­µ½´ïÏÞÖµ£¬¾Í»áµ÷ÓÃcache_flusharray()½«ÀïÃæµÄ¶ÔÏó“ˢД³öÈ¥¡£´úÂëÈçÏ£º
static void cache_flusharray (kmem_cache_t* cachep, struct array_cache *ac)
{
     int batchcount;
    


Ïà¹ØÎĵµ£º

LinuxϵͳÏÂʹÓÃUSBת´®¿ÚÁ¬½Ó¹¤ÒµÉ豸

 
LinuxϵͳÏÂʹÓÃUSBת´®¿ÚÁ¬½Ó¹¤ÒµÉ豸 ÔÚWindowsÏ¿ÉÒÔʹÓ󬼶ÖÕ¶ËÀ´Á¬½Ó½»»»»úºÍ·ÓÉÆ÷µÈ¹¤ÒµÉ豸£¬¶øÇÒÔÚWindowsÏÂʹÓÃusbת´®¿ÚµÄÏßÒ²ÓÐÏàÓ¦µÄÇý¶¯£¬µ«ÊÇÈçºÎÔÚLinuxÏÂʹÓÃÄØ£¿
¡¡¡¡Ê×ÏÈÒªÓÐÒ»¸öLinuxϵÄÖÕ¶ËÈí¼þ½ÐminicomÈç¹ûûÓÐ×°Õâ¸öµÄÅóÓÑ¿ÉÒÔµ½×Ô¼ºµÄÔ´ÖÐÈ¥ÏÂÔØ£¬È»ºóÄã¾ÍÒª²åÉÏÄãµÄusbת´®¿ÚµÄÏߣ¬ÔÚ ......

linux»ñÈ¡ÎļþµÄ·¾¶Ãû¼°ÆäÎļþÃûµÄ·½·¨

1¡¢¼òµ¥²âÊÔʵÀý
 for i in `find . -type f -name "*.c"`
do
  echo $i
  basename $i    »ñÈ¡*.cÎļþÃû
  dirname $i        »ñÈ¡*.c¶ÔÓ¦µÄĿ¼Ãû
done
2¡¢Êµ¼ÊÓ¦ÓÃ
diff LinuxÔ´Â룬²¢½«Óв»Ò»ÑùµÄÔ´ÂëÕûÀíÔÚÒ»Æð£¬ÒªÇó£ºÎļþ ......

linuxÖÐELF¼ÓÔØ¹ý³Ì·ÖÎö

sys_execve
   | - do_execve
|
| - search_binary_handler         
           |- linux_binfmt= elf_format
       |- elf_format-> load_elf_binary
| -&nbs ......

Linux±ØÑ§µÄ60¸öÃüÁî (ת)

inux±ØÑ§µÄ60¸öÃüÁî
LinuxÌṩÁË´óÁ¿µÄÃüÁÀûÓÃËü¿ÉÒÔÓÐЧµØÍê³É´óÁ¿µÄ¹¤×÷£¬Èç´ÅÅ̲Ù×÷¡¢Îļþ´æÈ¡¡¢Ä¿Â¼²Ù×÷¡¢½ø³Ì¹ÜÀí¡¢ÎļþȨÏÞÉ趨µÈ¡£ËùÒÔ£¬ÔÚLinuxϵͳÉϹ¤×÷Àë²»¿ªÊ¹ÓÃϵͳÌṩµÄÃüÁî¡£ÒªÏëÕæÕýÀí½âLinuxϵͳ£¬¾Í±ØÐë´ÓLinuxÃüÁîѧÆð£¬Í¨¹ý»ù´¡µÄÃüÁîѧϰ¿ÉÒÔ½øÒ»²½Àí½âLinuxϵͳ¡£
²»Í¬Linux·¢ÐаæµÄÃüÁîÊýÁ¿² ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ