在面试中,我被问到了这个问题。他们想知道当用户调用malloc(4)来分配4字节的内存时,操作系统(Linux)会如何响应?哪个子系统会响应此系统调用?
我告诉他,malloc()将由内存管理子系统提供服务。malloc()实现将通过空闲内存(物理内存)列表查找适当的大于或等于4字节的块。一旦找到这样的块,它将从空闲列表中删除并添加到一个已使用列表中。然后,该物理内存将映射到进程堆vma结构中。但是,他好像对这个答案不太满意。伙伴系统如何与此相匹配?任何帮助都将不胜感激。
我告诉他,malloc()将由内存管理子系统提供服务。malloc()实现将通过空闲内存(物理内存)列表查找适当的大于或等于4字节的块。一旦找到这样的块,它将从空闲列表中删除并添加到一个已使用列表中。然后,该物理内存将映射到进程堆vma结构中。但是,他好像对这个答案不太满意。伙伴系统如何与此相匹配?任何帮助都将不胜感激。
malloc()
从物理内存中分配,这有点错误。 - JeremyP