remap_pfn_range
函数(用于调用驱动程序中的mmap
)可用于将内核内存映射到用户空间。它是如何完成的?任何人都可以解释精确的步骤内核模式是特权模式(PM),而用户空间是非特权(NPM)。在PM中,CPU可以访问所有内存,而在NPM中,某些内存受到限制 - 不能由CPU访问。当调用remap_pfn_range
时,现在仅限于PM的内存范围现在是如何被用户空间访问的?remap_pfn_range如何将内核内存重新映射到用户空间?
看着remap_pfn_range
代码有pgprot_t struct
。这是保护映射相关的结构。什么是保护映射?这是上述问题的答案吗?
“与内核的页表匹配的部分内容与每个进程不重复”,当你说你的意思是所有进程都使用的内核映射只有一个页表副本时?你能否详细说明如何做到这一点? – user31986 2015-09-02 02:09:56
也许读到这个:http://turkeyland.net/projects/overflow/intro.php 从图片可以看到,一个进程的一组页表,其基地址将被加载到CR3寄存器。对于要在不同进程中共享的所有这些虚拟地址(特定于内核),所有这些都将具有指向相同物理页面的相同值。希望澄清。 – 2015-09-03 02:47:44
如何保持“毫米信号量”? – 2015-12-29 20:03:09