Chinaunix首页 | 论坛 | 博客
  • 博客访问: 589632
  • 博文数量: 83
  • 博客积分: 5453
  • 博客等级: 大校
  • 技术积分: 894
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-10 13:51
文章分类

全部博文(83)

文章存档

2015年(2)

2014年(1)

2013年(1)

2012年(3)

2011年(14)

2010年(7)

2009年(7)

2008年(12)

2007年(17)

2006年(19)

我的朋友

分类: 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()。

阅读(1844) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~