2013-06-18 86 views
2

我正在尋找涵蓋IA32體系結構的技術規範,幻數等的文檔或教科書。英特爾IA32備忘單

英特爾手冊都很好,但我正在尋找更簡潔的東西。

我正在研究的這個特定項目(一種新型的操作系統)需要熟悉硬件地址和基本系統架構。

我不需要使用英特爾手冊中涵蓋的大部分細節 - 只是從頭開始實施任務切換和虛擬內存所需的技術細節!

任何人都可以指點我一些好資源的方向嗎?

謝謝。

+0

像[this](http://flint.cs.yale.edu/cs422/doc/24547212.pdf)? – user1810087

+1

我看不到你想要的。如果你想得到一些準確的示例,這就是http://wiki.osdev.org。如果您想要一個嚴重的操作系統,那麼來自英特爾的開發人員手冊是一個(幾乎)詳盡的參考資料,只需要您所需的即可。 –

回答

2

英特爾和AMD手冊可能是最好的資源。您顯然不需要閱讀所有內容,但需要閱讀相關章節 - 例如AMD的「AMD64 Architecture Programmers Manual, Volume 2」,其中第5章介紹了「頁面轉換」,這是虛擬內存的基礎。

編輯:聲明偏見:我已經爲AMD工作過,我仍然更喜歡AMD到Intel - 無論是涉及到文獻還是實際產品。

任務切換通常是通過簡單地保存一個進程的上下文並使用主要是常規指令來恢復新進程的上下文來完成的,其中一些移動到CR3和CR4用於設置新進程的頁表(通常不需要保存CR3/CR4值,因爲它們每個進程都是「固定的」,所以您只需從存儲在該進程數據中的任何地方加載新的值)。

在32位模式下,x86架構確實具有「內置」任務切換功能,但它並未被任何現代操作系統使用,並且由於其「保存所有內容,恢復所有內容」的方式而慢得多。手動編寫任務保存/恢復代碼通常不那麼困難,並且您可以清楚地避免保存和恢復大量數據。您仍然需要使用「任務狀態段」(AMD的文獻中的第12章)來允許在內核模式和用戶模式之間切換堆棧。

當然,您還需要查看一些中斷和異常處理,如何處理用於PCI訪問的硬件寄存器等等。我擔心這是我在沒有鏈接的書籍中查找的內容。目前這些都是最近一次搬遷的方塊,所以不能給你確切的標題。