逻辑地址在操作系统中的作用是什么?为什么产生它们

时间:2019-01-16 03:03:42

标签: operating-system

我想知道为什么CPU生成逻辑地址,然后借助内存管理器将其映射到物理地址?我们为什么需要它们。

2 个答案:

答案 0 :(得分:0)

在计算机上运行多个程序需要虚拟地址。

假定没有虚拟地址机制。编译器和链接编辑器会生成具有给定模式的内存布局。指令(文本段)从地址0开始定位在内存中。然后是用于初始化或未初始化的数据(数据和bss)以及动态内存(堆和堆栈)的段。 (如果您不了解内存布局,请参见例如https://www.geeksforgeeks.org/memory-layout-of-c-program/

运行该程序时,它将占用一部分内存,而该内存将以完全不可预测的方式不再可用于其他进程。例如,将占用地址0到1M,或0到16k,或0到128M,这完全取决于程序的特性。 如果现在要同时运行第二个程序,该程序的指令和数据将存储到哪里?内存地址是由编译器生成的,显然在编译时不知道什么是空闲内存。记住,内存地址(用于指令或数据)以某种方式硬编码在程序代码中。

当您要运行许多进程并且内存不足时,会发生第二个问题。在这种情况下,某些进程将换出到磁盘并稍后还原。但是,恢复后,进程将进入内存可用空间的状态,这是无法预料的,​​需要修改程序的内部地址。

虚拟内存简化了所有这些任务。运行进程(或在交换后还原进程)时,系统查看空闲内存并填充页表,以在虚拟地址(由处理器操纵并且始终不变)和物理地址(取决于内存上的空闲内存)之间创建映射。给定时间的计算机)。

答案 1 :(得分:0)

逻辑地址转换具有多种功能。

其中之一是支持系统地址空间到所有进程的通用映射。这使得任何进程都可以处理中断,因为处理中断所需的系统地址始终位于同一位置,而不管进程如何。

逻辑翻译系统还处理页面保护。这使得有可能保护公共系统地址空间,以免单个用户弄乱它。它还可以保护用户地址空间,例如使代码和数据只读,以检查错误。

逻辑转换也是实现虚拟内存的先决条件。在虚拟内存系统中,每个进程的地址空间都在辅助存储(即磁盘)中构造。地址空间内的页面将根据需要进入内存。如果必须在内存中连续映射具有大地址空间的进程,则无法实现这种系统。