Linux ͬ²½·½·¨ÆÊÎö
ÎÄÕÂÀ´Ô´:http://www.ibm.com/developerworks/cn/linux/l-linux-synchronization.html
¼¶±ð£º Öм¶
M. Tim Jones, ¹ËÎʹ¤³Ìʦ, Emulex
2007 Äê 11 ÔÂ 19 ÈÕ
ÔÚѧϰ Linux® µÄ¹ý³ÌÖУ¬ÄúÒ²Ðí½Ó´¥¹ý²¢·¢£¨concurrency£©¡¢ÁÙ½ç¶Î£¨critical section£©ºÍËø¶¨£¬µ«ÊÇÈçºÎÔÚÄÚºËÖÐʹÓÃÕâЩ¸ÅÄîÄØ£¿±¾ÎÄÌÖÂÛÁË 2.6 °æÄÚºËÖпÉÓõÄËø¶¨»úÖÆ£¬°üÀ¨Ô×ÓÔËËã·û£¨atomic operator£©¡¢×ÔÐýËø£¨spinlock£©¡¢¶Á/Ð´Ëø£¨reader/writer lock£©ºÍÄÚºËÐźÅÁ¿£¨kernel semaphore£©¡£ ±¾ÎÄ»¹Ì½ÌÖÁËÿÖÖ»úÖÆ×îÊʺÏÓ¦Óõ½ÄÄЩµØ·½£¬ÒÔ¹¹½¨°²È«¸ßЧµÄÄں˴úÂë¡£
±¾ÎÄÌÖÂÛÁË Linux ÄÚºËÖпÉÓõĴóÁ¿Í¬²½»òËø¶¨»úÖÆ¡£ÕâЩ»úÖÆÎª 2.6.23 °æÄں˵ÄÐí¶à¿ÉÓ÷½·¨ÌṩÁËÓ¦ÓóÌÐò½Ó¿Ú£¨API£©¡£µ«ÊÇÔÚÉîÈëѧϰ API ֮ǰ£¬Ê×ÏÈÐèÒªÃ÷°×½«Òª½â¾öµÄÎÊÌâ¡£
developerWorks ÉÏ Tim µÄ¸ü¶à ÆÊÎö... ϵÁÐ
Linux ÎļþϵͳÆÊÎö
Linux ÍøÂç¶ÑÕ»ÆÊÎö
Linux ÄÚºËÆÊÎö
Linux slab ·ÖÅäÆ÷ÆÊÎö
Tim µÄËùÓÐ Anatomy of... ÎÄÕÂ
²¢·¢ºÍËø¶¨
µ±´æÔÚ²¢·¢ÌØÐÔʱ£¬±ØÐëʹÓÃͬ²½·½·¨¡£µ±ÔÚͬһʱ¼ä¶Î³öÏÖÁ½¸ö»ò¸ü¶à½ø³Ì²¢ÇÒÕâЩ½ø³Ì±Ë´Ë½»»¥£¨ÀýÈ磬¹²ÏíÏàͬµÄ×ÊÔ´£©Ê±£¬¾Í´æÔÚ²¢·¢ ÏÖÏó¡£
ÔÚµ¥´¦ÀíÆ÷£¨uniprocessor£¬UP£©Ö÷»úÉÏ¿ÉÄÜ·¢Éú²¢·¢£¬ÔÚÕâÖÖÖ÷»úÖжà¸öÏ̹߳²Ïíͬһ¸ö CPU ²¢ÇÒÇÀÕ¼£¨preemption£©´´½¨¾ºÌ¬Ìõ¼þ¡£ÇÀÕ¼ ͨ¹ýÁÙʱÖжÏÒ»¸öÏß³ÌÒÔÖ´ÐÐÁíÒ»¸öÏ̵߳ķ½Ê½À´ÊµÏÖ CPU ¹²Ïí¡£¾ºÌ¬Ìõ¼þ ·¢ÉúÔÚÁ½¸ö»ò¸ü¶àÏ̲߳Ù×ÝÒ»¸ö¹²ÏíÊý¾ÝÏîʱ£¬Æä½á¹ûÈ¡¾öÓÚÖ´ÐеÄʱ¼ä¡£ÔÚ¶à´¦ÀíÆ÷£¨MP£©¼ÆËã»úÖÐÒ²´æÔÚ²¢·¢£¬ÆäÖÐÿ¸ö´¦ÀíÆ÷Öй²ÏíÏàͬÊý¾ÝµÄÏß³ÌͬʱִÐС£×¢ÒâÔÚ MP Çé¿öÏ´æÔÚÕæÕýµÄ²¢ÐУ¨parallelism£©£¬ÒòΪÏß³ÌÊÇͬʱִÐеġ£¶øÔÚ UP ÇéÐÎÖУ¬²¢ÐÐÊÇͨ¹ýÇÀÕ¼´´½¨µÄ¡£Á½ÖÖģʽÖÐʵÏÖ²¢·¢¶¼½ÏΪÀ§ÄÑ¡£
Linux ÄÚºËÔÚÁ½ÖÖģʽÖж¼Ö§³Ö²¢·¢¡£Äں˱¾ÉíÊǶ¯Ì¬µÄ£¬¶øÇÒÓÐÐí¶à´´½¨¾ºÌ¬Ìõ¼þµÄ·½·¨¡£Linux ÄÚºËÒ²Ö§³Ö¶à´¦Àí£¨multiprocessing£©£¬³ÆÎª¶Ô³Æ¶à´¦Àí£¨SMP£©¡£¿ÉÒÔÔÚ±¾ÎĺóÃæµÄ ²Î¿¼×ÊÁÏ ²¿·Öѧµ½¸ü¶à¹ØÓÚ SMP µÄ֪ʶ¡£
ÁÙ½ç¶Î¸ÅÄîÊÇΪ½â¾ö¾ºÌ¬Ìõ¼þÎÊÌâ¶ø²úÉúµÄ¡£Ò»¸öÁÙ½ç¶Î ÊÇÒ»¶Î²»ÔÊÐí¶à··ÃÎʵÄÊܱ£»¤µÄ´úÂë¡£Õâ¶Î´úÂë¿ÉÒÔ²Ù×ݹ²ÏíÊý¾Ý»ò¹²Ïí·þÎñ£¨ÀýÈçÓ²¼þÍâΧÉ豸£©¡£ÁÙ½ç¶Î²Ù×÷ʱ¼á³Ö»¥³âËø£¨mutual exclusion£©ÔÔò£¨µ±Ò»¸öÏ̴߳¦ÓÚÁÙ½ç¶ÎÖÐʱ£¬ÆäËûËùÓÐÏ̶߳¼²»ÄܽøÈëÁÙ½ç¶Î£©¡£
ÁÙ½ç¶ÎÖÐÐèÒª½â¾öµÄÒ»¸öÎÊÌâÊÇËÀËøÌõ¼þ¡£¿¼ÂÇÁ½¸ö¶ÀÁ¢µÄÁÙ½ç¶Î£¬¸÷×Ô±£»¤²»Í¬µÄ×ÊÔ´¡£Ã¿¸ö×Ê
Ïà¹ØÎĵµ£º
ÌáÒª£ºLinux ´ÅÅÌ·ÖÇø±í¡¢ÎļþϵͳµÄ²é¿´¡¢Í³¼ÆµÄ¹¤¾ßºÜ¶à£¬ÓÐЩ¹¤¾ßÊǶ๦Äܵ쬲»½ö½öÊDz鿴´ÅÅ̵ķÖÇø±í£¬¶øÇÒÒ²ÄܽøÐдÅÅÌ·ÖÇøµÄ²Ù×÷£»µ«ÔÚ±¾ÎÄ£¬ÎÒÃÇÖ»½²´ÅÅÌ·ÖÇøµÄ²é¿´£¬ÒÔ¼°·ÖÇøµÄʹÓÃÇé¿öµÄ²é¿´£»±¾ÎÄÖ»ÊǸøÐÂÊÖÉÏ·֮Ó㻹ØÓÚ·ÖÇø¹¤¾ßµÄ²Ù×÷£¬ÎÒ½«ÔÚÒÔºó×öרÃŽéÉÜ£»´ËÎÄÄ¿µÄ:Ö÷ÒªÊÇÏò³õѧÕß½éÉÜÒ»ÏÂÈëÃűر¸µÄÒ»µ ......
×î½ü¿´ÁËһЩLinuxÃüÁîÐеÄÎÄÕ£¬ÔÚϵͳÐÅÏ¢²é¿´·½ÃæÑ§µ½²»ÉÙÃüÁî¡£ÏëÆðÒÔǰд¹ýµÄһƪÆäʵLinuxÕâÑùÓøü¼òµ¥£¬·¢ÏÖÕâЩϵͳÐÅÏ¢²é¿´ÃüÁîÒ²¿ÉÒÔ×ܽá³öһƪССµÄ¶«Î÷À´ÁË¡£
ÁíÍâÕâÀﻹÓзdz£¶àµÄÃüÁ¿ÉÒÔ×÷Ϊ²Î¿¼¡£
ϵͳ
# uname -a &n ......
++ʵÏÖRedHat·ÇÕý³£¹Ø»úµÄ×Ô¶¯´ÅÅÌÐÞ¸´
ÏȵǼµ½·þÎñÆ÷£¬È»ºóÔÚ/etc/sysconfigÀïÔö¼ÓÒ»¸öÎļþautofsck,ÄÚÈÝÈçÏ£º
AUTOFSCK_DEF_CHECK=yes
PROMPT=yes
++¸Ä±äÎļþ»òĿ¼֮×îºóÐÞ¸Äʱ¼ä(±äΪµ±Ç°Ê±¼ä)
Ö´Ðиñʽ£ºtouch name ( name ¿ÉΪÎļþ»òĿ¼Ãû³Æ¡£)
++ÈçºÎÉèÖÃloginºó»¶ÓÐÅÏ¢
ÐÞ¸Ä/etc/motd£¬ÍùÀïÃæÐ´ÈëÎı¾ ......
Ò»¡¢tast_struct½á¹¹
ËüÊÇÒ»¸öÊý¾Ý½á¹¹£¬¿ÉÒÔ˵£¬Ëü´ú±íÁËÒ»¸ö½ø³Ì¡£ËüÓкܶà×ֶΣ¬´óÌåÓÐһϼ¸ÖÖ£º
±êʶºÅ£º½ø³Ì±êʶ¡¢Óû§±êʶ¡¢×é±êʶ¡£
״̬£º LinuxµÄ½ø³ÌµÄËÄÖÖ»ù±¾×´Ì¬
µ÷¶ÈÐÅÏ¢£ºÓÅÏȼ¶¡¢Ê±¼äƬµÈ
½ø³ÌÁ´ÐÅÏ¢£º¸¸½ø³Ì¡¢×Ó½ø³ÌµÄÖ¸Õë
ÎļþÐÅÏ¢£º´ò¿ªÎļþ¡¢ÐéÄâÎļþϵͳ
ÉÏÏÂÎÄÐÅÏ¢£º½ø³ÌµÄÔËÐл·¾³
......
ÈëÃÅÆª
¡¶LINUXȨÍþÖ¸ÄÏ¡·Êé²»´í£¬Ð´µÄºÜÈ«ÃæÒ²±È½Ï¹ã£¬Éæ¼°µÄ²»É×öΪÈëÃÅÊé¼®²»´í£¬¿ÉÒԱȽÏÈ«ÃæµÄÁ˽âlinux¡£ÁíÍâ±È½ÏÈÈÃŵÄÒ²¿ÉÒÔ¿´¿´¡¶Äñ¸çµÄ˽·¿²Ë¡·µÈÊ飬ƫ¹ÜÀíÀàµÄÊé¡£Èç¹ûÏë×öserver·½ÏòµÄ¿ÉÒÔÕÒÀ´¿´¿´¡£
Çý¶¯Æª
¡¶LINUXÉ豸Çý¶¯³ÌÐò¡·¾ÍÊÇÍøÉÏ˵µÄ“LDD”£¬¾µäÖ®×÷£¬±Ø±¸Êé¼®¡£¹ú²ú¾µä¡¶Lin ......