Mmap()是管理{地址,物理内存,磁盘块}之间的关联的方法之一,该关联的所有三个成员都是资源。关联保存在页面表项(PTE)中
mmap()的实际作用是:
- [也许]在用户进程内部分配一个地址范围。此范围必须包含连续的地址(不应与现有范围重叠)
- 为请求的范围创建PTE,并使它们指向地址范围内的页面
- 将PTE指向要进行mmap()处理的文件
- [也许]分配和预取(某些)页面
- [也许]保留一些后备存储。
上述步骤中有很多(5之3)是可选的,并取决于mmap()调用中提供的实际参数和标志。(fd可能为-1:创建匿名映射,起始地址可能为NULL:mmap应该分配(以前)未使用的内存范围)
调用mmap()之后,内核中的pagefault-handler应该能够找出要做什么。(将物理内存附加到页面上;刷新并分离;分配并COW,…)
不 保留交换空间意味着调用方相信 将来任何时候
都将有足够的交换空间。交换空间由所有进程共享,因此永远不能保证有足够的交换空间。预分配它(或多或少)可确保 调用过程
将始终具有足够的分配量。(否则:mmap()应该失败了)



