我正在阅读《操作系统概念》,现在看到了第八章!然而,我需要一些澄清或确认我的理解是否正确。
逻辑地址:根据书中所述,逻辑地址是由CPU生成的。这到底是什么意思?(在一个执行生成地址系统中..)我猜想,在为程序编译代码时,程序根本不知道代码将被加载到哪个内存位置。编译器只是设置了程序布局和图像应该如何布置的大致草图,但没有为它分配任何真实的地址。当程序被执行时,CPU会取出编译器制作的这个布局图像并分配一些地址(逻辑地址)给从代码生成的那些地址。
物理地址:物理地址直到CPU生成一组逻辑地址(包括基地址和偏移量)后才生成。逻辑地址通过MMU或其他设备,并且沿着某条线路被映射到物理RAM地址。
那么实际差异是什么?我可以看到一个好处。使用逻辑地址使应用程序具有更多自由度。如果物理地址是硬编码的,那么程序的成功将严重依赖于物理计算机机器、可用的RAM地址等。
使用逻辑地址转换为物理地址不是引入了两个步骤,而不是一对一,因此会增加开销吗?
那么逻辑地址在生成后存放在哪里?它们可能存在于CPU的寄存器中,而CPU正在为进程提供服务,但在之前和之后,它们去哪了呢?我了解这取决于实现。我猜想它们可能存储在CPU的某些特殊寄存器空间或缓冲区中,例如TLB,对吗?如果不是的话,那么该表可能存在于实际RAM本身中,而CPU只保留对表在RAM中基地址的指针/地址,对吗?
看起来将地址保存在RAM中与逻辑内存地址的目的背道而驰。我只能假设我的理解是不正确的。