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

Linux 2.6Äں˵ÄÐÂËø»úÖÆ RCU

http://www.ibm.com/developerworks/cn/linux/l-rcu/
º¯ÊýÕªÒª£º
C´úÂë
/*¶ÁÕßÔÚ¶ÁÈ¡ÓÉRCU±£»¤µÄ¹²ÏíÊý¾ÝʱʹÓøú¯Êý±ê¼ÇËü½øÈë¶Á¶ËÁÙ½çÇø¡£*/ 
rcu_read_lock()  
/* 
¸Ãº¯ÊýÓërcu_read_lockÅä¶ÔʹÓã¬ÓÃÒÔ±ê¼Ç¶ÁÕßÍ˳ö¶Á¶ËÁÙ½çÇø¡£¼ÐÔÚÕâÁ½¸öº¯ÊýÖ®¼äµÄ´úÂëÇø³ÆΪ"¶Á¶ËÁÙ½çÇø"(read-side critical section)¡£¶Á¶ËÁÙ½çÇø¿ÉÒÔǶÌ×£¬Èçͼ3£¬ÁÙ½çÇø2±»Ç¶Ì×ÔÚÁÙ½çÇø1ÄÚ¡£ 
*/ 
rcu_read_unlock()  
 
/* 
¸Ãº¯ÊýÓÉRCUд¶Ëµ÷Óã¬Ëü½«×èÈûдÕߣ¬Ö±µ½¾­¹ýgrace periodºó£¬¼´ËùÓеĶÁÕßÒѾ­Íê³É¶Á¶ËÁÙ½çÇø£¬Ð´Õ߲ſÉÒÔ¼ÌÐøÏÂÒ»²½²Ù×÷¡£Èç¹ûÓжà¸öRCUд¶Ëµ÷Óøú¯Êý£¬ËûÃǽ«ÔÚÒ»¸ögrace periodÖ®ºóÈ«²¿±»»½ÐÑ¡£ 
*/ 
synchronize_rcu()  
/* 
º¯
Êý call_rcu Ò²ÓÉ RCU д¶Ëµ÷Óã¬Ëü²»»áʹдÕß×èÈû£¬Òò¶ø¿ÉÒÔÔÚÖжÏÉÏÏÂÎÄ»ò softirq ʹÓ㬶ø
synchronize_rcu¡¢synchronize_kernel ºÍsynchronize_shced
Ö»ÄÜÔÚ½ø³ÌÉÏÏÂÎÄʹÓ᣸ú¯Êý½«°Ñº¯Êý func ¹Ò½Óµ½ RCU»Øµ÷º¯ÊýÁ´ÉÏ£¬È»ºóÁ¢¼´·µ»Ø¡£Ò»µ©ËùÓÐµÄ CPU
¶¼ÒѾ­Íê³É¶ËÁÙ½çÇø²Ù×÷£¬¸Ãº¯Êý½«±»µ÷ÓÃÀ´ÊÍ·Åɾ³ýµÄ½«¾ø²»ÔÚ±»Ó¦ÓõÄÊý¾Ý¡£²ÎÊý head ÓÃÓڼǼ»Øµ÷º¯Êý func£¬Ò»°ã¸Ã½á¹¹»á×÷Ϊ±» RCU
±£»¤µÄÊý¾Ý½á¹¹µÄÒ»¸ö×ֶΣ¬ÒÔ±ãÊ¡È¥µ¥¶ÀΪ¸Ã½á¹¹·ÖÅäÄÚ´æµÄ²Ù×÷¡£ÐèÒªÖ¸³öµÄÊÇ£¬º¯Êý synchronize_rcu
µÄʵÏÖʵ¼ÊÉÏʹÓú¯Êýcall_rcu¡£ 
*/ 
void fastcall call_rcu(struct rcu_head *head,  
                                void (*func)(struct rcu_head *rcu))  
 
/* 
д¶Ëµ÷Ó㬰ÑÒ»¸öÖ¸Õëp¸³ÎªÖ¸Õëv¡£ 
*/ 
rcu_assign_pointer()  
typeof(p) rcu_assign_pointer(p, typeof(p) v);  
 
/* 
»ñµÃÖ¸ÕëpµÄ½âÒýÓÃÖµ 
*/ 
rcu_dereference()  
typeof(p) rcu_assign_pointer(p, typeof(p) v); 
http://group.ednchina.com/1036/21283.aspx
http://blog.chinaunix.net/u1/51562/showart_1341707.html
http://www.360doc.com/content/10/0106/17/701200_12820595.shtml


Ïà¹ØÎĵµ£º

ÉîÈëÀí½âlinuxϵͳµ÷ÓÃÓëʹÓÃÖ®ÕûÀíƪ

