我今天参加了一次面试,被问到了这个问题:如果你需要分配2KB大小的内存并且要求分配的内存是页对齐的,你会使用什么内核内存分配策略?
KMALLOC处理较小的内存分配策略,但它支持的最低单位是4KB,即物理页面的大小。我问他是否期望使用slab分配器?他没有积极回答。
我今天参加了一次面试,被问到了这个问题:如果你需要分配2KB大小的内存并且要求分配的内存是页对齐的,你会使用什么内核内存分配策略?
KMALLOC处理较小的内存分配策略,但它支持的最低单位是4KB,即物理页面的大小。我问他是否期望使用slab分配器?他没有积极回答。
我在这里阅读了: http://www.makelinux.net/books/lkd2/ch11lev1sec4
该函数返回一个指向至少大小为size字节的内存区域的指针
我知道操作系统x86(32位)- RAM中最大大小映射为4GB,但它包括引用和信息暴力破解。
因此,4GB是所有可用空间,转换为“KB”= 4194304 KB,内存RAM等于网格4194304个空间(索引和正文信息),或者正方形的一边(在拉丁语中为Radix Quadratum)SQRT(4194304)=仅索引信息的所有大小,如下面的“int flags”所示)
void * kmalloc(size_t size, int flags)
您可能希望使用该函数,以使用不同于2或4的KB。
敬礼