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

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Äں˶øÑÔÊÇеġ£ÔçÔÚ¶þÊ®ÊÀ¼Í°


Ïà¹ØÎĵµ£º

ʵսLinux Bluetooth±à³Ì(Áù) 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 ¹Ø»úÖ¸Áî

1¹Ø»úÃüÁî shutdown 1£©shutdown --help
2£©shutdown -h now ÏÖÔÚÁ¢¼´¹Ø»ú == halt Ö¸Áî
3£©shutdown -r now ÏÖÔÚÁ¢¼´ÖØÆô
4£©shutdown -r +3 Èý·ÖÖÓºóÖØÆô
5£©shutdown -h +3 "The System will shutdown after 3 minutes" ÌáʾʹÓÃÕß½«ÔÚÈý·ÖÖÓºó¹Ø»ú
6£©shutdown -r 20:23 ÔÚ20£º23ʱ½«ÖØÆô¼ÆËã»ú
7£©shutdown ......

Linux netfilterÔ´Âë·ÖÎö(5)


Îå¡¢ ipt_do_table()º¯Êý£¬Êý¾Ý°üµÄ¹ýÂË
 
5.1          ipt_entry Ïà¹Ø½á¹¹  ip_tables.h
ipt_entry½á¹¹Ç°ÃæÓйýÁË£¬ÔÙ¿´Ò»±é
struct ipt_entry
{
struct ipt_ip ip;
/* ËùҪƥÅäµÄ±¨ÎĵÄIPÍ·ÐÅÏ¢ */
unsigned int nfcache;
/* λÏòÁ¿£¬±êʾ±¾¹æÔò¹ØÐÄ ......

Linux netfilterÔ´Âë·ÖÎö(6)

תÌù×Ô£º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 ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