陈老师回复:你理解的没错,的确是所有的物理内存都会被内核页表在系统启动时刻进行映射——除非是高端内存(有关这个内容你可查看经验交流中的“小论内存映射”一文——,而且是连续的进行了映射。
另外映射不代表分配,分配是在需要时刻才进行的,对于内核于用户进程同时可映射一个物理地址的说法,你也理解正确。 同样一段物理内存是可以建立多个映射关系,系统初始化话时通常使用内核页表会映射所有的物理内存,因此内核可访问所有的物理内存;而进程请求内存时(动态或静态的),内核会分配一块内存,然后用进程自己的页表进行映射,使得其被映射到进程的虚拟地址空间(0x000000000-0xc0000000),这样进程才可访问该内存区。——当然内核也可以访问这里,因为内核页表映射了所有内存。
storm earth fire hear my call
you are too late
my brother will not die in vain
叛逆善良