【发布时间】:2017-11-01 12:38:53
【问题描述】:
为什么需要逻辑地址?CPU可以直接为不同的进程产生物理地址。
我的第二个问题是CPU如何产生这个逻辑地址?
【问题讨论】:
-
答案可以覆盖一本书。拿一本 OS 书籍并阅读内存管理和虚拟内存章节以了解大致概念。
标签: operating-system
为什么需要逻辑地址?CPU可以直接为不同的进程产生物理地址。
我的第二个问题是CPU如何产生这个逻辑地址?
【问题讨论】:
标签: operating-system
Logical address 是来自虚拟内存的地址。它的虚拟,因为它实际上并不存在。
为什么需要逻辑地址?
答案是通常程序员不知道主存储器的实际地址(物理地址),此外,操作系统设计人员确实希望每个程序员都知道物理地址是什么。将这些虚拟地址转换为 RAM 的实际物理地址的所有工作都是 Memory Management Unit 的工作。
这个逻辑地址是如何由CPU产生的?
CPU 只是根据分配给特定进程的虚拟内存量生成这些地址,这通常是一个不错的连续块,但实际访问的地址不必是连续的,地址转换单元 (page table,TLB,...) 在后台工作以获取正确的实际物理地址。
Here 是一个很漂亮的视频,绝对能解你的疑惑。
【讨论】:
逻辑地址转换至少有两个功能。首先,它对系统安全至关重要。页面保护是作为逻辑内存转换的一部分实现的。
其次,它有助于内存管理。特别是,如果没有逻辑内存转换,就不可能实现虚拟内存。
我可以添加第三个,它可能被视为其他两个的一部分。逻辑内存提供了一种共享内存的方法。例如,大多数操作系统定义了一系列逻辑地址作为“系统空间”。这些逻辑地址映射到所有进程都相同的相同物理地址。
在较大的应用程序中,进程共享相同的物理内存是很常见的。这是通过逻辑地址转换完成的。
我的第二个问题是CPU如何产生这个逻辑地址?
逻辑地址[通常]不是由 CPU 产生的。 CPU 使用页表将它们翻译成物理地址。操作系统设置页表来定义从逻辑页到物理页框的映射。s
【讨论】: