发新话题
打印

内核本身的地址是怎样映射的?

内核本身的地址是怎样映射的?

为什么内核在进行进程调度改变了CR3的内容之后还能继续运行,难道内核本身不用MMU映射地址,而是直接使用物理地址吗?      

TOP

你应该知道一个进程的虚存空间为4G吧,而每一进程的后1g 即从c0000000开始是映射内核的.所以即使切换后(改变cr3),后1g映射的相当于没变!这样的话不就还是可以平稳的执行了吗? 不知道这样的解释满意否?
              ---lxmyzf@163.com      

TOP

谢谢回贴,我就是想问这系统的1G空间是怎样映射的,内核本身在寻址的时候不使用MMU吗? 也就是说当CPU的工作状态在内核态与用户态切换时地址映射发生了怎样的改变.      

TOP

我也想知道,内核到底是怎样映射内存地址的,请高手指点。      

TOP

内核的地址映射是简单的线性映射,0xC0000000(3G)是线性地址和物理地址的差值。对于内核空间,给定一个虚地址x,其物理地址是从x中减去3G。从物理地址到虚拟地址的变换也是相应的。      

TOP

linux内核源代码情景分析

看一下<<linux内核源代码情景分析>>第667~672页就明白了      

TOP

发新话题