【问题标题】:How does a memory managemet unit map a virtual address to a physical address内存管理单元如何将虚拟地址映射到物理地址
【发布时间】:2018-10-09 23:42:39
【问题描述】:

如果计算机系统的主内存为1mb,虚拟地址空间为16mb,而磁盘块大小为1kb。内存管理单元如何将虚拟地址映射到物理地址?

【问题讨论】:

    标签: memory-management operating-system virtual-address-space


    【解决方案1】:

    我假设您打算问“MMU 如何将虚拟内存映射到物理内存”(如您的问题描述中所示)。

    首先,虚拟内存由操作系统管理。 MMU 只提供硬件机制来利用它。

    操作系统将为每个单独的进程保留一张虚拟地址 -> 物理地址的映射。

    例如,如果程序使用虚拟页面 [0, 1, 2, 3],操作系统可以将这些页面映射为 [64, 128, 256, 512] 的物理页面。

    由于虚拟地址空间大于物理地址空间,如果物理内存不能容纳所有虚拟内存,则并非所有虚拟内存都会随时映射到物理内存。因此,一些数据将被换出到磁盘,因此不会出现在物理内存中。

    例如,让我们通过假设虚拟内存有 8 页来简化您的情况,但物理内存只能保存 4 页数据。如果进程在虚拟页面 [0,1,2,3,4] 上有数据,显然物理内存无法容纳所有 5 个页面。因此其中一个虚拟页面将被放入磁盘中,系统的内存映射将类似于 [0->2, 1->1, 2->3, 4->0],在这种情况下是虚拟页面3 将在磁盘中换出。

    只有当程序需要数据时,那些被换出的页面才会被操作系统带回主内存,并且之前存在于主内存中的页面之一需要被换出以腾出空间。确定换出哪个页面的算法是另一个主题(例如,LRU、时钟算法)。

    实际上内存系统比这个场景更复杂,因为现代操作系统允许系统中运行多个进程,而操作系统本身使用其他技术(例如设置阈值来触发页面交换)来使内存系统更高效.

    【讨论】:

    • 好的,我在关注,不知道你能不能用图表解释一下。
    • 我只是添加了一张图片来说明示例。
    【解决方案2】:

    内存管理使用将逻辑地址转换为物理地址。

    它使用操作系统定义的 PAGE TABLE 进行翻译。页表的格式因系统而异,处理器至少有三种主要的方法来定义它们。通常,具有一个或多个特权寄存器的处理器指向当前进程的页表。这些寄存器通常作为引入新进程的上下文更改的一部分加载。

    在简单的情况下,页表只是一个包含逻辑地址和物理地址之间映射的数组。地址的一些高位用作页表的索引。对应的页表项指定了逻辑页映射到的物理页框。

    地址的一些低位作为物理页框的偏移量。

    操作系统以 MMU 期望的格式维护页表。MMU 透明地在逻辑地址和物理地址之间进行转换。

    磁盘块大小与此转换无关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-29
      • 2021-11-22
      • 1970-01-01
      相关资源
      最近更新 更多