【发布时间】:2017-11-06 12:48:30
【问题描述】:
目前致力于 Arm Xilinx 开发平台。使用 linux 和 C。
我映射了一些页面。例如a = mmap(...) 。我想知道哪些页面最近使用最少,以便我可以将它们复制到其他地方。
【问题讨论】:
-
XY problem? 为什么你需要知道?谁访问它们?简单的回答:你不能,除非你将这些访问封装在其他人使用的函数中。
-
我正在写一个库,我想知道哪些页面最近最少使用,所以我可以将它们复制到其他地方。
-
库不能这样做,除非它将所有访问都包装在调用者必须使用的函数中(这会非常不方便)。 内核也许可以做类似的事情。
-
您可以在页面被访问时被告知:将访问权限设置为
PROT_NONE(使用 mprotect)并安装一个 segv 处理程序,该处理程序将在任何时候访问变量时调用。但是,如果频繁访问变量,这当然会对性能产生重大影响。 -
要么在调试器中插入观察点,要么插入探查器检测,或者简单地输入日志信息。