×ÔÐýËø×î¶àÖ»Äܱ»Ò»¸ö¿ÉÖ´ÐÐÏ̳߳ÖÓС£×ÔÐýËø²»»áÒýÆðµ÷ÓÃÕß˯Ãߣ¬Èç¹ûÒ»¸öÖ´ÐÐÏß³ÌÊÔͼ»ñµÃÒ»¸öÒѾ±»³ÖÓеÄ×ÔÐýËø£¬ÄÇôÏ߳̾ͻáÒ»Ö±½øÐÐæѻ·£¬Ò»Ö±µÈ´ýÏÂÈ¥£¬ÔÚÄÇÀï¿´ÊÇ·ñ¸Ã×ÔÐýËøµÄ±£³ÖÕßÒѾÊÍ·ÅÁËËø£¬"×ÔÐý"Ò»´Ê¾ÍÊÇÒò´Ë¶øµÃÃû¡£
ÓÉÓÚ×ÔÐýËøÊ¹ÓÃÕßÒ»°ã±£³ÖËøÊ±¼ä·Ç³£¶Ì£¬Òò´ËÑ¡Ôñ×ÔÐý¶ø²»ÊÇ˯ÃßÊǷdz£±ØÒªµÄ£¬×ÔÐýËøµÄЧÂÊÔ¶¸ßÓÚ»¥³âËø¡£
ÐźÅÁ¿ºÍ¶ÁдÐźÅÁ¿ÊʺÏÓÚ±£³Öʱ¼ä½Ï³¤µÄÇé¿ö£¬ËüÃǻᵼÖµ÷ÓÃÕß˯Ãߣ¬Òò´ËÖ»ÄÜÔÚ½ø³ÌÉÏÏÂÎÄʹÓã¨_trylockµÄ±äÖÖÄܹ»ÔÚÖжÏÉÏÏÂÎÄʹÓã©£»¶ø×ÔÐýËøÊʺÏÓÚ±£³Öʱ¼ä·Ç³£¶ÌµÄÇé¿ö£¬ÒòΪһ¸ö±»ÕùÓõÄ×ÔÐýËøÊ¹µÃÇëÇóËüµÄÏß³ÌÔڵȴýÖØÐ¿ÉÓÃʱ×ÔÐý£¬ÌرðÀË·Ñ´¦Àíʱ¼ä£¬ÕâÊÇ×ÔÐýËøµÄÒªº¦Ö®´¦£¬ËùÒÔ×ÔÐýËø²»Ó¦¸Ã±»³¤Ê±¼ä³ÖÓС£ÔÚʵ¼ÊÓ¦ÓÃÖÐ×ÔÐýËø´úÂëÖ»Óм¸ÐУ¬¶ø³ÖÓÐ×ÔÐýËøµÄʱ¼äÒ²Ò»°ã²»»á³¬¹ýÁ½´ÎÉÏÏ·½Çл»£¬ÒòÏß³ÌÒ»µ©Òª½øÐÐÇл»£¬¾ÍÖÁÉÙ»¨·ÑÇгöÇÐÈëÁ½´Î£¬×ÔÐýËøµÄÕ¼ÓÃʱ¼äÈç¹ûÔ¶Ô¶³¤ÓÚÁ½´ÎÉÏÏÂÎÄÇл»£¬ÎÒÃǾͿÉÒÔÈÃÏß³Ì˯Ãߣ¬Õâ¾ÍʧȥÁËÉè¼Æ×ÔÐýËøµÄÒâÒå¡£
Èç¹û±»±£»¤µÄ¹²Ïí×ÊÔ´Ö»ÔÚ½ø³ÌÉÏÏÂÎÄ·ÃÎÊ£¬Ê¹ÓÃÐźÅÁ¿±£»¤¸Ã¹²Ïí×ÊÔ´·Ç³£ºÏÊÊ£¬Èç¹û¶Ô¹²Ïí×ÊÔ´µÄ·ÃÎÊʱ¼ä·Ç³£¶Ì£¬×ÔÐýËøÒ²¿ÉÒÔ¡£µ«ÊÇÈç¹û±»±£»¤µÄ¹²Ïí×ÊÔ´ÐèÒªÔÚÖжÏÉÏÏÂÎÄ·ÃÎÊ£¨°üÀ¨µ×°ë²¿¼´Öжϴ¦Àí¾ä±úºÍ¶¥°ë²¿¼´ÈíÖжϣ©£¬¾Í±ØÐëʹÓÃ×ÔÐýËø¡£
×ÔÐýËø±£³ÖÆÚ¼äÊÇÇÀռʧЧµÄ£¬¶øÐźÅÁ¿ºÍ¶ÁдÐźÅÁ¿±£³ÖÆÚ¼äÊÇ¿ÉÒÔ±»ÇÀÕ¼µÄ¡£×ÔÐýËøÖ»ÓÐÔÚÄں˿ÉÇÀÕ¼»òSMPµÄÇé¿öϲÅÕæÕýÐèÒª£¬ÔÚµ¥CPUÇÒ²»¿ÉÇÀÕ¼µÄÄÚºËÏ£¬×ÔÐýËøµÄËùÓвÙ×÷¶¼ÊǿղÙ×÷¡£
Ò»¸öÖ´Ðе¥ÔªÒªÏë·ÃÎʱ»×ÔÐýËø±£»¤µÄ¹²Ïí×ÊÔ´£¬±ØÐëÏȵõ½Ëø£¬ÔÚ·ÃÎÊÍê¹²Ïí×ÊÔ´ºó£¬±ØÐëÊÍ·ÅËø¡£Èç¹ûÔÚ»ñÈ¡×ÔÐýËøÊ±£¬Ã»ÓÐÈκÎÖ´Ðе¥Ôª±£³Ö¸ÃËø£¬ÄÇô½«Á¢¼´µÃµ½Ëø£»Èç¹ûÔÚ»ñÈ¡×ÔÐýËøÊ±ËøÒѾÓб£³ÖÕߣ¬ÄÇô»ñÈ¡Ëø²Ù×÷½«×ÔÐýÔÚÄÇÀֱµ½¸Ã×ÔÐýËøµÄ±£³ÖÕßÊÍ·ÅÁËËø¡£
ÎÞÂÛÊÇ»¥³âËø£¬»¹ÊÇ×ÔÐýËø£¬ÔÚÈκÎʱ¿Ì£¬×î¶àÖ»ÄÜÓÐÒ»¸ö±£³ÖÕߣ¬Ò²¾Í˵£¬ÔÚÈκÎʱ¿Ì×î¶àÖ»ÄÜÓÐÒ»¸öÖ´Ðе¥Ôª»ñµÃËø¡£×ÔÐýËøµÄʵÏÖºÍÌåϵ½á¹¹ÃÜÇÐÏà¹Ø£¬´úÂëÒ»°ãͨ¹ý»ã±àʵÏÖ£¬¶¨ÒåÔÚÎļþ,ʵ¼ÊÓõ½µÄ½Ó¿Ú¶¨ÒåÔÚÎļþ¼Ð ÖÐ, ×ÔÐýËøµÄAPIÓУº
|
¸ÃºêÓÃÓÚ³õʼ»¯×ÔÐýËøx¡£×ÔÐýËøÔÚÕæÕýʹÓÃǰ±ØÐëÏȳõʼ»¯¡£¸ÃºêÓÃÓÚ¶¯Ì¬³õʼ»¯Ö¸¶¨µÄ¡£
|
¸ÃºêÉùÃ÷Ò»¸ö×ÔÐýËøx²¢³õʼ»¯Ëü¡£¸ÃºêÔÚ2.6.11ÖеÚÒ»´Î±»¶¨Ò壬ÔÚÏÈǰµÄÄÚºËÖв¢Ã»Óиúꡣ
|
¸ÃºêÓÃÓÚ¾²Ì¬³õʼ»¯Ò»¸ö×ÔÐýËø¡£
|
¸ÃºêÓÃÓÚÅжÏ×ÔÐýËøxÊÇ·ñÒѾ±»Ä³Ö´Ðе¥Ôª±£³Ö£¨¼´±»Ëø£©£¬Èç¹ûÊÇ£¬·µ»ØÕ棬·ñÔò·µ»Ø¼Ù¡£
|
¸ÃºêÓÃÓڵȴý×ÔÐýËøx±äµÃûÓб»ÈκÎÖ´Ðе¥Ôª±£³Ö£¬Èç¹ûûÓÐÈκÎÖ´Ðе¥Ôª±£³Ö¸Ã×ÔÐýËø£¬¸ÃºêÁ¢¼´·µ»Ø£¬·ñÔò½«Ñ»·ÔÚÄÇÀֱµ½¸Ã×ÔÐýËø±»±£³ÖÕßÊÍ·Å¡£
|
¸Ãºê¾¡Á¦»ñµÃ×ÔÐýËølock£¬Èç¹ûÄÜÁ¢¼´»ñµÃËø£¬Ëü»ñµÃËø²¢·µ»ØÕ棬·ñÔò²»ÄÜÁ¢¼´»ñµÃËø£¬Á¢¼´·µ»Ø¼Ù¡£Ëü²»»á×ÔÐýµÈ´ýlock±»ÊÍ·Å¡£
|
¸ÃºêÓÃÓÚ»ñµÃ×ÔÐýËølock£¬Èç¹ûÄܹ»Á¢¼´»ñµÃËø£¬Ëü¾ÍÂíÉÏ·µ»Ø£¬·ñÔò£¬Ëü½«×ÔÐýÔÚÄÇÀֱµ½¸Ã×ÔÐýËøµÄ±£³ÖÕßÊÍ·Å£¬Õâʱ£¬Ëü»ñµÃËø²¢·µ»Ø¡£×ÜÖ®£¬Ö»ÓÐËü»ñµÃËø²Å·µ»Ø¡£
|
¸Ãºê»ñµÃ×ÔÐýËøµÄͬʱ°Ñ±êÖ¾¼Ä´æÆ÷µÄÖµ±£´æµ½±äÁ¿flagsÖв¢Ê§Ð§±¾µØÖжϡ£
|
¸ÃºêÀàËÆÓÚspin_lock_irqsave£¬Ö»ÊǸú겻±£´æ±êÖ¾¼Ä´æÆ÷µÄÖµ¡£½ûÖ¹±¾µØÖжϲ¢»ñȡָ¶¨µÄËø
|
¸ÃºêÔڵõ½×ÔÐýËøµÄͬʱʧЧ±¾µØÈíÖжϡ£
|
¸ÃºêÊÍ·Å×ÔÐýËølock£¬ËüÓëspin_trylock»òspin_lockÅä¶ÔʹÓá£Èç¹ûspin_trylock·µ»Ø¼Ù£¬±íÃ÷ûÓлñµÃ×ÔÐýËø£¬Òò´Ë²»±ØÊ¹ÓÃspin_unlockÊÍ·Å¡£
|
¸ÃºêÊÍ·Å×ÔÐýËølockµÄͬʱ£¬Ò²»Ö¸´±êÖ¾¼Ä´æÆ÷µÄֵΪ±äÁ¿flags±£´æµÄÖµ¡£ËüÓëspin_lock_irqsaveÅä¶ÔʹÓá£
|
¸ÃºêÊÍ·Å×ÔÐýËølockµÄͬʱ£¬²¢¼¤»î±¾µØÖжϡ£ËüÓëspin_lock_irqÅä¶ÔÓ¦Óá£
|
¸ÃºêÊÍ·Å×ÔÐýËølockµÄͬʱ£¬Ò²Ê¹Äܱ¾µØµÄÈíÖжϡ£ËüÓëspin_lock_bhÅä¶ÔʹÓá£
|
¸ÃºêÈç¹û»ñµÃ×ÔÐýËølock£¬ËüÒ²½«±£´æ±êÖ¾¼Ä´æÆ÷µÄÖµµ½±äÁ¿flagsÖУ¬²¢ÇÒʧЧ±¾µØÖжϣ¬Èç¹ûûÓлñµÃËø£¬ËüʲôҲ²»×ö¡£
Òò´ËÈç¹ûÄܹ»Á¢¼´»ñµÃËø£¬ËüµÈͬÓÚspin_lock_irqsave£¬Èç¹û²»ÄÜ»ñµÃËø£¬ËüµÈͬÓÚspin_trylock¡£Èç¹û¸Ãºê»ñµÃ×ÔÐýËølock£¬ÄÇÐèҪʹÓÃspin_unlock_irqrestoreÀ´ÊÍ·Å¡£
|
¸ÃºêÀàËÆÓÚspin_trylock_irqsave£¬Ö»ÊǸú겻±£´æ±êÖ¾¼Ä´æÆ÷¡£Èç¹û¸Ãºê»ñµÃ×ÔÐýËølock£¬ÐèҪʹÓÃspin_unlock_irqÀ´ÊÍ·Å¡£
|
¸ÃºêÈç¹û»ñµÃÁË×ÔÐýËø£¬ËüÒ²½«Ê§Ð§±¾µØÈíÖжϡ£Èç¹ûµÃ²»µ½Ëø£¬ËüʲôҲ²»×ö¡£Òò´Ë£¬Èç¹ûµÃµ½ÁËËø£¬ËüµÈͬÓÚspin_lock_bh£¬Èç¹ûµÃ²»µ½Ëø£¬ËüµÈͬÓÚspin_trylock¡£Èç¹û¸ÃºêµÃµ½ÁË×ÔÐýËø£¬ÐèҪʹÓÃspin_unlock_bhÀ´ÊÍ·Å¡£
|
¸ÃºêÓÃÓÚÅжÏ×ÔÐýËølockÊÇ·ñÄܹ»±»Ëø£¬Ëüʵ¼ÊÊÇspin_is_lockedÈ¡·´¡£Èç¹ûlockûÓб»Ëø£¬Ëü·µ»ØÕ棬·ñÔò£¬·µ»Ø¼Ù¡£¸ÃºêÔÚ2.6.11ÖеÚÒ»´Î±»¶¨Ò壬ÔÚÏÈǰµÄÄÚºËÖв¢Ã»Óиúꡣ
×ÔÐýËøµÄ»ù±¾Ê¹ÓÃÈçÏ£º
|
ÒòΪ×ÔÐýËøÔÚͬһʱ¿ÌÖÁ¶à±»Ò»¸öÖ´ÐÐÏ̳߳ÖÓУ¬ËùÒÔÒ»¸öʱ¿ÌÖ»ÄÜÓÐÒ»¸öÏß³ÌλÓÚÁÙ½çÇø£¬Õâ¾ÍΪ¶à´¦ÀíÆ÷ÌṩÁË·ÀÖ¹²¢·¢·ÃÎÊËùÐèµÄ±£»¤»úÖÆ£¬µ«ÊÇÔÚµ¥´¦ÀíÆ÷ÉÏ£¬±àÒëµÄʱºò²»»á¼ÓÈë×ÔÐýËø¡£Ëü½ö½ö±»µ±×÷Ò»¸öÉèÖÃÄÚºËÇÀÕ¼»úÖÆÊÇ·ñ±»ÆôÓõĿª¹Ø¡£×¢Ò⣬LinuxÄÚºËʵÏÖµÄ×ÔÐýËøÊDz»¿ÉµÝ¹éµÄ£¬ÕâÒ»µã²»Í¬ÓÚ×ÔÐýËøÔÚÆäËû²Ù×÷ϵͳÖеÄʵÏÖ£¬Èç¹ûÄãÏëµÃµ½Ò»¸öÄãÕý³ÖÓеÄËø£¬Äã±ØÐë×ÔÐý£¬µÈ´ýÄã×Ô¼ºÊÍ·ÅÕâ¸öËø£¬µ«ÊÇÄã´¦ÓÚ×ÔÐýæµÈ´ýÖУ¬ËùÒÔÓÀԶûÓлú»áÊÍ·ÅËø£¬ÓÚÊÇÄã¾Í±»×Ô¼ºËøËÀÁË£¬Ò»¶¨Òª×¢Ò⣡
×ÔÐýËø¿ÉÒÔÓÃÔÚÖжϴ¦Àí³ÌÐòÖУ¬µ«ÊÇÔÚʹÓÃʱһ¶¨ÒªÔÚ»ñÈ¡ËøÖ®Ç°£¬Ê×ÏȽûÖ¹±¾µØÖжϣ¨µ±Ç°´¦ÀíÆ÷ÉϵÄÖжϣ©£¬·ñÔòÖжϴ¦Àí³ÌÐò¾Í¿ÉÄÜ´ò¶ÏÕý³ÖÓÐËøµÄÄں˴úÂ룬ÓпÉÄÜ»áÊÔͼ֧ÕùÓÃÕâ¸öÒѾ±»³ÖÓеÄ×ÔÐýËø¡£ÕâÑùÒ»À´£¬Öжϴ¦Àí³ÌÐò¾Í»á×ÔÐý£¬µÈ´ý¸ÃËøÖØÐ¿ÉÓ㬵«ÊÇËøµÄ³ÖÓÐÕßÔÚÕâ¸öÖжϴ¦Àí³ÌÐòÖ´ÐÐÍê±Ï֮ǰ²»¿ÉÄÜÔËÐУ¬Õâ¾Í»áÔì³ÉË«ÖØÇëÇóËÀËø¡£
×ÔÐýËøÓëϰ벿£ºÓÉÓÚϰ벿£¨ÖжϳÌÐòϰ벿£©¿ÉÒÔÇÀÕ¼½ø³ÌÉÏÏÂÎÄÖеĴúÂ룬ËùÒÔµ±Ï°벿ºÍ½ø³ÌÉÏÏÂÎĹ²ÏíÊý¾Ýʱ£¬±ØÐë¶Ô½ø³ÌÉÏÏÂÎÄÖеĹ²ÏíÊý¾Ý½øÐб£»¤£¬ËùÒÔÐèÒª¼ÓËøµÄͬʱ»¹Òª½ûֹϰ벿ִÐС£Í¬Ñù£¬ÓÉÓÚÖжϴ¦Àí³ÌÐò¿ÉÒÔÇÀռϰ벿£¬ËùÒÔÈç¹ûÖжϴ¦Àí³ÌÐòºÍϰ벿¹²ÏíÊý¾Ý£¬ÄÇô¾Í±ØÐëÔÚ»ñȡǡµ±µÄËøµÄͬʱ»¹Òª½ûÖ¹Öжϡ£¶ÔÓÚÈíÖжϣ¬ÎÞÂÛÊÇ·ñͬÖÖÀàÐÍ£¬Èç¹ûÊý¾Ý±»ÈíÖжϹ²Ïí£¬ÄÇôËü±ØÐëµÃµ½ËøµÄ±£»¤£¬ÒòΪͬÖÖÀàÐ͵ÄÁ½¸öÈíÖжÏÒ²¿ÉÒÔͬ½øÔËÐÐÔÚÒ»¸öϵͳµÄ¶à¸ö´¦ÀíÆ÷ÉÏ¡£µ«ÊÇ£¬Í¬Ò»¸ö´¦ÀíÆ÷ÉϵÄÒ»¸öÈíÖжϾø²»»áÇÀÕ¼ÁíÒ»¸öÈíÖжϣ¬Òò´Ë£¬¸ù±¾²»ÐèÒª½ûֹϰ벿¡£
| ×ÔÓÉ¹ã¸æÇø |
| ¡¡ |