为什么需要逻辑地址?CPU可以直接为不同的进程生成物理地址。
我的第二个问题是CPU如何生成这个逻辑地址?
答案 0 :(得分:1)
Logical address 是来自虚拟内存的地址。它的虚拟因为它实际上不存在。
为什么需要逻辑地址?
答案是通常程序员不知道主存储器的实际地址是什么(物理地址),而OS设计人员确实希望每个程序员都知道物理地址是什么。将这些虚拟地址转换为RAM的实际物理地址的所有负担都是Memory Management Unit的工作。
这个逻辑地址是如何由CPU产生的?
CPU只是根据分配特定进程的虚拟内存量生成这些地址,这通常是一个很好的连续块,但访问的实际地址不需要是连续的地址转换单元 (页面表,TLB,...)在引擎盖下工作,以获得正确的实际物理地址。
Here是一段精彩的视频,绝对可以清除你的疑惑。
答案 1 :(得分:0)
逻辑地址转换至少提供两个功能。首先,它对系统安全至关重要。页面保护是作为逻辑内存翻译的一部分实现的。
其次,它有助于内存管理。特别是,如果没有逻辑内存转换,就不可能实现虚拟内存。
我可以添加第三个可能被认为是另外两个的一部分。逻辑内存提供了共享内存的方法。例如,大多数操作系统定义了一系列逻辑地址,用作"系统空间。"这些逻辑地址映射到所有进程的相同物理地址相同。
在较大的应用程序中,进程共享相同的物理内存是很常见的。这是通过逻辑地址转换完成的。
我的第二个问题是CPU如何生成这个逻辑地址?
CPU [通常]不会生成逻辑地址。它们由CPU使用页表转换为物理地址。操作系统设置页表,定义从逻辑页到物理页帧的映射。