ºìÁªLinuxÃÅ»§
Linux°ïÖú

ÄÚºËÖеĵ÷¶ÈÓëͬ²½

·¢²¼Ê±¼ä:2006-05-15 11:26:23À´Ô´:ºìÁª×÷Õß:ÊéͯÀÏʦ
ÕªÒª

±¾Õ½«Îª´ó¼Ò½éÉÜÄÚºËÖдæÔڵĸ÷ÖÖÈÎÎñµ÷¶È»úÀíÒÔ¼°ËüÃÇÖ®¼äµÄÂß¼­¹Øϵ£¨ÕâÀォ¸²¸Ç½ø³Ìµ÷¶È¡¢ÍƺóÖ´ÐС¢ÖжϵȸÅÄ£¬ÔÚ´Ë»ù´¡ÉÏÏò´ó¼Ò½âÊÍÄÚºËÖÐÐèҪͬ²½±£»¤µÄ¸ù±¾Ô­ÒòºÍ±£»¤·½·¨¡£×îºóÌṩһ¸öÄں˹²ÏíÁ´±íͬ²½·ÃÎʵÄÀý×Ó£¬°ïÖú´ó¼ÒÀí½âÄں˱à³ÌÖеÄͬ²½ÎÊÌâ¡£

ÄÚºËÈÎÎñµ÷¶ÈÓëͬ²½¹ØϵÒýÑÔ

¶ÔÓÚ´ÓÊÂÓ¦ÓóÌÐò¿ª·¢µÄÅóÓÑÀ´Ëµ£¬Óû§¿Õ¼äµÄÈÎÎñµ÷¶ÈÓëͬ²½Ö®¼äµÄ¹ØϵÏà¶Ô¼òµ¥£¬ÎÞÐè¹ý¶à¿¼ÂÇÐèҪͬ²½µÄÔ­Òò¡£ÕâÒ»ÊÇÒòΪÔÚÓû§¿Õ¼äÖи÷¸ö½ø³Ì¶¼ÓµÓжÀÁ¢µÄÔËÐпռ䣬½ø³ÌÄÚ²¿µÄÊý¾Ý¶ÔÍâ²»¿É¼û£¬ËùÒÔ¸÷¸ö½ø³Ì¼´Ê¹²¢·¢Ö´ÐÐÒ²²»»á²úÉú¶ÔÊý¾Ý·ÃÎʵľºÕù¡£µÚ¶þÊÇÒòΪÓû§¿Õ¼äÓëÄں˿ռä¶ÀÁ¢£¬ËùÒÔÓû§½ø³Ì²»»áÓëÄÚºËÈÎÎñ½»´íÖ´ÐУ¬Òò´ËÓû§½ø³Ì²»´æÔÚÓëÄÚºËÈÎÎñ²¢·¢µÄ¿ÉÄÜ¡£ÒÔÉÏÁ½¸öÔ­ÒòʹµÃÓû§Í¬²½½ö½öÐèÒªÔÚ½ø³Ì¼äͨѶºÍ¶àÏ̱߳à³ÌʱÐèÒª¿¼ÂÇ¡£

µ«ÊÇÔÚÄں˿ռäÖÐÇé¿öÒª¸´Ôӵö࣬ÐèÒª¿¼ÂÇͬ²½µÄÔ­Òò´ó´óÔö¼ÓÁË¡£ÕâÊÇÒòΪÄں˿ռäÖеĹ²ÏíÊý¾Ý¶ÔÄÚºËÖеÄËùÓÐÈÎÎñ¿É¼û£¬ËùÒÔµ±ÔÚÄÚºËÖзÃÎÊÊý¾Ýʱ£¬¾Í±ØÐ뿼ÂÇÊÇ·ñ»áÓÐÆäËûÄÚºËÈÎÎñ²¢·¢·ÃÎʵĿÉÄÜ¡¢ÊÇ·ñ»á²úÉú¾ºÕùÌõ¼þ¡¢ÊÇ·ñÐèÒª¶ÔÊý¾Ýͬ²½¡£¶øÄں˲¢·¢µÄ¡°×ï¿ý»öÊס±±ãÊÇÄÚºËÖи´ÔÓ¶à±äµÄÈÎÎñµ÷¶È----ÕâÀïµÄÈÎÎñµ÷¶È°üº¬ËùÓпÉÄÜÒýÆðÄÚºËÈÎÎñ¸ü»»µÄÇé¿ö¡£

²¢·¢£¬¾ºÕùºÍͬ²½µÄ¸ÅÄÎÒÃǼٶ¨´ó¼Ò¶¼ÓÐËùÁ˽⣬±¾ÎIJ»ÔÙÖØÉê¡£ÏÂÃæÒ»¶ÎÃèÊöÁËÉÏÊö¼¸¸ö¸ÅÄîÖ®¼äµÄ´óÖ¹Øϵ£¬ÕâÖÖ¹ØϵÔÚÄÚºËÖÐͬÑùÊÊÓá£

¶ÔÓÚ¶àÏ̳߳ÌÐòµÄ¿ª·¢ÕßÀ´Ëµ£¬ÍùÍù»áÀûÓöàÏ̷߳ÃÎʹ²ÏíÊý¾Ý£¬±ÜÃâ·±ËöµÄ½ø³Ì¼äͨѶ¡£µ«ÊǶàÏ̶߳Թ²ÏíÊý¾ÝµÄ²¢·¢·ÃÎÊÓпÉÄܲúÉú¾ºÕù£¬Ê¹µÃÊý¾Ý´¦ÓÚ²»Ò»ÖÂ״̬£¬ËùÒÔÐèҪһЩͬ²½·½·¨À´±£»¤¹²ÏíÊý¾Ý¡£¶àÏ̵߳IJ¢·¢Ö´ÐÐÊÇÓÉÓÚÏ̱߳»ÇÀռʽµÄµ÷¶È----Ò»¸öÏß³ÌÔÚ¶Ô¹²ÏíÊý¾Ý·ÃÎÊÆڼ䣨»¹Î´Íê³É£©±»µ÷¶È³ÌÐòÖжϣ¬½«ÁíÒ»¸öÏß³ÌͶÈëÔËÐÐ----Èç¹ûб»µ÷¶ÈµÄÏß³ÌÒ²Òª¶ÔÕâ¸ö¹²ÏíÊý¾Ý½øÐзÃÎÊ£¬¾Í½«²úÉú¾ºÕù¡£ÎªÁ˱ÜÃ⾺Õù²úÉú£¬ÐèҪʹÏ̴߳®ÐеطÃÎʹ²ÏíÊý¾Ý £¬Ò²¾ÍÊÇ˵·ÃÎÊÐèҪͬ²½----ÔÚÒ»·½¶ÔÊý¾Ý·ÃÎʽáÊøºó£¬ÁíÒ»·½²ÅÄܶÔͬһÊý¾Ý½øÐзÃÎÊ¡£

ÄÚºËÈÎÎñ

ÕâÀïËù¶¨ÒåµÄÄÚºËÈÎÎñÊÇÖ¸ÄÚºËÖÐÖ´ÐеÄÒ»Çл¶ÔÏó£¬Ã¿¸öÄÚºËÈÎÎñ¶¼ÓµÓÐÒ»¸ö¶ÀÁ¢µÄ³ÌÐò¼ÆÊýÆ÷¡¢Õ»ºÍÒ»×é¼Ä´æÆ÷¡£¸üÖØÒªµÄÊÇ,ËüÃǶ¼ÊôÓÚÄں˵÷¶È£¨ÕâÀïµÄµ÷¶ÈÊǹãÒåÉϵģ¬²»ÒªÓë½ø³Ìµ÷¶È»ìÏý£©¶ÔÏó£¬Ò²¾ÍÊÇ˵ËüÃÇÊÇ¿ÉÒÔÔÚÄÚºËÖн»´íÖ´Ðеġ£

ÄÚºËÈÎÎñ·ÖÀà

