我正在編寫一個小內核,只是爲了在低層次的東西上徘徊一下。現在,它在Virtual Box中啓動,我可以在屏幕上顯示文本,分配一些內存以及其他非常基本的東西。它是用C++編寫的,有點asm。(編寫內核)如何修改中斷描述符表?
有一個問題我想探索的東西背後的多任務機制。據我所知,它是這樣的:
- 內核初始化中斷描述符表,使中斷週期性發出(例如毫秒),並調用內核定義的程序。
- 當程序被調用,它可以決定設置的代碼/數據段和堆棧指針的那些另一個程序的上下文中,的「上下文切換」。
所以,它在概念上看起來很簡單,但我知道細節會變得更加多毛。我發現了一些在線的東西,但是術語差別很大,並且這些示例似乎來自我沒有的上下文(例如來自Linux內核)。
然而,設置描述符表的方式似乎是這樣的:
- 一些數據發送到PIC(
outb
和什麼,而不是)來初始化它。 - 準備中斷表在內存中,與函數指針到你想要的,小心的功能是能夠被信號處理程序例程。
- 用
lidt
加載表格。
但是,我無法找到很多具體的做這些事情,或者這是否是正確的。有沒有人有困惑的內核作家資源?
有趣的問題,這裏是一個很酷的社區:http://www.osdever.net/不是它直接回答你的問題,但有一些有用的信息。 – 2012-04-29 04:51:29
在osdev.org上可以找到更好的社區(包括論壇和wiki,以及種類相關的irc頻道 - #osdev @ irc.freenode.net)。 – Griwes 2012-04-29 13:14:06