Ä¿Ç°´óÐ͵ÄÈí¼þ¹¤³ÌÖдó¶¼Ê¹ÓùúÍâµÄÈí¼þ²âÊÔƽ̨£¬ÎÒÃÇÔÚ²âÊÔ¹¤³ÌÖÐʹÓ÷¨¹úµÄLOGISCOPE²âÊÔƽ̨¶ÔCÓïÑÔ¿ª·¢µÄʵʱǶÈëʽÈí¼þ½øÐвâÊÔ¡£

ÓÉÓÚʵʱǶÈëʽÈí¼þÖ÷ÒªÊǶÔÍⲿ½Ó¿ÚÉ豸½øÐпØÖÆ£¬¶ø±»ËͼìµÄÈí¼þÐèÒª´óÁ¿²»Í¬µÄÓ²¼þ»·¾³£¬ÔÚ½øÐвâÊÔʱ£¬ÓÉÓÚÎÞ·¨½¨Á¢´óÁ¿²»Í¬µÄ½Ó¿ÚÉ豸µÄÓ²¼þ·ÂÕæ»·¾³£¬Ã¿µ±Ö´ÐÐÊäÈëÊä³öÖ¸Áîʱ£¬³ÌÐò±ãÎÞ·¨¼ÌÐøÔËÐУ¬Òò´Ë£¬²âÊÔÈí¼þÎÞ·¨ÍêÕûµØ¸²¸ÇÕû¸ö³ÌÐòµÄ¸÷¸ö·ÖÖ§ºÍÓï¾ä¡£Í¬Ê±£¬±»²âÊÔÈí¼þ³£³£ÐèÒª¶à¸öÄ£¿éͬʱ¶Ôij¸öÍâÉè½øÐй²Í¬²âÊÔ£¬ÐèҪͨ¹ýÍøÂç»·¾³½øÐм¯ÖвâÊÔ¡£

ΪÁËÍê³É¶Ô¸÷ÖÖʵʱǶÈëʽÈí¼þµÄ²âÊÔ¹¤×÷£¬ÎÒÃÇÑÐÖÆ¿ª·¢ÁË»ùÓÚÍøÂçµÄ½Ó¿ÚÉ豸µÄÈí¼þ·ÂÕæ»·¾³£¬Ê¹µÃÓû§³ÌÐòÔËÐÐʱ²»ÔÙÐèÒªÕæÕýµÄ½Ó¿ÚÓ²¼þÉ豸£¬¶øÊÇÓë·ÂÕæÈí¼þ½øÐÐͨѶ£¬½»»»Êý¾Ý£¬´Ó¶øʹµÃ±»²â³ÌÐòÔÚÍÑÀëÓ²¼þµÄ»·¾³ÖÐ˳ÀûÔËÐС£±¾¿ÎÌâÖ÷Òª½â¾öCÓïÑԺͻã±àÓïÑÔ»ìºÏ±à³ÌÖУ¬°ÑËùÓÐÔ­À´¿ØÖÆÍâÉèµÄÊäÈëÊä³öÖ¸ÁÐ޸ijÉÓë·ÂÕæÈí¼þ½øÐÐͨÐŵĺ¯Êý£¬Í¬Ê±£¬°ÑÔ­À´ÓÉÓ²¼þ´¥·¢µÄÖжϴ¦Àí¹¦ÄÜתÓÉÈí¼þ´¥·¢£¬ÒÔ¼°Í¨¹ýÍøÂç»·¾³Íê³É¶àÄ£¿éµÄ¼¯ÖвâÊÔ¡£

±¾¿ÎÌâµÄÒâÒåÔÚÓÚ½¨³ÉÒ»ÖÖͨÓõķ½·¨£¬Ê¹µÃ²»Í¬Èí¼þ¿ª·¢µÄ³ÌÐò¶¼Äܹ»Ê¹ÓÃÕâЩ¹¦ÄÜÄ£¿éÓë½Ó¿Ú·ÂÕæÈí¼þ½øÐÐͨÐÅ£¬´Ó¶ø˳ÀûµØ½øÐÐÈí¼þ²âÊÔ¡£

