我正在阅读操作系统概念,我在第八章中!但是,我可以使用一些澄清或保证我的理解是正确的。

逻辑地址:逻辑地址是由CPU生成的。这到底是什么意思? (在执行生成的地址系统中。)我假设在为程序编译代码时,该程序已 了解将代码加载到内存中的位置。编译器所做的所有内容都是为程序布局的一般草图以及如何布置图像,但没有为其分配任何真实地址。执行程序后,CPU采用了编译器制作的布局图像,并将某些地址(逻辑)分发到从代码生成的地址。

物理地址:直到CPU生成一些逻辑地址(由基本地址和偏移组成)之后,才生成物理地址。逻辑地址通过MMU或其他设备以及沿线的某个位置,逻辑地址映射到物理RAM地址。

那实际差异是什么?我可以看到一个好处。使用逻辑地址为应用程序提供了更多的自由。如果对物理地址进行了硬编码,那么程序的成功将在很大程度上取决于物理计算机机器,可用的RAM地址等。

使用转换为物理地址的逻辑地址的使用是否施加了两个步骤,而不是一对一,从而超越头部?

那么,逻辑地址在一代之后就在哪里呢?在CPU为过程提供服务时,它们可能存在于CPU上的登记册中,但是之前和之后,它们去了哪里?我了解这是实现依赖性的。我认为它们可以存储在CPU上的某些特殊寄存器空间或缓冲区(例如TLB)上,对吗?如果不是,那么该表可能存在于实际的RAM本身中,而CPU仅在RAM中的表基础地址中保留一个指针/地址,正确吗?

似乎在RAM中持有地址与逻辑内存地址的目的相反。我只能假设我的理解是不正确的。

有帮助吗?

解决方案

这个答案绝不是详尽的,但它可以解释足以使事情点击。

在虚拟内存系统中,逻辑地址和物理地址之间存在断开连接。

可以为应用程序提供(假设)4G的虚拟地址空间。这是其可用的内存,并且可以随意使用它而自由使用。这是一个不错的连续内存块(从应用程序的角度来看)。

但是,不是 只要 运行应用程序,并且OS必须在所有方面进行调解。在那个不错的连续模型下,有很多映射将逻辑转换为物理地址。

有了此映射,操作系统和硬件(我只将其称为“从现在开始”的下层)可以免费放置应用程序页面所需的任何位置(在物理内存中或交换为辅助存储)。

当应用程序试图在逻辑地址50处访问内存时,较低级别可以使用翻译表将其转换为物理地址。而且,如果它试图访问已交换为磁盘的逻辑内存,则会增加页面故障,较低的级别可以将相关数据带回内存中,无论如何 身体的 解决它想要的。

在您所拥有的物理地址的糟糕时代,必须重新定位(或在负载上固定),因为它可以在任何地方加载。使用虚拟内存,该代码(和数据)可以在逻辑内存位置50在十二个不同的过程中同时使用 - 这是实际的 身体的 地址将有所不同。

甚至可以共享,以便 身体的 复制一次存在于许多过程的地址空间中。这是共享代码的关键(因此我们不使用比我们需要更多的物理内存)和共享内存来允许简单的过程间通信)。

当然,它的效率不如纯净的地址环境,但CPU制造商试图使其尽可能高效,因为它已被大量使用。优点 远的 超过缺点。

其他提示

逻辑地址是相对于程序的地址。它说明了特定过程将需要多少内存,而不是说出该过程的确切位置将是什么,我们将使用一些映射生成这个确切的位置,并且称为物理地址。

逻辑地址: - CPU生成的逻辑地址。当我们将问题提供给计算机时,我们的计算机通过逻辑地址将问题传递给处理器,我们看不到此地址称为逻辑地址。

