我想知道程序在執行過程中如何看到和使用中斷。我已經讀過關於中斷的級別,邊沿,混合和消息類型的信息,並且設備發送脈衝來指示中斷,但程序如何看到中斷?或者程序中可以看到中斷? 感謝您的任何幫助程序執行和中斷
程序執行和中斷
回答
一般來說,中斷的發生會導致處理器停止正在做的事情,記住它停止的地方並轉到一段特定的代碼,該代碼會以某種方式反應它。無論處理器此刻還在做什麼,硬件都會一直檢查中斷。所以它轉到了一段特殊的代碼,即所謂的interrupt handler,並在完成後返回到之前的操作。被中斷的程序沒有注意到任何事情。
中斷處理程序所在的地址取決於處理器體系結構和中斷類型。有時它需要位於內存中的固定點,其地址在處理器的數據表中給出。通常在內存的固定地址有一個稱爲intrrupt vector table的特殊數組,它存儲處理不同類型中斷的過程的地址。
在PC或任何其他稍微高級的電子設備上,中斷處理程序和中斷向量表是操作系統的一部分。除非您正在編寫操作系統或編寫嵌入式設備,否則您根本不需要受到中斷的困擾。
處理器如何查看中斷? – MNM
硬件。需要中斷處理器的外設將直接或間接地將處理器芯片上的引腳拉低,從而觸發處理器進入其中斷確認總線協議。中斷確認協議是依賴於設備的。例如,它可能要求中斷外設發送一箇中斷號碼,該中斷號碼可被轉換爲向量地址,以便爲中斷外設調用正確的處理程序。許多處理器系列還具有內部中斷源,例如。內存管理器硬件,內核間通信。 –
取決於操作系統,如果有的話。在我們最熟悉的通用'桌面'操作系統上,用戶模式程序不需要直接處理硬件中斷。驅動程序處理來自諸如鍵盤,鼠標,磁盤,NIC等外圍設備的中斷。通常,'程序'中的線程發出讀/寫請求的API調用,並且調用在請求完成之前不會返回 - 這是程序到達硬件最近的地方。在內核中,調用線程被阻塞,直到尋址的驅動程序發出所請求的I/O已完成的信號。
- 1. 如何中斷執行程序線程
- 2. 執行程序並殺死它時的信號和中斷
- 3. 中斷vs中斷執行
- 4. 中斷處理程序在不同的線程中執行?
- 5. java thead池執行程序如何處理中斷線程
- 6. MSTest:斷言線程執行
- 7. 程序執行和GUI
- 8. 如何在pic18中執行中斷服務程序
- 9. Linq - 中斷執行存儲過程
- 10. 執行多次中斷的Java線程
- 11. 可以中斷JavaScript執行流程嗎?
- 12. 添加線程中斷執行run()
- 13. 另一個程序/進程如何中斷我的程序執行?
- 14. 中斷和調度程序
- 15. 中斷執行器和更多
- 16. Django的`auth`和`contenttypes`中斷執行syncdb
- 17. 從中斷中斷功能執行
- 18. 中斷服務程序執行兩次ATmega88
- 19. 創建自我中斷執行程序服務
- 20. 我怎麼能不PHP腳本執行外部程序中斷
- 21. SIGPOLL(SIGIO)問題:中斷在執行處理程序
- 22. 執行應用程序關閉執行程序應用程序
- 23. 從C程序中執行程序
- 24. 在程序中未執行@
- 25. 在C中執行程序
- 26. 在java中執行程序
- 27. 執行程序關閉後,爲什麼Runnable仍然在可執行的線程池執行程序中執行?
- 28. 程序集編程和中斷處理
- 29. JavaScript方法執行中斷
- 30. IEnumerable執行中斷foreach
我們是在談論一個在PC或微控制器上運行的程序嗎? – lampak