±»²âÈí¼þµÄÔËÐл·¾³¾ø´ó¶àÊýÊÇ»ùÓÚDOSµÄ£¬ÔÚ·ÂÕæ»·¾³Ï½øÐвâÊÔʱ£¬ÓÉÓÚÔ­À´µÄÓ²¼þ»·¾³²»ÔÙ´æÔÚ£¬Òò´ËÒªÇó¶Ô±»²âÈí¼þ½øÐÐÏàÓ¦µÄÐ޸ģ¬Ê¹ÆäÔÚÒ»¸öеÄϵͳģÐ͵±ÖÐÔËÐУºÔ­À´ÓëÓ²¼þ½øÐÐI/OµÄÖ¸Á±ä³É¶Ô·ÂÕæÈí¼þͨѶ¶¯Ì¬Á´½Ó¿âÖк¯ÊýµÄµ÷Óã»ÓÉÓ²¼þ´¥·¢µÄÖжÏÐźűä³ÉÀ´×Ô·ÂÕæÈí¼þµÄÏûÏ¢£»¸üÖØÒªµÄÊÇ£¬Ô­À´ÓÉCPU¸ºÔðµ÷¶ÈµÄÖжϷþÎñº¯Êý±ØÐëÓÉеÄÄ£ÐÍÀ´¸ºÔð£¨ÒòΪ²»ÔÙÓÐÓ²¼þÖжÏÐźţ©£¬¶øÓÉÓÚDOSÊÇÒ»¸öµ¥ÈÎÎñµÄ²Ù×÷ϵͳ£¬ÏµÍ³Ä£ÐÍÐèÒª½â¾öÒÔϵÄÎÊÌ⣺ϵͳÈçºÎÔÚ³ÌÐòÔËÐеÄʱ¿Ì¼ì²âµ½Í¨¹ýÍøÂç·¢¹ýÀ´µÄ¡°ÖжÏÐźš±£¬ÈçºÎÖжϵ±Ç°µÄ³ÌÐò£¬È¥Ö´ÐÐÏàÓ¦µÄÖжϷþÎñº¯Êý£¬ÈçºÎ¾ßÓÐÖжÏǶÌ׵ŦÄÜ¡£

»ùÓÚÒÔÉÏÒªÇó£¬ÏµÍ³Ä£ÐͲÉÓÃÒÔÏÂÁ½ÖÖ£º

1¡¢»ùÓÚDOSµÄ¶àÈÎÎñµ÷¶ÈϵͳģÐÍ
2¡¢»ùÓÚWindows¶àÏ̻߳·¾³µÄϵͳģÐÍ

2£®»ùÓÚDOS»·¾³µÄ¶àÈÎÎñµ÷¶ÈÄ£ÐÍ

2.1ʵÏÖÔ­Àí

ÏëÒªÔÚDOS»·¾³ÏÂʵÏÖ¶àÈÎÎñµ÷¶È£¬±ØÐëʹÿ¸öÈÎÎñ¾ßÓÐ×Ô¼ºµÄ¶ÑÕ»¡£Ê×ÏÈ£¬Õ»ÓÃÀ´ÊµÏÖÈÎÎñÇл»£¬Æä´Î£¬ËüÓÃÀ´´æÖüÈÎÎñµÄ¾Ö²¿±äÁ¿¡£

ÈÎÎñµÄÇл»ÊÇͨ¹ýµ÷ÓÃÒ»¸ö×Ó³ÌÐòÀ´ÊµÏֵģ¬¸Ã×Ó³ÌÐò½«¶ÑÕ»Ö¸ÕëÓÉÔ­À´Ö¸ÏòÀÏÈÎÎñµÄ¶ÑÕ»ÖÃΪָÏòÐÂÈÎÎñµÄ¶ÑÕ»¡£³ÌÐò·µ»Øʱ£¬ÐµÄÈÎÎñÖ¸ÁîÖ¸Õ루IP£©´ÓÕ»Öе¯³ö¡£ÐÂÈÎÎñ¿ªÊ¼×Ô¶¯¿ªÊ¼Ö´ÐС£