ÄÚºËÈÎÎñ°üº¬¡°ÄÚºËÏ̡߳±¡¢¡°ÏµÍ³µ÷Óᱡ¢¡°Ó²¼þÖжϡ±¡¢¡°°ëµ×ÈÎÎñ¡±µÈ¼¸Àà¡£ÏÂÀ´ÎÒÃǾͼòÒªµØÌÖÂÛÉÏÊö¼¸ÀàÄÚºËÈÎÎñµÄÌص㡣

ϵͳµ÷ÓÃ

ϵͳµ÷ÓÃÊÇÓû§³ÌÐòͨ¹ýÃÅ»úÖÆÀ´½øÈëÄÚºËÖ´ÐеÄÄÚºËÀý³Ì£¬ËüÔËÐÐÔÚÄÚºË̬£¬´¦ÓÚ½ø³ÌÉÏÏÂÎÄÖУ¨½ø³ÌÉÏÏÂÎÄ°üÀ¨½ø³ÌµÄ¶ÑÕ»µÈµÈ»·¾³£©£¬¿ÉÒÔÈÏΪÊÇ´ú±íÓû§½ø³ÌµÄÄÚºËÈÎÎñ£¬Òò´Ë¾ßÓÐÓû§Ì¬ÈÎÎñµÄÌØÐÔ£¬±ÈÈç¿ÉÒÔÖ´Ðнø³Ìµ÷¶È³ÌÐò£¨schedule()£©¡¢¿ÉÒÔ˯Ãß¡¢¿ÉÒÔ·ÃÎʵ±Ç°½ø³ÌÊý¾Ý£¨Í¨¹ýcurrent£©¡£µ«ËüÊôÓÚÄÚºËÈÎÎñ£¬ËùÒÔÔÚÖ´Ðйý³ÌÖв»Äܱ»ÇÀÕ¼£¨2.6ÄÚºËÇ°£©£¬Ö»ÄÜ×Ô¼º·ÅÆúcpu£¨Ë¯Ãߣ©Ê±£¬ÏµÍ³²ÅÄÜ¿ÉÄÜÖØе÷¶È±ðµÄÈÎÎñ¡££¨ÓйØϵͳµ÷Óò¿·ÖÇë¿´¡¶ÏµÍ³µ÷Óá·Ò»Õ£©

Ó²ÖжÏÈÎÎñ

Ó²ÖжÏÊÇÖ¸ÄÇЩÓÉ´¦ÀíÆ÷ÒÔÍâµÄÍâÉè²úÉúµÄÖжϣ¬ÕâЩÖжϱ»´¦ÀíÆ÷½ÓÊպ󽻸øÄÚºËÖеÄÖжϴ¦Àí³ÌÐò´¦Àí¡£Òª×¢ÒâµÄÊÇ£ºµÚÒ», Ó²ÖжÏÊÇÒì²½²úÉúµÄ£¬ÖжϷ¢ÉúºóÁ¢¿ÌµÃµ½´¦Àí£¬Ò²¾ÍÊÇ˵ÖжϲÙ×÷¿ÉÒÔÇÀÕ¼ÄÚºËÖÐÕýÔÚÔËÐеĴúÂë¡£Õâµã·Ç³£ÖØÒª¡£µÚ¶þ£¬ÖжϲÙ×÷ÊÇ·¢ÉúÔÚÖжÏÉÏÏÂÎÄÖеģ¨ËùνÖжÏÉÏÏÂÎÄÖ¸µÄÊǺÍÈκνø³ÌÎ޹صÄÉÏÏÂÎÄ»·¾³£©¡£ÖжÏÉÏÏÂÎÄÖв»¿ÉÒÔʹÓýø³ÌÏà¹ØµÄ×ÊÔ´£¬Ò²²»Äܹ»½øÐе÷¶È»ò˯Ãß¡£ÒòΪµ÷¶È»áÒýÆð˯Ãߣ¬µ«Ë¯Ãß±ØÐëÕë¶Ô½ø³Ì¶øÑÔ£¨Ë¯ÃßÆäʵÊDZê¼Ç½ø³Ì״̬£¬È»ºó°Ñµ±Ç°½ø³ÌÍÆÈë˯ÃßÁжӣ©£¬¶øÒì²½·¢ÉúµÄÖжϴ¦Àí³ÌÐò¸ù±¾²»ÖªµÀµ±Ç°½ø³ÌµÄÈκÎÐÅÏ¢£¬Ò²²»¹ØÐĵ±Ç°Äĸö½ø³ÌÔÚÔËÐУ¬ËüÍêÈ«ÊǸö¹ý¿Í¡££¨ÓйØÓ²¼þÖжϲ¿·ÖÇë¿´¡¶Ó²¼þÖжϡ·Ò»Õ£©

Ï°ëµ×ÈÎÎñ

°ëµ×µÄÀ´ÀúÍêÈ«³ö×ÔÉÏÃæÌáµ½µÄÓ²ÖжϵÄÓ°Ïì¡£Ó²¼þÖжÏÈÎÎñ£¨´¦Àí³ÌÐò£©ÊÇÒ»¸ö¿ìËÙ¡¢Òì²½¡¢¼òµ¥µØ¶ÔÓ²¼þ×ö³öѸËÙÏìÓ¦²¢ÔÚ×î¶Ìʱ¼äÄÚÍê³É±ØÒª²Ù×÷µÄÖжϴ¦Àí³ÌÐò¡£Ó²Öжϴ¦Àí³ÌÐò¿ÉÒÔÇÀÕ¼ÄÚºËÈÎÎñ²¢ÇÒÖ´ÐÐʱ»¹»áÆÁ±Îͬ¼¶ÖжϻòÆäËüÖжϣ¬Òò´ËÖжϴ¦Àí±ØÐëÒª¿ì¡¢²»ÄÜ×èÈû¡£ÕâÑùÒ»À´¶ÔÓÚһЩҪÇó´¦Àí¹ý³Ì±È½Ï¸´ÔÓµÄÈÎÎñ¾Í²»ºÏÊÊÔÚÖжÏÈÎÎñÖÐÒ»´Î´¦Àí¡£±ÈÈ磬Íø¿¨½ÓÊÕÊý¾ÝµÄ¹ý³ÌÖÐ,Ê×ÏÈÍø¿¨·¢ËÍÖжÏÐźŸæËßCPUÀ´È¡Êý¾Ý£¬È»ºóϵͳ´ÓÍø¿¨ÖжÁÈ¡Êý¾Ý´æÈëϵͳ»º³åÇøÖУ¬ÔÙÏÂÀ´½âÎöÊý¾ÝÈ»ºóËÍÈëÓ¦Óò㡣ÕâЩÈç¹û¶¼ÈÃÖжϴ¦Àí³ÌÐòÀ´´¦ÀíÏÔÈ»¹ý³ÌÌ«³¤£¬Ôì³ÉÐÂÀ´µÄÖж϶ªÊ§¡£Òò´ËLinux¿ª·¢ÈËÔ±½«ÕâÖÖÈÎÎñ·Ö¸îΪÁ½¸ö²¿·Ö£¬Ò»¸ö½ÐÉϵף¬¼´Öжϴ¦Àí³ÌÐò£¬¶Ìƽ¿ìµØ´¦ÀíÓëÓ²¼þÏà¹ØµÄ²Ù×÷£¨Èç´ÓÍø¿¨¶ÁÊý¾Ýµ½ÏµÍ³»º´æ£©£»¶ø°Ñ¶Ôʱ¼äÒªÇóÏà¶Ô¿íËɵÄÈÎÎñ£¨Èç½âÎöÊý¾ÝµÄ¹¤×÷£©·ÅÔÚÁíÒ»¸ö²¿·ÖÖ´ÐУ¬Õâ¸ö²¿·Ö¾ÍÊÇÎÒÃÇÕâÀïÒª½²µÄÏ°ëµ×¡£

