1、逻辑地址怎么转换为线性地址的:

逻辑地址 = 段选择符(16bit)+偏移量(32bit)

段选择符又三部分组成:index(索引序号)、T1(表指示器)、RPL(request privilege level 请求者特权级)

索引序号:指向GDT(global descriptor table 全局描述符表)或者LDT(local descriptor table 局部描述符表)中的段描述符。

表指示器:标记指向GDT或者LDT

RPL:分为用户态(3),或者内核态(0)

段描述符:64bit,主要字段 Base(段的首字节的线性地址 32bit)、Limit(段的长度)、DPL(描述特权级)等

段描述符的地址 = GDT(LDT)的地址(存放在gdtr、ldtr寄存器) + index * 8(因为一个段描述符8字节)

逻辑地址 = 段描述符中的Base + 偏移量

注意:1、linux 中很少使用分段,它偏向是否分页   2、主要的4个段分别为用户代码段、用户数据段、内核代码段、内核数据段     3、并且它们的Base值均为0,即所有到段的线性地址都从0开始     4、即Linux下逻辑地址的便宜量与对应的线性地址的值总是一致的       

2、线性地址怎么转换为物理地址的?

页 :4096个字节,包含页内地址、数据

页框:物理页,4096字节,不含页内数据

分页:为了效率,线性地址被分成以固定长度为单位的页;页内部连续的线性地址映射到连续的物理地址;优点是内核可以对页指定存取权限,而不用对页中的所有线性地址指定

线性地址 = Directory(目录 10bit) + Table(页表 10bit) + offset(偏移量 12bit)

offset: 12bit的偏移量就是一个页的大小,表示连续的4096个线性地址为一页

扩展分页:页目录(10bit)+ offset (偏移量 22bit); 去掉了中间页表,每一页的大小为4MB

转载于:https://www.cnblogs.com/lipeil/p/4637494.html

深入理解Linux内核-内存寻址相关推荐

  1. 深入理解Linux内核---内存管理zone

    转载:https://blog.csdn.net/gatieme/article/details/52384529 https://blog.csdn.net/gatieme/article/deta ...

  2. 深入理解Linux内核-内存管理

    页框管理 内核对整个物理内存进行分页,每页大小为4KB或者4MB(大小无所谓,不同os都可能不一样),一般认为Linux的页大小为4KB,内核必须记录好每个页框的信息,所以linux内核把所有的页框都 ...

  3. 陈老师Linux内核内存寻址导学

    <Linux内核分析与应用>第二章 : 内存寻址 从零打造自己的操作系统可能么? 学东西要追根溯源,因为树叶的东西太过繁多,而且不小心会被树叶带走.计算机的鼻祖到底是谁?图灵还是冯诺依曼, ...

  4. 深入理解Linux内核之内存寻址

    说明: 本文基于第三版<深入理解 Linux 内核>,该部分以 80x86 处理器为基准进行介绍,并且略过了原文中详细介绍32位扩展分页部分. https://xcraft.tech/20 ...

  5. 《深入理解Linux内核》 读书笔记

    深入理解Linux内核 读书笔记 一.概论 操作系统基本概念 多用户系统 允许多个用户登录系统,不同用户之间的有私有的空间 用户和组 每个用于属于一个组,组的权限和其他人的权限,和拥有者的权限不一样. ...

  6. 深入理解Linux内核-第3版 译者序、前言、目录 内核2.6.11

    一.译者序 Linux是一个全新的世界,世界意味着博大精深,而新或许代表对旧的割舍和扬弃,加在一起,就是要我们在割舍和扬弃的同时还要积累知识到博大精深的地步,这容易做到吗?是的,这不容易做到.Gera ...

  7. 深入理解LINUX内核(影印版第3版)》的笔记

    书名: 深入理解LINUX内核(影印版第3版) 作者: Daniel P.Bovet/Marco Cesati 副标题: Understanding the Linux Kernel 页数: 923 ...

  8. 深入理解 Linux 内核

    Linux 内核系列文章 Linux 内核设计与实现 深入理解 Linux 内核 深入理解 Linux 内核(二) Linux 设备驱动程序 Linux设备驱动开发详解 文章目录 Linux 内核系列 ...

  9. 笔记:深入理解Linux内核(二)

    笔记:深入理解Linux内核(二) 二零二一年十月二十四日 文章目录 笔记:深入理解Linux内核(二) 第二章:内存寻址 内存地址 硬件中的分段 段选择符和段选择器 段描述符 快速访问段描述符 分段 ...

  10. linux内核内存slab,伙伴系统,内存碎片,内存耗尽(OOM)杀手,内存资源控制器memcg,KASAN学习笔记

    目录 1 基础知识 1.1 页 1.2 页表 1.3 UMA(一致性访问) / NUMA(非一致性访问) 1.4 高端内存和低端内存 1.5 内存模型 2 物理内存的管理 2.1 物理内存的组织:节点 ...

最新文章

  1. android 蓝牙找不到电脑,Android6.0 蓝牙搜索不到设备原因
  2. 安卓手机网页打开淘宝总是弹出应用市场
  3. Spring MVC中使用Swagger生成API文档和完整项目示例Demo,swagger-server-api(二十)
  4. linux java 获取路径怎么写_linux中java获取路径的实例代码
  5. 我的爱好html子页模板,我的爱好
  6. posix多线程有感--线程高级编程(条件变量)
  7. sublime交互执行python文件方法
  8. linux内存管理分析 二,linux内存管理分析【二】
  9. Linux挂载多个文件夹读不出,FTP不显示Linux挂载文件夹怎么办?-处理FTP不显示Linux挂载文件夹的方案 - 河东软件园...
  10. 用css实现透明度的方法
  11. python用什么来写模块-Python 3.1 用C写模块 扩展(序)
  12. HUST 1585 排队
  13. Ftp客户端概要设计
  14. 计算机硬盘不识别u盘启动,PE识别不了硬盘是怎么回事?
  15. html圆形头像的制作
  16. 关于计算机软件的使用 正确的认识应该是,计算机二级考试单选题训练题库
  17. 停止员工拖延症!工时管理系统的作用之一
  18. 产品读书《长尾理论》
  19. jumpserver版本升级(1.3.1升级到最新版)
  20. SAP 物料号系统内部编码导入BAPI报错(E M_ 17)

热门文章

  1. 让asp.net默认的上传组件支持进度条反映(转)
  2. 什么是泛型缓存和静态构造函数?
  3. SQL-61 对于employees表中,给出奇数行的first_name
  4. 浅析校园安防视频监控设备发展趋势
  5. pycharm + git实现两台电脑代码同步
  6. CentOS 6.0安装VNC Server
  7. modules not found(模块未找到)的解决方案
  8. NFS简单应用场景及简单的环境搭建
  9. java通过url读取远程数据并保持到本地
  10. 让Vagrant在Windwos下支持使用NFS/SMB共享文件夹从而解决目录共享IO缓慢的问题