使用normal zone地址访问物理内存时需要mmu转换吗

在用户空间访问物理内存时,需要经过mmu的转换,将虚拟地址转换为内存物理地址,
在内核空的normal zone,虚拟地址和物理地址之间的转换关系是线性的,因此,可以直接在两者之间换算,
但是,内核在执行时,如果每次访问normal zone中的数据时,要人为的去作这种地址映射换算,岂不影响效率?
所以,我想是否在某个地方单独为nromal zone,建立了页目录,像用户空间访问内存一样,使得mmu每次看到normal zone中的地址时,自动进行转换?

作者: aihfaobh   发布时间: 2011-03-04

对于X86 CPU来说,不管是在用户态还是内核态,只要访问虚拟地址必须通过段页变换。所谓normal内存减去一个偏移可以得到物理地址,只是页表是这么建立的而已,CPU执行的段页变换过程是不会省略的。
对于其它CPU,比如mips来说,用户态要用TLB来映射,但是内核seg0等CPU直接掩码就得到物理地址,这个跟X86有所差异。

作者: 银河渡口   发布时间: 2011-03-05