中断处理过程保护

CPU外:外部设备的中断由中断代理芯片接收,处理后将该中断向量号发送到CPU
CPU内:CPU执行该中断对应的中断处理程序

软中断:
当发生中断的时候,当前的CPL必须在门描述符DPL和门中目标代码段DPL之间
外部中断和异常:
当中断发生的时候,只检查CPL和目标段的DPL

而执行中断处理程序就是将目标段选择子加载到CS段寄存器中,再将偏移地址加载到EIP中。

中断门会将IF置0,避免中断嵌套;陷阱门(为了方便调试)和任务门(为了支持多任务)不会置0。

当中断处理程序执行完毕后会使用iret指令从中断返回,从栈中弹出数据到cs、eip、eflags等,再根据特权级是否改变,判断是否需要恢复相应的特权级栈。

cli和sti可以对IF位进行置位,但是IF位只能限制外部设备中断。

其实我认为广义的中断实际上有2种情况:
1.需要调用中断处理程序的中断
2.执行任务切换其实也可以视作是产生一次中断
那么如果判断是从中断中返回,还是返回到调用自己执行的那个旧任务呢?其实发生中断的时候,eflags会将TF和NT(任务嵌套标志位)位置0,如果是执行任务切换,会将旧任务的TSS选择子写到新任务的TSS中“上一个旧任务TSS的指针”字段中,并且将新任务的eflags的NT位置1。
那么当新任务返回的时候,会根据NT位是否为1来判断是回到旧任务还是从中断返回。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 外部中断 外部硬件的中断是通过两根信号线通知CPU的,这两根信号线就是INTR(INTeRrupt)和NMI(No...
    HAPPYers阅读 1,597评论 0 0
  • 前言:上一次我们说了说,异常和中断是什么,现在我们说说IA-32 架构下异常和中断的处理 还记得这个图吗? 异常和...
    madao756阅读 1,305评论 0 2
  • lab3是实现用户环境,或者说是用户进程。exercize代码见 这里。 1 概述 继内存管理之后,实验3是实现用...
    __七把刀__阅读 3,535评论 0 4
  • 父母把沉甸甸的爱 塞进了我的行囊 孤身在外的日子 从此不再忧伤 我一次次在归途中体味 父母的挂肚牵肠 一遍遍回首 ...
    梦谷阅读 637评论 1 3
  • PO persistent object 持久对象有时也被称为Data对象,对应数据库中的entity,可以简单认...
    摩羯座李阅读 509评论 0 0