2011-02-28 48 views
2

我有一個作業系統類,我需要爲一個模擬操作系統編寫一箇中斷表。我已經從以前的分配,相應的驅動程序的所有設置:如何創建一箇中斷表

我的理解是,我應該有中斷類型的數組,沿interrupt_table[x],其中x = 0陷阱線,x = 1對於時鐘中斷等。interrupt_table應該包含指向每種類型中斷的適當處理程序的指針,然後應該調用相應的驅動程序?我是否正確理解這一點?任何人都可以指出我創建這些處理程序的正確方向嗎?

感謝您的幫助。

回答

2

有關中斷處理程序的大部分細節因OS而異。唯一接近普遍的是,你通常希望儘可能少地執行中斷處理程序本身。通常情況下,您只需確認中斷,記錄足夠的信息以便在準備就緒時處理它,然後返回。其他一切都是分開完成的。

1

你的理解聽起來不錯。

這個模擬操作系統是如何模擬的?如果它完全在教授自己的設計的「機器」上運行,那麼無疑她會給出一些關於提供什麼中斷的規範,如何探測可能存在的中斷以及中斷處理程序應該執行什麼類型的任務。

如果是全功能x86計算機或類似的東西,也許Linux arch/x86/pci/irq.c可以爲您提供提示。

0

接收中斷的操作取決於特定的中斷。拇指規則是要找出特定中斷需要注意的重要事項,然後儘可能快地做到「儘可能地」(不多不少),並從處理程序中出來。而且,中斷處理程序只是驅動程序的一小部分(這是您應該如何設計的)。例如,如果您在某個串行端口上接收到一個傳入字節的中斷,那麼您只需從寄存器中讀取該字節並將其放置在某個「volatile」變量上,即可將事件關閉並離開處理程序。其餘部分(比如,你將如何處理串口上的輸入字節)可以在驅動代碼中處理。

拇指規則仍然是:「沒有別的,沒什麼少」

相關問題