【问题标题】:How does entire physical address space is mapped in virtual address space?整个物理地址空间如何映射到虚拟地址空间中?
【发布时间】:2020-11-26 09:25:01
【问题描述】:

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

【问题讨论】:

    标签: operating-system xv6 virtual-address-space


    【解决方案1】:

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

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

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

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

    当然,这在实际系统上仍然可能会失败(只要 RAM 过多,尤其是对于 32 位 CPU)。幸运的是,XV6 仅用于“教育目的”,预计不会在真实计算机上实际运行,所以这不是一个大问题。

    【讨论】:

    • 如果我错了,请纠正我。我假设物理空间和 RAM 是相同的,内核地址空间将在物理地址空间内,除了进程地址空间
    • @RohitReddy:物理地址空间包含 RAM、ROM、各种内存映射设备,以及额外的未使用空间(用于未来扩展等)。对于现代 80x86 CPU,通常(取决于哪个 CPU)物理地址为 48 位,可以计算出 256 TiB 的空间,但 RAM 通常为 32 GiB 或更少(小于物理地址空间的 1%)。
    猜你喜欢
    • 2014-12-11
    • 1970-01-01
    • 2017-05-06
    • 2020-04-16
    • 1970-01-01
    • 2012-02-18
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多