2

CPU如何生成内存地址,内存单元的地址是在自己之前定义的,那是什么意思,cpu生成内存地址?

4

1 回答 1

0

从您上面给出的上下文来看,您似乎正在尝试理解操作系统中的内存管理概念。顺便说一句,Galvin 是一个很好的来源,但我同意在 Galvin 的很多地方都有上述令人困惑的陈述。

不过,对于您的问题,我将尝试说明我对此的理解:

CPU 生成内存地址-

所以操作系统需要确保所有进程都在自己的地址空间中运行,并且不会非法尝试访问另一个进程或操作系统本身的地址空间。

为此,操作系统使用了基本寄存器和限制寄存器。这些寄存器只能由操作系统通过特殊指令访问和修改。这些特殊指令只能由操作系统执行,因为操作系统是在内核模式下运行的。用户程序,因为他们在用户模式下运行,所以他们不能访问这些寄存器,因此不能修改 Base 和 Limit 寄存器的值。

现在考虑一种情况,您编写了一个程序,该程序已经编译并且它的 exe(二进制或更确切地说,上述程序的一个实例 - 一个进程)驻留在输入队列中,准备好被带入主内存以被CPU占用执行。因此,操作系统将确保该进程仅在分配给它的地址空间中加载。

到目前为止一切都很好。现在让我们说进程中的一条指令(现在在内存中,在它自己的地址空间中)需要从某个内存位置访问一些数据。当 CPU 执行这条指令时(在它的指令周期,Fetch-Decode-Execute),它看到为了完成这条指令的执行,CPU 需要从其他内存位置访问一些数据。

如指令中所述,此内存位置不是实际的物理地址。它是一个可重定位的地址。链接器/加载器将此地址转换为绝对地址。CPU 将这个地址翻译(或者我们称之为 GENERATES)到一个逻辑地址。(操作系统负责将 CPU 生成的这个逻辑地址转换为其中一个内存库上的实际物理地址。这种转换实际上是由 MMU - 硬件完成的)

这是我对“CPU生成内存地址”这句话的理解

于 2014-12-07T07:31:35.720 回答