Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB
ÈÈÃűêÇ©£º c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 ×îÐÂÎÄÕ :

Linux ÄÚºËÈíÖжÏ(softirq)Ö´ÐзÖÎö

Linux ÄÚºËÈíÖжÏ(softirq)Ö´ÐзÖÎö
Author:  sinister
Email:   sinister@whitecell.org
Homepage:http://www.whitecell.org
Date:    2007-01-11
±¾ÎÄ¶Ô Linux ÄÚºËÈíÖжϵÄÖ´ÐÐÁ÷³Ì½øÐÐÁË·ÖÎö£¬²¢¾¡¿ÉÄܵĽáºÏµ±Ç°ÔË
Ðл·¾³ÏêϸµØÐ´³öÎÒµÄÀí½â£¬µ«Õâ²¢²»±íÃ÷ÎÒµÄÀí½âÒ»¶¨ÕýÈ·¡£Õâ±¾ÊÇÂÛ̳
ÀïµÄһƪÌû×Ó£¬·¢³öÀ´ÊÇΪÁËÅ×שÒýÓñ£¬Èç¹ûÄúÔÚÔĶÁ±¾ÎÄʱ·¢ÏÖÁËÎҵĴí
Î󣬻¹ÍûµÃµ½ÄúµÄÖ¸Õý¡£
½ñÌìÎÞÒâÖп´ÁËÑÛ 2.6 Äں˵ÄÈíÖжÏʵÏÖ£¬·¢ÏÖºÍÒÔǰÎÒ¿´µ½µÄ´ó²»Ïàͬ
£¨ÒÔǰҲÊÇ×ßÂí¹Û»¨£¬²»´ó×Ðϸ£©£¬¿ÉÒÔ˵¸Ä¶¯ºÜ´ó¡£Á¬ softirq µÄµ÷ÓÃ
µã¶¼²»Ò»ÑùÁË£¬ÒÔǰÊÇÈý¸öµ÷Óõ㣬½ñÌìËÑË÷ÁËÒ»ÏÂÔ´´úÂ룬·¢ÏÖÔÚ¶à³öÁË
ksoftirqd ºó£¬softirq ÔÚϵͳÖеĵ÷Óõã½öÊÇÔÚ ISR ·µ»ØÊ±ºÍʹÓÃÁË
local_bh_enable() º¯Êýºó±»µ÷ÓÃÁË¡£Íø¿¨²¿·ÖµÄÏÔʾµ÷Óã¬ÎÒ¾õµÃÓ¦¸Ã²»
ËãÊÇϵͳÖеĵ÷Óõ㡣ksoftirqd ·µ»ØÈ¥µ÷Óà do_softirq() º¯ÊýÓ¦¸ÃÒ²Ö»
ÄÜËãÊÇÆäÖеÄÒ»¸ö·ÖÖ§£¬ÒòΪÆä±¾Éí´ÓÔ´Í·ÉÏÀ´½²Ò²»¹ÊÇÔÚ ISR ·µ»ØÊ±
irq_exit() µ÷Óõġ£ÕâÑùÒ»À´¾ÍºÍǰЩÈÕ×ÓдµÄÄǷݱʼǣ¨Windows/Linux
/Solaris ÈíÖжϻúÖÆ£©Àï½éÉÜµÄ Linux Äں˲¿·ÖµÄÈíÖжÏÓгö´¦ÁË£¬ ......

LINUXÖжϻúÖÆÓëÐźÅ


ÔÚѧϰAPUEʱѧϰÐźűà³Ì£¬ºÜ¶àµØ·½²»ÊÇÀí½â£¬±ã²éÔÄÁËÍøÂçÉϵÄÏà¹Ø×ÊÁÏ£¬×î³£¼ûµÄÒ»¾ä»°¾ÍÊÇ“ÐźÅÊÇÖжϻúÖÆµÄÒ»ÖÖÄ£Ä┣¬¼ÈÈ»Ìáµ½ÁËÖжϣ¬ÄǾÍÊ×ÏÈÁ˽âÁËÒ»ÏÂÖжϵľßÌå·ÖÀàÒÔ¼°ÊµÏÖ£¬×îºóÔÙÕÒ³öÖжϺÍÐźŵÄÇø±ð¡£
LINUXÖжϻúÖÆÓëÐźÅ
ÖжϺÍÒì³£
 

ÖÐ ¶Ï£¨Ò²³ÆÓ²¼þÖжϣ©
¶¨Òå
£ºÖжÏÊÇÓÉÆäËûÓ²¼þÉ豸ÒÀÕÕCPU
ʱÖÓÖÜÆÚÐźÅËæ»ú²úÉúµÄ¡£
·ÖÀà
£º ¿ÉÆÁ±ÎÖжÏ
·Ç¿ÉÆÁ±ÎÖжÏ
À´Ô´£º
¼ä¸ô¶¨Ê±Æ÷ºÍI/O
 

