struct page -- 先有鸡,先有蛋?
系统启动时,为每个物理页面建立一个page结构,从而为内存管理建立了依据。而分配这些pages所占的内存时,还没有这些“依据”,即建立“依据”需要“依据”,没有退出条件的递归{:qq23:} 。
应该是跟bootmem_data这个东西有关吧? 系统启动时,第一个内存分配器是 bootmem,它通过 bitmap 的方式分配内存。
此时内核将大小为 4K 的内存分给一个 page 管理,而存储这些 page 的内存由 bootmem 分配。
等待 bootmem 分配器使命完成之后,存储 page 的内存位置信息会通过 struct zone 传递给 buddy system 进行管理。
bootmem 的分配采用自顶而下的分配方式。
bootmem_data 是内核初期物理内存信息的结构体 所以是先有存储 struct page 的地方,后有 struct page。
回复 3# Buddy_Zhang1
{:yxh22:} 哦,那struct page是鸡还是蛋:emn31: ? 回复 4# _nosay
没看出来 structpage 的逻辑存在什么鸡和蛋的关系 内核初始化阶段SLAB分配器未启动,所以使用了极其简单粗暴的方式,就是用位图直接标示内存哪一页被占了,在初始化后期会根据位图建立起page结构体数组,每一个page结构体代表一页物理内存。 回复 6# 剑魂箫心
哦,:em09:
页:
[1]