2016-09-24 95 views
0

我是x86 cpu的新手。x86保護模式內存管理

我讀到關於x86保護模式的內存管理的所有材料。

的材料是英特爾®64和IA-32架構軟件開發人員手冊卷3A,系統編程指南,第1部分

我相信我明白了很多步驟設置CPU訪問內存。 :選擇器寄存器是段描述符表的索引,描述符表的條目是段的基址,線性地址是段的基址和32位偏移的加法。

但是,什麼我'迷惑的是,它似乎對我來說,CPU可以不知道哪個內存地址也將在第一時間訪問,直到上述的所有步驟完成。如果CPU想要訪問特定的內存地址,它必須知道選擇器的值和偏移量。但我的問題是如何知道? CPU知道的唯一信息就是它想訪問的內存地址嗎?

如何CPU知道輸入(選擇數值,偏移量)已經當它只知道輸出(內存地址)?

+2

GDT地址是一個線性地址,否則CPU會產生我相信你指的循環性問題。如果那不是你問的,你能更精確嗎? –

回答

0

...通過

  • 微處理器實時時鐘或定時器芯片,
  • 稱爲 '時鐘信號'
  • 通過內存控制器中樞周期函數
  • 高級配置和電源接口(ACPI)
  • ROM,芯片內的非易失性存儲器(RealMode Memory Map)
  • 的局部描述符表(LDT)是在保護模式下和含有存儲器段描述符x86架構中使用的存儲器表中:開始線性存儲器,尺寸,執行可否,可寫性,訪問特權,在存儲器實際存在等
  • 中斷描述符表,是所使用的x86架構來實現中斷向量表的數據結構。 IDT被處理器用來確定對中斷和異常的正確響應。
  • 英特爾8259是被設計爲Intel 8085和8086英特爾微處理器可編程中斷控制器(PIC)。最初的部分是8259,稍後的A後綴版本向上兼容,可用於8086或8088處理器。 8259將多箇中斷源的輸入到一個單一的中斷輸出到主機微處理器,延伸在一個系統中可用的各個中斷級超出處理器芯片上找到的一個或兩個級別

還缺少實模式

外觀也DOS_Protected_Mode_Interface &虛擬控制程序接口

如何定時器CPU芯片控制復位線?OSCILLATOR CIRCUIT WITH SIGNAL BUFFERING AND START-UP CIRCUITRY見從谷歌專利

real time clock

的CPU「開始」地址執行存儲在ROM主板上的代碼FFFF0 的例行檢驗中心的硬件,搜索視頻ROM ...

所以..是不是該CPU「開始」,因爲電源線是「開始」

電源信號被髮送到主板,由處理器定時器芯片接收信號,該芯片控制到處理器的復位線。

BIOS detect RAM怎麼樣?也參見串行存在檢測,加電自檢(POST)

BIOS是在實模式下運行的16位程序

的BIOS開始其POST當CPU被複位。 CPU嘗試執行的第一個內存位置稱爲重置向量。在硬重啓的情況下,北橋將該代碼提取(請求)指向位於系統閃存上的BIOS。對於熱啓動,BIOS將位於RAM的適當位置,並且北橋將復位向量呼叫指向RAM

這個復位向量是什麼?

復位向量是默認位置的中央處理單元將去尋找第一指令它將復位後執行。 復位向量是一個指針或地址,CPU應該在其能夠執行指令後立即開始。 該地址位於非易失性存儲器的一部分中,初始化爲包含啓動CPU操作的指令,作爲引導包含CPU的系統的第一步。
8086處理器的復位向量位於物理地址FFFF0h(16 MB以下1 MB)。復位時CS寄存器的值爲FFFFh,復位時IP寄存器的值爲0000h,以形成分段地址FFFFh:0000h,映射到物理地址FFFF0h。

關於北橋

北橋或主橋是在PC主板上的核心邏輯芯片組架構兩個芯片中的一個,另一個是南橋。

「80386程序員參考手冊」(PDF):與南橋,北橋經由前端總線(FSB)

源頭直接連接到CPU。英特爾。 1990.第10.1節復位後的處理器狀態
「80386程序員參考手冊」(PDF)。英特爾。 1990年。第10.2節。3第一條指令,