1

有谁知道是否有办法找出物理页面是用户页面还是内核页面。内核页面始终在内核中访问,并且对用户进程不可用。

4

1 回答 1

3

基本上,如果有问题的地址高于低内存范围,它实际上是用户地址(内存)。内核只能使用低内存,它总是保留给内核使用。cat /proc/meminfo 将为您提供有关内存分区的详细信息。

如果您想以编程方式执行此操作,

find_vmap_area(addr);

此函数获取您的地址并返回 vmarea 结构。当你得到vmarea结构时,你可以寻找一个标志

area->flags |= VM_USERMAP;

如果设置了这个标志,它的用户地址。

这是一种方法。可能有更好的方法,甚至可能有一个功能可以完成所有这些。事实上,我隐约记得见过一个。虽然,现在找不到了。

于 2013-10-03T19:30:17.800 回答