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Äں˶øÑÔÊÇеġ£ÔçÔÚ¶þÊ®ÊÀ¼Í°
Ïà¹ØÎĵµ£º
£¨L2CAPÐÒé¼ò½é£¬L2CAPÔÚBlueZÖеÄʵÏÖÒÔ¼°L2CAP±à³Ì½Ó¿Ú£©
Ò»£ºL2CAPÐÒé¼ò½é£º
Logical Link Control and Adaptation Protocol(L2CAP)
Âß¼Á¬½Ó¿ØÖƺÍÊÊÅäÐÒé (L2CAP) ΪÉϲãÐÒéÌá¹©ÃæÏòÁ¬½ÓºÍÎÞÁ¬½ÓµÄÊý¾Ý·þÎñ£¬²¢Ìṩ¶àÐÒ鹦ÄܺͷָîÖØ×é²Ù×÷¡£L2CAP ³äÐíÉϲãÐÒéºÍÓ¦ÓÃÈí¼þ´«ÊäºÍ½ÓÊÕ×î´ó³¤¶ÈΪ 64K µÄ L2CAP Ê ......
ÀýÒ»£º·¢ËÍSignaling Packet£º
Signaling CommandÊÇ2¸öBluetoothʵÌåÖ®¼äµÄL2CAP²ãÃüÁî´«Êä¡£ËùÒÔµÃSignaling CommandʹÓÃCID 0x0001.
¶à¸öCommand¿ÉÒÔÔÚÒ»¸öC-frame£¨control frame£©Öз¢ËÍ¡£
Èç¹ûÒªÖ±½Ó·¢ËÍSignaling Command.ÐèÒª½¨Á¢SOCK_RAWÀàÐ͵ÄL2CAPÁ¬½ÓSocket¡£ÕâÑù²ÅÓлú»á×Ô¼ºÌî³äCommand Code£¬Identi ......
linuxÏÂÌṩtop¡¢psÃüÁî²é¿´µ±Ç°cpu¡¢memʹÓÃÇé¿ö£¬¼òÒª½éÉÜÈçÏ£º
Ò»¡¢Ê¹ÓÃps²é¿´½ø³ÌµÄ×ÊÔ´Õ¼ÓÃ
ps -aux²é¿´½ø³ÌÐÅϢʱ£¬µÚÈýÁоÍÊÇCPUÕ¼Óá£
[root@localhost utx86]# ps -aux | grep my_process
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ
root 14415 3.4 ......
¹¦ÄÜ˵Ã÷£º½¨Á¢»òÐ޸ı¸´æÎļþ£¬»òÊÇ´Ó±¸´æÎļþÖгéÈ¡Îļþ¡£
Óï¡¡¡¡·¨£ºar[-dmpqrtx][cfosSuvV][a<³ÉÔ±Îļþ>][b<³ÉÔ±Îļþ>][i<³ÉÔ±Îļþ>][±¸´æÎļþ][³ÉÔ±Îļþ]
²¹³ä˵Ã÷£ºar¿ÉÈÃÄú¼¯ºÏÐí¶àÎļþ£¬³ÉΪµ¥Ò»µÄ±¸´æÎļþ¡£ÔÚ±¸´æÎļþÖУ¬ËùÓгÉÔ±Îļþ½Ô±£ÓÐÔÀ´µÄÊôÐÔÓëȨÏÞ¡£
²Î¡¡¡¡Êý£º
¡¡Ö¸Áî²ÎÊý
¡ ......
Îå¡¢ ipt_do_table()º¯Êý£¬Êý¾Ý°üµÄ¹ýÂË
5.1 ipt_entry Ïà¹Ø½á¹¹ ip_tables.h
ipt_entry½á¹¹Ç°ÃæÓйýÁË£¬ÔÙ¿´Ò»±é
struct ipt_entry
{
struct ipt_ip ip;
/* ËùҪƥÅäµÄ±¨ÎĵÄIPÍ·ÐÅÏ¢ */
unsigned int nfcache;
/* λÏòÁ¿£¬±êʾ±¾¹æÔò¹ØÐÄ ......