小编Iva*_*nev的帖子

Linux 如何为其物理分配器分配内存?

我最近正在深入研究 Linux 内存管理的细节,因为我想为我自己的玩具内核实现类似的东西,所以我希望熟悉细节的人能帮助我理解一件事。显然,物理内存管理器是一种伙伴算法,它进一步专门用于返回特定顺序(0 到 9,0 只是单个页面)的页面块。对于每个订单,块都存储为一个链表。假设如果请求了一个 5 阶的块但在 5 阶块的列表中没有找到,算法会搜索一个 6 阶的块,将它分成两部分,给请求的一半,并将另一半移低一个顺序(如它是一半大小)。我不明白的是内核如何存储这些结构,或者它如何为它们分配空间。因为对于 0 阶页面,您需要 1M 条目(每个条目是 4KiB 页面),这是否意味着内核分配了 1MiB * sizeof(struct page)?1 阶及以上的区块呢?内核是否通过将分配的块标记为更高的顺序来重用它们,当它需要将它分成两部分时,只需返回块并获取一个未使用的块?

c linux kernel memory-management linux-kernel

5
推荐指数
1
解决办法
1169
查看次数

标签 统计

c ×1

kernel ×1

linux ×1

linux-kernel ×1

memory-management ×1