Òì ³££¨Ò²³ÆÈí¼þÖжϣ©
¶¨Òå
£ºµ±Ö¸ÁîÖ´ÐÐʱÓÉ
CPU¿ØÖƵ¥Ôª
²úÉúµÄ£¬Òì³£Ò²³ÆÎª“Òì²½ÖжϔÊÇÒòΪֻÓÐÔÚ Ò»ÌõÖ¸ÁîÖÕÖ¹Ö´ÐкóCPU
²Å»á·¢³öÖжϡ£
·ÖÀà
£º ´¦ÀíÆ÷̽²âµ½µÄÒì³£
² 
¹ÊÕÏ
² 
ÏÝÚå
² 
Òì³£ÖÕÖ¹
±à³ÌÒì³£(
Ò²³ÆÈíÖжÏ
)
² 
intÖ¸Áî
À´Ô´£º
³ÌÐòµÄ´íÎó²úÉúµÄ
Äں˱ØÐë´¦ÀíµÄÒì³£(
ÀýÈ磺ȱҳºÍÄں˷þÎñµÄÇëÇó
-int)
Òì³£´¦Àí

µ±·¢ÉúÒ쳣ʱ£¬CPU
¿ØÖƵ¥Ôª²úÉúÒ»¸öÓ²¼þ³ö´íÂë¡£

CPU¸ù¾Ý¸ÃÖжÏÂðÕÒµ½ÖжÏÏòÁ¿±íÄڵĶÔÓ¦ÏòÁ¿£¬¸ù¾Ý¸ÃÏòÁ¿×ªµ½Öжϴ¦Àí³ÌÐò¡£

Öжϴ¦Àí³ÌÐò´¦ÀíÍêÖ®ºóÏòµ±Ç°½ø³Ì· ......

Linux ÐźÅsignal´¦Àí»úÖÆ Ò»

ÐźÅÊÇLinux±à³ÌÖзdz£ÖØÒªµÄ²¿·Ö£¬±¾ÎĽ«Ïêϸ½éÉÜÐźŻúÖÆµÄ»ù±¾¸ÅÄî¡¢Linux¶ÔÐźŻúÖÆµÄ´óÖÂʵÏÖ·½·¨¡¢ÈçºÎʹÓÃÐźţ¬ÒÔ¼°ÓйØÐźŵöϵͳ
µ÷Óá£
       
ÐźŻúÖÆÊǽø³ÌÖ®¼äÏ໥´«µÝÏûÏ¢µÄÒ»ÖÖ·½·¨£¬ÐźÅÈ«³ÆÎªÈíÖжÏÐźţ¬Ò²ÓÐÈ˳Æ×÷ÈíÖжϡ£´ÓËüµÄÃüÃû¿ÉÒÔ¿´³ö£¬ËüµÄʵÖʺÍʹÓúÜÏóÖжϡ£ËùÒÔ£¬ÐźſÉÒÔ˵ÊÇ
½ø³Ì¿ØÖƵÄÒ»²¿·Ö¡£
        Ò»¡¢ÐźŵĻù±¾¸ÅÄî
       
±¾½ÚÏȽéÉÜÐźŵÄһЩ»ù±¾¸ÅÄȻºó¸ø³öһЩ»ù±¾µÄÐźÅÀàÐͺÍÐźŶÔÓ¦µÄʼþ¡£»ù±¾¸ÅÄî¶ÔÓÚÀí½âºÍʹÓÃÐźţ¬¶ÔÓÚÀí½âÐźŻúÖÆ¶¼ÌرðÖØÒª¡£ÏÂÃæ¾ÍÀ´¿´¿´Ê²
ôÊÇÐźš£
        1¡¢»ù±¾¸ÅÄî
       
ÈíÖжÏÐźţ¨signal£¬ÓÖ¼ò³ÆÎªÐźţ©ÓÃÀ´Í¨Öª½ø³Ì·¢ÉúÁËÒ첽ʼþ¡£½ø³ÌÖ®¼ä¿ÉÒÔ»¥Ïàͨ¹ýϵͳµ÷ÓÃkill·¢ËÍÈíÖжÏÐźš£ÄÚºËÒ²¿ÉÒÔÒòΪÄÚ²¿Ê¼þ¶ø
¸ø½ø³Ì·¢ËÍÐźţ¬Í¨Öª½ø³Ì·¢ÉúÁËij¸öʼþ¡£×¢Ò⣬ÐźÅÖ»ÊÇÓÃÀ´Í¨ÖªÄ³½ø³Ì·¢ÉúÁËʲôʼþ£¬²¢²»¸ø¸Ã½ø³Ì´«µÝÈκÎÊý¾Ý¡£
      ......

