Linux 2.6ÄÚºËÖÐеÄËø»úÖÆ RCU
ÔÎÄÍøÖ·£ºhttp://www.ibm.com/developerworks/cn/linux/l-rcu/
±¾ÎÄÏêϸµØ½éÉÜÁË Linux 2.6 ÄÚºËÖÐеÄËø»úÖÆ RCU(Read-Copy Update) µÄʵÏÖ»úÖÆ£¬Ê¹ÓÃÒªÇóÓëµäÐÍÓ¦Óá£
Ò»¡¢ ÒýÑÔ
ÖÚËùÖÜÖª£¬ÎªÁ˱£»¤¹²ÏíÊý¾Ý,ÐèҪһЩͬ²½»úÖÆ,Èç×ÔÐýËø(spinlock)£¬¶ÁÐ´Ëø(rwlock)£¬ËüÃÇʹÓÃÆðÀ´·Ç³£¼òµ¥,¶øÇÒÊÇÒ»ÖÖºÜÓÐЧµÄͬ²½»úÖÆ£¬ÔÚUNIXϵͳºÍLinuxϵͳÖеõ½Á˹㷺µÄʹÓᣵ«ÊÇËæ×żÆËã»úÓ²¼þµÄ¿ìËÙ·¢Õ¹£¬»ñµÃÕâÖÖËøµÄ¿ªÏúÏà¶ÔÓÚCPUµÄËÙ¶ÈÔڳɱ¶µØÔö¼Ó£¬ÔÒòºÜ¼òµ¥£¬CPUµÄËÙ¶ÈÓë·ÃÎÊÄÚ´æµÄËٶȲî¾àÔ½À´Ô½´ó£¬¶øÕâÖÖËøÊ¹ÓÃÁËÔ×Ó²Ù×÷Ö¸ÁËüÐèÒªÔ×ӵطÃÎÊÄڴ棬Ҳ¾Í˵»ñµÃËøµÄ¿ªÏúÓë·Ã´æËÙ¶ÈÏà¹Ø£¬ÁíÍâÔڴ󲿷ַÇx86¼Ü¹¹ÉÏ»ñÈ¡ËøÊ¹ÓÃÁËÄÚ´æÕ¤(Memory Barrier)£¬Õâ»áµ¼Ö´¦ÀíÆ÷Á÷Ë®ÏßÍ£ÖÍ»òˢУ¬Òò´ËËüµÄ¿ªÏúÏà¶ÔÓÚCPUËٶȶøÑÔ¾ÍÔ½À´Ô½´ó¡£±í1Êý¾ÝÖ¤Ã÷ÁËÕâÒ»µã¡£
±í1ÊÇÔÚ700MHzµÄ±¼ÌÚIII»úÆ÷ÉϵĻù±¾²Ù×÷µÄ¿ªÏú£¬ÔڸûúÆ÷ÉÏÒ»¸öʱÖÓÖÜÆÚÄܹ»Ö´ÐÐÁ½ÌõÕûÊýÖ¸Áî¡£ÔÚ1.8GHzµÄ±¼ÌÚ4»úÆ÷ÉÏ, Ô×Ó¼Ó1Ö¸ÁîµÄ¿ªÏúÒª±È700MHzµÄ±¼ÌÚIII»úÆ÷Âý75ÄÉÃë(ns)£¬¾¡¹ÜCPUËÙ¶È¿ìÁ½±¶¶à¡£
ÕâÖÖËø»úÖÆµÄÁíÒ»¸öÎÊÌâÔÚÓÚÆä¿ÉÀ©Õ¹ÐÔ£¬ÔÚ¶à´¦ÀíÆ÷ϵͳÉÏ£¬¿ÉÀ©Õ¹ÐԷdz£ÖØÒª£¬·ñÔò¸ù±¾ÎÞ·¨·¢»ÓÆäÐÔÄÜ¡£Í¼1±íÃ÷ÁËLinuxÉϸ÷ÖÖËøµÄÀ©Õ¹ÐÔ¡£
ͼ 1 LinuxµÄ4ÖÖËø»úÖÆµÄÀ©Õ¹ÐÔͼ 1 LinuxµÄ4ÖÖËø»úÖÆµÄÀ©Õ¹ÐÔ
×¢£ºrefcnt±íʾ×ÔÐýËøÓëÒýÓüÇÊýÒ»ÆðʹÓá£
¶ÁÐ´ËørwlockÔÚÁ½¸öCPUµÄÇé¿öÏÂÐÔÄÜ·´µ¹±ÈÒ»¸öCPUµÄ²î£¬ÔÚËĸöCPUµÄÇé¿öÏ£¬refcntµÄÐÔÄÜÒª¸ßÓÚrwlock£¬refcnt´óÔ¼ÊÇÀíÂÛÐÔÄܵÄ45%£¬¶ørwlockÊÇÀíÂÛÐÔÄܵÄ39%,×ÔÐýËõspinlockµÄÐÔÄÜÃ÷ÏÔºÃÓÚrefcntºÍrwlock£¬µ«ËüÒ²Ö»´ïµ½ÁËÀíÐÔÐÔÄܵÄ57%£¬brlock£¨Big Reader Lock£©ÐÔÄÜ¿ÉÒÔÏßÐÔÀ©Õ¹¡£BrlockÊÇÓÉRedhatµÄIngo MolnarʵÏÖµÄÒ»¸ö¸ßÐÔÄܵÄrwlock£¬ËüÊÊÓÃÓÚ¶ÁÌØ¶à¶øÐ´ÌØÉÙµÄÇé¿ö£¬¶ÁÕß»ñµÃbrlockµÄ¿ªÏúºÜµÍ£¬µ«Ð´Õß»ñµÃËøµÄ¿ªÏú·Ç³£´ó£¬¶øÇÒËüÖ»Ô¤¶¨ÒåÁ˼¸¸öËø£¬Óû§ÎÞ·¨Ëæ±ã¶¨Ò岢ʹÓÃÕâÖÖËø£¬ËüÒ²ÐèҪΪÿ¸öCPU¶¨ÒåÒ»¸öËø×´Ì¬Êý×飬Òò´ËÕâÖÖËø²¢Ã»Óб»×÷ΪrwlockµÄÌæ´ú·½°¸¹ã·ºÊ¹Óã¬Ö»ÊÇÔÚÒ»Ð©ÌØ±ðµÄµØ·½Ê¹Óõ½¡£
ÕýÊÇÔÚÕâÖÖ±³¾°Ï£¬Ò»¸ö¸ßÐÔÄܵÄËø»úÖÆRCUºôÖ®Óû³ö£¬Ëü¿Ë·þÁËÒÔÉÏËøµÄȱµã£¬¾ßÓкܺõÄÀ©Õ¹ÐÔ£¬µ«ÊÇÕâÖÖËø»úÖÆµÄʹÓ÷¶Î§±È½ÏÕ£¬ËüÖ»ÊÊÓÃÓÚ¶Á¶àдÉÙµÄÇé¿ö£¬ÈçÍøÂç·ÓɱíµÄ²éѯ¸üС¢É豸״̬±íµÄά»¤¡¢Êý¾Ý½á¹¹µÄÑÓ³ÙÊÍ·ÅÒÔ¼°¶à¾¶I/OÉ豸µÄά»¤µÈ¡£
RCU²¢²»ÊÇеÄËø»úÖÆ£¬ËüÖ»ÊǶÔLinuxÄں˶øÑÔÊÇеġ£ÔçÔÚ¶þÊ®ÊÀ¼Í°
Ïà¹ØÎĵµ£º
Service Discovery Protocol(SDP)ÌṩһÖÖÄÜÁ¦£¬ÈÃÓ¦ÓóÌÐòÓз½·¨·¢ÏÖÄÄÖÖ·þÎñ¿ÉÓÃÒÔ¼°ÕâÖÖ·þÎñµÄÌØÐÔ¡£
·þÎñ·¢ÏÖÐÒé(SDP»òBluetooth SDP)ÔÚÀ¶ÑÀÐÒéÕ»ÖжÔÀ¶ÑÀ»·¾³ÖеÄÓ¦ÓóÌÐòÓÐÌØÊâµÄº¬Ò⣬·¢ÏÖÄĸö·þÎñÊÇ¿ÉÓõĺÍÈ·¶¨ÕâЩ¿ÉÓ÷þÎñµÄÌØÕ÷¡£SDP¶¨ÒåÁËbluetooth client·¢ÏÖ¿ÉÓÃbluetooth server·þÎñºÍËüÃǵÄÌØÕ÷µÄ·½·¨¡£ ......
linux²éÕÒÎļþÃüÁîfind
ÿһÖÖ²Ù×÷ϵͳ¶¼ÊÇÓɳÉǧÉÏÍò¸ö²»Í¬ÖÖÀàµÄÎļþËù×é³ÉµÄ¡£ÆäÖÐÓÐϵͳ±¾Éí×Ô´øµÄÎļþ£¬Óû§×Ô¼ºµÄÎļþ£¬»¹Óй²ÏíÎļþµÈµÈ¡£ÎÒÃÇÓÐʱºò¾³£Íü¼Çij
·ÝÎļþ·ÅÔÚÓ²ÅÌÖеÄÄĸöµØ·½¡£ÔÚ΢ÈíµÄWINDOWS²Ù×÷ϵͳÖÐÒª²éÕÒÒ»·ÝÎļþÊÇÏ൱¼òµ¥µÄÊÂÇ飬ֻҪÔÚ×ÀÃæÉϵã»÷&ldq ......
1.´ÅÅÌÃüÁî
mount ¹ÒÉÏÎļþϵͳ
umount жÏÂÒѹÒÉϵÄÎļþϵͳ
df   ......
תÌù×Ô£ºhttp://alexanderlaw.blog.hexun.com/8968944_d.html
Áù¡¢ À©Õ¹µÄmatch
6.1 do_matchº¯Êý ip_tables.c
do_matchͨ¹ýIPT_MATCH_ITERATEºêÀ´µ÷ÓÃ,
IPT_MATCH_ITERATEÊÇÔÚipt_do_tableº¯ÊýÖе÷Óõĺê
IPT_MATCH_ITERATE(e, do_match,
&nb ......
תÌù×Ô£ºhttp://alexanderlaw.blog.hexun.com/8968960_d.html
Æß¡¢ target Æ¥Åä
7.1 ipt_targetºÍipt_entry_target½á¹¹ ip_tables.h
ipt_targetºÍipt_match½á¹¹ÀàËÆ£º
struct ipt_target
{
struct list_head list;
& ......