Memory-Mapped Files

Memory-mapped file 把 file 的某段內容映射到 process virtual address space。Application 之後用 memory load / store 存取該區域;真正的 disk I/O 由 page fault 與 write-back 觸發。

file blocks ↔ virtual pages ↔ process address space

基本流程:

  1. Process 要求 map file range。
  2. OS 建立 virtual pages 與 file offsets 的 mapping。
  3. 第一次碰到尚未載入的 page 時發生 page fault。
  4. OS 從 file system 讀入對應 block。
  5. Writable mapping 被修改後,dirty pages 之後再 write-back。

Memory mapping 適合 large file random access、loader、shared libraries,也可用於 shared memory。

Related:D-OS-Ch13ea-Shared_Memory_via_Memory_Mapped_FilesD-OS-Ch10b-Demand_PagingD-OS-Ch10ba-Page_Fault