Linux ÐźÅsignal´¦Àí»úÖÆ ¶þ

¶þ¡¢ÐÅ ºÅ »ú ÖÆ
ÉÏ Ò»½ÚÖнéÉÜÁËÐźŵĻù±¾¸ÅÄÔÚÕâÒ»½ÚÖУ¬ÎÒÃǽ«½éÉÜÄÚºËÈçºÎʵÏÖÐźŻúÖÆ¡£¼´ÄÚºËÈçºÎÏòÒ»¸ö½ø³Ì·¢ËÍÐźš¢½ø³ÌÈçºÎ½ÓÊÕÒ»¸öÐźš¢½ø³ÌÔõÑù¿ØÖÆ×Ô¼º¶ÔÐÅ ºÅµÄ·´Ó¦¡¢ÄÚºËÔÚʲôʱ»ú´¦ÀíºÍÔõÑù´¦Àí½ø³ÌÊÕµ½µÄÐźš£»¹Òª½éÉÜÒ»ÏÂsetjmpºÍlongjmpÔÚÐźÅÖÐÆðµ½µÄ×÷Óá£
1¡¢Äں˶ÔÐźŵĻù±¾´¦Àí·½·¨
ÄÚ ºË¸øÒ»¸ö½ø³Ì·¢ËÍÈíÖжÏÐźŵķ½·¨£¬ÊÇÔÚ½ø³ÌËùÔڵĽø³Ì±íÏîµÄÐźÅÓòÉèÖöÔÓ¦ÓÚ¸ÃÐźŵÄλ¡£ÕâÀïÒª²¹³äµÄÊÇ£¬Èç¹ûÐźŷ¢Ë͸øÒ»¸öÕýÔÚ˯ÃߵĽø³Ì£¬ÄÇôҪ¿´ ¸Ã½ø³Ì½øÈë˯ÃßµÄÓÅÏȼ¶£¬Èç¹û½ø³Ì˯ÃßÔڿɱ»ÖжϵÄÓÅÏȼ¶ÉÏ£¬Ôò»½Ðѽø³Ì£»·ñÔò½öÉèÖýø³Ì±íÖÐÐźÅÓòÏàÓ¦µÄ룬¶ø²»»½Ðѽø³Ì¡£ÕâÒ»µã±È½ÏÖØÒª£¬ÒòΪ½ø³Ì¼ì ²éÊÇ·ñÊÕµ½ÐźŵÄʱ»úÊÇ£ºÒ»¸ö½ø³ÌÔÚ¼´½«´ÓÄÚºË̬·µ»Øµ½Óû§Ì¬Ê±£»»òÕߣ¬ÔÚÒ»¸ö½ø³ÌÒª½øÈë»òÀ뿪һ¸öÊʵ±µÄµÍµ÷¶ÈÓÅÏȼ¶Ë¯Ãß״̬ʱ¡£
Äں˴¦ÀíÒ»¸ö½ø³ÌÊÕµ½µÄÐźŵÄʱ»úÊÇÔÚÒ»¸ö½ø³Ì´ÓÄÚºË̬·µ»ØÓû§Ì¬Ê±¡£ËùÒÔ£¬µ±Ò»¸ö½ø³ÌÔÚÄÚºË̬ÏÂÔËÐÐʱ£¬ÈíÖжÏÐźŲ¢²»Á¢¼´Æð×÷Óã¬ÒªµÈµ½½«·µ»ØÓû§Ì¬Ê±²Å´¦Àí¡£½ø³ÌÖ»Óд¦ÀíÍêÐźŲŻ᷵»ØÓû§Ì¬£¬½ø³ÌÔÚÓû§Ì¬Ï²»»áÓÐδ´¦ÀíÍêµÄÐźš£
ÄÚ ºË´¦ÀíÒ»¸ö½ø³ÌÊ ......

Linux ÐźÅsignal´¦Àí»úÖÆ Èý

Ç°ÃæÁ½½ÚÒѾ­½éÉÜÁËÓйØÐźŵĴ󲿷ÖÖª
ʶ¡£ÕâÒ»½ÚÎÒÃÇÀ´Á˽âÒ»ÏÂÕâЩϵͳµ÷Óá£ÆäÖУ¬ÏµÍ³µ÷ÓÃsignalÊǽø³ÌÓÃÀ´É趨ij¸öÐźŵĴ¦Àí·½·¨£¬ÏµÍ³µ÷ÓÃkillÊÇÓÃÀ´·¢ËÍÐźŸøÖ¸¶¨½ø³ÌµÄ¡£Õâ