Ï°ëµ×ÊÇÒ»ÖÖÍƺóÖ´ÐÐÈÎÎñ£¬Ëü½«Ä³Ð©²»ÄÇô½ôÆȵÄÈÎÎñÍƳٵ½ÏµÍ³¸ü·½±ãµÄʱ¿ÌÔËÐС£ÄÚºËÖÐʵÏÖÏ°ëµ×µÄÊֶξ­¹ý²»¶ÏÑÝ»¯£¬Ä¿Ç°ÒѾ­´Ó×îԭʼµÄBH(bottom thalf)ÑÝÉú³öBH¡¢ÈÎÎñ¶ÓÁУ¨Task queues£©¡¢ÈíÖжϣ¨Softirq£©¡¢Tasklet¡¢¹¤×÷¶ÓÁУ¨Work queues£©£¨2.6ÄÚºËÖÐгöÏֵģ©¡£ÏÂÃæÎÒÃǾͽéÉÜÒ»ÏÂËûÃǸ÷×ÔµÄÌص㡣



ÈíÖжϲÙ×÷

ÈíÖжϣ¨softirq£©²»ÏóÓ²ÖжÏÄÇÑùÊÇÓÉÓ²¼þÖжÏÐźŴ¥·¢Ö´Ðеģ¬ËùÒÔÒ²²»Í¬ÓÚÓ²¼þÖжÏÄÇÑùʱËæʱ¶¼Äܹ»±»Ö´ÐУ¬ÁýͳÀ´½²,ÈíÖжϻáÔÚÄں˴¦ÀíÈÎÎñÍê±Ïºó·µ»ØÓû§¼¶³ÌÐòÇ°µÃµ½´¦Àí»ú»á¡£¾ßÌåµÄ½²,ÓÐÈý¸öʱ¿ÌËü½«±»Ö´ÐÐ(do_softirq())£ºÓ²¼þÖжϲÙ×÷Íê³Éºó£»ÏµÍ³µ÷Ó÷µ»Øʱ£»Äں˵÷¶È³ÌÐòÖУ»£¨ÁíÍâ,ÄÚºËÏß³ÌksoftirqdÖÜÆÚÖ´ÐÐÈíÖжϣ©¡£´ÓÖпÉÒÔ¿´³öÈíÖжϻá½ôËæÓ²Öжϴ¦Àí(ºÃÏóºü¼Ù»¢Íþ),ËùÒÔÇÀÕ¼ÄÚºËÈÎÎñ----ÖÁÉÙÔÚʱÖÓÖжϺó×ÜÓлú»áÔËÐÐÒ»´Î¡£»¹Òª¼ÇµÃÈíÖжϿÉÒÔÔÚ²»Í¬´¦Æ÷Éϲ¢·¢Ö´ÐС£

ÔÚÓжԳƶദÀíÆ÷µÄ»úÆ÷ÉÏ£¬ÄÇôÁ½¸öÈÎÎñ¾Í¿ÉÒÔÕæÕýµÄÔÚÁÙ½çÇøÖÐͬʱִÐÐÁË£¬ÕâÖÖÀàÐͱ»³ÆΪÕæ²¢·¢¡£Ïà¶Ô¶øÑÔÔÚ,µ¥´¦ÀíÆ÷Éϲ¢·¢Æäʵ²¢²»ÊÇÕæµÄͬʱ·¢Éú£¬¶øÊÇÏ໥½»´íÖ´ÐУ¬ÊÇα²¢·¢¡£µ«ËüÃǶ¼Í¬Ñù»áÔì³É¾ºÕùÌõ¼þ£¬¶øÇÒÒ²ÐèҪͬÑùµÄ±£»¤¡£

ÈíÖжÏÊǺܵײãµÄ»úÖÆ£¬Ò»°ã³ýÁËÔÚÍøÂç×ÓϵͳºÍSCSI×ÓϵͳÕâÑù¶ÔÐÔÄÜÒªÇóºÜ¸ßÒÔ¼°ÒªÇó²¢·¢´¦ÀíµÄʱºò£¬²Å»áÑ¡ÔñʹÓÃÈíÖжϡ£ÈíÖжÏËäÈ»Áé»îÐԸߺÍЧÂʸߣ¬µ«ÊÇÄã×Ô¼º±ØÐë´¦Àí¸´ÔÓµÄͬ²½´¦Àí£¨ÒòΪËü¿ÉÔڶദÀíÆ÷Éϲ¢·¢£©£¬ËùÒÔͨ³£¶¼²»Ö±½ÓʹÓ㬶øÊÇ×÷Ϊ֧³ÖTaskletºÍBHµÄ¸ù±¾¡£

ÐèҪ˵Ã÷µÄÊÇ,ÈíÖжϵÄÖ´ÐÐÒ²´¦ÓÚÖжÏÉÏÏÂÎÄÖУ¬ËùÒÔÖжÏÉÏÏÂÎĶÔËüµÄÏÞÖÆÊǺÍÓ²ÖжÏÒ»ÑùµÄ¡£

Tasklet

TaskletºÍbottom half¶¼Êǽ¨Á¢ÔÚÈíÖжÏÖ®ÉϵÄÁ½ÖÖÑÓ³Ù»úÖÆ£¬Æä¾ßÌ岻֮ͬ´¦ÔÚÓÚÈíÖжÏÊǾ²Ì¬·ÖÅäµÄ£¬¶øÇÒͬÀàÈíÖжϿÉÒÔ²¢·¢µØÔÚ¼¸¸öCPUÉÏÔËÐУ»Tasklet¿ÉÒÔ¶¯Ì¬·ÖÅ䣬²¢ÇÒ²»Í¬ÖÖÀàµÄTasklets¿ÉÒÔ²¢·¢µØÔÚ¼¸¸öCPUÉÏÔËÐУ¬µ«Í¬ÀàµÄtasklets ²»¿ÉÒÔ£»bottom halfÖ»Äܾ²Ì¬·ÖÅ䣬ʵÖÊÉÏ,Ï°벿·ÖÊÇÒ»¸ö²»ÄÜÓëÆäËüÏ°벿·Ö²¢·¢Ö´ÐеĸßÓÅÏȼ¶tasklet£¬¼´Ê¹ËüÃÇÀàÐͲ»Í¬£¬¶øÇÒÔÚ²»Í¬CPUÉÏÔËÐС£Tasklet¿ÉÒÔÀí½âΪÈíÖжϵÄÅÉÉú£¬ËùÒÔËüµÄµ÷¶Èʱ»úÓëÈíÖжÏÒ»Ö¡£

¶ÔÓÚÄÚºËÖÐÐèÒªÑÓ³ÙÖ´ÐеĶàÊýÈÎÎñ¶¼¿ÉÒÔÀûÓÃtaskletÀ´Íê³É£¬ÓÉÓÚͬÀàtasklet±¾ÉíÒѾ­½øÐÐÁËͬ²½±£»¤£¬ËùÒÔʹÓÃtaskletÏà±ÈÈíÖжÏÒª¼òµ¥µÃ¶à£¬¶øÇÒЧÂÊÒ²²»´í¡£

bottom half

ÊÇ BHʱ×îÔçµÄÄÚºËÑÓ³Ù·½·¨£¬Ëüԭʼ¡¢¼òµ¥ÇÒÈÝÒ׿ØÖÆ£¬ÒòΪËùÓеÄBH´¦Àí³ÌÐò¶¼±»ÑϸñµØ˳ÐòÖ´ÐÐ----²»ÔÊÐíÈκÎÁ½¸öBH´¦Àí³ÌÐòͬʱ²¢·¢Ö´ÐУ¬¼´Ê¹ËüÃǵÄÀàÐͲ»Í¬Ò²²»¿ÉÒÔ£¬ÕâÑùÒ»À´BHÖ´ÐÐÆä¼ä¼õÉÙÁËÐí¶àͬ²½±£»¤¡£µ«ÊÇBH²»µÃ²»±»ÌÔÌ­£¬ÒòΪËüµÄ¡°¼ò±ã¡±ÎþÉüÁ˶ദÀíÆ÷²¢·¢´¦ÀíµÄ¸ßÐÔÄÜ£¬µÈÓÚÒ»¶ÓÈ˹ý¶ÀľÇÅÄÇÑùËÙ¶ÈÊܵ½Ç£ÖÆ¡£

ÈÎÎñ¶ÓÁÐ

