mmap()
系统调用在调用进程的虚拟地址空间中创建一个新内存映射,映射分为两种:
一个进程的映射中的内存可以与其他进程中的映射共享(即各个进程的页表条目指向 RAM 中相同分页),这可以发生在两种情况下:
映射的权限决定了是否共享相同分页时,其他进程能否互相可见:
MAP_PRIVATE
:在映射内容上发生的变更对其他进程不可见,在内存中使用**写时复制(copy-on-write)**来完成该任务。
MAP_SHARED
:在映射内容上发生的变更对所有共享同一个映射的其他进程都可见,对于文件映射来讲,变更将会发生在底层的文件上。不同可见性和映射类型有着不同的用途:
#include <sys/mman.h>
void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);