Õâ¸ö¸ºÔðµ÷¶ÈµÄ×Ó³ÌÐòÊÇͨ¹ýʱÖÓÖжÏÀ´¶¨ÆÚ´¥·¢µÄ¡£µ±²úÉúʱÖÓÖжÏʱ£¬ÐèÒª×öÁ½¼þÊÂÇé¡£Ê×ÏÈ£¬½«±êÖ¾£¨Flags£©¼Ä´æÆ÷µÄÄÚÈÝѹÈëÕ»ÖУ¬Æä´Î£¬½ô¸úÔÚÖ¸ÁîÖ¸Õ루IP£©Ö®ºó£¬½«CS£¨´úÂë¶Î£©Ò²Ñ¹ÈëÕ»ÖС£ºó£¬½«ÖжϷþÎñ×Ó³ÌÐòµÄ¶ÎµØÖ·×°ÈëCS¼Ä´æÆ÷ÖУ¬½«Æ«Ö·×°ÈëIP¼Ä´æÆ÷ÖÐ.ÕâÑù¿ÉÒÔʹISR¿ªÊ¼ÔËÐÐ.ÖжϷµ»Øʱ£¬CS£¬IPºÍFlags¼Ä´æÆ÷µÄÄÚÈÝ×Ô¶¯µ¯³ö¡£ÎªÁËʵÏÖÈÎÎñµÄµ÷¶È£¬ÐµÄʱÖÓÖжϷþÎñº¯ÊýÒªÍê³ÉÁ½Ï×÷¡£Ê×ÏÈ£¬Ëü½«³ýÁËÕ»Ö¸Õ루SP£©ºÍÕ»¶Î£¨SS£©¼Ä´æÆ÷Ö®ÍâµÄËùÓмĴæÆ÷µÄÖµ¶¼´æµ½Õ»ÖС££¨SPºÍSSµÄÖµ´æÔÚÁíÍâµÄλÖã©¡£Æä´Î£¬Ëü¸Ä±äSSºÍSP¼Ä´æÆ÷µÄÖµ£¬Ê¹ËüÃÇÖ¸ÏòÁíÒ»¸öÈÎÎñµÄ¶ÑÕ»¡£Òò´Ë£¬µ±ISR·µ»Øʱ£¬ÐµÄÈÎÎñµÄ¶ÑÕ»±»µ¯³öµ½¸÷¼Ä´æÆ÷ÖУ¬ÕâʹµÃ»úÆ÷µÄ״̬ÊÇÕë¶ÔеÄÈÎÎñµÄ¡£ÓÉÓÚIPÖÐÒ²Êǵ¯³öµÄ¼Ä´æÆ÷µÄÖµ£¬Òò´ËÐÂÈÎÎñ¿ªÊ¼Ö´ÐС£

ÔÚÈÎÎñÔËÐÐÇ°£¬Ëü±ØÐë°´Ò»¶¨·½Ê½Ê¹¶ÑÕ»³õʼ»¯£¬ÕâÑùʹµÃµ±µÚÒ»¸öʱ¼äƬµ½À´Ê±£¬´ÓÕ»Öе¯³öµÄÖµÄܹ»Ê¹¸ÃÈÎÎñ´ÓÍ·¿ªÊ¼ÔËÐС£Òò´Ë£¬ÈÎÎñµÄ¶ÑÕ»±ØÐë³õʼ»¯²¢´æ·ÅÕýÈ·µÄ¼Ä´æÆ÷Öµ£¬Í¬Ê±Ö¸ÁîÖ¸ÕëÒ²±ØÐëÖ¸Ïò³ÌÐòÖеĵÚÒ»ÌõÖ¸Áî¡£

2.2µ÷¶ÈÄÚºËʵÏÖËùÓõ½µÄÊý¾Ý½á¹¹

interrupt ÀàÐÍ
µ±ËµÃ÷Ò»¸öº¯ÊýΪinterruptÀàÐÍʱ£¬Ëü¸æËß±àÒëÆ÷×Ô¶¯±£´æËùÓмĴæÆ÷£¨spºÍss³ýÍ⣩µÄÖµ£¬²¢ÇÒIRETÖ¸ÁîÖÕÖ¹¸Ãº¯Êý¡£Ã¿µ±½øÈëµ½interruptº¯Êýʱ£¬Ö´ÐÐÏÂÁÐÖ¸Á

push ax£¬ push bx£¬ push cx£¬

push dx£¬ push es£¬ push ds

push si£¬ push di£¬ push bp

