簡體   English   中英

x86保護模式內存管理

[英]x86 protected mode memory management

我是x86 cpu的新手。

我在x86中閱讀了有關受保護模式的內存管理的所有資料。

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

我相信我理解cpu訪問內存時的許多步驟。 :選擇器寄存器是段描述符表的索引,描述符表的條目是段的基礎,線性地址是段的基數和32位偏移的加法。

但是,令我困惑的是,在我看來,在第一次完成上述所有步驟之前,CPU無法知道它將首次訪問哪個內存地址。 如果CPU想要訪問特定的內存地址,它必須知道選擇器值和偏移量。 但我的問題是它是如何知道的? 只知道CPU知道它想要訪問的內存地址不是嗎?

當CPU只知道輸出(存儲器地址)時,CPU如何知道輸入(選擇器值,偏移量)?

......來

  • 微處理器實時時鍾或定時器芯片,
  • 稱為'時鍾信號'的周期函數
  • 由Memory Controller Hub
  • 高級配置和電源接口(ACPI)
  • ROM ,芯片內部的非易失性存儲器(RealMode Memory Map)
  • 本地描述符表 (LDT)是在受保護模式下的x86體系結構中使用的內存表,包含內存段描述符:從線性內存開始,大小,可執行性,可寫性,訪問權限,內存中的實際存在等。
  • 中斷描述符表 ,是x86架構用於實現中斷向量表的數據結構。 處理器使用IDT來確定對中斷和異常的正確響應。
  • Intel 8259是一款可編程中斷控制器(PIC),專為Intel 8085和Intel 8086微處理器而設計。 最初的部分是8259,后來的A后綴版本向上兼容並可與8086或8088處理器一起使用。 8259將多個中斷輸入源組合成一個到主機微處理器的單個中斷輸出,將系統中可用的中斷級別擴展到處理器芯片上的一個或兩個級別之外

你也錯過了真實模式

看看DOS_Protected_Mode_Interface和虛擬控制程序接口

定時器芯片如何控制CPU的復位線? 另請參閱來自Google Patents的具有OSCILLATOR CIRCUIT WITH SIGNAL BUFFERING AND START-UP CIRCUITRY

實時時鍾

CPU'開始'執行存儲在主板上的ROM中的代碼,地址為FFFF0例程測試中央硬件,搜索視頻ROM ...

那么..是不是'啟動'的CPU,因為'啟動'的電源線

電源信號被發送到主板,在那里由處理器定時器芯片接收,該處理器定時器芯片控制到處理器的重置線。

BIOS如何檢測RAM 另請參閱串行存在檢測 ,開機自檢(POST)

BIOS是一個以實模式運行的16位程序

當CPU復位時,BIOS開始POST。 CPU嘗試執行的第一個存儲單元稱為復位向量。 在硬重啟的情況下,北橋會將此代碼獲取(請求)指向位於系統閃存上的BIOS。 對於熱啟動,BIOS將位於RAM中的適當位置,並且北橋將復位向量調用指向RAM

這個重置向量是什么?

復位向量是中央處理單元用於查找復位后將執行的第一條指令的默認位置。 復位向量是指針或地址,CPU應始終在能夠執行指令時立即開始。 該地址位於非易失性存儲器的一部分中,該部分被初始化為包含啟動CPU操作的指令,作為啟動包含CPU的系統的第一步。
8086處理器的復位向量位於物理地址FFFF0h(低於1 MB的16字節)。 復位時CS寄存器的值為FFFFh,復位時IP寄存器的值為0000h,形成分段地址FFFFh:0000h,映射到物理地址FFFF0h。

關於北橋

北橋或主橋是PC主板上核心邏輯芯片組架構中的兩個芯片之一,另一個是南橋。 與南橋不同,北橋通過前端總線(FSB)直接連接到CPU

資料來源:

“80386程序員參考手冊”(PDF)。 英特爾。 1990.第10.1節復位后的處理器狀態
“80386程序員參考手冊”(PDF)。 英特爾。 1990.第10.2.3節第一指令,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM