CPU如何生成内存地址,地址到内存单元之前是否已定义,那又是什么意思,cpu生成内存地址?
答案 0 :(得分:0)
从上面提到的上下文来看,您似乎正在尝试了解操作系统中的内存管理概念。顺便说一句,高尔文是一个很好的资源,但我同意在高尔文的很多地方都有令人困惑的陈述。
尽管如此,对于你的问题,我会试着想一下我对它的理解:
CPU生成内存地址 -
因此,操作系统需要确保所有进程都在自己的地址空间中运行,并且不会非法尝试访问其他进程或操作系统本身的地址空间。
为此,OS使用Base寄存器和Limit寄存器。只有操作系统可以通过特殊指令访问和修改这些寄存器。这些特殊指令只能由OS执行,因为OS在内核模式下运行。用户程序,因为它们以用户模式运行,因此它们无法访问这些寄存器,因此无法修改Base和Limit寄存器的值。
现在考虑一种情况,你已经编写了一个程序,它已被编译并且它的exe(二进制或者更确切地说,这个以上程序的一个实例 - 一个进程)驻留在输入队列中,准备好被带入主存储器以供CPU占用以执行。因此操作系统将确保此进程仅在分配给它的地址空间中加载。
到目前为止一切都很好。现在让我们说这个过程中的一条指令(现在在内存中,在它自己的地址空间中)需要从某个内存位置访问一些数据。当CPU执行该指令时(在其指令周期,Fetch-Decode-Execute中),它看到为了完成该指令的执行,CPU需要从其他一些存储器位置访问一些数据。
如指令中所述,此内存位置不是实际的物理地址。它是一个可重定位的地址。链接器/加载器将此地址转换为绝对地址。 CPU将该地址转换(或将其称为GENERATES)转换为逻辑地址。 (操作系统负责将CPU生成的逻辑地址转换为其中一个存储体上的实际物理地址。这种转换实际上是由MMU - 硬件完成的)
这是我对短语" CPU生成内存地址"
的理解