物理地址: - 当我们的处理器创建进程并解决问题时,我们将数据存储在辅助存储器中,通过称为物理地址的地址

  1. CPU生成的地址通常称为逻辑地址。程序生成的所有逻辑地址的集合称为逻辑地址空间。而在内存单元中看到的地址,即,加载到内存的存储器地址寄存器的地址通常称为物理地址。与逻辑地址相对应的所有物理地址的集合称为物理地址空间。
  2. 编译时和加载时间地址结合方法生成相同的逻辑和物理地址。但是,在执行时间地址结合方案中,逻辑和物理地址空间有所不同。
  3. 用户程序永远不会看到物理地址。该程序创建一个指向逻辑地址的指针,例如346,将其存储在内存中,对其进行操作,将其与其他逻辑地址进行比较 - 全部为数字346。仅当使用逻辑地址作为存储器地址时,它将相对重新定位于基础/搬迁登记册。内存映射硬件设备称为内存管理单元(MMU)将逻辑地址转换为物理地址。
  4. 逻辑地址范围从0到最大。生成逻辑地址的用户程序认为该过程在位置0到最大的位置运行。逻辑地址必须在使用之前映射到物理地址。物理地址范围从(R + 0)到基础/重新定位寄存器值的(R + max)R。
  5. 例子:enter image description here使用内存管理单元(MMU)和重新定位/基础寄存器从逻辑地址映射到物理地址,将重置/基本寄存器中的值添加到用户进程生成的每个逻辑地址,当时它将其发送到存储器,以生成相应的物理物理地址。在上图中,基本/重定位值为14000,然后用户尝试访问位置346的尝试将其映射到14346。

逻辑与物理地址空间

CPU生成的地址通常被视为逻辑地址,而存储器单元所看到的地址通常是加载到内存的内存地址寄存器中的一个地址生成相同的逻辑和物理地址。但是,执行时间地址绑定方案会导致不同的逻辑和物理地址。

程序生成的所有逻辑地址的集合称为逻辑地址空间,而与这些逻辑地址相对应的所有物理地址的集合是物理地址空间。硬件设备称为内存管理单元。在映射的情况下,基本寄存器称为重定位寄存器。搬迁寄存器中的值添加到用户进程发送到内存时生成的地址在示例的帮助下,这种情况是:如果基本寄存器包含值1000,则用户试图将地址0的地址0的尝试转移到位置1000,则将对位置346的访问映射到位置1346。

用户程序永远不会看到真实的物理地址空间,它始终处理逻辑地址。当我们有两种不同类型的地址范围内的逻辑地址(0至max)和该范围内的物理地址(R至R+Max)其中r是搬迁寄存器的值。用户仅生成逻辑地址,并认为该过程在位置运行至最大。在使用物理地址之前。

逻辑地址是对内存位置的引用,独立于当前数据分配到内存。物理地址或绝对地址是主内存中的实际位置。

它是在Stallings的第7.2章中。

为了使我的记忆最好,物理地址是一个明确的地址,在内存中设置在石头地址中,而逻辑地址由基本指针和偏移组成。

原因是您基本指定。它不仅允许将程序和流程分割为线程和数据,还允许进行此类程序的动态加载,以及至少对伪平行性的津贴,而无需进行任何需要进行内存中的指令的实际交织。

我找到了 文章 关于操作系统中的逻辑与物理地址,该地址清楚地解释了这一点。

逻辑地址 在程序运行时由CPU生成。逻辑地址是虚拟地址,因为它在物理上不存在,因此也称为虚拟地址。该地址用作CPU访问物理内存位置的参考。术语逻辑地址空间用于程序透视图生成的所有逻辑地址集。称为内存管理单元的硬件设备用于将逻辑地址映射到其相应的物理地址。

实际地址 标识内存中所需数据的物理位置。用户从未直接处理物理地址,但可以通过其相应的逻辑地址访问。用户程序生成逻辑地址,并认为该程序在此逻辑地址中运行,但是程序需要物理内存才能执行,因此必须将逻辑地址映射到物理地址BU MMU之前。物理地址空间一词用于与逻辑地址空间中逻辑地址相对应的所有物理地址。

Logical and Physical Address comparision

来源: www.geeksforgeeks.org

逻辑地址是一个项目(内存单元格,存储元素,网络主机)从执行应用程序的角度来看的地址。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top