gpt4 book ai didi

linux - sbrk(2) 或 mmap(2) 可以阻塞吗?

转载 作者:太空狗 更新时间:2023-10-29 12:17:57 25 4
gpt4 key购买 nike

正如标题所说,sbrk(2) 或 mmap(2) 可以阻塞吗?比如,他们可以 sleep ,或者做任何其他让调度程序屈服的事情吗?

最佳答案

是的,他们可以。

现代系统上的 sbrk() 与 mmap() 非常相似,因此可以将它们作为一个整体来讨论。

而mmap()可以阻塞,因为设置用户可见的虚拟内存映射需要在内核端设置一个相对复杂的数据结构,这涉及内核从其内部分配器分配内存(例如kmem_cache_alloc(),它可以阻塞除非要求不要)。

内核代码支持非阻塞内存映射,但只在特殊情况下使用,因为无法保证这样的映射总是成功。在足够新的 linux 系统上,可以使用 MAP_NONBLOCK 标志从用户空间显式请求此行为以调用 mmap()(准备好处理映射失败)。

关于linux - sbrk(2) 或 mmap(2) 可以阻塞吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20084154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com