基本概述

mmap()系统调用在调用进程的虚拟地址空间中创建一个新内存映射,映射分为两种:

一个进程的映射中的内存可以与其他进程中的映射共享(即各个进程的页表条目指向 RAM 中相同分页),这可以发生在两种情况下:

  1. 两个进程映射了同一个文件的同一个区域,会共享物理内存的相同分页。
  2. fork() 创建的子进程会继承其父进程的映射的副本,并且映射所引用的分页也是相同的。

映射的权限决定了是否共享相同分页时,其他进程能否互相可见:

不同可见性和映射类型有着不同的用途:

Untitled

基础操作

创建映射 — mmap()

#include <sys/mman.h>
void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);