Sparrow OS内核启动内存分配器解析

需积分: 9 1 下载量 173 浏览量 更新于2024-09-10 收藏 634KB PDF 举报
"Sparrow OS设计文档连载五:Boot Memory Allocator" Sparrow OS是由作者赵凤阳(MichaelZ)历时一年半开发的一款小型嵌入式操作系统,目前已经完成并公开了相关文档。本文档主要讨论Boot Memory Allocator,这是在Sparrow OS启动过程中使用的临时内存分配器,在页分配器或slab分配器准备就绪之前,它负责内存管理。 **概述** Boot Memory Allocator是一个简单的内存分配器,它的主要任务是在页分配器或slab分配器启动之前,对物理内存进行临时管理。一旦系统中的页分配器或slab分配器初始化完毕,Boot Memory Allocator就会被弃用,转而由更高级的内存管理系统接管。 **位图(Bitmap)** Boot Memory Allocator的核心机制是位图,但实际上更准确地应该称为“字节图”,因为它的单位是字节而不是位。每个字节代表物理内存中的第n个页面的状态。位图的设计使得内存管理变得直观且高效。 **位图的容量与大小** - **容量**:Boot Memory Allocator设计支持的物理内存最大为64MB。 - **大小**:由于页面大小通常为4KB,因此位图的大小计算为64M / 4K = 16KB。 **位图的位置** 位图存储在内核内存空间中,地址范围为0xC0000000~0xC0004000,每个字节对应物理内存中的一个页面。 **规则** - 如果位图中的字节值为0x00,表示对应的页面是空闲的。 - 如果字节值非零,页面则被保留: - 值在0到0xff之间表示这是一个分配的起始字节,该值表示连续分配的页面数量。 - 值为0xff表示这是一个分配的后续字节。 **初始状态** 在系统的初始状态下,部分页面被内核二进制占用。 **演示(Demo)** 在演示中,可以看到Boot Memory Allocator如何表示和管理内存。部分页面在启动时被标记为已分配(非0字节),而其他页面则保持为空闲(0x00字节)。随着系统的运行,这个位图会根据内存分配和释放的变化而动态更新。 总结来说,Boot Memory Allocator是Sparrow OS启动阶段的关键组件,它使用位图技术有效地跟踪和管理物理内存,确保系统在更复杂的内存管理系统就绪之前能够正常运行。这种简单但有效的设计思路对于理解嵌入式操作系统的内存管理具有重要的学习价值。