Linux内核学习第3天

时间:2021-06-21 14:50:40
保护模式内存管理
  1. 内存寻址:对存储在内存中的某个数据对象的地址进行定位
           80X86CPU中,一条操作由操作码和操作数组成
    段:一种内存寻址技术把内存分为一个或多个线性区域(段)
           80X86有6个存放段选择符的段寄存器:CS、DS、ES、SS、FS、GS

           CS:总是用于寻址代码段,由CS 寻址代码段称为当前代码段
           SS:堆栈段使用SS寄存器,栈顶由ESP寄存器内容内容指定,堆栈顶的地址为SS:[ESP]
           指令的偏移由三部分相加组成:基地址寄存器、变址寄存器和偏移常量
                                                     即:偏移地址 = 基地址 + (变址 * 比例因子) + 偏移量
  2. 地址变换:将程序的逻辑地址变换或映射到物理内存地址上
            两种主要技术:分段机制、分页机制
            过程:
                     Linux内核学习第3天
                      (1)使用分段机制将逻辑地址转换为处理器能够寻址的内存空间(线性地址空间)
                      (2)使用分页机制将线性地址转换为物理地址(可选)
                               *如果没有启用分页机制,那么线性地址将会直接映射到处理器的物理地址空间上

                     Linux内核学习第3天

  3. 分段机制:提供了隔绝各个代码、数据和堆栈区域的机制
           (1)提供了一种机制将线性地址空间划分为一些称为段的受保护的区域
           (2)段可以用来存储代码、数据、堆栈和系统数据结构(TSS、LDT)
           (3)可以对段进行分类,对特定段的操作可以被限制
           (4)逻辑地址 = 段选择符 + 偏移量
                          段选择符:是一个段的唯一标识,提供了段描述表中的一个数据结构的偏移量,并指明段的大小,访问权限和段的特权级、段类型和段的基地址
                          逻辑地址的偏移量加上段的基地址就可以定位段的某个字节的位置(即为处理器线性空间地址)