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

Ins*_*der 2 linux memory-management virtual-memory linux-kernel

根据手册页:

* 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.
Run Code Online (Sandbox Code Playgroud)

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

有人可以举例说明吗?

Ins*_*der 6

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

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

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

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