(六)中断处理过程

(六)中断处理过程

中断处理过程

  • 中断源

  • 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) 

       

     

posted @ 2017-03-06 20:42 douzujun 阅读( ...) 评论( ...) 编辑 收藏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值