Operating system 整个物理地址空间如何映射到虚拟地址空间?

Operating system 整个物理地址空间如何映射到虚拟地址空间?,operating-system,xv6,virtual-address-space,Operating System,Xv6,Virtual Address Space,我已经读到,在XV6中,每个进程的虚拟地址空间都映射了整个物理地址空间。这怎么可能呢 我已经读到,在XV6中,每个进程的虚拟地址空间都映射了整个物理地址空间。这怎么可能呢 通常,虚拟地址空间分为两个区域-用户空间(属于当前进程)和内核空间(所有进程相同)。然后将内核空间划分为更小的区域(内核的代码和数据、内存映射设备的区域等)。如果剩余的内核空间足够大,可以容纳整个物理地址空间,那么就没有问题(但这是极不可能的) 但是,;这可能不是XV6的实际功能。更可能的是,它只将物理RAM映射到内核空间(而

我已经读到,在XV6中,每个进程的虚拟地址空间都映射了整个物理地址空间。这怎么可能呢

我已经读到,在XV6中,每个进程的虚拟地址空间都映射了整个物理地址空间。这怎么可能呢

通常,虚拟地址空间分为两个区域-用户空间(属于当前进程)和内核空间(所有进程相同)。然后将内核空间划分为更小的区域(内核的代码和数据、内存映射设备的区域等)。如果剩余的内核空间足够大,可以容纳整个物理地址空间,那么就没有问题(但这是极不可能的)

但是,;这可能不是XV6的实际功能。更可能的是,它只将物理RAM映射到内核空间(而根本不映射整个物理地址空间)

对于一些实数;假设您有一台具有128 MiB RAM的计算机和一台具有4 GiB物理地址空间的32位CPU(其中大部分物理地址空间未使用,不是RAM);您还剩下256个MiB的内核空间。在这种情况下,128个MiB的RAM将适合剩余256个MiB的内核空间(但整个4个GiB的物理地址空间将不适合)


当然,这在实际系统上仍然可能失败(当RAM太多时,尤其是对于32位CPU)。幸运的是,XV6仅用于“教育目的”,预计不会在真正的计算机上工作,因此这不是一个大问题。

如果我错了,请纠正我。我假设物理空间和RAM是相同的,内核地址空间将位于物理地址空间内,而进程地址除外space@RohitReddy:物理地址空间包含RAM、ROM、各种内存映射设备以及额外的未使用空间(用于将来的扩展等)。对于现代80x86 CPU,通常(取决于哪个CPU而有所不同)物理地址为48位,即256 TiB的空间,但RAM通常为32 GiB或更低(小于物理地址空间的1%)。