linux - 文件的哪些字节保持映射?

标签 linux paging

一个文件被系统调用映射:

mmap(65536, 32768, READ, FLAGS, fd, 0)

页面为 8 KB,因此映射了文件的 4 页(32768/8k = 4 页)。然后进行如下调用:

munmap(65536, 8192)

删除内存映射的指定部分。文件的哪些字节保持映射?答案是第 2 页和第 3 页仍然存在,因此只剩下字节 16384 到 32767;但是,我不确定这是对的。由于 munmap 命令的 len 参数(第二个参数)是 8192 字节,难道不应该只删除第 0 页,留下 8192 到 32767 字节吗?

最佳答案

你和答案都错了,但方式不同。

大多数系统上的内存页是 4 KB(4096 字节),而不是 8 KB。我从未听说过具有 8 KB 内存页的系统。

这使得整个 32768 字节的映射变成了 8 页。取消映射前 8192 个字节(2 页)会将剩余的 6 页(2 到 8)留在原处。

关于linux - 文件的哪些字节保持映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40099701/

相关文章:

c# - asp.net gridview动态绑定(bind)

linux - 如何从目录中删除 ACL 并恢复到通常的访问控制?

php - 使用 PHP 将网络文件从 Linux 主机复制到我的 Linux 服务器

linux - 什么是 Linux 堆栈?

英特尔 SGX HeapMaxSize 和 EPC 页面交换

memory-management - 页表条目的引用和修改位如何影响分页?

x86 - 为实模式设置分页到 64 位长模式切换

linux - 如何将标准输入复制到文件中

linux - 从文本文件中指定的位置复制文件或将文件复制到文本文件中指定的位置

c# - 在sql 2005中对大表进行分页