线性内存地址、物理内存地址、逻辑内存地址和虚拟内存地址有什么不同? [英] What is the difference between linear ,physical ,logical and virtual memory address?

查看:61
本文介绍了线性内存地址、物理内存地址、逻辑内存地址和虚拟内存地址有什么不同?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试阅读英特尔软件开发人员手册,以了解操作系统是如何工作的,这四个称谓词让我感到困惑。以下是我的理解,如果我错了,请纠正我。

线性地址:对隔离程序而言,它是以地址0开始长字符串内存。该程序的所有段都将从其线性地址寻址。它可能在RAM或磁盘中。

物理地址:出现在RAM或主内存管脚中的地址。

逻辑地址:磁盘和RAM中交换内存的组合。所有程序的所有线性内存都将留在逻辑地址空间中,只能在内核模式下使用。逻辑地址到物理地址的转换由内部硬件完成。

虚拟地址:虚拟地址与线性地址相同。它将仅由操作系统中的用户模式使用。操作系统将从逻辑地址映射虚拟地址。

推荐答案

线性地址空间表示可以在系统上形成的所有地址。线性地址空间中任何字节的地址称为线性地址。今天的系统具有大约46位的存储器总线宽度,这对应于大约64TiB的线性地址空间。英特尔仅在其平面内存模型中使用此术语。

处理器在其总线上寻址的内存称为物理内存。每个字节都分配了一个唯一的地址,称为物理地址。应该注意的是,除了存储器之外,存储器映射的I/O设备也连接到该总线,并且可以寻址。此内存区也不必是连续的,此处的内存控制器将物理地址分配给各个内存条和设备。

分页现在添加了虚拟地址空间:每个程序都被分配了自己的线性地址空间。此地址空间中的某些地址有效,其他地址无效。有效地址指的是可能在物理内存中的数据,也指硬盘上的外包数据(交换文件)。转换由MMU(存储器管理单元)与TLB(转换查找缓冲器)一起在硬件中完成,或者由操作系统完成。也有可能这些数据根本不存在,只有在访问时才会生成,但这在这里走得太远了。请注意,这些是虚拟地址

逻辑地址是英特尔在分段内存模型中使用的术语:在分段内存模型中,内存被划分为多个段。要寻址数据段中的字节,需要使用逻辑地址。它由一个线段选择器和一个偏移组成。使用段选择器将逻辑地址转换为虚拟地址:选择器包含段的开始及其大小。如果偏移量大于数据段的大小,则地址无效。将数据段的开头添加到偏移量即为虚拟地址。此分段内存模型在64位模式下大部分被取消。

摘要

Logical Addresses -> Virtual Addresses -> Physikal Addresses

虚拟地址和物理地址是线性地址,但不是反之亦然。


引用:

这篇关于线性内存地址、物理内存地址、逻辑内存地址和虚拟内存地址有什么不同?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