線性地址(Linear Address)是在計算機系統中用于描述邏輯地址到物理地址之間關系的一種概念。它是邏輯地址到物理地址變換過程中的一個重要環節。
概念
線性地址是一個32位無符號整數,它可以表示多達4GB的地址空間,即最多可達4,294,967,296個內存單元。這種地址通常以十六進制形式表示,其數值范圍從0x00000000到0xffffffff。程序產生的邏輯地址可以通過一定的變換過程轉化為線性地址。如果啟用了分頁機制,線性地址還可以進一步轉換成物理地址。在4KB分頁模式下,線性地址的高位20位代表頁目錄項在頁目錄表中的編號,中間10位表示頁表中的頁號,低位12位則是偏移地址。而在4MB分頁模式下,高位10位表示頁號,低位22位表示偏移地址。若未啟用分頁機制,則線性地址等同于物理地址。
分頁管理與線性地址
CPU的頁式內存管理單元負責將線性地址最終映射為物理地址。為了提高管理和效率,線性地址被劃分為固定長度的頁面,這些頁面構成了一個名為頁目錄的大數組。每個頁目錄項指向相應的頁地址。具體轉換過程如下所示:
1. 頁目錄是唯一的,其地址存儲在CPU的cr3寄存器中,作為地址轉換的起點。
2. 每個活躍進程都擁有自己的虛擬內存和唯一的頁目錄地址。在切換進程時,操作系統會將當前進程的頁目錄地址加載到cr3寄存器中,并保存其他進程的相關信息。
3. 每個32位線性地址由三個部分組成:頁目錄索引(10位)、頁表索引(10位)和偏移(12位)。
4. 轉換過程包括從cr3寄存器中獲取當前進程的頁目錄地址,根據線性地址的前兩位在頁目錄中查找對應的索引項,由于采用了二級管理模式,頁目錄項不再包含頁地址,而是指向頁表的地址。
5. 根據線性地址的中間十位在頁表中查找頁的起始地址。
6. 將頁的起始地址與線性地址的后十二位相加,得出所需的物理地址。
參考資料 >
邏輯地址、線性地址、物理地址和虛擬地址理解.博客園.2024-11-04
干貨!嵌入式系統“四個地址”,劃重點!.華清遠見西安.2024-11-04
[DRAM Memory Address Mapping]邏輯地址、虛擬地址、線性地址、物理地址、DRAM行列地址.CSDN博客.2024-11-04