在Tanenbaum的操作系统手册的1.4节中,给出了一个MMU的示例,该MMU使用两对基址和限制寄存器将虚拟地址映射到物理地址。此外,它说,通过这种结构(两对),多个用户可以在存储器中只用一个副本共享同一个程序。仅使用一对时,这种共享是不可能的。
因此,我的问题是:为什么在使用两对寄存器时可以共享相同的程序,而只使用一对寄存器是不可能的?
我认为我理解:
所以我头脑中的第一个疑问从这里开始:
如果每个程序是不同的过程,如何共享同一个程序?
那么如何在两个进程之间共享寄存器呢?
答案 0 :(得分:0)
寄存器可以由多个进程使用,因为在上下文切换期间保存了寄存器内容,因此多个进程可以使用相同的寄存器。否则,您只能运行一个进程,这在速度,CPU利用率和系统资源利用率方面都很糟糕。
您可以打开文本编辑器两次。每一个都是一个不同的过程。 但是,它们将访问包含指令的程序的相同内存。
下一个引自“操作系统概念第9版”。
考虑一下 支持40个用户的系统,每个用户都执行文本编辑器。如果是文字 编辑器由150 KB的代码和50 KB的数据空间组成,我们需要8,000 KB 支持40个用户。但是,如果代码是可重入代码(或纯代码),则它 可以分享。每个流程都有自己的数据页面。
更一般的解释是: 每个程序确实是一个不同的过程?过程如何导致其他程序的执行,因此两个进程很难调用第三个进程。由于它只能读取一组指令,因此多个进程可以共享该内存。