1. 程式人生 > >【深入理解Linux核心】記憶體定址(一)

【深入理解Linux核心】記憶體定址(一)

 

1. 邏輯地址:包含在機器語言指令中用來指定一個運算元或一條指令的地址。每一個邏輯地址都由一個段和偏移量組成。偏移量指明瞭從段開始的地方到實際地址之間的距離。

2. 線性地址:又稱虛擬地址,是一個32位無符號整數,也用來表示4GB的地址,範圍從0x00000000到0xffffffff。

3. 實體地址:用於記憶體晶片級記憶體單元定址。他們與從微處理器的地址引腳傳送到記憶體總線上的電訊號相對應。實體地址由32位或者36位無符號整數表示。

記憶體控制單元(MMU)是把邏輯地址轉換為實體地址的硬體。通過稱為一種稱為分段單元(segmentation unit)的硬體電路把邏輯地址轉換為線性地址,接著,通過一種叫分頁單元(paging unit)的硬體電路把線性地址轉換為實體地址,這就很清楚的說明了這三個地址直接的關係,如下圖:

記憶體仲裁器(memory arbiter):該硬體電路位於匯流排和每個RAM晶片之間。在多處理器系統中,如果某個RAM晶片空閒,就准許一個CPU訪問,如果該晶片忙於為另一個處理器提出的請求服務,就延遲這個CPU的訪問。即使在單處理器是也是用記憶體仲裁器。