ÈÎÎñÁжÓÊÇBHµÄÌæ´úÆ·£¬À´×ÔBH£¬ËùÒÔËüµÄÊôÐÔÒ²ºÍBHÏàͬ¡£ËüµÄÔ­ÒâÔÚÓÚ¼ò»¯BHµÄ²Ù×÷½Ó¿Ú£¬µ«ËüµÄËæÒâÐÔ£¨ÊýÁ¿ËæÒâ¡¢Ö´ÐÐʱ»úËæÒ⣩ȴ¸øϵͳ´øÀ´ÁË»ìÂÒ£¬ËùÒÔµ½½ñÌìÒѾ­±»¹¤×÷¶ÓÁУ¨ÔÚ2.6ÄÚºËÖУ©ËùÈ¡´ú¡£

²»¹ýÔÚ2.4ÄÚºËÖÐÈÎÎñ¶ÓÁл¹ÊDZ»´óÁ¿Ó¦Óã¬ÓÈÆäÊǵ÷¶È¶ÓÁС¢¶¨Ê±Æ÷¶ÓÁкÍÁ¢¼´¶ÓÁеÈÈýÖÖÈÎÎñ¶ÓÁУ¨³ýÁËÕâÈýÖÖϵͳÒѽӹܵÄÌض¨ÈÎÎñ¶ÓÁÐÍ⣬Äã×Ô¼ºÒ²¿ÉËæÐÄËùÓûµÄ½¨Á¢×Ô¼ºµÄÈÎÎñ¶ÓÁУ¬µ±È»ÕâʱÄãÒª×Ô¼ºµ÷¶ÈËü£©¡£µ÷¶È¶ÓÁеÄÈÎÎñ»áÔÚÿ´Î½ø³Ìµ÷¶ÈʱµÃµ½´¦Àí£¬ËüÊÇÔÚ½ø³ÌÉÏÏÂÎÄÖд¦ÀíµÄ£»¶¨Ê±Æ÷¶ÓÁлáÔÚÿ´ÎʱÖӵδðʱµÃµ½´¦Àí£»Á¢¼´¶ÓÁлáÔÚÖжϷµ»Ø»òµ÷¶Èʱ»ñµÃ´¦Àí£¨ËùÒÔ´¦Àí×î¿ì£©£¬ËûÃǶ¼ÊÇÔÚÖжÏÉÏÏÂÎÄÖд¦ÀíµÄ¡£

ÕâЩÈÎÎñ¶ÓÁÐÔÚÄÚºËÄÚÓÉÒ»¸öͳһµÄÄÚºËÏ̵߳÷¶È£¬¸ÃÏß³ÌÃûΪkeventd£¬½ø³ÌºÅÊÇ2£¨2.4.18£©¡£Äã¿ÉÓÃpsÃüÁî²é¿´µ½¸Ã½ø³Ì¡£

ÄÚºËÏß³Ì

ÄÚºËÏ߳̿ÉÒÔÀí½â³ÉÔÚÄÚºËÖÐÔËÐеÄÌØÊâ½ø³Ì£¬ËüÓÐ×Ô¼ºµÄ¡°½ø³ÌÉÏÏÂÎÄ¡±£¨½èÓõ÷ÓÃËüµÄÓû§½ø³ÌµÄÉÏÏÂÎÄ£©£¬ËùÒÔͬÑù±»½ø³Ìµ÷¶È³ÌÐòµ÷¶È£¬Ò²¿ÉÒÔ˯Ãß----ËüºÍÓû§½ø³ÌÊôÐÔºÎÆäÏàËÆ£¬²»Í¬Ö®´¦¾ÍÔÚÓÚÄÚºËÏß³ÌÔËÐÐÓÚÄں˿ռ䣬¿É·ÃÎÊÄÚºËÊý¾Ý£¬ÔËÐÐÆڼ䲻Äܱ»ÇÀÕ¼¡£

´«Í³µÄUnixϵͳ°ÑһЩÖØÒªµÄÈÎÎñίÍиøÖÜÆÚÐÔÖ´ÐеĽø³Ì£¬ÕâЩÈÎÎñ°üÀ¨Ë¢Ð´ÅÅ̸ßËÙ»º´æ£¬½»»»³ö²»ÓõÄÒ³Ã棬ά»¤ÍøÂçÁ´½ÓµÈµÈ¡£ÊÂʵÉÏ£¬ÒÔÑϸñÏßÐԵķ½Ê½Ö´ÐÐÕâЩÈÎÎñµÄȷЧÂʲ»¸ß£¬Èç¹û°ÑËûÃÇ·ÅÔÚºǫ́µ÷¶È£¬²»¹ÜÊǶÔËüÃǵĺ¯Êý»¹ÊǶÔÖÕ¶ËÓû§½ø³Ì¶¼Äܵõ½½ÏºÃµØÏìÓ¦¡£ÒòΪһЩϵͳ½ø³ÌÖ»ÔËÐÐÔÚÄÚºË̬£¬ÏÖ´ú²Ù×÷ϵͳ°ÑËüÃǵĺ¯ÊýίÍиøÄÚºËỊ̈߳¨Kernel Thread£©£¬ÄÚºËÏ̲߳»Êܲ»±ØÒªµÄÓû§Ì¬ÉÏÏÂÎĵÄÍÏÀÛ¡£

ÄÚºËÖеÄͬ²½

ÄÚºËÖ»Òª´æÔÚÈÎÎñ½»´íÖ´ÐУ¬¾Í±ØÈ»»á´æÔÚ¶Ô¹²ÏíÊý¾ÝµÄ²¢·¢ÎÊÌ⣬Ҳ¾Í±ØÈ»´æÔÚ¶ÔÊý¾ÝµÄ±£»¤¡£¶øÄÚºËÖÐÈÎÎñ½»´íÖ´ÐеÄÔ­Òò¹é¸ù½áµ×»¹ÊÇÓÉÓÚÄÚºËÈÎÎñµ÷¶ÈÔì³ÉµÄ¡£ÎÒÃÇÏÂÃæ¹éÄÉÒ»ÏÂÄÚºËÖÐͬ²½µÄÔ­Òò¡£

ͬ²½Ô­Òò

l ÖжÏ----Öжϼ¸ºõ¿ÉÒÔÔÚÈκÎʱ¿ÌÒì²½·¢Éú£¬Ò²¾Í¿ÉÄÜËæʱ´ò¶Ïµ±Ç°ÕýÔÚÖ´ÐеĴúÂë¡£

l ˯Ãß¼°ÓëÓû§¿Õ¼äµÄͬ²½----ÔÚÄÚºËÖ´ÐеĽø³Ì¿ÉÄÜ»á˯Ãߣ¬Õâ¾Í»á»½Ðѵ÷¶È³ÌÐò£¬´Ó¶øµ¼Öµ÷¶ÈÒ»¸öеÄÓû§½ø³ÌÖ´ÐС£

l ¶Ô³Æ¶à´¦Àí----Á½¸ö»ò¶à¸ö´¦ÀíÆ÷¿ÉÒÔͬʱִÐдúÂë¡£

l ÄÚºËÇÀÕ¼----ÒòΪÄں˾ßÓÐÇÀÕ¼ÐÔ£¬ËùÒÔÄÚºËÖеÄÈÎÎñ¿ÉÄܻᱻÁíÒ»ÈÎÎñÇÀÕ¼£¨ÔÚ2.6ÄÚºËÒý½øµÄÐÂÄÜÁ¦£©¡£

ºóÁ½ÖÖÇé¿ö´ó´óÔö¼ÓÁËÄÚºËÈÎÎñ²¢·¢Ö´ÐеĿÉÄÜÐÔ£¬Ê¹µÃ²¢·¢ËæʱËæ¿Ì¶¼ÓпÉÄÜ·¢Éú£¬¶øÇÒ²»¿ÉÇåÎúÔ¤¼û£¬¹æÂÉÄÑÑ°¡£

ÄÚºËÈÎÎñÖ®¼äµÄ²¢·¢¹Øϵ

