分类: LINUX
2012-09-20 16:53:59
时钟中断是软硬件结合的过程。
1,x86 cpu硬件引发一次时钟中断;
2,时钟中断硬件连线对应中断向量0x20;
3,x86 cpu硬件使用0x20作为索引查找linux软件设置的中断描述符表IDT;(X86 cpu有一个专门的寄存器指向linux的IDT)
4,0x20是IDT的key,value是一个“中断门”;中断门的值包括了__Kernel_DS, DPL 0和中断服务函数的地址;
5,x86 cpu硬件根据中断门设置代码运行权限,根据__Kernel_DS和地址找到IRQ_0x00_interrupt();(至此,中断向量0x20转换为外部中断号IRQ 0x00)
6,硬件进行运行环境的保存,然后开始执行IRQ_0x00_interrupt();
7,IRQ_0x00_interrupt代码根据IRQ号0x00查找中断请求队列的数组irq_desc[],执行队列上的所有服务函数;
8,irq_desc[0]队列上只有一个中断服务函数timer_interrpt()。