当前位置:新励学网 > 秒知问答 > 中断代码怎么处理

中断代码怎么处理

发表时间:2024-07-28 03:41:04 来源:网友投稿

硬件处理 我们在每条指令完成的时候,控制单元就会检查是否发生了中断。若不发生:继续执行下...

确定中断的向量i。

读IDT中的第i项得到向量i的中断描述符。

2.

异常处理

保存寄存器的值

高级C函数处理异常

3..中断描述符结合GDT得到得到中断处理程序的段描述符。

4.进程的CPL与段描述符的DPL比较,若CPL优先级比DPL的优先级高,说明中断的优先级比进程优先级低,产生异常。进程的CPL与中断描述符的DPL比较,若CPL优先级

比DPL的优先级低,说明这个门不是用户进程可以访问的,也产生异常,正常则执行下面步骤。

5.检查CPL是否发生变化(这个其实就是是否是从用户态进入内核态),如果变化,则要切换栈。这个很容易弄清,因为,用户态和内核态用的栈是不一样的。

6.如果发生的是故障,故障要重新执行导致异常的那条指令。所以用那条指令的地址装载cs和eip来执行那条指令。

7.将eflags、cs、和eip的值圧栈。

8.如果异常产生硬件出错码,则也圧栈。

9.用刚才得到的段描述符中的基址和中段描述符中的偏移地址装载cs和eip。这个就可以开始执行相应的处理程序了。

免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。

如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!