1. 程式人生 > >【OS】邏輯地址、線性地址和實體地址之間的轉換

【OS】邏輯地址、線性地址和實體地址之間的轉換

Logical Address , Linear Address , Physical Address

Linear Address 是轉換過程中出現的中間態而已。虛擬記憶體中和程式碼上能看到的記憶體地址一般都是Logiccal Address (帶冒號的除外)。

這幾個地址是如何轉換的:

首先拿到一個Logical Address,然後去查GDT表,根據選擇子找到Base,再把base 和 Offset加一下就是Linear Address最主要的部分就是如何從Linear Adress 找到 對應的Physical Address如下圖所示把Linear Address 分成三段,前10

為時dir,中間10位是Table,最後12位是offset根據dir去查詢一級頁表,即頁表目錄,頁表的基值放在CR3(頁表基值暫存器)暫存器中,找到之後就可以讀取出PDE,通過PDE的前20VPN找到二級頁表,以Table作為偏移找出PTE,將PTE中的前20PPN加上Offset就找到了對應的實體地址。