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