interrupt and exception (一)

  内核处理中断的方式:

   1.立即处理和推迟处理2部分

   2.支持nested interrupt and exception handler

   3.critical region 里必须要关中断

 IDT

 idtr 保存 idt 物理地址和限长

    256*8=0.5×4kB

 中断描述符的 40,43 位指示其类型

   01  task gate

   包含 tss 段选择符 (代替中断发生时正在执行的进程)

 

   02  interrupt gate

   需要关中断

   03  trap gate

  不需要关中断

 

 硬件处理中断的过程

当 中断和异常发生时的处理过程

1.发生时机

2.硬件处理

3.执行中断程度

4.返回

1.发生时机

   在处理下条指令时 检测中断

2.硬件处理

    cs,ip 指向下条指令

----------------------------------------

    找到中断处理的segment  offset

   比较

     dpl 必须<cpl 

     切换stack

      从 tss 中取出   内核stack ,装入 ss, esp

      保存 old ss, esp

  -----------------------栈切换---------------

  保存 eflags, cs,eip

   错误码压入内核stack

   -----------------------上下文保存----------

3.执行中断

  装入中断处理的 cs,eip

4.返回

 iret 指令 

  装入上下文

  检查是否该切换stack

  检测是否该清处 ds,fs,gs,es

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值