在Linux内核中取消映射“两次”映射页面

时间:2015-12-23 10:48:26

标签: memory-management linux-kernel

我使用 kmap 在Linux内核模块中获取低内存页面的第一个虚拟地址。

如果我在映射后调用 kunmap 会怎样?持久页面映射是完全删除还是只是某些映射计数器减少了? (在取消映射之前应该是2)

1 个答案:

答案 0 :(得分:0)

如果页面属于低内存,则kmap没有映射,因此kunmap也没有执行任何操作,但调用它们是无害的,因为这些检查在实现中处理。

首先讲述kmap

  

kmap检查页面是否低于highmem_start_page(即lowmemory页面)as   lowmem中的页面已经可见,不需要映射。如果   页面已经在低内存中kmap只返回它的地址。

现在关于kunmap

  

kunmap检查页面是否低于highmem_start_page。如果是的话   页面已经存在于低内存中,无需进一步处理,因此nop。