iT邦幫忙

2026 iThome 鐵人賽

DAY 16
0
IT Operation

解構作業系統:30 天從 Process、Concurrency 到 Virtual Memory系列 第 16 篇

Day 16|Virtual Memory:明明 RAM 就這麼大,為什麼每個 Process 都覺得自己有一大片 Memory?

  • 分享至 

  • xImage
  •  

如果把每個 Process 看到的 Memory 全部加起來,甚至可能遠超過實際 RAM。
Process A 可能使用:
0x400000
Process B 也可以使用:
0x400000
Process C:
我也有 0x400000。

三個 Process 怎麼可能同時使用「同一個 Address」?
程式平常看到的 Address,通常不是直接拿來當實體 RAM 位置使用。中間還隔著一層非常重要的抽象:

Virtual Memory


1. Virtual Address 到底「虛擬」在哪裡?

假設 Physical Memory 是:

0x0000
│
│ OS
│
├────────
│ Process A
│
├────────
│ Process B
│
├────────
│ Process C
│
└────────
0xFFFF

如果程式直接操作 Physical Address,那 Process A 想存取某個變數時,可能真的必須知道:他的資料位於實體 RAM 的 0x7310。


上一篇
Day 15|Priority Inversion:為什麼最高優先權的 Thread,反而要等最低優先權?
系列文
解構作業系統:30 天從 Process、Concurrency 到 Virtual Memory 共 16 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言