我正在阅读操作系统概念,我在第 8 章!但是,我可以使用一些澄清或保证我的理解是正确的。
逻辑地址:根据本书,逻辑地址是由 CPU 生成的。这到底是什么意思?(在执行生成的地址系统中..)我假设为程序编译代码时,程序不知道代码将在内存中加载到哪里。编译器所做的只是设置程序布局的一般草图以及图像的布局方式,但不会为其分配任何实际地址。当程序执行时,CPU 获取编译器制作的布局图像,并将一些地址(逻辑地址)分配给从代码生成的地址。
物理地址:直到 CPU 生成一组逻辑地址(由基地址和偏移量组成)之后才会生成物理地址。逻辑地址通过 MMU 或其他设备,并且沿线路的某处将逻辑地址映射到物理 RAM 地址。
那么实际的区别是什么?我可以看到一个好处。使用逻辑地址给应用程序更多的自由。如果物理地址是硬编码的,那么程序的成功将在很大程度上取决于物理计算机、可用的 RAM 地址等。
使用转换为物理地址的逻辑地址不是强加了两个步骤而不是一对一,因此不是更多的开销吗?
那么逻辑地址在生成后驻留在哪里?当 CPU 为进程提供服务时,它们可能存在于 CPU 上的寄存器中,但在此之前和之后,它们会去哪里?我知道这取决于实现。我假设它们可能存储在 CPU 上的某些特殊寄存器空间或缓冲区中,例如 TLB,对吗?如果不是,那么该表可能存在于实际的 RAM 本身中,并且 CPU 仅保存指向 RAM 中表的基地址的指针/地址,对吗?
将地址保存在 RAM 中似乎与逻辑内存地址的目的相反。我只能假设我的理解是不正确的。