Virtual Memory Address
Introduction
virtual address 是 logical address 和 physical address 之間的中間層,在過去因為沒有 paging 的關係,使用的是 contiguous memory allocation。因此 memory 大小被限制在 16 bit register 能夠記錄的範圍,為了突破這個限制,研究員建立了 virtual address 的概念。
Basic Concept
Logical Address
<segment, offset>
│
│ Segmentation (segment table)
▼
Virtual / Linear Address
(32-bit 或 64-bit 線性地址)
│
│ Paging (page table)
▼
Physical Address
對於有支持 segmentation 的 CPU(有 segment selector),Logical address 在進入 page table 前會經由 segmentation 處理。virtual memory 的每個 segment 都會有自己的 base address 和 limit (相比於只有一個 base address 和 limit 可以記錄更多的記憶體位置)
現代系統 logical address ≈ virtual address
現代 CPU 雖然有 segment selector,但只是為了向前兼容,現在 64-bit 系統幾乎不使用 segmentation(設定 segment base = 0),所以 logical address 和 virtual address 可以說幾乎是同個東西