【发布时间】:2017-02-27 05:21:23
【问题描述】:
系统调用映射文件:
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?
【问题讨论】:
-
你的逻辑对我来说似乎是正确的。如果
munmap的大小为8193,他们的答案将是正确的。 -
@duskwuff 根据pubs.opengroup.org/onlinepubs/009695399/functions/munmap.html,
addr必须是页面大小的倍数,但它并没有说明len。 -
@Barmar 我的错误。误读文档。