操作系统——Linux内核完全注释011c-3.0
Posted Ivan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统——Linux内核完全注释011c-3.0相关的知识,希望对你有一定的参考价值。
4.21 内存寻址
物理内存
计算机的物理内存是字节的线型数组,每个字节具有一个唯一地物理地址。
地址总线32位,共2^32个不同的物理地址。即内存物理地址空间有4G,总共可以寻址4G字节的物理内存。
小端法
段寻址技术
为了进行内存寻址,80X86使用了段寻址技术。寻址通过段地址+段内偏移地址。
段地址:16位,由端选择符指定
段内偏移地址:32位,故一个段最大长度可达4G。
程序中由16位的段和32位的段偏移构成48位地址,称为一个逻辑地址(虚拟地址)。它唯一确定了一个数据对象的段地址和段内偏移地址。
6个存放段选择符的段寄存器
CS、DS、ES、SS、FS、GS
CS:代码段,在任何指定时刻由CS寻址的段称为当前代码段。此时EIP寄存器中包含当前代码段内下一条要执行指令的段内偏移地址。因此要执行指令的地址可表示为CS:[EIP]。
段间控制转移指令可以被用来为CS、EIP赋新值,将执行为之改到其他代码段,实现不同段中程序的控制传递。
SS:堆栈段,栈顶由ESP寄存器指定,因此堆栈顶地址SS:[ESP]。
另外4个段寄存器是通用段寄存器,当指令中没有指定所操作数据的段时,DS作为默认的数据段寄存器。
指令寻址方式
通俗讲就是指令中寻找操作数地址的方式。
指令的偏移量由三部分相加组成:基地址寄存器、变址寄存器和一个偏移常量。即:
偏移地址 = 基地址 + (变址 * 比例因子)+偏移常量
8086指令寻址方式的介绍:https://www.cnblogs.com/lfri/p/10781186.html
4.2.2 地址变换
保护
防止一个任务访问另一个任务或操作系统的内存区域。地址变换可以让某些地址不被任何逻辑地址映射,所以地址变换过程也提供内存保护功能。
地址变换
程序中的地址是由两部分构成的逻辑地址,不能直接用于访问物理内存。
需要将逻辑地址转为物理地址。
将逻辑地址转为物理地址——分段和分页机制
分段机制和分页机制是两种广泛使用的地址变换技术。
都使用驻留在内存中的表来指定变换信息,这些表只能由操作系统访问,以防应用程序篡改。
映射过程:
第一阶段:分段机制。逻辑地址→处理器可寻址内存空间(称为线性地址空间)中的地址
第二阶段:分页机制。线性地址→物理地址
-
-
物理地址空间:地址总线能产生的地址范围
以上是关于操作系统——Linux内核完全注释011c-3.0的主要内容,如果未能解决你的问题,请参考以下文章