【问题标题】:How do I tell if two addresses are in the same page file?如何判断两个地址是否在同一个页面文件中?
【发布时间】:2012-02-03 02:20:36
【问题描述】:

涉及哪些数学运算,如何判断两个地址是否在同一个 4 KB 页面中?

【问题讨论】:

    标签: memory memory-management paging pagefile


    【解决方案1】:

    好吧,假设 4 KiB 页面,

    #include <stdint.h>
    bool same_page(const void *x, const void *y)
    {
        uintptr_t mask = ~(uintptr_t) 4095;
        return ((uintptr_t) x & mask) == ((uintptr_t) y & mask);
    }
    

    这将很快变得丑陋,因为页面在常见架构上具有可变大小,并且特定内存区域的页面大小可以并且将由操作系统根据应用程序内存使用模式动态更改。

    (注意内存页是虚拟内存而不是物理内存。严格来说说物理页是没有意义的,虽然我们通常理解当有人表示“物理页面”,它们的意思是“对应于页面的物理内存”。)

    【讨论】:

      猜你喜欢
      • 2014-12-23
      • 1970-01-01
      • 2013-11-07
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多