中断

1.中断分类

中断分类 
中断是处理器处理外部突发事件的一个重要技术。它能使处理器在运行过程中对外部事件发出的中断请求及时地进行处理,处理完成后又立即返回断点,
继续进行处理器原来的工作。引起中断的原因或者说发出中断请求的来源叫做中断源。根据中断源的不同,可以把中断分为硬件中断和软件中断两大类,
而硬件中断又可以分为外部中断和内部中断两类。

外部中断一般是指由计算机外设发出的中断请求,如:键盘中断、打印机中断、定时器中断等。外部中断是可以屏蔽的中断,也就是说,
利用中断控制器可以屏蔽这些外部设备的中断请求。

内部中断是指因硬件出错(如突然掉电、奇偶校验错等)或运算出错(除数为零、运算 溢出、单步中断等)所引起的中断。内部中断是不可屏蔽的中断。

软件中断其实并不是真正的中断,它们只是可被调用执行的一般程序。例如:ROM BIOS中的各种外部设备管理中断服务程序(键盘管理中断、显示器
管理中断、打印机管理 中断等,)以及DOS的系统功能调用(INT 21H)等都是软件中断。
CPU为了处理并发的中断请求,规定了中断的优先权,中断优先权由高到低的顺序是: 
(1)除法错、溢出中断、软件中断 
(2)不可屏蔽中断 
(3)可屏蔽中断 
(4)单步中断。

2.内核中的中断分布

对于x86架构,定义位于arch/x86/include/asm/irq_vectors.h文件中,linux每可使用的有256个IDT(Interrupt Descriptor Table)表项,64位架构每个CPU有一个IDT表,32位架构共享一个IDT表,其分布如下:
 *  Vectors   0  ...  31 : system traps and exceptions - hardcoded events 系统陷阱和异常中断向量
 *  Vectors   32 ... 127 : device interrupts 设备中断向量
 *  Vector    128        : legacy int80 syscall interface 系统调用中断向量(著名的0x80中断)
 *  Vectors   129 ... INVALIDATE_TLB_VECTOR_START-1 except 204 : device interrupts 设备中断向量(204除外)
 *  Vectors   INVALIDATE_TLB_VECTOR_START ... 255 : special interrupts 特殊中断向量

0-31    内部中断
32-127  外部中断
128     系统调用(大名鼎鼎的0x80)
129 ... INVALIDATE_TLB_VECTOR_START-1 except 204 设备中断(204除外)
INVALIDATE_TLB_VECTOR_START...255   特殊中断

 

 

你可能感兴趣的:(操作系统,中断,0x80,操作系统)