本文旨在記錄 Computer Systems: A Programmer's Perspective (CS:APP) 一書第七章閱讀心得,該書是 CMU 的計算機系統概論的教材 (難度相當於台灣的大學高年級),該書的簡體中文翻譯名稱為《深入理解計算機系統》。
CS:APP 亦是 Linux Kernel Internals 2024 Spring 課程指定教材,並一同收錄於
Linux Kernel Internals 2024 Spring Collections。
下圖為 Linux 行程當中記憶體配置的示意圖:
另一張圖將 MMU 各個部分和 Linux 核心程式碼連結:
我們可以在 include/linux/mm_types.h
找到相對應的結構 vm_area_struct
注意到 mm_struct
並不直接帶有 vm_area_struct
,而是後者透過 vm_area_struct->vm_mm
儲存。
若深入追究,我們可以在 copy_process()
下看到一系列初始化 VMA 的操作,如 copy_mm()
,而其下之 copy_mm()
有以下操作
dup_mm()
其內的 dup_mmap()
就能看到如上圖其指定所屬 mm_struct
和一般鏈結多個 vma 的操作: