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

1、程序中通过&得到的地址是逻辑地址,是变量相对于程序段的基地址的偏移。

2、逻辑地址加上段基址得到线性地址。线性地址分为两部分,一部分用于查找页目录,另一部分用于在页表中查找对应页。

3、页目录有几级与具体实现有关,页表中页表项的个数=(页的大小)/(页地址的大小(32位系统为4B))。

4、如何计算有几级页目录:首先根据页的大小计算出偏移位有多少比特: log(页大小/1B)。在根据页大小和地址大小计算出页表中页表项的偏移(页大小/页地址的大小(32位系统为4B))。前面的每一级页目录占用的比特数页等于(页大小/页表地址的大小(32位系统是4B))。在页表中查找的地址就是物理页的基地址,用此基地址+偏移地址=物理地址。

较为清晰的一张图:三级目录的一个分页系统。

时间: 2024-10-07 15:36:44

逻辑地址、线性地址和物理地址的相关文章

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

逻辑地址(Logical Address) 是指由程序产生的与段相关的偏移地址部分.例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址,不和绝对物理地址相干.只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换):逻辑也就是在Intel 保护模式下程序执行代码段限长内的偏移地址(假定代码段.数据段如果完全一样).应用程序员仅需与逻辑地址打交道,而分段和分页机制对您来说是

逻辑地址、线性地址、物理地址以及虚拟存储器

http://blog.csdn.net/mrbuffoon/article/details/48947267 Note:本文是基于80×86微处理器进行原理总结. 在内存地址上,我们要区分逻辑地址.线性地址以及物理地址这三个概念.逻辑地址:包含在机器语言指令中用来指定一个操作数或者一条指令的地址.每一个逻辑地址都由一个段选择符和段偏移量组成.线性地址:也称为虚拟地址,也不是一个真实的地址,他是对应了硬件页式内存转换前地址.物理地址:就是物理内存中的真正地址. 内存控制单元(MMU)通过分段单元

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

分析linux内存管理机制,离不了上述几个概念,在介绍上述几个概念之前,先从<深入理解linux内核>这本书中摘抄几段关于上述名词的解释: 一.<深入理解linux内核>的解释 逻辑地址(Logical Address) 包含在机器语言指令中用来指定一个操作数或一条指令的地址(有点深奥).这种寻址方式在80x86著名的分段结构中表现得尤为具体,它促使windows程序员把程序分成若干段.每个逻辑地址都由一个段和偏移量组成,偏移量指明了从段开始的地方到实际地址之间的距离. 线性地址(

Linux下逻辑地址-线性地址-物理地址图解(转)

一.逻辑地址转线性地址 机器语言指令中出现的内存地址,都是逻辑地址,需要转换成线性地址,再经过MMU(CPU中的内存管理单元)转换成物理地址才能够被访问到. 我们写个最简单的hello world程序,用gccs编译,再反编译后会看到以下指令: mov    0x80495b0, %eax 这里的内存地址0x80495b0 就是一个逻辑地址,必须加上隐含的DS 数据段的基地址,才能构成线性地址.也就是说 0x80495b0 是当前任务的DS数据段内的偏移. 在x86保护模式下,段的信息(段基线性

[转帖]Linux下逻辑地址、线性地址、物理地址详细总结

Linux下逻辑地址.线性地址.物理地址详细总结 https://www.cnblogs.com/alantu2018/p/9002441.html 总结的挺好的 现在应该是段页式管理 使用MMU和TLB 实现 线性地址 逻辑地址 和物理地址的映射. 一.逻辑地址转线性地址    机器语言指令中出现的内存地址,都是逻辑地址,需要转换成线性地址,再经过MMU(CPU中的内存管理单元)转换成物理地址才能够被访问到. 我们写个最简单的hello world程序,用gcc编译,再反编译后会看到以下指令:

逻辑地址 线性地址 转

http://blog.csdn.net/erazy0/article/details/6457626 一.逻辑地址转线性地址 机器语言指令中出现的内存地址,都是逻辑地址,需要转换成线性地址,再经过MMU(CPU中的内存管理单元)转换成物理地址才能够被访问到. 我们写个最简单的hello world程序,用gcc编译,再反汇编后会看到以下指令: mov    0x80495b0, %eax 这里的内存地址0x80495b0 就是一个逻辑地址,必须加上隐含的DS 数据段的基地址,才能构成线性地址.

浅析线性地址到物理地址的转换

一. 概念介绍: 1.线性地址(linear address)(也称虚拟地址virtual address):是一个32位无符号整数,用来表示高达4GB的地址. 2.物理地址(physical address):实际地址. 3.VM 即虚拟内存 ,PM 即物理内存 4.(1)PGD(Page Global Directory) 即页全局目录. (2)PUD(Page Upper Directory)即页上级目录. (3)PMD(Page Middle Directory)即页中间目录. (4)P

linux2.6 内存管理——逻辑地址转换为线性地址(逻辑地址、线性地址、物理地址、虚拟地址)

Linux系统中的物理存储空间和虚拟存储空间的地址范围分别都是从0x00000000到0xFFFFFFFF,共4GB,但物理存储空间与虚拟存储空间布局完全不同.Linux运行在虚拟存储空间,并负责把系统中实际存在的远小于4GB的物理内存根据不同需求映射到整个4GB的虚拟存储空间中.Linux主要工作在保护模式下.80X86从逻辑地址到物理地址变换中经过了两个阶段.第一阶段使用分段机制把程序的逻辑地址变换成处理器可寻址内存空间(称为线性地址空间)中的地址.第二阶段的分页机制把线性地址转换成物理地址

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

http://blog.csdn.net/prike/article/details/52722934 物理内存:数据寻址用:mmu联系: 虚拟地址:cpu传给mmu的:给程序员使用: 逻辑地址:cpu指令使用:符合可执行文件的格式. 二.物理地址.虚拟地址(线性地址).逻辑地址 任何时候,计算机上都存在一个程序能够产生的地址集合,我们称之为地址范围.这个范围的大小由CPU的位数决定,例如一个32位的CPU,它的地址范围是0~0xFFFFFFFF (4G),而对于一个64位的CPU,它的地址范围

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

一.概念物理地址(physical address)用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应.——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到最大空量逐字节的编号的大数组,然后把这个数组叫做物理地址,但是事实上,这只是一个硬件提供给软件的抽像,内存的寻址方式并不是这样.所以,说它是“与地址总线相对应”,是更贴切一些,不过抛开对物理内存寻址方式的考虑,直接把物理地址与物理的内存一一