Linux 如何实现乐观内存分配?

How does Linux implement optimistic memory allocation?

提问人:weineng 提问时间:1/26/2023 更新时间:1/26/2023 访问量:87

问:

linux 手册页中,

默认情况下,Linux 遵循乐观内存分配 策略。这意味着当 malloc() 返回非 NULL 时 不能保证内存确实可用。

Linux 如何能够延迟分配内存?

我的猜测是调用了 sbrk,Linux 会记住进程 ID 并存储某种映射以确定它为哪个虚拟内存地址分配了物理地址。在哪里可以阅读以获取有关此内容的更多信息?

Linux 内存 malloc

评论


答:

-1赞 KamilCuk 1/26/2023 #1

https://man7.org/linux/man-pages/man3/malloc.3.html

   Normally, malloc() allocates memory from the heap, and adjusts
   the size of the heap as required, using sbrk(2).  When allocating
   blocks of memory larger than MMAP_THRESHOLD bytes, the glibc
   malloc() implementation allocates the memory as a private
   anonymous mapping using mmap(2).

请参阅为什么调用大尺寸的 mmap() 不会失败?。