ÉÏÊöÄÚºËÈÎÎñºÜ¶àÇé¿öÊÇ¿ÉÒÔ½»´íÖ´ÐеÄ----¼Çס£¬Ò»¸öÏ°벿ʵ¼ÊÉÏ¿ÉÄÜÔÚÈκÎʱºòÖ´ÐУ¬ËùÒÔºÜÓпÉÄܲúÉú¾ºÕù£¨¶¼Òª·ÃÎÊͬһ¸öÊý¾Ý½á¹¹Ê±£¬¾Í²úÉúÁ˾ºÕù£©¡£ÏÂÃæ·ÖÎöÕâЩÄÚºËÈÎÎñÖ®¼äÓÐÄÄЩ¿ÉÄܵIJ¢·¢ÐÐΪ¡£

¿ÉÒÔ³éÏó³ö£¬³ÌÐò£¨Óû§Ì¬ºÍÄÚºË̬һÑù£©²¢·¢Ö´ÐеÄ×ÜÔ­ÒòÎÞ·ÇÊÇÕýÔÚÔËÐÐÖеijÌÐò±»ÆäËü³ÌÐòÇÀÕ¼£¬ËùÒÔÎÒÃDZØÐë¿´¿´ÄÚºËÈÎÎñÖ®¼äµÄÇÀÕ¼¹Øϵ£º



n Öжϴ¦Àí³ÌÐò¿ÉÒÔÇÀÕ¼ÄÚºËÖеÄËùÓгÌÐò£¨µ±Ã»ÓÐËø±£»¤Ê±£©£¬°üÀ¨ÈíÖжϣ¬tasklet£¬bottom halfºÍϵͳµÄµ÷Óá¢ÄÚºËỊ̈߳¬ÉõÖÁÒ²°üÀ¨Ó²Öжϴ¦Àí³ÌÐò¡£Ò²¾ÍÊÇ˵Öжϴ¦Àí³ÌÐò¿ÉÒÔºÍÕâЩËùÓеÄÄÚºËÈÎÎñ²¢·¢Ö´ÐУ¬Èç¹û±»ÇÀÕ¼µÄ³ÌÐòºÍÖжϴ¦Àí³ÌÐò¶¼Òª·ÃÎÊͬһ¸ö×ÊÔ´£¬¾Í±ØÈ»ÓпÉÄܲúÉú¾ºÕù¡£

n Èí¼þÖжÏÒ²¿ÉÒÔÇÀÕ¼ÄÚºËÖеÄËùÓÐÈÎÎñ£¬ËùÒÔÄں˴úÂ루±ÈÈ磬ϵͳµ÷Óá¢ÄÚºËÏ̵߳ȣ©ÖÐÓÐÊý¾ÝºÍÈíÖжϹ²Ïí£¬¾Í»áÓоºÕù----³ý´ËÍâÓ²¼þÖжϴ¦Àí³ÌÐòÒ²ÓпÉÄܱ»ÈíÖжϴò¶Ï£¬Ìõ¼þÊÇÓ²Öжϱ»ÆäËüÓ²Öжϴò¶Ï£¬ÈíÖжÏËæ¼´±ã»ñµÃÁËÖ´Ðлú»á£¬ÒòΪÈíÖжÏÊǸúÔÚÓ²ÖжϺóÖ´Ðеġ£´ËÍâҪעÒâµÄÊÇ£¬ÈíÖжϼ´Ê¹ÊÇͬÖÖÀàÐ͵ÄÒ²¿ÉÒÔ²¢·¢µØÔËÐÐÔÚ²»Í¬´¦ÀíÆ÷ÉÏ£¬ËùÒÔËüÃÇÖ®¼ä¹²ÏíÊý¾Ý¶¼»á²úÉú¾ºÕù¡££¨Èç¹ûÔÚͬһ¸ö´¦ÀíÆ÷ÉÏ,ÈíÖжÏÖ®¼äÊDz»ÄÜÏ໥ÇÀÕ¼µÄ£©¡£

n ͬÀàµÄtasklet²»¿ÉÄÜͬʱÔËÐУ¬ËùÒÔ¶ÔÓÚͬÀàtaskletÖ®¼äÊÇ´®ÐÐÔËÐеģ¬ËûÃDz»»á²úÉú²¢·¢£»µ«Á½¸ö²»Í¬ÖÖÀàµÄtaskletÓпÉÄÜÔÚ²»Í¬´¦ÀíÆ÷Éϲ¢·¢ÔËÐУ¬Èç¹ûÖ®¼äÓÐÊý¾Ý¹²Ïí¾Í»á²úÉú¾ºÕù£¨ÔÚͬһ¸ö´¦ÀíÆ÷ÉÏÔËÐеÄtasklet²»·¢ÉúÏ໥ÇÀÕ¼µÄÇé¿ö£©¡£

n Bottom half ÎÞÂÛÊÇ·ñÊÇͬÀàµÄ£¬¼´Ê¹ÔÚ²»Í¬´¦ÀíÆ÷ÉÏÒ²¶¼²»Äܲ¢·¢Ö´ÐУ¬ËüÊǾø¶Ô´®Ðл¯µÄ£¬ËùÒÔËüÃÇÖ®¼äÓÀÔ¶²»ÄܲúÉú¾ºÕù¡£ÈÎÎñÁжÓÊôÐÔ»ù±¾Í¬BH¡£

n ϵͳµ÷ÓúÍÄÚºËÏß³ÌÕâÖÖÔËÐÐÔÚ½ø³ÌÉÏÏÂÎÄÖеÄÄÚºËÈÎÎñ¿ÉÄܺ͸÷ÖÖÄÚºËÈÎÎñ²¢·¢£¬³ýÁËÉÏÃæÌáµ½µÄÖжϣ¨Èí£¬Ó²£©À´ÇÀÕ¼Ëü¶ø²úÉú²¢·¢Í⣬ËüÒ²ÓпÉÄÜ×Ô·¢ÐÔµØÖ÷¶¯Ë¯Ãߣ¨±ÈÈçÔÚһЩ×èÈûÐԵIJÙ×÷ÖУ©£¬·ÅÆú´¦ÀíÆ÷£¬ÖØе÷¶ÈÆäËüÈÎÎñ£¬ËùÒÔϵͳµ÷ÓúÍÄÚºËÏ̳߳ý»áÓëÈíÓ²Öжϣ¨°ëµ×µÈ£©·¢Éú¾ºÕù£¬Ò²»áÓëÆäËû£¨°üÀ¨×Ô¼º£©ÏµÍ³µ÷ÓÃÓëÄÚºËÏ̷߳¢Éú¾ºÕù¡£ÎÒÃÇÓÈÆäҪעÒâÕâÖÖÇé¿ö¡£

×¢Ò⣺taskletºÍbottom halfÊǽ¨Á¢ÔÚÈíÖжÏÖ®Éϵģ¬ËùÒÔËüÃÇÒ²¶¼×ñ´ÓÈíÖжϵĵ÷¶È¹æÔò----¶¼¿ÉÒÔ´ò¶Ï½ø³ÌÉÏÏÂÎÄÖеÄÄں˴úÂ루ϵͳµ÷Óã©£¬¶¼¿É±»Ó²Öжϴò¶Ï----ÕâЩÇé¿ö϶¼¿ÉÄܲúÉú²¢·¢¡£

ÄÚºËͬ²½´ëÊ©

ΪÁ˱ÜÃâ²¢·¢£¬·ÀÖ¹¾ºÕù¡£ÄÚºËÌṩÁËÒ»×éͬ²½·½·¨À´Ìṩ¶Ô¹²ÏíÊý¾ÝµÄ±£»¤¡£ ÎÒÃǵÄÖص㲻ÊǽéÉÜÕâЩ·½·¨µÄÏêϸÓ÷¨£¬¶øÊÇÇ¿µ÷ΪʲôʹÓÃÕâЩ·½·¨ºÍËüÃÇÖ®¼äµÄ²î±ð¡£

LinuxʹÓõÄͬ²½»úÖÆ¿ÉÒÔ˵´Ó2.0µ½2.6ÒÔÀ´²»¶Ï·¢Õ¹ÍêÉÆ¡£´Ó×î³õµÄÔ­×Ó²Ù×÷£¬µ½ºóÀ´µÄÐźÅÁ¿£¬´Ó´óÄÚºËËøµ½½ñÌìµÄ×ÔÐýËø¡£ÕâЩͬ²½»úÖƵķ¢Õ¹°éËæ Linux´Óµ¥´¦ÀíÆ÷µ½¶Ô³Æ¶à´¦ÀíÆ÷µÄ¹ý¶È£»°éËæ×Å´Ó·ÇÇÀÕ¼Äں˵½ÇÀÕ¼Äں˵Ĺý¶È¡£Ëø»úÖÆÔ½À´Ô½ÓÐЧ£¬Ò²Ô½À´Ô½¸´ÔÓ¡£

