linux内核寻址,深入理解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

深入理解linux内核-内存寻址

逻辑地址:由一个段和偏移量组成的地址线性地址(虚拟地址):物理地址:CPU的物理地址线相对应的地址32或36位 多处理器系统中每个CPU对应一个GDT 局部线程存储:用于线程内部的各个函数调用都能访问 ...

【读书笔记::深入理解linux内核】内存寻址【转】

转自:http://www.cnblogs.com/likeyiyy/p/3837272.html 我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0 ...

【读书笔记::深入理解linux内核】内存寻址

我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0xC0000000:这是内核地址空间的地址转换关系. 这句话瞬间让我惊呆了,根据我的CPU的知识,开 ...

读书笔记之Linux系统编程与深入理解Linux内核

前言 本人再看深入理解Linux内核的时候发现比较难懂,看了Linux系统编程一说后,觉得Linux系统编程还是简单易懂些,并且两本书都是讲Linux比较底层的东西,只不过侧重点不同,本文就以Linu ...

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

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

深入理解Linux中内存管理

前一段时间看了对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对Linux中内存管理的一些看 ...

linux内核内存分配(三、虚拟内存管理)

在分析虚拟内存管理前要先看下linux内核内存的具体分配我開始就是困在这个地方.对内核内存的分类不是非常清晰.我摘录当中的一段: 内核内存地址 ============================ ...

Linux内核-内存回收逻辑和算法(LRU)

Linux内核内存回收逻辑和算法(LRU) LRU 链表 在 Linux 中,操作系统对 LRU 的实现主要是基于一对双向链表:active 链表和 inactive 链表,这两个链表是 Linux ...

LINUX内核内存屏障

=================                          LINUX内核内存屏障                          ================= By ...

随机推荐

货架工程项目之js dom实现项目工程进度图

笔者最近要负责有个项目工程网站的安装进度过程,实现的效果要求大概如下图所示 由于笔者没有参与到数据库的制作,得知他们这个项目设计工序的时候就一个开始日期的和完成日期,连整个项目的安装结束时间都没有简直 ...

C语言程序设计进阶 第1周编程题

第1周编程题 查看帮助 返回 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数 ...

NPOI 单元格(cell) 格式参数

NPOI 单元格(cell) 将格式设为文本 在网上找了很久,都没有关于如何设置的信息,没办法查了下NPOI的源码终于找到了方法.这里共享下,就是“@”参数 ICellStyle cellStyle ...

善用VS中的Code Snippet来提高开发效率

http://www.cnblogs.com/anderslly/archive/2009/02/16/vs2008-code-snippets.html http://www.cnblogs.com ...

hibernate---table_Generator

首先讲一下调试技巧:: @javax.persistence.TableGenerator( name="Teacher_GEN", table="GENERATOR_T ...

Android中使用shape制作一个旋转的progressbar

public class ZNtestResActivity extends Activity { @Override public void onCreate(Bundle savedInstanc ...

【转】Linux驱动模块编译进内核中

原文网址:http://blog.chinaunix.net/uid-29287950-id-4573481.html BQ27501驱动编译进内核 一.       驱动程序编译进内核的步骤 在 l ...

ServiceBase 类

https://msdn.microsoft.com/zh-cn/library/System.ServiceProcess.ServiceBase%28v=vs.80%29.aspx 为将作为服务应 ...

PS滤镜给城市夜空照片添加满天星

原图 一.新建空白图层. 二.填充黑色(编辑→填充). 三.转换为智能对象. 四.添加杂色(滤镜→杂色→添加杂色). 五.使用高斯模糊(滤镜→模糊→高斯模糊). 六.如果你想再次修改模糊效果,可双击该 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值