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