关闭

一个操作系统的实现(5):中断门

发表于:2013-8-22 10:01

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:H_armony    来源:51Testing软件测试网采编

  中断在linux驱动中占有很重要的地位,所以也一定要好好分析一下。还是一样的套路,先讲一下基本的概念,然后分析源码再来加深理解。

  中断门与其他三个门(调用门、陷阱门、任务门)一起是操作系统里的四扇门。它们之间的区别以后再补充,今天重点分析中断门。

  那么什么是门呢?门其实就是一中描述符,直观来看这个描述符描述了由一个选择子和一个偏移所指定的线性地址,程序正是通过这个地址进行转移的。中断描述符放在中断描述符表里(IDT),也就是这个IDT将中断向量和中断服务程序联系起来,他们之间的关系如下图:

  那中断向量怎么来得呢,其实每一种中断(异常)都会对应一个中断向量号,具体有哪些中断向量,可以看下面这张图:

向量号助记符描述类型出错码
0#DE除法错FaultDIV和IDIV指令
1#DB调试异常Fault/Trap任何代码和数据的访问
2非屏蔽中断Interrupt非屏蔽外部中断
3#BP调试断点Trap指令INT 3
4#OF溢出Trap指令INTO
5#BR越界Fault指令BOUND
6#UD无效(未定义)操作码Fault指令UD2或无效指令
7#NM设备不可用(无数学协处理器)Fault浮点或WAIT/FWAIT指令
8#DF双重错误Abort有(0)所有能产生异常或NMI或INTR
的指令
9 协处理器段越界(保留)Fault浮点指令(386后不再处理此
异常)
10#TS无效TSSFault任务切换或访问TSS时
11#NP段不存在Fault加载段寄存器或访问系统段时
12#SS堆栈段错误Fault堆栈操作或加载SS时
13#GP常规保护错误Fault内存或其他保护检验
14#PF页错误Fault内存访问
15Intel保留,未使用   
16#MFx87FPU浮点错(数学错)Faultx87FPU浮点指令或WAIT/FWAIT指令
17#AC对齐检验Fault有(0)内存中的数据访问(486开始支持)
18#MCMachine CheckAbort错误码(若有的话)和源依赖于
具体模式(奔腾CPU开始支持)
19#XFSIMD浮点异常FaultSSE和SSE2浮点指令(奔腾三
开始支持)
20~31Inter保留,未使用   
32~255用户定义中断Interrupt 外部中断或int n指令

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号