linux boot阶段内存分配(x86)

编程入门 行业动态 更新时间:2024-10-25 17:22:23

linux boot阶段内存<a href=https://www.elefans.com/category/jswz/34/1770682.html style=分配(x86)"/>

linux boot阶段内存分配(x86)

x86中没有boot memory allocator,是用 memblock 来分配的。
memblock有memory 与reserved两种类型,它们的内存是静态内存,不需要用memblock本身去维护。
memblock.memory指的是所有可用的内存,在init_numa或为driver分配内存时,将分配的区间绑定到memblock.memory上,后面就可以去这个区瓜分对应类型的内存。所有在boot时期动态分配的内存都是从memblock.reserved上分配的,释放时也是还到memblock.reserved上。
在转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完全相同,不同用途的内存区域不可以合并

更多推荐

linux boot阶段内存分配(x86)

本文发布于:2023-11-17 01:06:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1636278.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:分配   内存   阶段   linux   boot

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!