该文件的哪些字节仍然映射?

时间:2016-10-18 04:46:39

标签: linux paging

使用系统调用映射文件:

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

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

munmap(65536, 8192)

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

1 个答案:

答案 0 :(得分:2)

您和答案密钥都是错误的,但方式不同。

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

这使得32768字节的整个映射达到8页。取消前8192个字节(2页)将使剩下的6个页面(2到8)保持不变。