存储器管理单元基址寄存器限制寄存器

时间:2017-01-30 15:19:50

标签: memory-management operating-system mmu

在Tanenbaum的操作系统手册的1.4节中,给出了一个MMU的示例,该MMU使用两对基址和限制寄存器将虚拟地址映射到物理地址。此外,它说,通过这种结构(两对),多个用户可以在存储器中只用一个副本共享同一个程序。仅使用一对时,这种共享是不可能的。

因此,我的问题是:为什么在使用两对寄存器时可以共享相同的程序,而只使用一对寄存器是不可能的?

我认为我理解:

  1. 运行可执行文件(程序)时,会创建一个进程。
  2. 所以我头脑中的第一个疑问从这里开始:
             如果每个程序是不同的过程,如何共享同一个程序?

    1. 每个进程都包含自己的寄存器。所以每个过程都有一个 程序计数器寄存器,堆栈指针寄存器和基址 限制寄存器。
    2. 那么如何在两个进程之间共享寄存器呢?

1 个答案:

答案 0 :(得分:0)

寄存器可以由多个进程使用,因为在上下文切换期间保存了寄存器内容,因此多个进程可以使用相同的寄存器。否则,您只能运行一个进程,这在速度,CPU利用率和系统资源利用率方面都很糟糕。

您可以打开文本编辑器两次。每一个都是一个不同的过程。 但是,它们将访问包含指令的程序的相同内存。

下一个引自“操作系统概念第9版”。

  

考虑一下   支持40个用户的系统,每个用户都执行文本编辑器。如果是文字   编辑器由150 KB的代码和50 KB的数据空间组成,我们需要8,000 KB   支持40个用户。但是,如果代码是可重入代码(或纯代码),则它   可以分享。每个流程都有自己的数据页面。

更一般的解释是: 每个程序确实是一个不同的过程?过程如何导致其他程序的执行,因此两个进程很难调用第三个进程。由于它只能读取一组指令,因此多个进程可以共享该内存。