【问题标题】:Does freeing locked memory unlock the corresponding pages?释放锁定的内存是否会解锁相应的页面?
【发布时间】:2013-04-17 09:38:35
【问题描述】:

很清楚如何结合mlockall()malloc() 来锁定进程在其生命周期内分配的所有页面。通过阅读文档,我不清楚释放已锁定内存是否意味着相应页面的自动解锁。

【问题讨论】:

    标签: c++ c unix memory posix


    【解决方案1】:

    如果free 将内存返回给系统(即,它是用mmap 分配的,将用munmap 释放),那么当它被取消映射时,锁将自动被移除。这通常是大分配的情况。

    如果free 将内存返回到进程内管理的堆,则锁将保留。这通常是小分配的情况。

    在 GNU/Linux 上,您可以使用 mallopt 获取和设置使用 mmap 的分配阈值;默认(至少在我的电脑上)是 128kb。在其他 Unix 风格上,如果您需要那种级别的控制,您可能需要直接使用 mmap

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-04
      • 1970-01-01
      • 2011-11-02
      • 1970-01-01
      • 2017-10-15
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      相关资源
      最近更新 更多