linux boot阶段内存分配(x86)

news/2025/1/17 21:31:31/

x86中没有boot memory allocator,是用 memblock 来分配的。
memblock有memory 与reserved两种类型,它们的内存是静态内存,不需要用memblock本身去维护,它们被标记为__initdata_memblock,会在boot结束后(free_initmem)调free_reserved_page释放掉。
memblock.memory指的是所有可用的物理内存,是从bios读上来的各可用内存区(e820__memblock_setup)
所有在boot时期动态分配的内存都是记在memblock.reserved上的,它是从memblock.memory上切割下来的部分,释放时也是还到memblock.reserved上,可用于存如initrd、dtb中的设备保留内存、kernal 代码等。
在转buddy分配器时(start_kernel->mm_core_init->mem_init->memblock_free_all)会将所有memblock.memory中没有使用的内存切下来放到reserved内存中,然后将所有reserved的内存切分到buddy中。
切分过程是以最高阶向低阶切的,优先切满足高阶的部分。
在boot内存分配时,会去reserved列表中找一个大小合适的region(第一匹配),从后向前切出一个新region,如果没有region满足,则会将最后一个reserve的region变长。
在boot内存内存归还时,不是只要有连续内存就能合并,必须两段内存的flag完全相同,不同用途的内存区域不可以合并。


http://www.ppmy.cn/news/1202551.html

相关文章

数据结构——B树

文章目录 B树1. 概念2. B树插入分析3.插入过程4. B树插入实现5.B树验证6. B树性能分析7.B树&B*树8. 小结9. B树的运用MyISAMInnoDB 10. 总结 B树 可以用于查询的数据结构非常的多,比如说二插搜索树、平衡树、哈希表、位图、布隆过滤器,但如果需要存…

网页错误代码简便记忆

HTTP1xx-信息提示 2xx-成功 3xx-重定向 4xx-客户端错误 5xx-服务器错误

js 中的 map

文章目录 需求分析 需求 熟悉了解 map 使用 分析 下面是一个JavaScript中使用Map的示例: // 创建一个新的Map对象 var myMap new Map();// 向Map中添加元素 myMap.set(key1, value1); myMap.set(key2, value2); myMap.set(key3, value3);// 从Map中获取元素 co…

【网络编程】传输层——TCP协议

文章目录 TCP协议TCP协议格式窗口大小六个标志位确认应答机制超时重传机制连接管理机制三次握手四次挥手 流量控制滑动窗口拥塞控制延迟应答捎带应答面向字节流粘包问题TCP异常情况TCP小结基于TCP的应用层协议TCP与UDP的对比 TCP相关实验CLOSE_WAIT状态实验TIME_WAIT状态实验TI…

Mysql有多少种常见的日志,分别解释日志的作用

redo 重做日志 作用:确保事务的持久性,防止在发生故障,脏页未写入磁盘。重启数据库会进行redo log执行重做,到达事务一致性 undo 回滚日志 作用:保证数据的原子性,记录事务发生之前的数据的一个版本&#…

Q-Vision+CANpro Max总线解决方案

智能联网技术在国内的发展势头迅猛,随着汽车智能化、网联化发展大潮的到来,智能网联汽车逐步成为汽车发展的主要趋势。越来越多整车厂诉求,希望可以提供本土的测量软件,特别是关于ADAS测试。而风丘科技推出的Q-Vision软件不仅可支…

双通道 H 桥电机驱动芯片AT8833,软硬件兼容替代DRV8833,应用玩具、打印机等应用

上期小编给大家分享了单通道 H 桥电机驱动芯片,现在来讲一讲双通道的驱动芯片。 双通道 H 桥电机驱动芯片能通过控制电机的正反转、速度和停止等功能,实现对电机的精确控制。下面介绍双通道H桥电机驱动芯片的工作原理和特点。 一、工作原理 双通道 H 桥电…

定时发朋友圈怎么操作?

只需简单两步: 1)在朋友圈内容输入框中内输入需发送的文本内容,点击表情图标可在浮窗中选择表情。上传图片可点击“”图标按钮,选择本地的的图片发送到朋友圈中。。 2)选择发布时间,朋友圈发布时间有三种…