(六)中断处理过程
2017-03-06 20:42
148 查看
中断处理过程
中断源
CPU与操作系统如果处理中断
能够对中断向量表( 中断描述符,简称IDT ) 进行初始化
一、中断源
中断Interrupts
(外设)外部中断External(hardware generated) interrupts串口、硬盘、网卡、时钟、······
(软中断,用在系统调用,应用程序通过软中断来获得操作系统提供的服务)软件产生的中断Software generated interrupts The Int n 指令, 通常用于系统调用
异常Exceptions
程序错误
软件产生的异常Software generated exceptions
INTO, INT 3 and BOUND
机器检查出的异常S
确定 中断服务例程(ISR)
每个中断或异常与一个中断服务例程(ISR, Interrupt Server Routine) 关联,其关联关系 存储在 中断描述符表(IDT, interrupt Descriptor Table).IDT 的 起始地址和大小 保存在中断描述符表 寄存器的 IDTR中
IDT表中的每一项称为中断门或陷阱门
CPU会根据中断号来查这个IDT到底属于哪一项,知道Index,找到中断门或陷阱门,从里面取出它的段选择址。以这个选择址作为index 进一步查找GDT(全局描述符表), GDT里存放段描述符(里面有一个基地址 Base address), Base address + offset = 相应的线性地址, 从而可以执行ISR(中断服务例程)。CPU可以自动的在硬件这个层面访问这两个表,来查到相应的中断需要对应的中断处理例程(由操作系统实现)。
切换到 中断服务例程(ISR)
不同特权级的中断切换对堆栈的影响
CS = 0, 内核态,CS = 3,用户态
在内核态产生的中断依然在内核态,但用户态产生可能跳到内核态。
从 中断服务例程(lSR) 返回
iret -- 弹出EFLAGS 和 SS/ESP (根据是否改变特权级)ret -- 弹出EIP,retf弹出CS和EIP (此为没有特权级变化的返回)
主要完成: 整个被打断程序的一个状态的保持和恢复(由硬件自动干的)
系统调用
用户程序通过 系统调用 访问 OS内核服务
如何实现
需要 指定中断号
使用Trap, 也称Software generator Interrupt
或使用特殊指令(SYSENTER/SYSEXIT)
相关文章推荐
- 【转载】WinCE中中断的处理过程(驱动开发人员角度)
- ARM Linux外部中断处理过程
- Windows CE 6.0中断处理过程(转载)
- uCOS2中的中断处理过程
- Linux中断处理过程
- WinCE中断处理过程
- 中断的处理过程
- WinCE中中断的处理过程(驱动开发人员角度)
- WinCE中中断的处理过程(驱动开发人员角度)
- [应聘笔记系列]中断处理过程和中断服务程序ISR的限制
- 转载—— WinCE中中断的处理过程(驱动开发人员角度)
- ARM的中断处理过程
- ARM 中断处理过程
- 操作系统学习笔记(37)--中断处理过程
- 如何接受消息,中断正在处理的过程
- XPE USB 2.0启动技术,中断处理过程
- 2410 中断过程处理分析
- AT91SAM9261中断处理过程解析
- IDT系列:(二)中断处理过程,使用bochs调试IDT中的中断服务程序
- SDE数据编辑过程中异常中断后产生错误的处理