逻辑地址、虚拟地址、线性地址、物理地址的区别:

虚拟地址:

在保护模式下,虚拟地址由段选择子+段内偏移量组成。利用段选择子可以获取到段描述符,再从段描述符中取得段的基地址。也就是说虚拟地址就是xxxx:yyyy yyyy这玩意儿。而在实模式下,也是这样,只是对应的xxxx的意义发生了改变,xxxx就代表了段基址,而不需要再经过刚才的过程去获取。(如果对该过程感兴趣请参考上一篇博文)在分页机制下,cpu生成的地址就是虚拟地址,再通过mmu转换成物理地址。

物理地址:

物理地址代表了数据在物理内存中真实的位置。如果未启用分页机制,那么虚拟地址通过段基址+段内偏移得到的值就是真实的物理地址,如果启用了分页机制,得到的值就是下面要说的线性地址。

线性地址:

段基址+段内偏移得到的值就是线性地址。启用了分页机制的条件下,如果想通过线性地址得到物理地址,那么就要用分页机制里面的转换方法来获取物理地址。

逻辑地址:

逻辑地址和虚拟地址很相似,而且各种书中对这两者的定义也有所不同,比如:
LDD(《Linux设备驱动程序》) 15.1.1书中说道:”ALL logical addresses are kernel virtual addresser,but mang kernel virtual addresses are not logical address.For example,memory allocated by vmalloc has a virtual address(but no direct physical mapping)”。意思就是所有的逻辑地址都是内核虚拟地址,但是大多数内核虚拟地址不是逻辑地址。比如,vmalloc分配的内存有虚拟地址(但是没有直接物理映射)。
但是其它书中又有提到逻辑地址是由程序产生的段内偏移地址。经过自己理解,我认为虚拟地址就是经过分页地址形成的空间,而逻辑地址即段内或者页内偏移地址。也就是说,逻辑地址只是虚拟地址的一个子集。

逻辑地址、虚拟地址、线性地址、物理地址相关推荐

  1. 虚拟地址 线性地址 物理地址 傻傻分不清楚?

    Virtual address  Linear address  Physic address 先说说逻辑地址: 我们时常会看到一种地址的表述方式--segment:offset.比方0x0:0x7c ...

  2. 逻辑地址、线性地址、物理地址和虚拟地址初步认识

    早期的内存分配机制 在早期的计算机中,要运行一个程序,会把这些程序全都装入内存,程序都是直接运行在内存上的,也就是说程序中访问的内存地址都是实际的物理内存地址.当计算机同时运行多个程序时,必须保证这些 ...

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

    --引用地址:http://linux.chinaunix.net/bbs/thread-919019-1-1.html 要过年了,发个年终总结贴,只是个人理解,不包正确哈. 本贴涉及的硬件平台是X8 ...

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

    分析linux内存管理机制,离不了上述几个概念,在介绍上述几个概念之前,先从<深入理解linux内核>这本书中摘抄几段关于上述名词的解释: 一.<深入理解linux内核>的解释 ...

  5. (转)逻辑地址,线性地址,物理地址的差别

    段页式内存管理中,逻辑地址,线性地址,物理地址的差别 线性地址是逻辑地址到物理地址变换之间的中间层,是处理器可寻址的内存空间(称为线性地址空间)中的地址.程序代码会产生逻辑地址,或者说是段中的偏移地址 ...

  6. 逻辑地址、线性地址和物理地址的转换

    一.逻辑地址 逻辑地址是指在计算机体系结构中是指应用程序角度看到的内存单元.存储单元.网络主机的地址. 逻辑地址往往不同于物理地址,通过地址翻译器或映射函数可以把逻辑地址转化为物理地址. 一个逻辑地址 ...

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

    逻辑地址.线性地址和物理地址的关系 首先不得不提的历史 许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以 ...

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

    逻辑地址.线性地址和物理地址 逻辑地址(logical addresses)是由程序生成的与段相关的偏移地址的一部分. 例如,你在C语言中进行指针编程,可以读取指针变量本身的值(&操作),实际 ...

  9. Linux下逻辑地址-线性地址-物理地址图解

    一.逻辑地址转线性地址 机器语言指令中出现的内存地址,都是逻辑地址,需要转换成线性地址,再经过MMU(CPU中的内存管理单元)转换成物理地址才能够被访问到. 我们写个最简单的hello world程序 ...

  10. linux kernel基本构成的内容有下列哪些项_Linux下逻辑地址-线性地址-物理地址详解...

    一.逻辑地址转线性地址 机器语言指令中出现的内存地址,都是逻辑地址,需要转换成线性地址,再经过MMU(CPU中的内存管理单元)转换成物理地址才能够被访问到. 我们写个最简单的hello world程序 ...

最新文章

  1. linux下安装svn
  2. 北京工商大学计算机考研818真题,2017年北京工商大学计算机与信息工程学院818数据结构考研仿真模拟题...
  3. Dataset之谷歌地图数据集:谷歌地图数据集的简介、安装、使用方法之详细攻略
  4. 过滤器、拦截器、监听器的区别与使用
  5. C — 对C语言的认识
  6. hashCode() 和equals() 区别和作用
  7. oracle查看数据库剩余空间,Oracle 查看数据库空间使用情况
  8. 操作系统原理之内存管理(第四章第一部分)
  9. leetcode 327. 区间和的个数(treemap)
  10. C++语言基础 —— 控制结构
  11. 大屏做成这样,领导不重用你都难
  12. LINQ IN ACTION读书笔记:LINQ 使用连接 1、组连接 2、内连接 3、左外连接 4、交叉连接 使用和区别...
  13. 蓝桥杯 ALGO-105 算法训练 黑色星期五
  14. Github-初始化仓库
  15. 【Win10技巧】如何设置win10资源管理器打开为“这台电脑”?
  16. 关于改进建议几个方面的有效实践
  17. 灰色马尔科夫模型matlab实现
  18. denoted(denoted by)
  19. 【C语言小题】分数求和
  20. linux下通过串口ftp,eftp简单文件传输工具支持串口、网络、Windows、Linux、单片机平台-博客...

热门文章

  1. Spark-Shell 及 Spark-Submit
  2. 利用支付宝Cookie监听订单实现个人支付宝收款实时回调
  3. 算法训练 旅行家的预算
  4. python创建学生类姓名学号_python定义一个学生类,包括学号、姓名和出生日期三个属性(数据成员);包括一个用...
  5. android 电池运行时间计算,android 电池充电时间计算方法
  6. 3-PHP代码审计——PHPCMSV9.6.1文件下载漏洞
  7. ps安装程序检测到计算机重启过程,photoshop cs6安装过程中安装程序遇到错误:请重启计算机,解决办法...
  8. python实现神经网络数字识别_PYTHON搭建BP神经网络,并实现手写数字识别
  9. buuctf old-fashion 1 世上无难事
  10. 为什么很多中国知名企业要在开曼群岛注册?