2011-12-07 101 views
1

我想知道程序在執行過程中如何看到和使用中斷。我已經讀過關於中斷的級別,邊沿,混合和消息類型的信息,並且設備發送脈衝來指示中斷,但程序如何看到中斷?或者程序中可以看到中斷? 感謝您的任何幫助程序執行和中斷

+0

我們是在談論一個在PC或微控制器上運行的程序嗎? – lampak

回答

1

一般來說,中斷的發生會導致處理器停止正在做的事情,記住它停止的地方並轉到一段特定的代碼,該代碼會以某種方式反應它。無論處理器此刻還在做什麼,硬件都會一直檢查中斷。所以它轉到了一段特殊的代碼,即所謂的interrupt handler,並在完成後返回到之前的操作。被中斷的程序沒有注意到任何事情。

中斷處理程序所在的地址取決於處理器體系結構和中斷類型。有時它需要位於內存中的固定點,其地址在處理器的數據表中給出。通常在內存的固定地址有一個稱爲intrrupt vector table的特殊數組,它存儲處理不同類型中斷的過程的地址。

在PC或任何其他稍微高級的電子設備上,中斷處理程序和中斷向量表是操作系統的一部分。除非您正在編寫操作系統或編寫嵌入式設備,否則您根本不需要受到中斷的困擾。

+0

處理器如何查看中斷? – MNM

+1

硬件。需要中斷處理器的外設將直接或間接地將處理器芯片上的引腳拉低,從而觸發處理器進入其中斷確認總線協議。中斷確認協議是依賴於設備的。例如,它可能要求中斷外設發送一箇中斷號碼,該中斷號碼可被轉換爲向量地址,以便爲中斷外設調用正確的處理程序。許多處理器系列還具有內部中斷源,例如。內存管理器硬件,內核間通信。 –

1

取決於操作系統,如果有的話。在我們最熟悉的通用'桌面'操作系統上,用戶模式程序不需要直接處理硬件中斷。驅動程序處理來自諸如鍵盤,鼠標,磁盤,NIC等外圍設備的中斷。通常,'程序'中的線程發出讀/寫請求的API調用,並且調用在請求完成之前不會返回 - 這是程序到達硬件最近的地方。在內核中,調用線程被阻塞,直到尋址的驅動程序發出所請求的I/O已完成的信號。