»ùÓڣ̣é£î£õ£øÄں˵ļüÅÌÄ£ÄâʵÏÖ
ÕªÕªÒª£ºµ±Ç°£¬ÓÉÓÚLinux×ÊÔ´ÍêÈ«¹«¿ª£¬Ê¹µÃLinuxµÄ·¢Õ¹ÈÕÒæ¹ã·º¿ìËÙ¡£»ùÓÚLinuxµÄ¸÷ÖÖÓ¦ÓÃÒÑÖð½¥ÉîÈëÈÕ³£Éú»îµÄ·½·½ÃæÃ棬ÓÈÆäÊÇÔÚǶÈëʽÁìÓò£¬ÓÉÓÚÄں˿ɲüõ¶¨ÖÆ£¬Òò´Ë¿ÉËæÒâµØ¸ù¾ÝÓû§ÐèÇó½øÐÐÕû¸öϵͳµÄ¶¨ÖÆÓëÖØ¹¹¡£ÆäÖУ¬ÎÒÃÇ¿ÉÒÔͨ¹ý¶Ô¸÷ÖÖ±ê×¼ÍⲿÉ豸µÄÇý¶¯½øÐиÄÔ죬´Ó¶øÊµÏÖÓû§¶Ô±ê×¼É豸µÄÌØ¶¨ÐèÇó£¬ÀýÈç¿ÉÒÔͨ¹ý¶Ô¼üÅ̵ÄÄ£ÄâÀ´ÊµÏÖ²Ù×÷µÄ×Ô¶¯»¯£¬´Ó¶ø¿ÉÒÔ±ÜÃâÖØ¸´µÄ¼üÅ̲Ù×÷¡£
¹Ø¼ü´Ê£ºÏµÍ³µ÷Óà ¹´×Óº¯Êý ¼üÅÌÄ£Äâ
1LinuxÄÚºËÖ§³ÖµÄÍⲿµ÷ÓýӿÚ
ÓÉÓÚLinuxÄÚºË×÷Ϊϵͳ×îÉî²ã´ÎµÄºËÐÄ£¬Òò´ËÍⲿµÄ¿ª·¢ÈËÔ±²¢²»ÄÜÖ±½Ó¶ÔÄں˽øÐвÙ×÷¡£È»¶øÔÚһЩӦÓóÌÐòµÄ¿ª·¢¹ý³ÌÖУ¬ÓÖ²»µÃ²»Ê¹ÓÃÄں˵ÄijЩ¹¦ÄÜ£¬Òò´Ë¾ÍÌṩÁËһЩÍⲿ½Ó¿Ú¹©¿ª·¢ÈËÔ±Ö±½ÓÓëµ×²ãÄں˴ò½»µÀ¡£ 1.1ÖжÏ
ÔÚLinux Ï£¬Ó²¼þÖжϽÐ×öIRQ(Interrupt Requests)¡£ÓÐÁ½ÖÖIRQ£¬¶ÌÀàÐͺͳ¤ÀàÐÍ¡£¶ÌIRQÐèÒªºÜ¶ÌµÄʱ¼ä£¬ÔÚ´Ë
ÆÚ¼ä»úÆ÷µÄÆäËû²¿·Ö±»Ëø¶¨£¬¶øÇÒûÓÐÆäËûÖжϱ»´¦Àí¡£Ò»¸ö³¤IRQÐèÒª½Ï³¤µÄʱ¼ä£¬ÔÚ´ËÆÚ¼ä¿ÉÄÜ·¢ÉúÆäËûÖжÏ(µ«²»ÊÇ·¢×Ôͬһ¸öÉ豸)¡£Èç¹û¿ÉÄܵϰ£¬×îºÃ°ÑÒ»¸öÖжÎÉùÃ÷Ϊ³¤ÀàÐÍ¡£Èç¹ûCPU½Óµ½Ò»¸öÖжϣ¬Ëü¾Í»áÍ£Ö¹Ò»Çй¤×÷(³ý·ÇËüÕýÔÚ´¦ÀíÒ»¸ö¸üÖØÒªµÄÖжϣ¬ÔÚÕâÖÖÇé¿öÏÂÒªµÈµ½¸üÖØÒªµÄÖжϴ¦Àí½áÊøºó²Å»á´¦ÀíÕâ¸öÖжÏ)£¬°ÑÏà¹ØµÄ²ÎÊý´æ´¢µ½Õ»ÀȻºóµ÷ÓÃÖжϴ¦Àí³ÌÐò¡£ÕâÒâζ×ÅÔÚÖжϴ¦Àí³ÌÐò±¾ÉíÖÐÓÐЩÊÂÇéÊDz»ÔÊÐíµÄ£¬ÒòΪÕâʱϵͳ´¦ÔÚÒ»¸öδ֪״̬¡£½â¾öÕâ¸öÎÊÌâµÄ·½·¨ÊÇÈÃÖжϴ¦Àí³ÌÐò×öÐèÒªÂíÉÏ×öµÄÊ£¬Í¨³£ÊÇ´ÓÓ²¼þ¶ÁÈ¡ÐÅÏ¢»ò¸øÓ²¼þ·¢ËÍÐÅÏ¢£¬È»ºó°Ñ¶ÔÐÂÐÅÏ¢µÄ´¦Àíµ÷¶Èµ½ÒÔºóÈ¥×ö¡£
ʵÏֵķ½·¨ÊÇÔÚ½Óµ½Ïà¹ØµÄIRQ(ÔÚIntelƽ̨ÉÏÓÐ16¸öIRQ)ʱµ÷ÓÃÖжϴ¦Àí³ÌÐò¡£Õâ¸öº¯Êý½Óµ½IRQºÅÂë¡¢º¯ÊýÃû¡¢±êÖ¾¡¢Ò»¸ö/proc/interruptsµÄÃû×ֺʹ«¸øÖжϴ¦Àí³ÌÐòµÄÒ»¸ö²ÎÊý¡£±êÖ¾ÖпÉÒÔ°üÀ¨ SA_SHIRQÀ´±íÃ÷ÄãÏ£ÍûºÍÆäËû´¦Àí³ÌÐò¹²Ïí´ËIRQ(ͨ³£ºÜ¶àÉ豸¹«ÓÃÒ»¸öIRQ)£¬»òÕßÒ»¸öSA_INTERRUPT±íÃ÷ÕâÊÇÒ»¸ö½ô¼±Öжϡ£Õâ¸öº¯Êý½öÔÚ´ËIRQûÓÐÆäËû´¦Àí³ÌÐò»òÐèÒª¹²ÏíËùÓд¦Àí³ÌÐòʱ²Å»á³É¹¦ÔËÐС£
1.2ϵͳµ÷ÓÃ
ϵͳµ÷Ó÷¢ÉúÔÚÓû§½ø³Ì£¬Í¨¹ýÒ»Ð©ÌØÊâµÄº¯ÊýÀ´ÇëÇó
ÄÚºËÌṩ·þÎñ¡£Õâʱ£¬Óû§½ø³Ì±»¹ÒÆð£¬ÄÚºËÑéÖ¤Óû§ÇëÇ󣬳¢ÊÔÖ´Ðв¢°Ñ½á¹û·´À¡¸øÓû§½ø³Ì£¬½Ó×ÅÓû§½ø³ÌÖØÐÂÆô¶¯¡£Ò»°ãµ±Ç°ÏµÍ³µÄϵͳµ÷ÓÃ×÷ΪһÕűísys_call_table½øÐж¨ÒåµÄ£¬ÊÇÓÉÖ¸ÏòʵÏÖ¸÷ÖÖϵͳµ÷ÓõÄÄں˺¯ÊýµÄº¯ÊýÖ¸Õë×é³ÉµÄ±í¡£¾ßÌå²ÎÊý²Î¼ûLinuxÄÚºËÔ´´úÂëarch/i386/kernel/entry.SÎļþÖС£
1.3¹³×Óº¯Êý
¹³×Ó(HOOK)ÊÇLinuxϵͳÖзdz£ÖØÒªµÄϵͳ½Ó¿Ú£¬ÓÃËü¿ÉÒԽػñ²¢´¦ÀíË͸øÆäËûÓ¦ÓóÌÐòµÄÏûÏ¢£¬À´Íê³ÉÆÕͨӦÓóÌÐòÄÑÒÔʵÏֵŦÄÜ¡£¹³×Ó¿ÉÒÔ¼àÊÓϵͳ»ò½ø³ÌÖеĸ÷ÖÖʼþÏûÏ¢£¬½Ø»ñ·¢ÍùÄ¿±êµÄÏûÏ¢²¢½øÐд¦Àí¡£ÕâÑù¾Í¿ÉÒÔÔÚϵͳÖа²×°×Ô¶¨ÒåµÄ¹³×Ó£¬¼àÊÓϵͳÖÐÌØ¶¨Ê¼þµÄ·¢Éú£¬Íê³ÉÌØ¶¨µÄ¹¦ÄÜ£¬±ÈÈç½Ø»ñ¼üÅÌ¡¢Êó±êµÄÊäÈ룬ÆÁĻȡ´Ê£¬ÈÕÖ¾¼àÊӵȵȡ£¿É¼û£¬ÀûÓù³×Ó¿ÉÒÔʵÏÖÐí¶àÌØÊâ¶øÓÐÓõŦÄÜ¡£
2¼üÅ̹¤×÷»úÀí
CPU¶ÔÍⲿÉ豸µÄ¹ÜÀíÊÇͨ¹ýÖжϳÌÐò½øÐе쬼üÅÌÒ²ÊÇÒ»ÖÖÍⲿÉ豸£¬Òò´Ë£¬CPU¶Ô¼üÅ̵ĹÜÀíÒ²ÊÇͨ¹ýÖжϽøÐеġ£µ±Äã»÷´ò¼üÅ̵Äʱºò£¬¼üÅÌ¿ØÖÆÆ÷»áÏòCPUÌá³öÖжÏÉêÇ룬CPUÏìÓ¦´ËÖжϽøÐд¦Àí£¬Õâ¾ÍÍê³ÉÁËÒ»´ÎºÜ¼òµ¥Óë