问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

实模式、保护模式和长模式:x86架构的内存管理演变

创作时间:
作者:
@小白创作中心

实模式、保护模式和长模式:x86架构的内存管理演变

引用
1
来源
1.
https://www.cnblogs.com/lilpig/p/18353172

在计算机科学领域,x86架构的实模式、保护模式和长模式是理解现代操作系统运行机制的关键。本文从历史发展角度,详细解析了这些模式的起源、特点及其技术实现,帮助读者建立对计算机底层技术的深入理解。

从8086开始

1978年诞生的8086是x86架构下的第一个CPU,它是一个16位处理器,支持1MB内存寻址空间。从其内部结构图可以看出,8086的结构相对简单,主要包括控制器、运算器(ALU)、寄存器和外部总线等部分。CPU执行一条指令的过程大致包括取指令、指令译码、执行指令、访问内存(非必须)和写回(非必须)等步骤。

虽然8086没有MMU(内存管理单元)和TLB(转换后备缓冲器)等现代CPU中常见的组件,但其设计足以满足当时的嵌入式系统和早期个人计算机的需求。8086的姊妹产品8088被IBM用于第一代个人计算机IBM PC上,搭载的IBM PC DOS 1.0操作系统是一个单任务的命令行操作系统,因此不需要复杂的内存管理机制。

从8086引出的段寻址

8086是16位CPU,一个16位的地址空间只有64KB。为了支持1MB的寻址空间,8086引入了段寻址机制。这种机制类似于将内存划分为多个“楼层”,每个“楼层”有自己的编号范围。具体来说,最终的地址是通过将段选择器的值左移4位(乘以16)得到20位的段基址,再加上指令中给定的16位物理内存地址,从而得到20位的内存地址,实现1MB的寻址空间。

实模式(Real Mode)

8086工作的方式被称为实模式,这是在后面有了更高级的设计之后为了区别新的寻址方式而创造出来的名词。实模式中没有虚拟地址转换,程序中指定的地址就是物理地址。为了应对16位地址空间满足不了需求的问题,x86又造出了复杂的段寻址,x86中实际的地址是楼层号(段寄存器)与房间号(地址)的结合,而机器代码中的地址只不过是在段内的偏移量。

80286和保护模式

80286在8086的基础上进行了重大改进,引入了保护模式以解决以下问题:

  • 内存保护机制:实模式不存在内存保护,无法建立隔离的内存空间。现代操作系统依赖其在多个任务之间提供内存隔离。
  • 多任务处理能力缺失:没有一个简单的结构可以给操作系统来实现多任务处理。
  • 无特权级别:现代操作系统通过特权级别来隔离内核态和用户态,保证系统的安全、稳定。

内存保护——进阶的分段机制

保护模式下,段寄存器中不再直接存储段基址,而是存储段选择器。段选择器指向内存中的段描述符表(GDT或LDT),段描述符包含了段基址、段大小、访问权限等信息。在保护模式下的内存访问流程包括:

  1. 读取段选择器
  2. 查找段描述符表(GDT、LDT),拿到段基址、限长、权限等属性
  3. 段基址 + 偏移量计算实际物理地址
  4. 校验权限
  5. 访存
  6. 异常处理(如访问越界)

特权级别

保护模式提供了四个特权级别,分别为R0到R3,权限依次减少:

平坦模型

通过精心设计GDT,可以将段基址设置为0,段限长设置为4GB,此时系统中只有一个段,该段的大小就是全部的物理地址空间。这样可以简化内存的管理,告别复杂的地址转换。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号