Virtual Memory Address

Introduction

virtual address 是 logical addressphysical 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 可以說幾乎是同個東西