iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
自我挑戰組

從 Page Fault 到 OOM:Linux 記憶體管理 30 天拆解 系列

這個系列會從 userspace 看到的記憶體現象一路追到 Linux kernel 的設計:虛擬記憶體、page table、page fault、COW、buddy/slab allocator、page cache、swap、memory reclaim、cgroup 與 OOM。目標是建立一套能用在 production debugging 的 Linux memory mental model。

參賽天數 5 天 | 共 6 篇文章 | 0 人訂閱 訂閱系列文 RSS系列文
DAY 1

為什麼 Linux 記憶體管理值得拆 30 天

Linux 記憶體管理是我一直想系統整理的主題。平常我們很常看到一些看似簡單、但其實牽到很深的問題:為什麼 free 顯示記憶體快滿了,系統卻還跑得好好的?為什...

2026-08-14 ‧ 由 c8763yee 分享
DAY 2

虛擬記憶體:每個 process 看到的假象

如果只從程式的角度看,記憶體好像很單純。宣告變數、配置 buffer、呼叫 malloc(),拿到一個位址,接著讀寫它。可是這個位址通常不是實體 RAM 上真正...

2026-08-15 ‧ 由 c8763yee 分享
DAY 3

VMA、mmap 與 process address space

昨天提到,每個 process 都有自己的虛擬位址空間。不過 kernel 不會把整個位址空間當成一大塊平面來管理。它會把有意義的區間拆成多個 VMA,也就是...

2026-08-16 ‧ 由 c8763yee 分享
DAY 4

Page table:位址轉換到底怎麼做

VMA 告訴 kernel 某段虛擬位址應該怎麼處理,但 CPU 每次讀寫記憶體時,需要的是更具體的答案:這個虛擬位址到底對應到哪個實體頁面?這就是 page...

2026-08-17 ‧ 由 c8763yee 分享
DAY 5

TLB:為什麼快取位址轉換很重要

page table 解決了虛擬位址到實體位址的對應問題,但它也帶來一個效能問題。每次 CPU 存取記憶體,如果都要走多層 page table,成本會非常高。...

2026-08-18 ‧ 由 c8763yee 分享
DAY 5

Anonymous memory 與 file-backed memory

Linux 管理記憶體時,常會區分 anonymous memory 和 file-backed memory。這個差異會影響 page fault 怎麼處理、...

2026-08-20 ‧ 由 c8763yee 分享