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½ø³Ì¼äͨÐÅ£¨IPC£©
ÎĵµÑ¡Ïî
<tr
valign="top"><td width="8"><img alt="" height="1" width="8"
src="//www.ibm.com/i/c.gif"/></td><td width="16"><img alt="" width="16&q ......
1. Òý×Ó
int a;
int size = 8;
Èç¹ûÈÃaΪ(size =8)µÄÕûÊý±¶±íʾ³É¶þ½øÖÆÓ¦ÊÇʲôÑù×ÓÄØ£¿ÄǾÍÊÇÈÃÕâ¸öÊý±íʾ³É¶þ½øÖÆÊ±µÄ×îºóÈýλΪ0.
¶øÒª´ïµ½ÕâһĿ±ê£¬Ö»ÒªÏÂÃæÕâ¸öÊýÓëËü½øÐÐÓëÔËËã¾Í¿ÉÒÔÁË:
11111111 11111111 11111111 11111000
¶øÉÏÃæÕâ¸öÊýʵ¼ÊϾÍÊ ......
¡¡¡¡ÊµÏÖ¹¦ÄÜ£ºµ±Óû§ÔÚ±¾µØ¿Í»§¶ËijĿ¼ÄÚ½¨Á¢¡¢Ð޸ġ¢É¾³ýĿ¼»òÎļþ¡¢ÐÞ¸ÄĿ¼»òÎļþµÄÊôÐÔ£¬Ö»ÒªÖ´ÐÐÏàͬµÄshell½Å±¾£¬rsync¾Í»á×Ô¶¯ÕÒ³öÓи͝»òɾ³ýµÄÊý¾Ý£¬½«Æä´«Ë͵½·þÎñÆ÷ÉÏ£¬Ê¹·þÎñÆ÷¶ËijĿ¼ÄÚµÄÊý¾Ý¸ú±¾µØ¿Í»§¶ËijĿ¼ÄÚµÄÊý¾Ý±£³ÖÒ»Ö¡£
¡¡¡¡¡ï·½Ê½Ò»£º
¡¡¡¡Ò»¡¢·þÎñÆ÷¶Ë£¨Àý£º10.0.0.1*£©£º
¡¡¡¡1¡¢´´½¨Óà ......
welcome Linux LVM µÄʹÓÃÏê½â ÕªÒª£ºLinuxÓû§°²×°Linux²Ù×÷ϵͳʱÓöµ½µÄÒ»¸ö×î³£¼ûµÄÄÑÒÔ¾ö¶¨µÄÎÊÌâ¾ÍÊÇÈçºÎÕýÈ·µØ¸øÆÀ¹À¸÷·ÖÇø´óС£¬ÒÔ·ÖÅäºÏÊʵÄÓ²Å̿ռ䡣¶øÓöµ½³öÏÖij¸ö·ÖÇø¿Õ¼äºÄ¾¡Ê±£¬½â¾öµÄ·½·¨Í¨³£ÊÇʹÓ÷ûºÅÁ´½Ó£¬»òÕßʹÓõ÷Õû·ÖÇø´óСµÄ¹¤¾ß(±ÈÈçPatition MagicµÈ)£¬µ«Õâ¶¼Ö»ÊÇÔÝʱ½â¾ö°ì·¨£¬Ã»Óиù±¾½â¾öÎ ......