进程的虚拟地址和内核中的虚拟地址有什么关系
1个回答
展开全部
在没有开启页式地址转换之前, 内核的虚拟地址经过一次段地址转换就直接得到物理地址了。也就是:
PA(物理地址) = LA(线性地址) = VA(虚拟/逻辑地址) - KERNBASE
在页式地址转换开启之后,不管是用户还是内核,都是需要通过页表来找到物理地址。所以内核访问任意(>=KERNBASE 的)虚拟地址 VA = KERNBASE - x , 都需要先经过一次段式转换得到 LA = VA - KERNBASE = x. 然后这个线性地址再通过页表得到物理地址。 而在页表中, KERNBASE开始的一段地址在页表中是直接映射到整个物理地址空间的,所以打开页式地址转换后内核使用虚拟地址KERNBASE+x访问到的正是物理地址x处的地址。 这和开启页式转换之前的线性映射结果相同。
PA(物理地址) = LA(线性地址) = VA(虚拟/逻辑地址) - KERNBASE
在页式地址转换开启之后,不管是用户还是内核,都是需要通过页表来找到物理地址。所以内核访问任意(>=KERNBASE 的)虚拟地址 VA = KERNBASE - x , 都需要先经过一次段式转换得到 LA = VA - KERNBASE = x. 然后这个线性地址再通过页表得到物理地址。 而在页表中, KERNBASE开始的一段地址在页表中是直接映射到整个物理地址空间的,所以打开页式地址转换后内核使用虚拟地址KERNBASE+x访问到的正是物理地址x处的地址。 这和开启页式转换之前的线性映射结果相同。
快又稳
2024-10-28 广告
2024-10-28 广告
在Linux环境下配置基于域名的虚拟主机,需安装Apache或Nginx等Web服务器,并编辑配置文件。以Apache为例,需创建虚拟主机配置文件,指定域名、文档根目录等,然后启用该配置文件并重启Apache服务。同样,Nginx也需在相应...
点击进入详情页
本回答由快又稳提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询