Heap

来自osdev
跳到导航 跳到搜索

This article is a stub! 此页面或段落为 草稿。 你可以通过更精确的编辑贡献 来帮助本wiki。

堆(Heap)

堆是应用程序和内核的重要组成部分。 它通常还被更高级别的内存管理所取代,后者处理更大的内存块。 对于大多数操作系统,内存将基于页面或其他大块分配。 X86和X64体系结构上的页面通常为4KB,但也可以更大。 但是,对于较小的分配,整个页面都会被浪费。 例如,如果您只需要24个字节,并且分配了整个4KB页面,那么您将浪费大量内存。 因此,大多数应用程序和内核将实施第二个内存管理方案,使用分配在4KB块(或更大)中的内存,并根据请求将这些页面或单个页面分割成更小的部分。

标准库、应用程序和内核

大多数操作系统中的应用程序都有自己的堆实现作为标准库的一部分,并且不使用内核使用的那个堆实现。 因此,不仅内核的堆与每个应用程序的堆是分开的,而且它很可能使用不同的堆实现。 此外,这还允许每个应用程序使用自己的实现,具体取决于构建时所依据的标准库或使用的标准库。 但是,没有理由内核不能直接向应用程序提供堆服务。 还必须注意的是,没有办法强制应用程序使用特定的堆或实现,因为聪明的程序员可以简单地使用分配得到的内存来完成自己的实现。

如果您正在寻找有关分页或分发更大的内存块 (例如4KB) 并在大边界上对齐的有关设计内存系统的信息,那么这不是正确的页面。 试试看内存管理

教程/实施/文章

页面 简述
Simple Heap Implementation 一种简单、可移植且相当高效的内存实现。
写一个堆实现 实现基础的首个内存管理并不是那么难...(待续)。