Intel芯片手册节选

保护模式内存管理

vol-3 Chapter 3 Protected-Mode Memory Management

内存管理机制:段和页

开启保护模式会使能段机制,页机制是可选的。

<图片>Figure 3-1. Segmentation and Paging

完整内存管理机制开启后,地址转换:

Logical Address -段-> Linear Address -页-> Physical Address

详细转换流程

逻辑地址组成:段选择器 (线性地址)偏移

段选择器为全局描述表(GDT)的索引,就能找到段描述项,从中取出段基地址(线性地址空间),与偏移地址就能得到页描述项?

页描述组成:页目录索引 页表索引 (物理地址)偏移

页大小典型值为4K,当被访问的页(物理内存)不在当前内存中,则处理器会产生页错误(page-fault)异常

使用段机制

基本扁平模式(Basic Flat Model)

ROM分配在FFFF_FFF0H内存处,RAM在DS值为0时在内存底部

受保护扁平模式(Protected Flat Model)

访问不存在内存时,会触发通用保护(general-protection)异常

用户设置特权等级3的代码和数据段,管理员设置权限等级0的代码和数据段

多段模式(Multi-Segment Model)

逻辑与线性地址

图 Figure 3-5. Logical Address to Linear Address Translation

GDT或LDT

段选择器结构

图 Figure 3-6. Segment Selector

Index (位3-位15)可选择GDT或LDT中8K中的一项(每个段描述符大小为8字节)

TI (位2)表指示器,0使用GDT,1使用LDT

RPL (位0-1)特权选择器,0最高权限

6个段寄存器(CS DS SS ES FS GS),前三个必须加载有效的段选择器。每个寄存器都有可见的段选择器和不可见的基地址、限制和权限。

配置方式:

  • MOV, POP, LDS, LES, LSS, LGS, and LFS指令显示加载相应寄存器,MOV通常用作存储段寄存器可见区域
  • CALL, JMP, and RET, SYSENTER and SYSEXIT,IRET, INT n, INTO, INT3, and INT1指令隐形加载CS寄存器(有事有其他段寄存器)

段描述符

图 Figure 3-8. Segment Descriptor

Segment limit field 20位,指定段的大小。G==0,1Byte1MB,粒度1Byte;G==1,4KB4GB,粒度4KB;

Base address fields 24位,定义4GB线性地址空间的起始位置,推荐地址16字节对齐;

Type field 4位,指示段或门类型,并指定可以对段进行的访问类型和增长方向,功能由其他域决定;

S (descriptor type) flag 1位,指定段类型,0系统段,1代码或数据段;

DPL (descriptor privilege level) field 2位,指定段特权等级。0特权等级最高;

P (segment-present) flag 指示段是否在内存中,1存在,0不存在;

D/B (default operation size/default stack pointer size and/or upper bound) flag 1位,不同段描述符不同功能

G (granularity) flag 1位,指明段限制域缩放比例。0字节单位,1 4KB单位。

L (64-bit code segment) flag 1位

Available and reserved bits 1位,可供系统软件使用

保护

图 Figure 5-1. Descriptor Fields Used for Protection

中断和异常处理

表 Table 6-1. Protected-Mode Exceptions and Interrupts