記憶體地址【memory address】
邏輯地址(logical address)
包含在機器語言指令中用來指定一個運算元或一條指令的地址。每一個邏輯地址都由一個段(segment)和偏移量(offset或displacement)組成,偏移量指明瞭從段開始的地方到實際地址之間的距離。
線性地址(linear)(也稱虛擬地址virtual address)
是一個32位無符號的整數,可以用來表示高達4G的地址,也就是,高達4 294 967 296個記憶體單元。線性地址通常用十六進位制數字表示,值得範圍從0x0000_0000到0xffff_ffff
實體地址(physical address)
用於記憶體晶片級記憶體單元定址。它們與從處理器的地址的引腳傳送到記憶體總線上的電訊號對應。實體地址由32位或64位無符號整數表示。
記憶體管理單元MMU
MMU是中央處理器中用來管理虛擬儲存器、物理儲存器的控制線路,同時負責虛擬地址對映為實體地址
MMU本質上是一個表格
– MMU表格一邊是CPU傳送指令對應的虛擬地址,一邊儲存的是實體地址
– 虛擬地址轉化為實體地址,記憶體通過實體地址去讀取實際的資料
/*回溯歷史原因*/
在原始的PC上,程式設計師程式設計的時候遇到一個問題
– 程式大於記憶體
– 當時的解決辦法是程式設計師將程式“分割”成一段一段的,執行的時候CPU先執行一段,然後關閉前一段,再執行下一段。
– 雖然執行的時候,CPU可以自動處理,但是“分割”的工作由程式設計師完成,很痛苦,很枯燥。
/*回溯歷史原因*/
記憶體管理單元的基本思路
– 資料和堆疊的大小總和可以超過物理儲存器的大小,作業系統把當前使用的部分留在記憶體中,其它的保留在硬碟上。
•記憶體管理單元——地址範圍
– 32位的CPU地址範圍是0——2的32次方
– 64位的CPU地址範圍是0——2的64次方
如果一臺32位的機器有1G記憶體,它最大可執行4G大小的程式。 – 這臺機器首先要有4G的儲存空間
/*例項分析*/
CPU讀取過程
實體地址------通過分頁單元(一種分頁單元的硬體電路轉換成)------------>線性地址---------->通過分段單元(一種分段單元的硬體電路轉換成)--------->邏輯地址
CPU寫過程
邏輯地址------通過分段單元(一種分段單元的硬體電路轉換成)------------>線性地址---------->通過分頁單元(一種分頁單元的硬體電路轉換成)--------->實體地址