linux内核原理剖析——内存寻址(一)

本文介绍了Linux内核中的内存寻址原理,包括实模式与保护模式的对比,详细阐述了分段机制,分析了段选择符、段描述符的概念及其在逻辑地址转线性地址过程中的作用,探讨了快速查找段描述符的方法,并概述了逻辑地址到线性地址的转换流程。
摘要由CSDN通过智能技术生成
最近总想分享点硬核的原创文章出来,一是硬核技术是一个程序员真正应该修炼
的内功;二是修炼硬核技能是通往架构师领域的必经之路。本系列文章将分享关
于linux内核设计原理相关的内容,希望能打通我们的七经八脉,真正领悟底层系
统设计的核心思想。关于linux内核之内存寻址相关的原理计划分享出三篇文章来讲解,此文为第一篇。

引言

所谓内存寻址,简单说来就是cpu接受到指令后需要从内存中取得相应数据,但是内存中的数据都是有对应地址的,需要通过地址来获取相应地址段上的数据,这也就是为什么要内存寻址。

所谓地址在操作系统中分为逻辑地址、线性地址、物理地址。

  • 逻辑地址
    逻辑地址其实就是机器码指令用到的地址,也就是机器指令码中用到的地址都是逻辑地址。目前这个地址是由16位段选择符和32位偏移量来表示的,这个地址也可叫做虚拟地址。

  • 线性地址
    是一个32位无符号整数,是由逻辑地址转换而来的。

  • 物理地址
    是内存芯片中的物理地址,是缓存数据的实际地址。是由逻辑地址转换而来的。最终是由这个地址来定位到内存空间。

实模式与保护模式

在8086处理器出现之前,内存地址的寻址方式是直接访问物理地址。在8086处理器中,了寻址1M的内存空间,把地址总线扩展到20位,但是ALU只有16位,也就是说如何用16位寄存器表示20位内存空间?为了解决这个问题,就产生了分段机制,也就是引入了4个段寄存器,es、cs、ds、ss,每个寄存器都是16位。8086处理器中逻辑地址格式为16位段寄存器地址:16位偏移地址,那么怎么用两个16位地

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值