·¢ÉúÖжÏʱ£¬CPU×Ô¶¯½«Flags£¬csºÍIP¼Ä´æÆ÷ѹջ¡£Òò´Ë£¬ÔÚinterruptº¯ÊýÈë¿Ú´¦£¬¶ÑÕ»Èçͼ2.2.1.2Ëùʾ¡£ÎÒÃǽ«ÀûÓÃinterruptº¯ÊýµÄÕ»µÄ°²ÅÅ·½Ê½¶ÔÒªÖ´ÐеÄÈÎÎñµÄ¶ÑÕ»½øÐгõʼ»¯¡£

¡¡

Bp<-top of stack

DI
SI
DS
ES
DX
CX
BX
AX
IP
CS

PLAGS

¡¡

ÈÎÎñÖÐʹÓõļĴæÆ÷µÄÊý¾Ý½á¹¹
typedef struct int_regs{

unsigned bp£»

unsigned di£»

unsigned si£»

unsigned ds£»

unsigned es£»

unsigned dx£»

unsigned cx£»

unsigned bx£»

unsigned ax£»

unsigned ip£»

unsigned cs£»

unsigned flags£»

}£»

´Ë½á¹¹Ñϸñ°´ÕÕinterruptº¯ÊýÈë¿Ú´¦¶ÑÕ»µÄ½á¹¹¶¨Ò壬³õʼ»¯Ê±£¬½«½á¹¹ÖеĴúÂë¶Î£¨CS£©£¬Ö¸ÁîÖ¸Õ루IP£©ÉèÖóɹ¹³É´ËÈÎÎñµÄº¯ÊýµÄ¶ÎµØÖ·ºÍÆ«ÒƵØÖ·¡£

ÓÃÓÚÈÎÎñ¹ÜÀíµÄÊý¾Ý½á¹¹
struct task_struct{

unsigned sp£»

unsigned ss£»

unsigned char *stck£»

unsigned LastTask£»

unsigned IntNum;

unsigned Status£»

}

¡¡µ±Ö´ÐÐÈÎÎñÇл»Ê±£¬spºÍss±£´æµ±Ç°Õ»Ö¸ÕëºÍ¶ÑÕ»¶ÎµØÖ·£¬¶øÈÎÎñµ÷¶È³ÌÐò½«µ±Ç°Õ»Ö¸Õ루_SP£©ºÍÕ»µØÖ·£¨_SS£©ÉèÖóÉÏÂÒ»¸ö½«ÒªÖ´ÐеÄÈÎÎñµÄÕ»Ö¸ÕëºÍÕ»µØÖ·£¬µ±µ÷¶È³ÌÐò½áÊøÔËÐÐʱ£¬ÓÉÓÚ´ÓÕ»Öе¯³öµÄ¸÷¸ö¼Ä´æÆ÷£¬°üÀ¨´úÂë¶ÎºÍÖ¸ÁîÖ¸Õ붼ÊÇÖ¸ÏòÐÂÈÎÎñµÄ£¬Òò´Ë£¬ÐÂÈÎÎñ½«×Ô¶¯ÔËÐУ¬´Ó¶ø´ïµ½ÈÎÎñÇл»µÄÄ¿µÄ¡£

2.3Ó¦ÓöàÈÎÎñµ÷¶È¹¦ÄÜʵÏÖ¶ÔÖжϵķÂÕæ´¦Àí

ÓÉÓÚ±»²âÊÔµÄÓû§Ô´³ÌÐòÊǹ¤×÷ÔÚ·ÂÕæ»·¾³Ï£¬ÎÞ·¨½ÓÊÕÓ²¼þ²úÉúµÄÖжÏÐźŴӶø×Ô¶¯Ö´ÐÐÏàÓ¦µÄÖжϷþÎñ³ÌÐò¡£Òò´Ë£¬¸Ä±àºóµÄ³ÌÐòÓ¦¸ÃÄܹ»¶¨ÆÚ¼ì²éÊÇ·ñÓдӷÂÕæÈí¼þ·¢¹ýÀ´µÄÖжÏÐźţ¬ÈôÓУ¬ÔòÖжϵ±Ç°³ÌÐòµÄÖ´ÐУ¬×ªÈëÏàÓ¦µÄÖжϷþÎñº¯ÊýÖ´ÐС£