Ä¿Ç°À´ËµÄÚºËÖÐÔ­×Ó²Ù×÷¶àÓÃÀ´×ö¼ÆÊýʹÓã¬ÆäËüÇé¿ö×î³£ÓõÄÊÇÁ½ÖØËøÒÔ¼°ËüÃǵıäÖÖ£¬Ò»¸öÊÇ×ÔÐýËø£¬ÁíÒ»¸öÊÇÐźÅÁ¿¡£ÎÒÃÇÏÂÃæ¾ÍÀ´×ÅÖؽéÉÜÒ»ÏÂÕâÁ½ÖÖËø»úÖÆ¡£

×ÔÐýËø

×ÔÐýËøÊÇרΪ·ÀÖ¹¶à´¦ÀíÆ÷²¢·¢¶øÒýÈëµÄÒ»ÖÖËø£¬ËüÔÚÄÚºËÖдóÁ¿Ó¦ÓÃÓÚÖжϴ¦ÀíµÈ²¿·Ö£¨¶ÔÓÚµ¥´¦ÀíÆ÷À´Ëµ£¬·ÀÖ¹Öжϴ¦ÀíÖеIJ¢·¢¿É¼òµ¥²ÉÓùرÕÖжϵķ½Ê½£¬²»ÐèÒª×ÔÐýËø£©¡£

×ÔÐýËø×î¶àÖ»Äܱ»Ò»¸öÄÚºËÈÎÎñ³ÖÓУ¬Èç¹ûÒ»¸öÄÚºËÈÎÎñÊÔͼÇëÇóÒ»¸öÒѱ»ÕùÓã¨ÒѾ­±»³ÖÓУ©µÄ×ÔÐýËø£¬ÄÇôÕâ¸öÈÎÎñ¾Í»áÒ»Ö±½øÐÐæѭ»·----Ðýת----µÈ´ýËøÖØпÉÓá£ÒªÊÇËøδ±»ÕùÓã¬ÇëÇóËüµÄÄÚºËÈÎÎñ±ãÄÜÁ¢¿ÌµÃµ½Ëü²¢ÇÒ¼ÌÐø½øÐС£×ÔÐýËø¿ÉÒÔÔÚÈκÎʱ¿Ì·ÀÖ¹¶àÓÚÒ»¸öµÄÄÚºËÈÎÎñͬʱ½øÈëÁÙ½çÇø£¬Òò´ËÕâÖÖËø¿ÉÓÐЧµØ±ÜÃâ¶à´¦ÀíÆ÷Éϲ¢·¢ÔËÐеÄÄÚºËÈÎÎñ¾ºÕù¹²Ïí×ÊÔ´¡£

ÊÂʵÉÏ£¬×ÔÐýËøµÄ³õÖÔ¾ÍÊÇ£ºÔÚ¶ÌÆÚ¼äÄÚ½øÐÐÇáÁ¿¼¶µÄËø¶¨¡£Ò»¸ö±»ÕùÓõÄ×ÔÐýËøʹµÃÇëÇóËüµÄÏß³ÌÔڵȴýËøÖØпÉÓõÄÆÚ¼ä½øÐÐ×ÔÐý£¨ÌرðÀË·Ñ´¦ÀíÆ÷ʱ¼ä£©£¬ËùÒÔ×ÔÐýËø²»Ó¦¸Ã±»³ÖÓÐʱ¼ä¹ý³¤¡£Èç¹ûÐèÒª³¤Ê±¼äËø¶¨µÄ»°, ×îºÃʹÓÃÐźÅÁ¿¡£

×ÔÐýËøµÄ»ù±¾ÐÎʽÈçÏ£º

spin_lock(&mr_lock);

/*ÁÙ½çÇø*/

spin_unlock(&mr_lock);

ÒòΪ×ÔÐýËøÔÚͬһʱ¿ÌÖ»Äܱ»×î¶àÒ»¸öÄÚºËÈÎÎñ³ÖÓУ¬ËùÒÔÒ»¸öʱ¿ÌÖ»ÓÐÒ»¸öÏß³ÌÔÊÐí´æÔÚÓÚÁÙ½çÇøÖС£ÕâµãºÜºÃµØÂú×ãÁ˶ԳƶദÀí»úÆ÷ÐèÒªµÄËø¶¨·þÎñ¡£ÔÚµ¥´¦ÀíÆ÷ÉÏ£¬×ÔÐýËø½ö½öµ±×÷Ò»¸öÉèÖÃÄÚºËÇÀÕ¼µÄ¿ª¹Ø¡£Èç¹ûÄÚºËÇÀÕ¼Ò²²»´æÔÚ£¬ÄÇô×ÔÐýËø»áÔÚ±àÒëʱ±»ÍêÈ«ÌÞ³ý³öÄںˡ£

×ÔÐýËøÔÚÄÚºËÖÐÓÐÐí¶à±äÖÖ£¬Èç¶Ôbottom half ¶øÑÔ£¬¿ÉÒÔʹÓÃspin_lock_bh()ÓÃÀ´»ñµÃÌض¨Ëø²¢Çҹرհëµ×Ö´ÐС£Ïà·´µÄ²Ù×÷ÓÉspin_unlock_bh()À´Ö´ÐУ»Èç¹ûÁÙ½çÇøµÄ·ÃÎÊÂß¼­¿ÉÒÔ±»ÇåÎúµÄ·ÖΪ¶ÁºÍдÕâÖÖģʽ£¬ÄÇô¿ÉÒÔʹÓöÁÕß/дÕß×ÔÐýËø£¬µ÷ÓÃÐÎʽΪ£º

¶ÁÕߵĴúÂë·¾¶£º

read_lock(&mr_rwlock);

/*Ö»¶ÁÁÙ½çÇø*/

read_unlock(&mr_rwlock);

дÕߵĴúÂë·¾¶£º

write_lock(&mr_rwlock);

/*¶ÁдÁÙ½çÇø*/

write_unlock(&mr_rwlock);

¼òµ¥µÄ˵£¬×ÔÐýËøÔÚÄÚºËÖÐÖ÷ÒªÓÃÀ´·ÀÖ¹¶à´¦ÀíÆ÷Öв¢·¢·ÃÎÊÁÙ½çÇø£¬·ÀÖ¹ÄÚºËÇÀÕ¼Ôì³ÉµÄ¾ºÕù¡£ÁíÍâ×ÔÐýËø²»ÔÊÐíÈÎÎñ˯Ãߣ¨³ÖÓÐ×ÔÐýËøµÄÈÎÎñ˯Ãß»áÔì³É×ÔËÀËø----ÒòΪ˯ÃßÓпÉÄÜÔì³É³ÖÓÐËøµÄÄÚºËÈÎÎñ±»ÖØе÷¶È£¬¶øÔÙ´ÎÉêÇë×Ô¼ºÒѳÖÓеÄËø£©£¬ËüÄܹ»ÔÚÖжÏÉÏÏÂÎÄÖÐʹÓá£

