【问题标题】:Which bytes of the file remain mapped?文件的哪些字节保持映射?
【发布时间】: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?

【问题讨论】:

标签: linux paging


【解决方案1】:

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

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

这使得 32768 字节的整个映射变为 8 页。取消映射前 8192 个字节(2 页)将保留其余 6 页(2 到 8)。

【讨论】:

    猜你喜欢
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    相关资源
    最近更新 更多