我对Linux内核中的页表管理感到困惑吗?
在Linux内核空间中,在打开页表之前.内核将使用1-1映射机制在虚拟内存中运行.打开页表后,内核会查询页表以将虚拟地址转换为物理内存地址.问题是:
这时,在打开页表后,内核空间仍然是1GB(从0xC0000000 - 0xFFFFFFFF)?
在内核进程的页表中,只映射了0xC0000000 - 0xFFFFFFFF范围内的页表项(PTE)?PTE超出此范围将不会映射,因为内核代码永远不会跳转到那里?
打开页面表之前和之后的映射地址是一样的吗?
例如.在打开页表之前,虚拟地址0xC00000FF映射到物理地址0x000000FF,然后在打开页表后,上面的映射不会改变.虚拟地址0xC00000FF仍然映射到物理地址0x000000FF.不同的是,只有在打开页表后,CPU才会查询页表,将虚拟地址转换为以前无需做的物理地址.
内核空间中的页表是全局的,并且将在系统中的所有进程(包括用户进程)之间共享?
这个机制在x86 32bit和ARM中是一样的吗?
我们如何在Flash中声明u-boot环境变量部分的地址?
从此处的描述:U-Boot环境是一个内存块,保存在永久存储器上,并在U-Boot启动时复制到RAM.
" 复制到RAM " 是什么意思?
U-boot会将环境变量的内存块复制到RAM吗?
谢谢