Á½¸öµ÷ÓÿÉÒÔÐγÉÐźŵĻù±¾²Ù×÷¡£ºóÁ½¸öµ÷ÓÃpauseºÍalarmÊÇͨ¹ýÐźÅʵÏֵĽø³ÌÔÝÍ£ºÍ¶¨Ê±Æ÷£¬µ÷ÓÃalarmÊÇͨ¹ýÐźÅ֪ͨ½ø³Ì¶¨Ê±Æ÷µ½Ê±¡£Ëù
ÒÔÔÚÕâÀÎÒÃÇ»¹Òª½éÉÜÕâÁ½¸öµ÷Óá£
        1¡¢signal ϵͳµ÷ÓÃ
        ϵͳµ÷ÓÃsignalÓÃÀ´É趨ij¸öÐźŵĴ¦Àí·½·¨¡£¸Ãµ÷ÓÃÉùÃ÷µÄ¸ñʽÈçÏ£º
        void (*signal(int signum, void (*handler)(int)))(int);
        ÔÚʹÓøõ÷ÓõĽø³ÌÖмÓÈëÒÔÏÂÍ·Îļþ£º
        #include <signal.h>
        ÉÏÊöÉùÃ÷¸ñʽ±È½Ï¸´ÔÓ£¬Èç¹û²»Çå³þÈçºÎʹÓã¬Ò²¿ÉÒÔͨ¹ýÏÂÃæÕâÖÖÀàÐͶ¨ÒåµÄ¸ñʽÀ´Ê¹Óã¨POSIXµÄ¶¨Ò壩£º
        typedef void (*sighandler_t)(int);
   ......

Linux ÐźÅsignal´¦Àí»úÖÆ ËÄ

4¡¢alarmºÍ setitimerϵͳµ÷ÓÃ
        ϵͳµ÷ÓÃalarmµÄ¹¦ÄÜÊÇÉèÖÃÒ»¸ö¶¨Ê±Æ÷£¬µ±¶¨Ê±Æ÷¼ÆÊ±µ½´ïʱ£¬½«·¢³öÒ»¸öÐźŸø½ø³Ì¡£¸Ãµ÷ÓõÄÉùÃ÷¸ñʽÈçÏ£º
        unsigned int alarm(unsigned int seconds);
        ÔÚʹÓøõ÷ÓõĽø³ÌÖмÓÈëÒÔÏÂÍ·Îļþ£º
        #include <unistd.h>
        ϵ
ͳµ÷ÓÃalarm°²ÅÅÄÚºËΪµ÷Óýø³ÌÔÚÖ¸¶¨µÄsecondsÃëºó·¢³öÒ»¸öSIGALRMµÄÐźš£Èç¹ûÖ¸¶¨µÄ²ÎÊýsecondsΪ0£¬Ôò²»ÔÙ·¢ËÍ
SIGALRMÐźš£ºóÒ»´ÎÉ趨½«È¡Ïûǰһ´ÎµÄÉ趨¡£¸Ãµ÷Ó÷µ»ØÖµÎªÉϴζ¨Ê±µ÷Óõ½·¢ËÍÖ®¼äÊ£ÓàµÄʱ¼ä£¬»òÕßÒòΪûÓÐǰһ´Î¶¨Ê±µ÷Óöø·µ»Ø0¡£
        ×¢Ò⣬ÔÚʹÓÃʱ£¬alarmÖ»É趨Ϊ·¢ËÍÒ»´ÎÐźţ¬Èç¹ûÒª¶à´Î·¢ËÍ£¬¾ÍÒª¶à´ÎʹÓÃalarmµ÷Óá£
       
¶ÔÓÚalarm£¬ÕâÀï²»ÔÙ¾ÙÀý¡£ÏÖÔÚµÄϵͳÖкܶà³ÌÐò²»ÔÙʹÓÃalarmµ÷Ó㬶øÊÇʹÓÃsetitimerµ÷ÓÃÀ´ÉèÖö¨Ê±Æ÷£¬ÓÃgetitimerÀ´µÃµ½
¶¨Ê±Æ÷µÄ×´Ì ......
×ܼǼÊý:40319; ×ÜÒ³Êý:6720; ÿҳ6 Ìõ; Ê×Ò³ ÉÏÒ»Ò³ [1195] [1196] [1197] [1198] 1199 [1200] [1201] [1202] [1203] [1204]  ÏÂÒ»Ò³ βҳ
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