ÒòΪÓû§µÄ³ÌÐòµ±ÖÐÏÔʽµØÉèÖÃÖжÏÏòÁ¿£¬ÔÚ¸ÄдÓû§µÄ³ÌÐòʱ£¬½«Ã¿¸öÖжϷþÎñº¯ÊýÈë¿Ú¶¼ÖÃÓÚÒ»¸öÏòÁ¿Êý×éµ±ÖУ¬´ËÊý×鼴Ϊȫ¾ÖÖжÏÏòÁ¿±í£¬½«ÈÎÎñºÅÓëÏàÓ¦µÄÖжϺÅÒ»Ò»¶ÔÓ¦¡£

µ±Ê±ÖÓÖжϴ¥·¢ÈÎÎñµ÷¶È³ÌÐòʱ£¬µ÷¶È³ÌÐòÊ×Ïȼì²âÓÉ·ÂÕæÈí¼þ·¢À´µÄÖжÏÐźţ¬Èç¹ûÓУ¬Ôòµ÷¶È³ÌÐòÔÚµ±Ç°ÔËÐеÄÈÎÎñµÄÊý¾Ý½á¹¹Öб£´æ¶ÑÕ»¶Î¶ÎµØÖ·¼Ä´æÆ÷£¨_SS£©¡¢Õ»Ö¸Õë¼Ä´æÆ÷£¨_SP£©¡¢µ±Ç°ÈÎÎñºÅ£¬²¢½«¶ÑÕ»¶Î¶ÎµØÖ·¼Ä´æÆ÷ºÍÕ»Ö¸Õë¼Ä´æÆ÷ÉèÖóÉеÄÖжϷþÎñ³ÌÐòËùÔÚµÄÈÎÎñµÄÏàÓ¦µÄÖµ£¬Ê¹µÃµ±µ÷¶È³ÌÐò·µ»Øʱ£¬Äܹ»´ÓеÄÈÎÎñ¿ªÊ¼ÔËÐС£È»ºóÉú³ÉÒ»¸öеÄÈÎÎñ£¬ÔÚ´ËÈÎÎñµ±Öе÷¶È¶ÔÓ¦ÓÚ´ËÖжϺŵÄÖжϷþÎñ³ÌÐòÕâÑù¿ÉÒÔʵÏÖÖжϹ¦ÄÜ¡£

3.»ùÓÚWindows¶àÏ̻߳·¾³µÄϵͳģÐÍ

3.1ʵÏÖÔ­Àí

¿¼ÂDz¿·ÖÓÉCÓïÑÔ±àдµÄʵʱǶÈëʽ³ÌÐò¾­¹ýÊʵ±µÄÐ޸ĿÉÒÔÓÉVC±àÒëºó£¬ÔÚWindows»·¾³ÖÐÔËÐС£Òò´Ë¿ÉÒÔÀûÓÃWindowsµÄ¶àÏß³ÌÌØÐÔ¹¹ÔìϵͳģÐÍ£º°ÑÓû§µÄÖ÷º¯Êý·ÅÔÚϵͳ³õʼ»¯Ê±Éú³ÉµÄÒ»¸öÖ÷Ï̵߳±ÖÐÔËÐУ¬Í¬Ê±£¬ÏµÍ³Ö÷º¯Êý¼à²âÓÉSocket¶Ë¿Ú·¢À´µÄÊý¾Ý£¬Èç¹ûÊÇÒ»¸öÖжϲúÉúÐźţ¬ÏµÍ³Ö÷º¯Êý¹ÒÆðµ±Ç°ÕýÔÚÖ´ÐеÄỊ̈߳¬ÐÂÉú³ÉÒ»¸öеÄỊ̈߳¬²¢ÔÚÐÂÏß³ÌÖÐÖ´ÐÐÏàÓ¦µÄÖжϷþÎñº¯Êý¡£

3.2ϵͳµÄ½á¹¹

ÓÉÓÚCSocketÀ಻Äܹ»Óɸ÷¸öÏß³ÌÖ®¼ä¹²Ïí£¬¶ø¸÷¸öÏß³ÌÄÚ²¿ÓÖҪͨ¹ýSocket¶Ë¿Ú½ÓÊպͷ¢ËÍÊý¾Ý£¬Òò´ËÓ¦½¨Á¢¸ßЧ¶øÓÖ·ÀÖ¹¸÷Ïß³ÌÖ®¼ä³åÍ»µÄ»úÖÆ£¬ÏÂÃæÊÇϵͳµÄ½á¹¹Í¼:

