-
struct page :
描述的是一个物理页, 内存管理的最小单元, 只描述的是物理页面本身, 程序和系统运行,存在数据的换入换出, 因此page中的数据和page无本质的联系.数据结构定义在 : include/linux/mm_types.h 主要内容: (1) 页面状态(page-flags.h); (2) 页的类型: a. page cache/anonymous page; b. page_pool used by netstak(DMA address); c. slab, slob and slub; d. slab kmem_cache (高速缓存); e. compound page(复合页, 多个物理页组成的大页); f. Page table page; g. ZONE_DEVICE pages; (3) 页面引用计数(page_ref.h); (4) memory cgroup; (5) 页面虚拟地址(asm/page.h);
-
struct zone :
由于硬件的限制, 内核并不能堆所有的内存页都一视同仁, 有些页位于内存中的特定物理地址上, 用于特定用途, 内核将具有相同特性的页分组, 形成不同的zone. 硬件缺陷或者局限性,导致的寻址问题: (1) 一些硬件只能在特定地址执行DMA ; (2) 一些体系结构下物理内存比虚拟内存大得多, 一些内存就不能永久映射到内存; ZONE_DMA : 包含的页执行DMA 操作; ZONE_DMA32: 32位 DMA 操作; ZONE_NORMAL: 正常映射的页; ZONE_HIGHMEM: 高端内存, 不能永久映射到内核地址空间的页; 数据结构定义在 : include/linux/mmzone.h 各个zone的初始化: kernel/mm/page_alloc.c
Linux 内存管理简介
最新推荐文章于 2022-11-23 17:47:44 发布