ËÀËø£º¼ÙÉèÓÐÒ»¸ö»ò¶à¸öÄÚºËÈÎÎñºÍÒ»¸ö»ò¶à¸ö×ÊÔ´£¬Ã¿¸öÄں˶¼ÔڵȴýÆäÖеÄÒ»¸ö×ÊÔ´£¬µ«ËùÓеÄ×ÊÔ´¶¼ÒѾ­±»Õ¼ÓÃÁË¡£Õâ±ã»á·¢ÉúËùÓÐÄÚºËÈÎÎñ¶¼ÔÚÏ໥µÈ´ý£¬µ«ËüÃÇÓÀÔ¶²»»áÊÍ·ÅÒѾ­Õ¼ÓеÄ×ÊÔ´£¬ÓÚÊÇÈκÎÄÚºËÈÎÎñ¶¼ÎÞ·¨»ñµÃËùÐèÒªµÄ×ÊÔ´£¬ÎÞ·¨¼ÌÐøÔËÐУ¬Õâ±ãÒâζ×ÅËÀËø·¢ÉúÁË¡£×ÔËÀËöÊÇ˵×Ô¼ºÕ¼ÓÐÁËij¸ö×ÊÔ´£¬È»ºó×Ô¼ºÓÖÉêÇë×Ô¼ºÒÑÕ¼ÓеÄ×ÊÔ´£¬ÏÔÈ»²»¿ÉÄÜÔÙ»ñµÃ¸Ã×ÊÔ´£¬Òò´Ë¾Í×Ô¸¿ÊÖ½ÅÁË¡£

ÐźÅÁ¿

LinuxÖеÄÐźÅÁ¿ÊÇÒ»ÖÖ˯ÃßËø¡£Èç¹ûÓÐÒ»¸öÈÎÎñÊÔͼ»ñµÃÒ»¸öÒѱ»³ÖÓеÄÐźÅÁ¿Ê±£¬ÐźÅÁ¿»á½«ÆäÍÆÈëµÈ´ý¶ÓÁУ¬È»ºóÈÃÆä˯Ãß¡£Õâʱ´¦ÀíÆ÷»ñµÃ×ÔÓÉÈ¥Ö´ÐÐÆäËü´úÂë¡£µ±³ÖÓÐÐźÅÁ¿µÄ½ø³Ì½«ÐźÅÁ¿Êͷźó£¬Ôڵȴý¶ÓÁÐÖеÄÒ»¸öÈÎÎñ½«±»»½ÐÑ£¬´Ó¶ø±ã¿ÉÒÔ»ñµÃÕâ¸öÐźÅÁ¿¡£

ÐźÅÁ¿µÄ˯ÃßÌØÐÔ£¬Ê¹µÃÐźÅÁ¿ÊÊÓÃÓÚËø»á±»³¤Ê±¼ä³ÖÓеÄÇé¿ö£»Ö»ÄÜÔÚ½ø³ÌÉÏÏÂÎÄÖÐʹÓã¬ÒòΪÖжÏÉÏÏÂÎÄÖÐÊDz»Äܱ»µ÷¶ÈµÄ£»ÁíÍâµ±´úÂë³ÖÓÐÐźÅÁ¿Ê±£¬²»¿ÉÒÔÔÙ³ÖÓÐ×ÔÐýËø¡£

ÐźÅÁ¿»ù±¾Ê¹ÓÃÐÎʽΪ£º

static DECLARE_MUTEX(mr_sem);//ÉùÃ÷»¥³âÐźÅÁ¿

¡­

if(down_interruptible(&mr_sem))

/*¿É±»ÖжϵÄ˯Ãߣ¬µ±ÐźÅÀ´µ½£¬Ë¯ÃßµÄÈÎÎñ±»»½ÐÑ */

/*ÁÙ½çÇø¡­*/

up(&mr_sem);

ͬ×ÔÐýËøÒ»Ñù£¬ÐźÅÁ¿ÔÚÄÚºËÖÐÒ²ÓÐÐí¶à±äÖÖ£¬±ÈÈç¶ÁÕߣ­Ð´ÕßÐźÅÁ¿µÈ£¬ÕâÀï²»ÔÙ×ö½éÉÜÁË¡£

ÐźÅÁ¿ºÍ×ÔÐýËøÇø±ð

ËäÈ»ÌýÆðÀ´Á½ÕßÖ®¼äµÄʹÓÃÌõ¼þ¸´ÔÓ£¬ÆäʵÔÚʵ¼ÊʹÓÃÖÐÐźÅÁ¿ºÍ×ÔÐýËø²¢²»Ò×»ìÏý¡£×¢ÒâÒÔÏÂÔ­Ôò¡£

Èç¹û´úÂëÐèҪ˯Ãß----ÕâÍùÍùÊÇ·¢ÉúÔÚºÍÓû§¿Õ¼äͬ²½Ê±----ʹÓÃÐźÅÁ¿ÊÇΨһµÄÑ¡Ôñ¡£ÓÉÓÚ²»ÊÜ˯ÃßµÄÏÞÖÆ£¬Ê¹ÓÃÐźÅÁ¿Í¨³£À´Ëµ¸ü¼Ó¼òµ¥Ò»Ð©¡£Èç¹ûÐèÒªÔÚ×ÔÐýËøºÍÐźÅÁ¿ÖÐ×÷Ñ¡Ôñ£¬Ó¦¸ÃÈ¡¾öÓÚËø±»³ÖÓеÄʱ¼ä³¤¶Ì¡£ÀíÏëÇé¿öÊÇËùÓеÄËø¶¼Ó¦¸Ã¾¡¿ÉÄ̵ܶı»³ÖÓУ¬µ«ÊÇÈç¹ûËøµÄ³ÖÓÐʱ¼ä½Ï³¤µÄ»°£¬Ê¹ÓÃÐźÅÁ¿ÊǸüºÃµÄÑ¡Ôñ¡£ÁíÍ⣬ÐźÅÁ¿²»Í¬ÓÚ×ÔÐýËø£¬Ëü²»»á¹Ø±ÕÄÚºËÇÀÕ¼£¬ËùÒÔ³ÖÓÐÐźÅÁ¿µÄ´úÂë¿ÉÒÔ±»ÇÀÕ¼¡£ÕâÒâζÕßÐźÅÁ¿²»»á¶ÔÓ°Ïìµ÷¶È·´Ó¦Ê±¼ä´øÀ´¸ºÃæÓ°Ïì¡£

×ÔÐýËø¶ÔÐźÅÁ¿

¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª

ÐèÇó ½¨ÒéµÄ¼ÓËø·½·¨

µÍ¿ªÏú¼ÓËø ÓÅÏÈʹÓÃ×ÔÐýËø

¶ÌÆÚËø¶¨ ÓÅÏÈʹÓÃ×ÔÐýËø

³¤ÆÚ¼ÓËø ÓÅÏÈʹÓÃÐźÅÁ¿

ÖжÏÉÏÏÂÎÄÖмÓËø ʹÓÃ×ÔÐýËø

³ÖÓÐËøÊÇÐèҪ˯Ãß¡¢µ÷¶È ʹÓÃÐźÅÁ¿

¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª

Òý×Ô ¡¶LinuxÄں˿ª·¢¡·

·ÀÖ¹²¢·¢µÄ·½Ê½³ýÁËÉÏÃæÌáµ½µÄÍ⻹Óкܶ࣬ÎÒÃDz»Ïêϸ½éÉÜÁË¡£ËµÁËÕâô¶à,Ï£Íû´ó¼ÒÈÏʶµ½£¬²¢·¢¿ØÖÆÔÚÄں˱à³ÌÖÐÊǸöÌرðÄѲøµÄÎÊÌ⣬Ҫ¼ÝÓùËü±ØÐëÇå³þµØÈÏʶµ½ÄÚºËÖи÷ÖÖÈÎÎñµÄµ÷¶Èʱ»úÓëÌص㣬²¢ÇÒÔÚ¿ª·¢³õÆÚ¾ÍÓ¦ÌرðСÐı£»¤¹²ÏíÊý¾Ý£¨Ò»Çй²ÏíÊý¾Ý¡¢Ò»ÇÐÄܱ»±ðÈË¿´µ½µÄÊý¾Ý¶¼Òª×¢Òâ±£»¤£©£¬±ðµÈµ½¿ª·¢Íê³É²ÅÈ¥ÍöÑò²¹ÀΡ£

²¢·¢¿ØÖÆʵÀý

ÎÒÃÇÏÂÃæ¸ø³öÒ»¸ö¶àÄÚºËÈÎÎñ·ÃÎʹ²Ïí×ÊÔ´µÄ¾ßÌåÀý×Ó£¬ÆäÖлáÓõ½ÉÏÃæÌáµ½µÄ¸÷ÖÖͬ²½·½·¨£¬Ï£ÍûÄܸø´ó¼ÒÒ»¸öÐÎÏóµÄ¼ÇÒä¡£

