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

Linux RCU»úÖÆÏê½â

Ô­ÎÄÍøÖ·£ºhttp://blog.chinaunix.net/u1/51562/showart_1341707.html
 
Ò»:ǰÑÔ
RCU»úÖÆ³öÏֵıȽÏÔç,Ö»ÊÇÔÚlinux kernelÖÐÒ»Ö±µ½2.5°æ±¾µÄʱºò²Å±»²ÉÓÃ.¹ØÓÚRCU»úÖÆ,ÕâÀï¾Í²»×ö¹ý¶àµÄ½éÉÜÁË,ÍøÉÏÓкܶàÓйØRCU½éÉܺÍʹÓõÄÎĵµ.Çë×ÔÐвéÔÄ.±¾ÎÄÖ÷ÒªÊÇ´Ólinux kernelÔ´´úÂëµÄ½Ç¶È.À´·ÖÎöRCUµÄʵÏÖ.
ÔÚÌÖÂÛRCUµÄʵÏÖ֮ǰ.ÓбØÒªÖØÉêÒÔϼ¸µã:
1:RCUʹÓÃÔÚ¶ÁÕß¶à¶øÐ´ÕßÉÙµÄÇé¿ö.RCUºÍ¶ÁÐ´ËøÏàËÆ.µ«RCUµÄ¶ÁÕßÕ¼ËøÃ»ÓÐÈκεÄϵͳ¿ªÏú.дÕßÓëддÕßÖ®¼ä±ØÐëÒª±£³Öͬ²½,ÇÒдÕß±ØÐëÒªµÈËü֮ǰµÄ¶ÁÕßÈ«²¿¶¼Í˳öÖ®ºó²ÅÄÜÊÍ·Å֮ǰµÄ×ÊÔ´.
2:RCU±£»¤µÄÊÇÖ¸Õë.ÕâÒ»µãÓÈÆäÖØÒª.ÒòΪָÕ븳ֵÊÇÒ»Ìõµ¥Ö¸Áî.Ò²¾ÍÊÇ˵ÊÇÒ»¸öÔ­×Ó²Ù×÷.ÒòËü¸ü¸ÄÖ¸ÕëÖ¸Ïòû±ØÒª¿¼ÂÇËüµÄͬ²½.Ö»ÐèÒª¿¼ÂÇcacheµÄÓ°Ïì.
3:¶ÁÕßÊÇ¿ÉÒÔǶÌ×µÄ.Ò²¾ÍÊÇ˵rcu_read_lock()¿ÉÒÔǶÌ×µ÷ÓÃ.
4:¶ÁÕßÔÚ³ÖÓÐrcu_read_lock()µÄʱºò,²»ÄÜ·¢Éú½ø³ÌÉÏÏÂÎÄÇл».·ñÔò,ÒòΪдÕßÐèÒªÒªµÈ´ý¶ÁÕßÍê³É,дÕß½ø³ÌÒ²»áÒ»Ö±±»×èÈû.
ÒÔϵĴúÂëÊÇ»ùÓÚlinux kernel 2.6.26
¶þ:ʹÓÃRCUµÄʵÀý
Linux kernelÖÐ×Ô¼º¸½´øÓÐÏêϸµÄÎĵµÀ´½éÉÜRCU,ÕâЩÎĵµÎ»ÓÚlinux-2.6.26.3/Documentation/RCU. ÕâЩÎĵµÖµµÃ¶à»¨µãʱ¼äÈ¥×ÐϸÑжÁÒ»ÏÂ.
ÏÂÃæÒÔwhatisRCU.txtÖеÄÀý×Ó×÷Ϊ½ñÌì·ÖÎöµÄÆðµã:
struct foo {
        int a;
        char b;
        long c;
};
DEFINE_SPINLOCK(foo_mutex);
 
