linux -/proc/<pid>/status 中的 VmLck(锁定内存)与 VmPin(固定内存)

标签 linux memory-management linux-kernel virtual-memory

根据手册页:

* VmLck: Locked memory size (see mlock(3)).

* VmPin: Pinned memory size (since Linux 3.2).
  These are pages that can't be moved because something needs
  to directly access physical memory.

我知道什么是锁定内存(mlock、mlockall),但老实说我不明白固定内存的概念以及它与锁定内存有何不同。

有人可以举例说明吗?

最佳答案

经过一些研究,我现在能够回答我自己的问题,希望它对 future 的访问者有所帮助。

锁定的内存永远不会从主内存中换出。这意味着锁定在物理内存中的页面保证始终存在于 RAM 中。但是,不能保证页面错误永远不会发生,因为内核仍然可以自由地在物理内存中移动页面。

固定内存是固定在特定页框位置的锁定内存。这意味着固定页面既不能从主内存中换出,也不能在物理 RAM 中移动,因此可以保证永远不会发生页面错误。这是硬实时应用程序的理想要求。

了解更多:https://lwn.net/Articles/600502/

关于linux -/proc/<pid>/status 中的 VmLck(锁定内存)与 VmPin(固定内存),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62332067/

相关文章:

linux - 在notepad++中连续搜索两行

python - 如何在 Python 中获取 Linux 控制台窗口宽度

c# - 无法将大量数据写入流

c - 什么时候使用 valloc() 而不是 malloc() 更合适?

c - 函数局部的静态变量

c - 如何在 Linux 内核空间使用 ioctl()?

linux - 查找:-exec 缺少参数不复制

linux - 我如何计算出 BPF 辅助函数的返回码的含义?

linux - Linux接收器窗口自动调整部分源代码

c++ - 符号指针与常规符号查找的 ABI 稳定性