ÉîÈëÀí½âlinuxϵͳµ÷ÓÃÓëʹÓÃÖ®ÕûÀíƪ
Ò»¡¢ ʲôÊÇϵͳµ÷ÓÃ
      ÔÚLinuxµÄÊÀ½çÀÎÒÃǾ­³£»áÓöµ½ÏµÍ³µ÷ÓÃÕâÒ»ÊõÓËùνϵͳµ÷Ó㬾ÍÊÇÄÚºËÌṩµÄ¡¢¹¦ÄÜÊ®·ÖÇ¿´óµÄһϵÁеĺ¯Êý¡£ÕâЩϵͳµ÷ÓÃÊÇÔÚÄÚºËÖÐʵÏֵģ¬ÔÙͨ¹ýÒ»¶¨µÄ·½Ê½°Ñϵͳµ÷ÓøøÓû§£¬Ò»°ã¶¼Í¨¹ýÃÅ(gate)ÏÝÈë(trap)ʵÏÖ¡£ÏµÍ³µ ......

linuxϵĵ÷ÊÔ¹¤¾ß

תÔØʱÇë×¢Ã÷³ö´¦ºÍ×÷ÕßÁªÏµ·½Ê½
ÎÄÕ³ö´¦£ºhttp://www.limodev.cn/blog
×÷ÕßÁªÏµ·½Ê½£ºÀîÏȾ² <xianjimli at hotmail dot com>
Ëæ×ÅXPµÄÁ÷ÐУ¬ÈËÃÇÔ½À´Ô½×¢ÖØÈí¼þµÄÇ°ÆÚÉè¼Æ¡¢ºóÆÚµÄʵÏÖ£¬ÒÔ¼°¹á´©ÓÚÆäÖеIJâÊÔ¹¤×÷£¬¾­¹ýÕâ¸ö¹ý³Ì³öÀ´µÄ×ÔÈ»ÊǸßÖÊÁ¿µÄÈí¼þ¡£ÉõÖÁÓÐÈËÉù³ÆXP»áÌÔÌ­µ÷ÊÔÆ÷£¡Õ⵱ȻÊÇÓÐÒ»¶¨µÀÀíµÄ£¬È ......

[zz]ÔÚ linux ÏÂʹÓà CMake ¹¹½¨Ó¦ÓóÌÐò

Ô­ÎĵØÖ·£ºhttp://www.ibm.com/developerworks/cn/linux/l-cn-cmake/index.html
±¾ÎĽéÉÜÁËÒ»¸ö¿çƽ̨µÄ×Ô¶¯»¯¹¹½¨ÏµÍ³ CMake ÔÚ linux ÉϵÄʹÓ÷½·¨¡£ CMake ÊÇÒ»¸ö±È automake ¸ü¼ÓÈÝÒ×ʹÓõŤ¾ß£¬Äܹ»Ê¹³ÌÐòÔ±´Ó¸´ÔӵıàÒëÁ¬½Ó¹ý³ÌÖнâÍѳöÀ´¡£ÎÄÖÐͨ¹ýһЩÀý×Ó½éÉÜʹÓà CMake ´¦Àí¶àÔ´ÎļþĿ¼µÄ·½·¨¡¢²éÕÒ²¢Ê¹ÓÃÆäËû ......

£¨³¤ÆÚ»ýÀÛ£©Ò»Ð©linuxÄÚºËѧϰ·½·¨»ýÀÛ

¡¶LinuxÄÚºËÔ´´úÂëÍêȫעÊÍ¡·ÊÇͦ²»´íµÄ£¬µ«ÒªÀí½âÕûÌå¼Ü¹¹µÄ»°»¹ÊÇÏȱð¿´Õâ¸ö£¬»¹ÊǵȾßÌå·ÖÎöÄÚºËÄĸö²¿·ÖµÄʱºòÔÙÕë¶Ô×ÅÈ¥¿´ÏàÓ¦²¿·ÖµÄ×¢ÊÍ°É£®
a.ÍƼöÄÚºËѧϰÊé¼®
  1.ѧϰÄÚºËÕûÌå½á¹¹ºÍ»ù±¾ÀíÂÛ֪ʶ: <Linux Kernel Development second edition>,ÖÐÎÄÃû:LinuxÄÚºËÉè¼ÆÓëʵÏÖ µÚ2°æ
  2.Ñ§Ï°Ç ......

ÔõôÔÚLinuxÖÐÌí¼ÓеÄϵͳµ÷ÓÃ

ϵͳµ÷ÓÃÊÇÓ¦ÓóÌʽºÍ²Ù×÷ϵͳÄÚºËÖ®¼äµÄ¹¦Äܽӿڡ£ÆäÖ÷ҪĿµÄÊÇʹµÃÓû§
ÄÜʹÓòÙ×÷ϵͳÌṩµÄÓйØÉ豸¹ÜÀí¡¢ÊäÈë/ÊäÈëϵͳ¡¢ÎļþϵͳºÍ½ø³Ì¿ØÖÆ¡¢
ͨÐż°´æ´¢¹ÜÀíµÈ·½ÃæµÄ¹¦ÄÜ£¬¶ø²»±ØÁ˽âϵͳ³ÌʽµÄÄÚ²¿½á¹¹ºÍÓйØÓ²¼þϸ
½Ú£¬´Ó¶øÆðµ½¼õÇáÓû§¸ºµ£ºÍ±£»¤ÏµÍ³¼°Ìá¸ß×ÊÔ´ÀûÓÃÂʵÄ×÷Óá£
¡¡¡¡Linux²Ù×÷ϵͳ×÷ΪÃâ·ÑÈí¼þ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