逻辑地址、物理地址和线性地址

转载 2012年03月29日 09:29:43

逻辑地址(logical address

包含在机器语言指令中用来指定一个操作数或一条指令的地址。这种寻址方式在80X86著名的分段结构中表现的尤为具体,它促使MS-DOSWindows程序员把程序分成若干段。每一个逻辑地址都由一个段(segment)和偏移量(offsetdisplacement)组成,偏移量指明了从段开始的地方到实际地址的距离。

线性地址(linear address)(也成虚拟地址virtual address

是一个32位无符号整数,可以用来表示高达4GB的地址,也就是,高达4294967296个内存单元。线性地址通常用十六进制数字表示,值得范围从0x000000000xfffffff

物理地址(physical address

用于内存芯片级内存单元寻址,他们与从微处理器的地址引脚发送到内存总线上的电信号对应。物理地址由32位或36位无符号整数表示。


线性地址(Linear Address)是逻辑地址物理地址变换之间的中间层。在分段部件中逻辑地址是段中的偏移地址,然后加上基地址就是线性地址。线性地址是一个32位无符号整数,可以用来表示高达4GB的地址,也就是,高达4294967296个内存单元。线性地址通常用十六进制数字表示,值的范围从0x00000000到0xfffffff)。[1]程序代码会产生逻辑地址,通过逻辑地址变换就可以生成一个线性地址。如果启用了分页机制,那么线性地址可以再经过变换以产生一个物理地址。当采用4KB分页大小的时候,线性地址的高10位为页目录项在页目录表中的编号,中间十位为页表中的页号,其低12位则为偏移地址。如果是使用4MB分页机制,则高10位页号,低22位为偏移地址。如果没有启用分页机制,那么线性地址直接就是物理地址。

线性地址与分页管理

  CPU的页式内存管理单元,负责把一个线性地址,最终翻译为一个物理地址。从管理和效率的角度出发,线性地址被分为以固定长度为单位的组,称为页(page),例如一个32位的机器,线性地址最大可为4G,可以用4KB为一个页来划分,这页,整个线性地址就被划分为一个tatol_page[2^20]的大数组,共有2的20个次方个页。这个大数组我们称之为页目录。目录中的每一个目录项,就是一个地址——对应的页的地址。


如上图:  

1、分页单元中,页目录是唯一的,它的地址放在CPU的cr3寄存器中,是进行地址转换的开始点。万里长征就从此长始了。  

2、每一个活动的进程,因为都有其独立的对应的虚似内存(页目录也是唯一的),那么它也对应了一个独立的页目录地址。——运行一个进程,需要将它的页目录地址放到cr3寄存器中,将别个的保存下来。  

3、每一个32位的线性地址被划分为三部份,面目录索引(10位):页表索引(10位):偏移(12位)  依据以下步骤进行转换:  

1、从cr3中取出进程的页目录地址(操作系统负责在调度进程的时候,把这个地址装入对应寄存器);  

2、根据线性地址前十位,在数组中,找到对应的索引项,因为引入了二级管理模式,页目录中的项,不再是页的地址,而是一个页表的地址。(又引入了一个数组),页的地址被放到页表中去了。  

3、根据线性地址的中间十位,在页表(也是数组)中找到页的起始地址;  

4、将页的起始地址与线性地址中最后12位相加,得到最终我们想要的葫芦;

逻辑地址、线性地址和物理地址的关系

、首先不得不提的历史          许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小...
  • prike
  • prike
  • 2016年10月02日 10:03
  • 2102

逻辑地址、线性地址、物理地址区别

本文转自http://blog.csdn.net/erazy0/article/details/6457626 一、逻辑地址转线性地址     机器语言指令中出现的内存地址,都是逻辑地址,...
  • u012323667
  • u012323667
  • 2016年08月31日 22:56
  • 3017

虚拟地址,逻辑地址,线性地址,物理地址有什么区别

虚拟地址是由程序产生的由段选择符和段内偏移地址组成的地址。这两部分组成的地址并没有直接访问物理内存,而是要通过分段地址的变换处理后才会对应到相应的物理内存地址。 逻辑地址指由程序产生的段内偏移地...
  • u011101683
  • u011101683
  • 2013年10月08日 21:22
  • 2250

逻辑地址、线性地址、物理地址和虚拟地址理解

逻辑地址(Logical Address) 是指由程式产生的和段相关的偏移地址部分。例如,你在进行C语言指针编程中,能读取指针变量本身值(&操作),实际上这个值就是逻辑地址,他是相对于你当前进程数据段...
  • yuzaipiaofei
  • yuzaipiaofei
  • 2016年04月22日 14:18
  • 1203

操作系统逻辑地址、线性地址和物理地址

本文转自论文点击打开链接,主要讲述了操作系统中人们应该熟悉但是容易混淆的逻辑地址、线性地址和物理地址: 1、逻辑地址:       逻辑地址(Logical Address) :是指由程序产生的与...
  • GeekWill
  • GeekWill
  • 2016年09月06日 14:45
  • 2260

操作系统 内存地址(逻辑地址、线性地址、物理地址)概念

操作系统 内存地址(逻辑地址、线性地址、物理地址)概念 2010-08-01 20:39 逻辑地址(Logical Address) 是指由程序产生的与段相关的偏移地址部分。例...
  • farmwang
  • farmwang
  • 2015年01月14日 19:42
  • 1643

Linux下逻辑地址、线性地址、物理地址详细总结

Linux中逻辑地址等于线性地址。为什么这么说呢?因为Linux所有的段(用户代码段、用户数据段、内核代码段、内核数据段)的线性地址都是从 0x00000000 开始,长度4G,这样 线性地址=逻辑地...
  • FreeeLinux
  • FreeeLinux
  • 2017年01月06日 12:11
  • 1102

linux下逻辑地址-线性地址-物理地址图解

一、逻辑地址转线性地址     机器语言指令中出现的内存地址,都是逻辑地址,需要转换成线性地址,再经过MMU(CPU中的内存管理单元)转换成物理地址才能够被访问到。 我们写个最简单的hello w...
  • l_nan
  • l_nan
  • 2016年04月19日 10:44
  • 1534

linux内存管理---虚拟地址、逻辑地址、线性地址、物理地址的区别(一)

虚拟地址 、物理地址 、线性地址 、逻辑地址
  • yusiguyuan
  • yusiguyuan
  • 2013年07月31日 10:55
  • 12983

linux内存管理---物理地址、线性地址、虚拟地址、逻辑地址之间的转换

这几个地址之间的转换
  • yusiguyuan
  • yusiguyuan
  • 2013年07月31日 15:14
  • 3410
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:逻辑地址、物理地址和线性地址
举报原因:
原因补充:

(最多只允许输入30个字)