struct foo *gbl_foo;
void foo_update_a(int new_a)
{
        struct foo *new_fp;
        struct foo *old_fp;
 
        new_fp = kmalloc(sizeof(*new_fp), GFP_KERNEL);
        spin_lock(&foo_mutex);
        old_fp = gbl_foo;
        *new_fp = *old_fp;
        new_fp->a = new_a;
        rcu_assign_pointer(gbl_foo, new_fp);
        spin_unlock(&foo_mutex);
        sync


Ïà¹ØÎĵµ£º

Linux»·¾³ÏÂÅжϷþÎñÆ÷ÊÇ·ñÕý³£¹Ø»ú

Linux»·¾³ÏÂÅжϷþÎñÆ÷ÊÇ·ñÕý³£¹Ø»ú
2009-05-17  À´×Ô£ºZDNet     ÊÕ²Ø
ϵͳÆô¶¯µÄʱºòÉú³ÉÒ»¸öÎļþ£¬Õý³£¹Ø»úµÄʱºòÔòɾ³ýÕâ¸öÎļþ£¬Ôò¿ÉÒÔ¸ù¾Ýϵͳ¿ª»úʱÓÐûÓÐÄǸöÎļþÀ´ÅжÏÊDz»ÊÇ·ÇÕý³£¹Ø»ú¡£
ϵͳÆô¶¯µÄʱºòÉú³ÉÒ»¸öÎļþ£¬Õý³£¹Ø»úµÄʱºòÔòɾ³ýÕâ¸öÎļþ£¬Ôò¿ÉÒÔ¸ù¾Ýϵͳ¿ª»úʱÓÐûÓÐÄǸöÎļþÀ´ÅÐ ......

ǶÈëʽlinuxϵͳÓëÓ¦ÓÃ

Emebedded System and Application(Linux)
 
Goal
--
ÕÆÎÕǶÈëʽϵͳ¿ª·¢µÄÁ÷³Ì£¬ÏµÍ³ÒÆÖ²µÄ·½·¨£¬±àдBootloader
            (Be familiar with the process of ES Developing
, System Migration
amd Bootloader Programming
)
 Requriem ......

Linux LVM µÄʹÓÃÏê½â

welcome Linux LVM µÄʹÓÃÏê½â ÕªÒª£ºLinuxÓû§°²×°Linux²Ù×÷ϵͳʱÓöµ½µÄÒ»¸ö×î³£¼ûµÄÄÑÒÔ¾ö¶¨µÄÎÊÌâ¾ÍÊÇÈçºÎÕýÈ·µØ¸øÆÀ¹À¸÷·ÖÇø´óС£¬ÒÔ·ÖÅäºÏÊʵÄÓ²Å̿ռ䡣¶øÓöµ½³öÏÖij¸ö·ÖÇø¿Õ¼äºÄ¾¡Ê±£¬½â¾öµÄ·½·¨Í¨³£ÊÇʹÓ÷ûºÅÁ´½Ó£¬»òÕßʹÓõ÷Õû·ÖÇø´óСµÄ¹¤¾ß(±ÈÈçPatition MagicµÈ)£¬µ«Õâ¶¼Ö»ÊÇÔÝʱ½â¾ö°ì·¨£¬Ã»Óиù±¾½â¾öÎ ......

¡¶Linux diffÓëpatchµÄÉîÈë·ÖÎö¡·

diffµÄÊä³ö¸ñʽ·ÖΪ´«Í³¸ñʽºÍͳһ¸ñʽ
1)diffµÄ´«Í³¸ñʽÊä³ö.
############################################
cat before.txt
Êä³ö:
This is a line to be deleted
This is a line that will be changed
This is a line that will be unchanged
cat after.txt
Êä³ö:
This is a line that has been changed
Thi ......

LinuxÖÐRCU»úÖÆµÄÔ­Àí

Ô­ÎÄÍøÖ·£ºhttp://group.ednchina.com/1036/21283.aspx
 RCU»úÖÆÊÇLinux2.6Ö®ºóÌṩµÄÒ»ÖÖÊý¾ÝÒ»ÖÂÐÔ·ÃÎʵĻúÖÆ£¬´ÓRCU£¨read-copy-update£©µÄÃû³ÆÉÏ¿´£¬ÎÒÃǾÍÄܶÔËûµÄʵÏÖ»úÖÆÓÐÒ»¸ö´ó¸ÅµÄÁ˽⣬ÔÚÐÞ¸ÄÊý¾ÝµÄʱºò£¬Ê×ÏÈÐèÒª¶ÁÈ¡Êý¾Ý£¬È»ºóÉú³ÉÒ»¸ö¸±±¾£¬¶Ô¸±±¾½øÐÐÐ޸ģ¬ÐÞ¸ÄÍê³ÉÖ®ºóÔÙ½«ÀÏÊý¾Ýupdate³ÉеÄÊý¾Ý£¬´ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