深入理解Linux内核-内存寻址
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内核-内存寻址相关推荐
- 深入理解Linux内核---内存管理zone
转载:https://blog.csdn.net/gatieme/article/details/52384529 https://blog.csdn.net/gatieme/article/deta ...
- 深入理解Linux内核-内存管理
页框管理 内核对整个物理内存进行分页,每页大小为4KB或者4MB(大小无所谓,不同os都可能不一样),一般认为Linux的页大小为4KB,内核必须记录好每个页框的信息,所以linux内核把所有的页框都 ...
- 陈老师Linux内核内存寻址导学
<Linux内核分析与应用>第二章 : 内存寻址 从零打造自己的操作系统可能么? 学东西要追根溯源,因为树叶的东西太过繁多,而且不小心会被树叶带走.计算机的鼻祖到底是谁?图灵还是冯诺依曼, ...
- 深入理解Linux内核之内存寻址
说明: 本文基于第三版<深入理解 Linux 内核>,该部分以 80x86 处理器为基准进行介绍,并且略过了原文中详细介绍32位扩展分页部分. https://xcraft.tech/20 ...
- 《深入理解Linux内核》 读书笔记
深入理解Linux内核 读书笔记 一.概论 操作系统基本概念 多用户系统 允许多个用户登录系统,不同用户之间的有私有的空间 用户和组 每个用于属于一个组,组的权限和其他人的权限,和拥有者的权限不一样. ...
- 深入理解Linux内核-第3版 译者序、前言、目录 内核2.6.11
一.译者序 Linux是一个全新的世界,世界意味着博大精深,而新或许代表对旧的割舍和扬弃,加在一起,就是要我们在割舍和扬弃的同时还要积累知识到博大精深的地步,这容易做到吗?是的,这不容易做到.Gera ...
- 深入理解LINUX内核(影印版第3版)》的笔记
书名: 深入理解LINUX内核(影印版第3版) 作者: Daniel P.Bovet/Marco Cesati 副标题: Understanding the Linux Kernel 页数: 923 ...
- 深入理解 Linux 内核
Linux 内核系列文章 Linux 内核设计与实现 深入理解 Linux 内核 深入理解 Linux 内核(二) Linux 设备驱动程序 Linux设备驱动开发详解 文章目录 Linux 内核系列 ...
- 笔记:深入理解Linux内核(二)
笔记:深入理解Linux内核(二) 二零二一年十月二十四日 文章目录 笔记:深入理解Linux内核(二) 第二章:内存寻址 内存地址 硬件中的分段 段选择符和段选择器 段描述符 快速访问段描述符 分段 ...
- linux内核内存slab,伙伴系统,内存碎片,内存耗尽(OOM)杀手,内存资源控制器memcg,KASAN学习笔记
目录 1 基础知识 1.1 页 1.2 页表 1.3 UMA(一致性访问) / NUMA(非一致性访问) 1.4 高端内存和低端内存 1.5 内存模型 2 物理内存的管理 2.1 物理内存的组织:节点 ...
最新文章
- android 蓝牙找不到电脑,Android6.0 蓝牙搜索不到设备原因
- 安卓手机网页打开淘宝总是弹出应用市场
- Spring MVC中使用Swagger生成API文档和完整项目示例Demo,swagger-server-api(二十)
- linux java 获取路径怎么写_linux中java获取路径的实例代码
- 我的爱好html子页模板,我的爱好
- posix多线程有感--线程高级编程(条件变量)
- sublime交互执行python文件方法
- linux内存管理分析 二,linux内存管理分析【二】
- Linux挂载多个文件夹读不出,FTP不显示Linux挂载文件夹怎么办?-处理FTP不显示Linux挂载文件夹的方案 - 河东软件园...
- 用css实现透明度的方法
- python用什么来写模块-Python 3.1 用C写模块 扩展(序)
- HUST 1585 排队
- Ftp客户端概要设计
- 计算机硬盘不识别u盘启动,PE识别不了硬盘是怎么回事?
- html圆形头像的制作
- 关于计算机软件的使用 正确的认识应该是,计算机二级考试单选题训练题库
- 停止员工拖延症!工时管理系统的作用之一
- 产品读书《长尾理论》
- jumpserver版本升级(1.3.1升级到最新版)
- SAP 物料号系统内部编码导入BAPI报错(E M_ 17)
热门文章
- 让asp.net默认的上传组件支持进度条反映(转)
- 什么是泛型缓存和静态构造函数?
- SQL-61 对于employees表中,给出奇数行的first_name
- 浅析校园安防视频监控设备发展趋势
- pycharm + git实现两台电脑代码同步
- CentOS 6.0安装VNC Server
- modules not found(模块未找到)的解决方案
- NFS简单应用场景及简单的环境搭建
- java通过url读取远程数据并保持到本地
- 让Vagrant在Windwos下支持使用NFS/SMB共享文件夹从而解决目录共享IO缓慢的问题