Despite continued interest仍无法在Linux上创建内存区域的“牛副本”。随着memfd_create(2)
系统调用的开始,情况略有改善,因为不必为共享内存创建显式文件。
我想知道,为什么不存在以下这样的事情?
void *ptr = mmap((void *)0, size, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, (size_t)0);
void *ptr2= mremap(ptr, 0, size, MREMAP_MAYMOVE | MREMAP_COW);
预期的语义是ptr2
和ptr
共享底层内存,但是来自其中一个的写入将触发具有页面粒度的写时复制。
这只是“没有人愿意实施这个”的案例,还是我遗漏了一些技术问题?