首页 >> 综合 > 快讯 >

x86 开机先进入 16 位实模式,逐级切换到 64 位长模式原理讲解

2026-11-06 12:53:17 来源:网易 编辑:章致婵 

现代 64 位 x86 处理器上电复位之后,第一件事不是直接跑 64 位代码,而是强制进入古老的 16 位实模式,再由固件、引导程序、操作系统内核依次完成环境搭建,一步步切换到 32 位保护模式,最后进入 64 位长模式,这套流程几十年一直保留,核心原因是 x86 架构要维持向下兼容,老 BIOS、早期引导代码都只能在 16 位实模式下运行,CPU 出厂就把复位默认状态固定为实模式。实模式能力很弱,只能访问 1MB 以内内存,没有内存隔离、权限保护,只能做 POST 自检、基础外设初始化、加载引导扇区这些简单工作;等基础硬件就绪,引导代码会按固定步骤配置描述符表、寄存器、分页机制,先切到 32 位保护模式获得内存保护、多任务能力,再继续配置 PAE、长模式标志、四级页表,最终切换到 64 位长模式,也就是我们日常 Windows、Linux 系统运行的环境。下面把三种模式的区别、切换步骤、BIOS 和 UEFI 场景差异整理清楚,方便对照理解。

一、三种运行模式核心参数对照表

模式位数内存访问上限核心能力主要使用阶段
实模式16 位1MB无内存保护、无分页、简单分段上电复位、BIOS POST、早期引导
保护模式32 位4GB(开启 PAE 可更大)分段 + 分页、权限环、内存隔离、多任务引导中期、老 32 位系统
长模式(64 位)64 位理论极大地址空间64 位通用寄存器、四级分页、兼容 32 位程序现代操作系统正常运行

二、从 16 位实模式一路切换到 64 位完整步骤

  1. 上电复位,CPU 进入 16 位实模式
  2. 实模式下准备切换条件
  3. 切换进入 32 位保护模式
  4. 保护模式下准备长模式环境
  5. 开启分页,正式进入 64 位长模式

CPU 复位后寄存器全部重置,默认 8086 兼容的 16 位实模式,从固定地址取 BIOS 指令,执行 POST 硬件自检,初始化键盘、显示器、硬盘等基础外设。

关闭中断、开启 A20 地址线,A20 打开之后才能正常访问 1MB 以上内存;加载全局描述符表 GDT,为保护模式分段机制做准备。

修改 CR0 寄存器 PE 保护使能位,执行远跳转刷新流水线,正式进入 32 位保护模式,此时拥有内存保护、特权分级、基础分页能力。

先校验 CPU 是否支持 64 位扩展,开启 PAE 物理地址扩展,搭建 PML4 四级页表,设置 EFER 寄存器 LME 长模式开启标记。

打开 CR0 分页位,再次远跳转刷新指令流水线,CPU 进入 64 位长模式,内核开始加载、初始化驱动,进入我们熟悉的操作系统环境。

三、BIOS 和 UEFI 启动的模式差别

  • BIOS 传统启动:完整走完上面这套 16 位→32 位→64 位流程,引导扇区代码全部跑在 16 位实模式,流程最经典。
  • UEFI 启动:固件本身大多运行在 32 位或 64 位,虽然 CPU 上电依然先落到 16 位实模式,但 UEFI 固件会快速完成模式切换,开发者基本不用手写 16 位引导汇编,底层硬件逻辑没变。

四、常见误区清单

  • 误区 1:64 位 CPU 天生开机就是 64 位。不是,复位默认 16 位实模式,兼容是第一优先级。
  • 误区 2:实模式就是没用的古董。它是 BIOS 引导的基础运行环境,没有实模式就跑不了传统引导代码。
  • 误区 3:保护模式就是 64 位模式。保护模式原生是 32 位,长模式是在保护模式之上扩展出来的 64 位子模式。
  • 误区 4:切换模式可以一步跳到 64 位。x86 架构不支持直接从实模式进入长模式,必须经过 32 位保护模式作为中间过渡。

【相关 FAQ】

问题 1:x86 开机为什么要先进入 16 位实模式,不能直接启动 64 位?

回答 1:x86 开机先进入 16 位实模式,根源是向下兼容设计,早期 BIOS、引导程序都基于 16 位实模式开发,CPU 复位硬编码默认进入实模式,这套启动链路保留至今,必须先在实模式完成硬件自检和基础引导,再逐级切换到 64 位。

问题 2:x86 从 16 位实模式切换到 64 位,能不能跳过 32 位保护模式?

回答 2:x86 从 16 位实模式切换到 64 位不能跳过 32 位保护模式,架构规范要求实模式先切换到保护模式,再在保护模式里配置页表、长模式标志,才能进入 64 位长模式,不存在直接跳转的方式。

问题 3:x86 的 16 位实模式和 64 位长模式,内存访问能力差别有多大?

回答 3:x86 的 16 位实模式最多只能访问 1MB 内存,没有保护机制;64 位长模式依靠四级分页,支持超大地址空间,自带内存隔离、权限管控,是现代操作系统运行的基础环境。

问题 4:UEFI 启动的 x86 电脑,还会经过 16 位实模式吗?

回答 4:UEFI 启动的 x86 电脑上电瞬间依然会进入 16 位实模式,只是 UEFI 固件会快速完成模式切换,上层开发不用写 16 位汇编代码,底层 CPU 复位的这个机制没有取消。

问题 5:x86 32 位保护模式主要起到什么作用?

回答 5:x86 32 位保护模式是 16 位实模式通往 64 位长模式的中间层,它提供分段、分页、权限隔离,既能独立运行老式 32 位操作系统,也为开启长模式、搭建 64 位页表提供必要硬件环境。

【参考资料】

[2026-11-06](启动模式几十年没变!x86 开机竟要先退回 16 位实模式:再一路狂飙到 64 位)快科技

[2026-11-03](彻底理解操作系统:CPU 实模式的底层逻辑与启动基石)21IC 电子网

[2026-11-01](x86 汇编:实模式、保护模式、长模式讲解)Wasil Zafar

[2026-09-09](从实模式到长模式:Linux 内核启动流程)JZLeetCode

[2026-05-04](x86-64 CPU 运行模式完整介绍)SimplifyC++

[2026-02-06](x86 引导程序,实模式切保护模式实操)Wasil Zafar

【免责声明】

本文讲解的 x86 16 位实模式、保护模式、64 位长模式切换流程,基于标准 x86-64 架构规范,不同厂商 BIOS、UEFI 固件、主板实现细节会存在差异;部分虚拟化、安全启动、SMM 系统管理模式会额外增加分支流程。本文仅做原理科普,不构成底层开发、固件调试的技术保证,底层汇编与内核开发请以 Intel、AMD 官方架构手册为准。

 
最新文章
站长推荐