Boot Memory分配器

在内核启动到mem_init()函数执行的这段时间里,Buddy系统没有初始化。在这个阶段,内核可以直接访问的数据空间包括内核的data段、bss段、sdata段中的数据。但是在内核初始化时,难免会使用到动态内存,那么此时,在不存在Buddy系统的情况下,内核便使用Boot Memory分配器管理物理内存。

Boot Memory分配器使用FFB(First Fit Allocator)算法管理空闲空间。FFB算法使用位图描述整个物理内存空间。位图中的位表示一个物理页面。如果某位为1,表示相应的物理页面已被使用。

使用FFB分配内存时,容易造成过多的外部碎片。另外需要注意的是,绝大多数在系统初始化中使用的BootMemory将不会被释放。
start_kernel()执行到一定阶段后,会调用mem_init()初始化Buddy系统。mem_init()进一步调用free_all_bootmem()将Boot Memory中的空闲页面释放到Buddy系统中。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值