linux 2.6Ô´´úÂëÇé¾°·ÖÎö±Ê¼ÇÖ®ÖжÏÓëÒì³£4
IDTµÄ³õ²½³õʼ»¯
ÔÚʵģʽʱ£¬idt±»³õʼ»¯²¢ÓÉbiosÀý³ÌʹÓá£Ò»µ©linux½Ó¹Ü£¬idt¾Í±»ÒƵ½ramµÄÁíÒ»¸öÇøÓò£¬²¢½øÐеڶþ´Î³õʼ»¯£¬ÒòΪlinuxûÓÐÀûÓÃÈκÎbiosÀý³Ì¡£
IDT´æ·ÅÔÚidt_table±íÖУ¬ÓÐ256¸ö±íÏî¡£6×Ö½ÚµÄidt_descr±äÁ¿Ö¸¶¨ÁËidtµÄ´óСºÍËüµÄµØÖ·£¬Ö»Óе±ÄÚºËÓÃlidt»ã±àÖ¸Áî³õʼ»¯idtr¼Ä´æÆ÷ʱ²ÅÓõ½Õâ¸ö±äÁ¿¡£
ÔÚÄں˳õʼ»¯¹ý³ÌÖУ¬setup_idt()»ã±àÓïÑÔº¯ÊýÓÃͬһ¸öÖжÏÃÅ£¨Ö¸Ïòignore_int()Öжϴ¦Àí³ÌÐò£©À´Ìî³äËùÓÐÕâ256¸öidt_table±íÏ
setup_idt:
lea ignore_int,%edx
movl $(__KERNEL_CS << 16),%eax
movw %dx,%ax /* selector = 0x0010 = cs */
movw $0x8E00,%dx /* interrupt gate - dpl=0, present */
lea idt_table,%edi
mov $256,%ecx
rp_sidt:
movl %eax,(%edi)
movl %edx,4(%edi)
addl $8,%edi
dec %ecx
jne rp_sidt
ret
½ô½Ó×ųõʼ»¯£¬Äں˽«ÔÚidtÖнøÐеڶþ±é³õʼ»¯£¬ÓÃÓÐÒâÒåµÄÏÝÚåºÍÖжϴ¦Àí³ÌÐòÌæ»»Õâ¸ö¿Õ´¦Àí³ÌÐò¡£Ò»µ©Õâ¸ö¹ý³ÌÍê³É£¬¶Ô¿ØÖƵ¥Ôª²úÉúµÄÿ¸ö²»Í¬µÄÒì³££¬idt¶¼ÓÐÒ»¸öרÃŵÄÏÝÚå»òÕßϵͳÃÅ£¬¶ø¶ÔÓڿɱà³ÌÖжϿØÖÆÆ÷È·ÈϵÄÿһ¸öirq,idt¶¼½«°üº¬Ò»¸öרÃŵÄÖжÏÃÅ¡£
cpu²úÉúµÄ´ó²¿·ÖÒì³£¶¼ÓÉlinux½âÊÍΪ³ö´íµÄÌõ¼þ¡£µ±ÆäÖÐÒ»¸öÒì³£·¢Éúʱ£¬Äں˾ÍÏòÒýÆðÒì³£µÄ½ø³Ì·ÅËÍÒ»¸öÐźÅÏòËü֪ͨһ¸ö·´³£Ìõ¼þ¡£
Òì³£´¦Àí³ÌÐòÓÐÒ»¸ö±ê×¼µÄ½á¹¹£¬ÓÉÈý²¿·Ö×é³É£º
1.ÔÚÄں˶ÑÕ»Öб£´æ´ó¶àÊý¼Ä´æÆ÷µÄÄÚÈÝ£¨Óûã±àÓïÑÔʵÏÖ£©
2.Óø߼¶µÄcº¯Êý´¦ÀíÒì³£¡£
3.ͨ¹ýret_from_exception()º¯Êý´ÓÒì³£´¦Àí³ÌÐòÍ˳ö¡£
±ØÐë¶Ôidt½øÐÐÊʵ±µÄ³õʼ»¯£¬Ê¹µÃÿ¸ö±»È·ÈϵÄÒì³£¶¼ÓÐÒ»¸öÒì³£´¦Àíº¯Êý¡£trap_init()º¯ÊýµÄ¹¤×÷Êǽ«Ò»Ð©×îÖÕÖµ²åÈëµ
Ïà¹ØÎĵµ£º
tty0£6ÊÇlinux±¾µØÖÕ¶Ë£¬pts/xÊÇÔ¶³ÌµÇ½ÐèÒªµÄÖÕ¶Ë£¬±ÈÈçijÈËÒªtelnetµ½ÄãµÄ»ú×Ó£¬¾ÍÐèÒªÄãµÄϵͳÓÐpts/x¡£
»ù±¾¸ÅÄ
¡¡
¡¡1. tty(ÖÕ¶ËÉ豸µÄͳ³Æ):
¡¡¡¡ttyÒ»´ÊÔ´ÓÚTeletypes£¬»òÕßteletypewriters£¬ÔÀ´Ö¸µÄÊǵ紫´ò×Ö»ú£¬ÊÇͨ¹ý´®ÐÐÏßÓôòÓ¡»ú¼üÅÌͨ¹ýÔĶÁºÍ·¢ËÍÐÅÏ¢µÄ¶«Î÷£¬ºóÀ´Õâ¶«Î÷±»¼üÅÌÓëÏÔʾÆ÷È¡´ú ......
ARP (Address Resolution Protocol) ÊÇÓÃÀ´°ÑIPµØÖ·×ª»¯³É»úÆ÷µÄÍø¿¨ÎïÀíµØÖ·£¨Ó²¼þµØÖ·£©¡£µ±Ò»Ì¨»úÆ÷ÒªÏòÁíÍâһ̨ÎïÀíÉÏÏàÁ¬µÄ»úÆ÷·¢ËÍIP°üµÄʱºò£¬ËüÒªÏȼì²éÒ»ÏÂ×Ô¼ºµÄARP»º´æ£¬ÊÔͼÕÒµ½¶Ô·½µÄÓ²¼þµØÖ·£¬Èç¹ûÕÒ²»µ½µÄ»°£¬°ÑÒª·¢Ë͵ÄIP°ü·ÅÈëµÈ´ý¶ÓÁÐÖУ¬½Ó×Å·¢³öÒ»¸öARPÇëÇ󡣵ȵ½ÊÕµ½ARPÓ¦´ðµÄʱºò£¬¹¹ÔìºÃÔÀ´ÕýÔڵȴ ......
Linux ÖлñµÃ±¾»úÍø¿¨MACµØÖ·ºÜ¼òµ¥£¬ioctl()¾ÍOK¡£¿ÉÈçºÎ»ñµÃ¾ÖÓòÍøÆäËûÖ÷»úµÄMACµØÖ·ÄØ…Á´Â·²ã¹ã²¥ARPÇëÇó£¬È»ºó½ÓÊÕARPÏìÓ¦¡£ÊµÏÖ½é¸ö¹¦ÄÜÆäʵÒÑÓÐÏÖ³ÉÈý·½¿â¿ÉÓã¬Èçlibnet¡£²»¹ýÏë¼ÓÉî¶ÔÐÒéµÄÀí½âºÍLinuxÍøÂç±à³ÌAPIµÄÀí½â£¬jiayi »¹ÊǾö¶¨ÓÃLinuxµÄPF_PACKET×Ô¼ºÊµÏÖ£¬¸Ä°¡¸Ä£¬ÖÕÓڳɹ¦¡«ÒÔÏÂÊÇ´óÌå˼·
1. ......
¸ß¼¶¿É±à³Ì¿ØÖÆÆ÷
Èç¹ûϵͳֻÓÐÒ»¸öcpu£¬Ö÷picÊä³öÏßÒÔÖ±½ØÁ˵±µÄ·½Ê½Á¬½Óµ½cpuµÄintrÒý½Å¡£Èç¹ûϵͳÖаüº¬Á½¸ö»ò¶à¸öcpu,¾ÍÐèÒª¸ü¼Ó¸´ÔÓµÄpic.
intel´Óp3¿ªÊ¼ÒýÈëi/o¸ß¼¶¿É±ä³É¿ØÖÆÆ÷£¨APIC£©×é¼þ¡£80x86΢´¦ÀíÆ÷µ±Ç°ËùÓеÄcpu¶¼º¬ÓÐÒ»¸ö±¾µØapic¡£Ã¿¸ö±¾µØapic¶¼ÓÐ32λ¼Ä´æÆ÷£¬Ò»¸öÄÚ²¿Ê±ÖÓ£¬Ò»¸ö±¾µØ¶¨ÊÇÉ豸ÒÔ¼°Îª±¾µ ......