6
A
回答
2
从这里开始Interrupt Descriptor Table。基本上,当一个中断发生时,流量控制跳转到这个表,然后跳转到这个表中的任何内容。另外,我相信所有的寄存器都会在中断发生时立即被触发,但是我不是100%确定的,因为我已经处理了很长时间。
8
当一个中断发生时,CPU将执行以下操作:
- 推当前地址(指令指针的内容)压入堆栈;也可以按处理器标志(但不是所有其他处理器寄存器)
- 跳转到中断描述符表中指定的ISR(中断服务程序)的地址。
的ISR应该做到以下几点:
- 推它打算改变(或,推动所有寄存器)
- 处理中断
- 重新启用中断
- 弹出任何任何寄存器它推动的寄存器
- 使用IRET指令,它从堆栈中弹出CPU标志和指令指针值(并因此返回到whateve当中断发生时r正在执行)。
+1
它发生在用户空间程序的堆栈上还是发生在某些内部内核堆栈上? – 2016-09-19 05:53:28
相关问题
- 1. 中断HTTP流时会发生什么?
- 2. 如果HttpClient.execute()中断会发生什么?
- 3. 发生故障时会发生什么?
- 4. 客户正在执行时发生中断时会发生什么?
- 5. 中断发生之前发生的中断发生之前发生的中断
- 6. System.Data.SqlClient.SqlTransaction.Dispose中会发生什么?
- 7. 什么时候会发生?
- 8. 会发生什么?
- 9. 会发生什么?
- 10. 会发生什么?
- 11. 会发生什么?
- 12. 会发生什么?
- 13. 会发生什么?
- 14. 先发中断处理程序会发生什么?
- 15. 为什么在cin中断时会发生变化? C++
- 16. Tomcat:HTTP Multipart请求被中断时会发生什么?
- 17. 当sqlite3 db写入被中断时会发生什么?
- 18. 当内核代码中断时会发生什么?
- 19. 如果在获得互斥锁后发生中断,会发生什么情况
- 20. 当发生javascript运行时错误时会发生什么?
- 21. 当程序运行时发生事件时会发生什么
- 22. 发生中断时怎么办
- 23. 当承诺在javascript中产生时会发生什么?
- 24. 当线程T1加入线程T2和T2时会发生什么事情会发生中断
- 25. 发生SOAP错误时会发生什么?
- 26. 当JMS侦听器发生异常时会发生什么
- 27. 当primary_key默认发生冲突时,Django会发生什么?
- 28. 当模块初始化发生异常时会发生什么
- 29. 发生两个异常时会发生什么?
- 30. 发生病情时会发生什么情况?
在中断发生之前,所有的寄存器和标志都被压入中断处理代码结束后弹出。 – nc3b 2010-05-24 15:05:55
是的,还挺我的想法。在我所做的一些事情上,你必须做自己的推动和弹出。很确定x86是为你做的。 – 2010-05-24 15:09:46
处理器标志被自动推送,但其他寄存器不是;当它被派遣时,ISR应明确地保存它打算改变的任何/所有寄存器。 – ChrisW 2010-05-24 15:16:59