Linux kernel之二内存管理之连续内存page fram

2021-11-27  本文已影响0人  1哥

1.固定长度的物理内存管理技术-page frame 管理

image.png image.png image.png image.png
zone 类型 物理内存范围
ZONE_DMA 0~16MB 的page frame
ZONE_NORMAL 16MB ~896MB
ZONE_HIGHMEML 高于896MB 的page frame
image.png image.png image.png image.png

2.page frame 的分配

1)虚拟地址空间划分:低3GB 空间用于用户空间,高1GB 用于内核地址空间


image.png

2)ZONE DMA 和ZONE_NORMAL 对应内核虚拟地址物理内存直接映射区,其虚拟地址到物理地址映射的PTE 已经建好了,虚拟地址与物理地址之间只相差(PAGE_OFFSET,即0xC0000000)
3)来自ZONE_HIGH 分配的page, 内核没有进行地址映射,需调用者在内核虚拟地址 Fixmaps 区或者动态映射区分配一个虚拟地址,然后映射到该物理page frame 上


image.png
4)ZONE_NORAML 和ZONE_DMA
image.png
函数 含义
alloc_pages(gfp_mask,order) 请求2^order 的page frame,返回第一个页描述符
alloc_page(gfp_mask) 请求一个的page frame,返回第一个页描述符 or NULL
__get_free_pages(gfp_mask, order) 类似alloc_pages,返回线性地址
_ _get_free_page(gfp_mask) 返回单个page frame的线性地址
get_zeroed_page(gfp_mask) 等同于alloc_pages(gfp_mask |__GFP_ZERO, 0)
__get_dma_pages(gfp_mask, order) 等同于__get_free_pages(gfp_mask| __GFP_DMA, order)|
image.png image.png

3.伙伴(buddy)分配系统

上一篇 下一篇

猜你喜欢

热点阅读