2019独角兽企业重金招聘Python工程师标准>>>

本人是搞java开发的,但是了解一些底层的东西能帮助我理解一些编程上的东西。

linux使用的基本上都是虚拟地址,内核程序中用的是内核空间虚拟地址,应用程序中用的是用户空间虚拟地址。

逻辑地址就是虚拟地址,参照X86的cpu手册定义,逻辑地址的表示方式是 段地址:偏移地址,这里的逻辑地址就是偏移地址部分,段地址部分后面会提到。

物理地址可以理解为内存存储单元的地址,一一对应,对于32位系统支持4G最大。

线性地址是虚拟地址转换到物理地址的中间值,这个最难理解,也可以不用知道它的存在,忽略最简单。非要弄明白的话,就往下看。
段地址+偏移地址就是线性地址,也就是段地址+虚拟地址就是线性地址。为什么要+段地址,这个是X86的分段部件搞的鬼,只有加了才能符合X86CPU的寻址规则。内核空间和用户空间的段地址不一样,每个用户进程的段地址也不一样,这样就能产生不同的线性地址。

线性地址到物理地址的转换
线性地址分为3级,10bits + 10bits + 12bits
cr3寄存器存放 目录索引的地址
第一个10bits配合cr3寄存器的值用于用目录索引中查找出页表索引
第二个10bits用于从页表索引中查出页面基址
最后一个12bits用于页面中的偏址,加上页面基址得到物理地址

32位系统对于大于4G内存的支持
上面可以看出,32位系统最多支持4G内存,如果要支持大于4G内存,则要使用PAE,PAE支持的页式管理系统,负责把32位的线性地址映射到64GB物理空间的任何位置。

转载于:https://my.oschina.net/u/143244/blog/304003

逻辑地址,线性地址,物理地址相关推荐

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

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

  2. 操作系统 内存碎片 cache替换算法 虚拟地址逻辑地址线性地址物理地址

    采用分区式存储管理的系统,在储存分配过程中产生的.不能供用户作业使用的主存里的小分区称成"内存碎片".内存碎片分为内部碎片和外部碎片. 内部碎片 内部碎片就是已经被分配出去(能明确 ...

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

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

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

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

  5. linux内核线性地址等于物理地址,Linux 从虚拟地址到物理地址

    我们都知道,动态共享库里面的函数的共享的,这也是动态库的优势所在,就是节省内存.C 编译出来的可执行文件几乎都会用到libc的库,假如没有这个共享的技术,每个可执行文件都要占一份libc库的内存,这将 ...

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

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

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

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

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

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

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

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

最新文章

  1. python cv2 轮廓的包络 面积_Python 基于FIR实现Hilbert滤波器求信号包络详解
  2. Microsoft Office Communications Server 2007 R2 RTM 简体中文企业版部署速成篇之二
  3. Python调整图片大小并保存调整后的图像
  4. Java 并发专题 : Semaphore 实现 互斥 与 连接池
  5. mongodb php 安装配置,MongoDB 基本安装配置
  6. 人脸识别(二)——训练分类器
  7. 01Spring的helloworld程序
  8. mysql备份、导入、远程数据库设置
  9. Smart Link
  10. 如何在 Mac 上将 JPG图像合并为一个PDF
  11. [在今天的历史]他们终于要对我下毒手了
  12. LKT系列加密芯片如何预置openssl生成的rsa密钥完成运算(二)
  13. 〖Demo〗-- 计算器
  14. 【补】day3 table标签
  15. 基于python的贪吃蛇游戏设计论文_《贪吃蛇游戏课程设计》报告毕业设计(论文)...
  16. UCOS操作系统——任务的挂起与恢复(四)
  17. LG化学成为海水淡化领域膜领导品牌后,大举进军苦咸水反渗透膜市场
  18. Apollo算法阅读之基于Sqp的Referenceline全局参考路线优化(含源码)
  19. 9亿财产如何分配:大S与汪小菲离婚所感
  20. [趣味][人工智能生成文字]chatGPT使用教程

热门文章

  1. 获取map第一个的key和value_谁要是再敢用Map传参,我过去就是一JIO
  2. ul去掉li前面的点_一年级语文上册期末考点:拼音重、难点总结,全面,建议收藏...
  3. 人工智能 | 人工智能的发展历程
  4. mysql怎么用游标修改数据,如何使用mysql 游标?
  5. mysql数据库扫描_使用nmap对mysql 数据库进行扫描
  6. sublime配置python3环境_【env】Sublime配置Python3开发环境
  7. php 假多态,论PHP面向对象之-多态
  8. python序列_什么是Python的序列协议?
  9. Linux学习笔记(三)|Vim编辑器
  10. 【NLP】基于预训练的中文NLP工具介绍:ltp 和 fastHan