Linux中有关页面管理初步建立的思维导图,包括页面管理机制的初步建立、init_bootmem()函数、free_bootmem( )函数、reserve_bootmem()函数
树图思维导图提供 页面管理初步建立思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 页面管理初步建立思维导图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:bd1f04955874af7f5b5f724a8565b905
页面管理初步建立思维导图思维导图模板大纲
为了对页面管理机制作出初步准备,Linux 使用了一种叫 bootmem 分配器(BootmemAllocator)的机制
仅仅用在系统引导时,为整个物理内存建立起一个页面位图
位图建立在从 start_pfn 开始的地方
内核映像终点_end 上方的地方
仅在初始化时用来建立bootmem分配器
实际上是init_bootmem_core()函数的封装函数
参数 start 表示内核映像结束处的页面号,而 pages 表示物理内存顶点所在的页面号
而函数 init_bootmem_core()就是对 contig_page_data 变量进行初始化
把给定范围的页面标记为空闲
把位图中某些位清 0,表示相应的物理内存可以投入分配
变量 eidx 被初始化为页面总数
变量 end 被初始化为最后一个页面的页面号
进行两个可能的条件检查
start 初始化为第一个页面的页面号(向上取整)
sidx(start index)初始化为相对于 node_boot_start 的页面号
清位图中从 sidx 到 eidx 的所有位,即把这些页面标记为可用
为封装函数,实际调用的是 reserve_bootmem_core()函数
用来保留页面
为了保留一个页面,只需要在 bootmem 位图中把相应的位置为1 即可
sidx (start index)初始化为相对于 node_boot_start 的页面号
变量 eidx 初始化为页面总数(向上取整)
变量 end 初始化为最后一个页面的页面号(向上取整)
进行各种可能的条件检查
把位图中从 sidx 到 eidx 的所有位置 1。