### 保护模式介绍 #### 一、保护模式概述与工作原理 **保护模式**是现代计算机系统中的一个重要概念,尤其在32位和64位的x86架构处理器上非常关键。它允许操作系统和应用程序在不同的“特权级别”运行,并提供了一种更安全的方式来管理和访问内存资源。 在保护模式下,处理器能够执行以下功能: 1. **内存管理**:通过分段和分页机制来管理内存区域。 2. **特权级控制**:定义不同级别的访问权限,以限制某些代码或数据的访问。 3. **异常处理**:在发生错误时进行处理,例如当尝试访问未分配的内存时。 #### 二、分页式与分段式管理 ##### 1. 分段机制 在保护模式下,分段机制是一种重要的内存管理技术。它的核心在于将逻辑地址转换为物理地址,并且提供了对访问权限的控制。 **1.1 数据结构** - **段描述符**:段描述符包含了关于内存段的重要信息,包括基地址、段界限、G位(全局标志位)、访问权限等。这些信息共同决定了一个段的起始地址、大小和可访问性。计算段的结束地址的方法为:`结束地址 = 基地址 + 段界限 * G * 4KB`。 - **描述符表**:主要有两种类型——**全局描述符表(GDT)**和**局部描述符表(LDT)**。GDT包含了所有程序共享的段定义,而LDT则只包含了特定于单个程序的段定义。这些表通过程序不可见的寄存器访问。 **1.2 硬件支持** - **段寄存器**:这是一个选择器,用于指定描述符表中的具体描述符。每个段寄存器包含三个字段:RPL(Request Privilege Level,请求特权级别)、TL(Table Indicator,表格指示器)和选择符(Selector)。 - **全局描述符表寄存器(GDTR)**:存储了GDT的基地址和界限。 - **局部描述符表寄存器(LDTR)**:包含了一个选择符,用于访问设置LDT的全局描述符。 **1.3 地址转换原理** 在保护模式中,每个进程都有自己的逻辑地址空间。这个逻辑地址由选择器(Selector)和段内偏移量(Offset)组成。选择器指向描述符表中的一个条目,而偏移量则用于计算实际的物理地址。具体来说,将段描述符的基地址加上偏移量即可得到所需的物理地址。 ##### 2. 内存分页机制 分页机制是另一种常见的内存管理技术,它将内存划分为固定大小的页面(通常是4KB),并且为每一页分配一个唯一的物理地址。 **2.1 数据结构** - **页目录项**:描述了页表的状态和访问权限。 - **页目录**:存储了页目录项。 - **页表项**:包含了描述页面状态和访问权限的信息。 - **页表**:存储了页表项。 - **页**:通常指4KB的连续地址空间。 **2.2 硬件支持** - **页标志位**:如果该标志位为1,则表示启用了分页机制。 - **页目录基地址寄存器**(CR3):用于存储页目录的基地址及其标志位。 **2.3 地址转换原理** 分页机制下的地址转换过程可以概括为以下几步: 1. 使用页目录基地址作为高20位地址,再加上页目录索引左移2位得到的10位作为低12位地址,从而得到32位的页目录项(PDE)的起始地址。 2. 从页目录项中获取页帧号(PFN),将其作为高20位地址,再加上传入的页表索引左移2位得到的10位作为低12位地址,得到32位的页表项(PTE)的起始地址。 3. 使用页表项中的页帧号(PFN)作为高20位地址,加上字节索引作为低12位地址,即可得到虚拟地址对应的32位物理地址。 通过上述机制,保护模式下的分段和分页管理不仅提高了内存使用的效率,还增强了系统的安全性,使得操作系统和应用程序能够在更受控的环境中运行。
- 粉丝: 7
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助