¸ÃÀý×ӵľßÌ峡¾°ÃèÊöÈçÏ¡£

ÎÒÃÇÖ÷ÒªµÄ¹²Ïí×ÊÔ´ÊÇÁ´±í£¨mine£©,²Ù×÷ËüµÄÄÚºËÈÎÎñÓÐÈýÖÖ£ºÒ»¸öÊÇ100¸öÄÚºËỊ̈߳¨sharelist£©£¬ËüÃǸºÔð´Ó±íÍ·½«Ð½ڵ㣨struct my_struct£©²åÈëÁ´±í¡£¶þÊǶ¨Ê±Æ÷ÈÎÎñ(qt_task)£¬Ëü¸ºÔðÿ¸öʱÖӵδðʱ´ÓÁ´±íͷɾ³ýÒ»¸ö½Úµã¡£ÈýÊÇϵͳµ÷Óã¨ÓÉrmmodÃüÁîµ÷ÓõÄshare_exit£©£¬Ëü¸ºÔðÏú»ÙÁ´±í²¢Ð¶ÔØÄ£¿é¡£

ÎÒÃÇÀûÓÃÄ£¿é£¨sharelist.o£©ÊµÏÖÉÏÊö³¡¾°¡£¼ÓÔØÄ£¿éʱ»á½¨Á¢¶¨Ê±Æ÷ÈÎÎñÁжӣ¬²¢½«ÒªÖ´ÐеÄÈÎÎñ(task.rounting=qt_task)²åÈ붨ʱÆ÷¶ÓÁУ¨tq_timer£©£¬È»ºó·´¸´µ÷¶ÈÖ´ÐУ¨µ«±ð²»Í£µØÖ´ÐУ©¡£Óë´ËͬʱÀûÓÃϵͳÖеÄkeventdÄÚºËỊ̈߳¨ËüµÄÄ¿µÄÊÇÖ´ÐÐÈÎÎñ¶ÓÁÐ,ÓÉschedule_task¼¤»î£¬PID=2£©£¬´´½¨100¸öÄÚºËÏß³Ì(´´½¨º¯Êýkernel_thread)Ö´ÐвåÈëÁ´±íµÄ¹¤×÷£¨ÓÉsharelistÍê³É£©----µ«µ±Á´±í³¤¶È³¬¹ý100ʱ£¬Ôò´ÓÁ´±íβɾ³ý½Úµã¡£×îºóµ±ÄãÐèҪжÔØÄ£¿éʱ£¬µ÷ÓÃshare_exitº¯ÊýÏú»ÙÕû¸öÁ´±í£¬²¢×öһЩÖîÈçÏú»ÙÎÒÃǽ¨Á¢µÄÄں˽ø³ÌµÄÊÕβ¹¤×÷¡£

ÏÂÃæÎÒÃǾßÌå¿´¿´ÔÚ³ÌÐòÖиÃÈçºÎ±£»¤ÎÒÃǵÄÁ´±í¡£ÉÏÊö³¡¾°ÖдæÔÚµÄÄں˲¢·¢°üÀ¨----ÄÚºËÏß³ÌÖ®¼äµÄ²¢·¢¡¢ÄÚºËÈÎÎñÓ붨ʱÆ÷ÈÎÎñµÄ²¢·¢¡£ÒªÖªµÀÄÚºËÏß³ÌÖ´ÐÐÔÚ½ø³ÌÉÏÏÂÎÄÖУ¬¶ø¶¨Ê±Æ÷ÈÎÎñÊôÓÚÏ°벿·Ö£¬Ö´ÐÐÔÚÖжÏÉÏÏÂÎÄÖС£ÔÚÕâÁ½²¿·Ö½»´íÖ´ÐÐÖнøÐб£»¤ÔòÐèÒª²ÉÓÃ×ÔÐýËø¡£ÎÒÃÇÀý×ÓÖÐʹÓÃÁËspin_lock_bh()ËøÔÚÄÚºËÏ̵߳ÄÖ´Ðз¾¶ÖжÔÁ´±í½øÐб£»¤£»ÔÚÏ°벿·Ö,ÓÉÓÚÈÎÎñ¶ÓÁÐÊÇ´®ÐÐÖ´Ðв¢ÇÒ²»Äܱ»ÄÚºËÈÎÎñ»òϵͳµ÷Óôò¶Ï£¬ËùÒÔ²»±Ø¼ÓËø¡£ÁíÍâÔÚжÔØÄ£¿éʱ£¬É¾³ýÁ´±íÖÐÈÔÈ»´æÔÚϵͳµ÷ÓÃÓëÏ°벿·ÖµÄ²¢·¢¿ÉÄÜ£¬Òò´ËÒ²ÐèÒª°´ÉÏÊö·½Ê½¼ÓËø¡£

³ýÁ˶Թ²ÏíÁ´±í·ÃÎÊʹÓÃ×ÔÐýËøÒÔÍ⣬»¹ÓÐÁ½¸öÐèҪͬ²½µÄµØ·½£¬Ò»ÊǼÆÊý£¨count£©£¬¸Ã±äÁ¿ÊôÓÚÔ­×ÓÀàÐÍ£¬ÓÃÓڼǼÁ´±í½ÓµãµÄid¡£ÁíÍâÒ»¸öÊÇÀûÓÃÐźÅÁ¿Í¬²½Äں˴´½¨Ị̈߳¬µ÷¶ÈkeventdºóÖ´ÐỶÂÈûס(down)£¬µÈÄÚºËÏß³Ìʵ¼ÊÆô¶¯ºó, ²Å¿É¼ÌÐøÖ´ÐУ¨up£©¡£

½áÊø

²¢·¢µÄ·¢ÉúËæ´¦¶¼ÓУ¬µ«ÊÇÓÉËüÒýÆðµÄ´íÎó¿É²¢·Çÿ´Î¶¼ÓУ¬ÒòΪ²¢·¢¹ý³ÌÖÐÒýÆð´íÎóµÄµØ·½ÍùÍù¾ÍÒ»Á½²½£¬Òò´Ë½»´íÖ´ÐÐÕâÒ»Á½²½Òª¿¿¡°ÔËÆø¡±£¬³ö´íµÄ¼¸ÂÊÓÐʱºÜС¡£µ«ÊÇÒ»µ©·¢Éúºó¹û¶¼ÊÇÔÖÄÑÐԵģ¬±ÈÈçå´»ú£¬ÆÆ»µÊý¾ÝÍêÕûÐԵȡ£ËùÒÔÎÒÃǶԲ¢·¢¾ø²»ÄܵôÒÔÇáÐÄ£¬±ØÐëÄóö¡°°ÑÖ½ÀÏ»¢µ±ÕæÀÏ»¢µÄ¡±¾öÐÄÀ´¶Ô´ýÒ»ÇÐÄں˴úÂëÖпÉÄܵIJ¢·¢£¬¼´±ãÔÚµ¥´¦ÀíÆ÷Éϱà³ÌÒ²ÐèÒª¿¼Âǵ½ÒÆÖ²µ½¶à´¦ÀíÆ÷µÄÇé¿ö£¬×ÜÖ®Ò»Çж¼Òª½÷É÷СÐÄ¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 5 ÌõÆÀÂÛ

  1. jianxin_pan_00 ÓÚ 2011-11-19 23:15:44·¢±í:

    ºÜ²»´í ÖµµÃѧϰһÏ£¡

  2. jianxin_pan_00 ÓÚ 2011-11-19 23:15:13·¢±í:

    ºÜ²»´í ÖµµÃѧϰһÏ£¡

  3. jianxin_pan_00 ÓÚ 2011-11-19 23:14:13·¢±í:

    ºÜ²»´í ÖµµÃѧϰһÏ£¡

  4. ½­Ãú½Ü ÓÚ 2011-11-08 10:21:40·¢±í:

    Ö»ÊÇÉÙÁ˵ãϸ½Ú

  5. ½­Ãú½Ü ÓÚ 2011-11-08 10:21:27·¢±í:

    ^_^Ç¿´ó£¡£¡£¡