如果把每個 Process 看到的 Memory 全部加起來,甚至可能遠超過實際 RAM。
Process A 可能使用:
0x400000
Process B 也可以使用:
0x400000
Process C:
我也有 0x400000。
三個 Process 怎麼可能同時使用「同一個 Address」?
程式平常看到的 Address,通常不是直接拿來當實體 RAM 位置使用。中間還隔著一層非常重要的抽象:
假設 Physical Memory 是:
0x0000
│
│ OS
│
├────────
│ Process A
│
├────────
│ Process B
│
├────────
│ Process C
│
└────────
0xFFFF
如果程式直接操作 Physical Address,那 Process A 想存取某個變數時,可能真的必須知道:他的資料位於實體 RAM 的 0x7310。