¡¡

µ±Ïß³ÌÐèҪͨ¹ýSocket½Ó¿ÚÊÕ·¢Êý¾Ýʱ£¬Ê×Ïȼì²â/ÉèÖÃÏàÓ¦º¯ÊýµÄÐźÅÁ¿£¬Èô´Ë×ÊÔ´²»ÄÜʹÓã¬ÔòÏ̱߳»×Ô¶¯¹ÒÆð¡£ÏµÍ³µÄÖ÷µ÷º¯Êý¸ºÔðÂÖѯÀ´×ÔSocket½Ó¿ÚµÄÊý¾ÝÒÔ¼°¸÷¸öÐźÅÁ¿×ÊÔ´£¬µ±×ÊÔ´¿ÉÓÃʱ£¬»½ÐÑÏàÓ¦µÄỊ̈߳¬Íê³ÉÆäÇëÇóµÄ²Ù×÷¡£Èç¹û½ÓÊÕµ½ÖжϲúÉúÐźţ¬ÔòÉú³ÉеÄỊ̈߳¬²¢¹ÒÆðµ±Ç°µÄỊ̈߳¬´Ó¶øÍê³É¶ÔÖжÏÇëÇóµÄÏìÓ¦¡£

4.½áÊøÓï

±¾ÎĽéÉÜÁËÕë¶ÔʵʱǶÈëʽÈí¼þµÄ²âÊÔ¹¤¾ßµÄÑо¿ÓëÍêÉƹ¤×÷£¬¸ù¾Ý²»Í¬µÄÈí¼þÌص㣬

¹¹ÔìÁËÁ½ÖÖϵͳģÐÍ¡£Í¨¹ýʵ¼ÊµÄʹÓ㬶¼´ïµ½Á˱ȽÏÂúÒâµÄ½á¹û¡£

ÕâÁ½ÖÖϵͳģÐ;­¹ýÊʵ±µÄÐ޸ģ¬¿ÉÒÔÓ¦ÓÃÔÚÆäËüÓïÑÔ±àдµÄÈí¼þÉÏ£¬´Ó¶ø¿ÉÒÔʵÏÖͨÓõÄÄ£¿é¹¦ÄÜ¡£

²Î¿¼ÎÄÏ×

ÂÀÇ¿ Ñî¼¾ÎÄµÈ CÓïÑÔµÄDOSϵͳ³ÌÐòÉè¼Æ Ç廪´óѧ³ö°æÉç
ÀîãåËï TURBO C ³£×¤ÄÚ´æʵÓóÌÐò¼°´°¿ÚʽÈí¼þ±à³Ì¼¼Êõ ±±¾©¿Æº£
³Â×Úº£ »ùÓÚC/SÌåϵµÄ¹¤Òµ¹ý³Ì·ÂÕæÄ£Ð͵÷ÊÔ»·¾³.¼ÆËã»úÓ¦ÓÃ.1999£¬4
Õź£·ª Èí¼þ¹¤³Ìµ¼ÂÛ£®Ç廪´óѧ³ö°æÉ磬1995
ÖìÀûȺ Èí¼þ²âÊÔÄ£Ðͼ°ÆäʵÏÖ¡£ºþÄÏʦ·¶´óѧ×ÔÈ»¿Æѧѧ±¨1998 9
Íõ è± »ùÓÚ¸²¸ÇµÄÈí¼þ²âÊÔ¼¼ÊõÔÚʵʱǶÈëʽÈí¼þÖеÄÓ¦ÓÃÑо¿. ¼ÆËã»ú¹¤³ÌÓëÉè¼Æ 1998 12
VOL.19 No.6

ºé Ñó Èí¼þ²âÊÔ·½·¨µÄÓ¦ÓÃÑо¿. ¹âµç¶Ô¿¹ÓëÎÞÔ´¸ÉÈÅ 1998 £¬2
Ö£ÈË½Ü ¼ÆËã»úÈí¼þ²âÊÔ¼¼ÊõÇ廪´óѧ³ö°æÉç1990