1. 程式人生 > >記憶體地址【memory address】

記憶體地址【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寫過程

  邏輯地址------通過分段單元(一種分段單元的硬體電路轉換成)------------>線性地址---------->通過分頁單元(一種分頁單元的硬體電路轉換成)--------->實體地址