图片无法显示,请右键点击新窗口打开图片

BiscuitOS 内存管理之分页大专题订阅入口

图片无法显示,请右键点击新窗口打开图片

在 Linux 系统物理地址空间(System Physical Address Space) 存在 DIMM 映射的物理内存,以及外设寄存器映射的 MMIO,还有一些 Hole,Linux 在系统启动时从 BIOS 通过 E820 获得了物理内存在系统物理地址空间的布局,接着系统会因为不同的需求将物理内存划分成两类: OSMEM(OS Manager Memory) 即系统管理的物理内存,以及 RSVDMEM(Reserved Memory) 即系统不管理的物理内存.

图片无法显示,请右键点击新窗口打开图片

RSVDMEM 物理内存 一般由设备独立管理,包括物理内存的分配、回收、页表映射、标脏等操作,由于 RSVDMEM 内存没有使用 struct page 数据结构进行描述,因此只能通过 PFN(Page Frame Number) 进行管理,因此在建立页表时直接将虚拟内存映射到 PFN 上,因此称这种映射方式为 PFNMAP, 那么称采用这种映射的内存为 PFNMAP 内存. PFNMAP 支持虚拟内存映射 4KiB 的物理区域,也支持映射 2MiB 或者 1Gig 的物理区域.

图片无法显示,请右键点击新窗口打开图片

图片无法显示,请右键点击新窗口打开图片

BiscuitOS 内存管理之分页大专题订阅入口

图片无法显示,请右键点击新窗口打开图片