先看這個 MMAP 機制通俗易懂-CSDN博客
一句話
**mmap(memory map)是操作系統提供的“把文件或設備直接映射到進程虛擬地址空間”的機制,Java 里對應 `MappedByteBuffer`。**
---
### 1. 技術本質
- 系統調用:`mmap()`(POSIX)、`CreateFileMapping`(Windows)。
- 作用:把一段**文件內容**或**物理設備內存**變成一段**可以像內存一樣訪問的地址**。
- 讀文件不再用 `read()`,寫文件不再用 `write()`,而是像訪問數組一樣 `buffer[i]` 即可。
---
### 2. 工作流程(簡化版)
```
磁盤文件 page-cache ←→ 進程虛擬地址空間
↑
缺頁中斷按需加載
```
- **第一次訪問**某個頁 → 缺頁中斷 → 內核把對應磁盤塊讀進頁緩存 → 建立映射 → 后續就是純內存訪問。
- **寫操作** → 修改頁緩存 → 由內核異步刷盤(`msync`/`force()` 可強制同步)。
---