Chinaunix首页 | 论坛 | 博客
  • 博客访问: 712645
  • 博文数量: 94
  • 博客积分: 2812
  • 博客等级: 少校
  • 技术积分: 1555
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-08 21:28
文章分类

全部博文(94)

文章存档

2012年(23)

2011年(39)

2010年(14)

2009年(18)

分类: LINUX

2011-09-28 17:19:56

中断概述: 
      什么是中断,简单地说就是CPU在忙着作自己的事情,这时候硬件(比如说键盘按了一下)触发了一个电信号,这个信号通过中断线到达中断控制器(cpu),控制器接受到这个信号,向CPU发送INT信号申请CPU来执行刚才的硬件操作,并且将中断类型号也发给CPU,此时CPU就丢下自己正在做的事情,但不是随便丢到旁边而是保存了当前正在做的事情的相关资料,然后去处理这个申请,根据中断类型号找到它的中断向量(也就是中断程序在内存中的地址),然后去执行这段程序(这段程序是已经写好的,在内存中),执行完后再向控制器发送一个INTA信号表示我已经处理完你刚才的申请。这个时候CPU就可以继续做它刚才被打断做的事情了,这个时候刚才保存的相关信息就帮助CPU接着执行下面的程序,而不至于忘记自己刚才正在做什么。 

上面说了一大堆关键词有四个: 
      中断源:这里的中断源是指打断CPU的事件,没有中断源中断无从谈起,它可以是硬件的也可以是软件的。
      CPU:不用说中断就是要来用CPU来处理一些事情的 
      中断控制器:硬件中断源与CPU之间的桥梁,没有它中断就无法被CPU所知道。 
      中断服务程序:你打断了CPU,CPU就得根据这个程序来为你办事 
中断的分类: 
      硬件中断,总的来说可以将中断分为内部中断和外部中断,内部中断也叫软中断是由CPU产生的,当处理起执行时遇到了由于程序员编程而导致的错误指令时,如除数为0,这些就会产生内部中断,而外部中断(硬件中断)一般都是硬件所引起的中断比如说键盘等。 
      中断号: 
      这里所说的中断号是指外部中断即硬件中断的编号,系统为每个“中断请求线”分配了一个号,当CPU不能满足外设要求的中断时,就有了多个外设共享一个中断号。中断号是用来表明是那个设备产生了中断,比如作为时钟中断的IRQ0。这样CPU就可以知道是那个设备产生了中断从而去处理它。 
      中断向量: 
      前面所将的中断号与中断向量之间的关系是:中断号+32 = 中断向量。中断向量的作用将在下面介绍。 
      中断描述符表(IDT):一个表,也叫中断向量表,每个表项叫做门描述符(gate descriptor)占8个字节,简单的说是用来存放中断处理程序入口函数地址,当然还包括了一些其他信息。其作用就是当一个中断发生时我们根据它的中断号确定其中断向量,然后在此表中找到它的入口函数从而执行它。这个表存放在内存中的一片区域中,那么我们如何找到这个表呢?这就需要一个系统寄存器中断描述符寄存器IDTR,在系统初始化时有一条汇编指令LIDT便可将中断描述符表的地址装进IDTR中,IDTR48位,在低字(低16位)中装的是界限,在高双字(高32位)中装的是基址。
阅读(2846) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~