MAP_ANONYMOUS|MAP_SHARED选项在mmap中的作用是什么?我看到malloc使用MAP_ANONYMOUS|MAP_PRIVATE选项来执行mmap来进行更大的内存分配。
我观察到,对于MAP_ANONYMOUS|MAP_PRIVATE,未映射的内存区域仍然与进程(通过pmap观察到),而对于MAP_ANONYMOUS|MAP_SHARED,未映射的内存区域被立即释放。
发布于 2014-05-30 23:31:42
当使用MAP_ANONYMOUS时,MAP_PRIVATE与MAP_SHARED只有在进程分叉一个也使用映射内存块的子进程时才会起作用。
如果使用MAP_PRIVATE,映射的内存将被标记为在写上复制,因此另一个进程不会看到其中一个进程所做的更改。
如果使用MAP_SHARED,映射的内存由两个进程共享,因此它们可以看到对方的更改。
malloc()使用MAP_PRIVATE,这样父和子节点就可以继续使用映射的内存来处理它们的堆,而无需同步更新。它的行为就像用于普通堆的数据段一样。
https://stackoverflow.com/questions/23964594
复制相似问题