2011-07-25 19 views
3

我正在寫一個運行在保護模式下的小型操作系統。我來到了我想要加載自定義中斷描述符表的地方,我不知道從哪裏開始。我已閱讀the OS Dev wiki上的一些內容,但有幾個問題需要我解答。自定義中斷描述符表混亂

在OS Dev wiki上,它說the first 32 (0-31) interrupts are reserved and used by the CPU, as exceptions, so don't use those for APIs or IRQs.問題是,如果我加載自定義中斷表,是否必須爲所有這些中斷提供條目?

此外,維基指出,BIOS將IRQ0-7映射到中斷8-15。如果是這種情況,IRQ中斷不會與保留的中斷衝突嗎?

有沒有我沒有得到的東西?是在一個單獨的表或其他什麼中斷0-31?有人請指出我正確的方向,並澄清事情。

回答

2

當它說don't use those [interrupts 0-31] for APIs or IRQs,這意味着你不應該將它們用於除了它們保留的例外之外的功能。您需要爲這些中斷定義處理程序,以便在發生異常時處理異常。請參閱OSDev's exception page以獲取其中斷編號和描述的例外列表。

當處理器啓動時,它處於實模式。在這種模式下,例外情況較少,因此保留較少的中斷來處理它們。只要處理器處於實模式,使用IRQ的中斷8-15是安全的。在保護模式下啓用中斷之前,您需要將IRQ重新映射到不同的中斷。有關如何執行此操作的信息,請參見OSDev's PIC(可編程中斷控制器)頁面的Initialization section頁面。

0

第一個32(0-31)中斷被保留並由CPU使用,作爲例外,所以不要將它們用於API或IRQ。

這是關於WHO可以發出的中斷。 0-31用於CPU本身的事件(內部,例如頁面錯誤,除以零),其他用於外部事件(硬件啓動,例如鍵盤按下,pci中斷等)。 這不是關於IDT的。您應該提供表中的所有中斷。