尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Control Registers

Control Registers CR0 到 CR4 是 x86 架构中核心的控制寄存器Control Registers它们就像 CPU 的“主控开关”决定了 CPU 的工作模式、内存管理机制和众多扩展特性的开启与关闭。按照功能把它们分成了“基础控制”和“特性控制”两大类。第一层基础控制寄存器CR0, CR3CR0 和 CR3 是 CPU 运行的基础。CR0CPU 工作模式与状态“总开关”CR0 控制 CPU 最核心的运行模式和保护机制。标志位名称功能描述PE(bit 0)保护模式启用1启用保护模式0实模式。MP(bit 1)监控协处理器控制 x87 FPU 的交互。EM(bit 2)模拟协处理器1用软件模拟 FPU0使用硬件 FPU。TS(bit 3)任务切换标志在任务切换时设置用于管理 FPU 上下文的延迟保存。ET(bit 4)扩展类型在 386 时代标识 FPU 类型现代 CPU 已固定。NE(bit 5)数字错误控制 x87 FPU 异常的报告方式。WP(bit 16)写保护1即使内核Ring 0也不能修改只读页面用于实现fork()的写时复制COW。AM(bit 18)对齐检查结合 EFLAGS 的 AC 位控制是否对齐检查。NW(bit 29)非写直达与 CD 位配合控制缓存策略。CD(bit 30)缓存禁用控制是否禁用整个 CPU 的缓存。PG(bit 31)分页启用1启用分页机制0禁用。启用分页前必须先启用 PE保护模式。PG 和 PE共同决定 CPU 的内存管理模式PE0, PG0实模式PE1, PG0保护模式无分页PE1, PG1保护模式启用分页CR3页表基址寄存器CR3 用于存储当前进程的页表Page Table的物理基地址。在 32 位模式下存储页目录Page Directory的基址。在 64 位模式下存储PML4Page Map Level 4表的基址。关键点切换进程时操作系统会更新 CR3 的值CPU 会自动刷新 TLB地址转换缓存以切换到新进程的地址空间。第二层特性控制寄存器CR4CR4 控制着 CPU 的各种现代扩展特性是 CPU 的“高级功能开关”。标志位名称功能描述VME(bit 0)虚拟 8086 模式扩展在虚拟 86 模式下支持增强的中断处理。PVI(bit 1)保护模式虚拟中断在保护模式下支持虚拟中断标志VIF。TSD(bit 2)时间戳禁用1禁止用户态 (Ring 3) 执行RDTSC指令防止计时侧信道攻击。DE(bit 3)调试扩展1启用 I/O 断点等调试扩展特性。PSE(bit 4)页大小扩展1允许页表使用 4MB 的大页32位模式下。PAE(bit 5)物理地址扩展1启用 PAE允许 32 位 CPU 访问超过 4GB 的物理内存。MCE(bit 6)机器检查异常1启用机器检查异常用于报告硬件错误如ECC错误。PGE(bit 7)全局页启用1启用全局页Global Pages某些页在 CR3 切换时不被刷新 TLB可提升性能。PCE(bit 8)性能计数器启用1允许用户态执行RDPMC指令读取性能计数器。OSFXSR(bit 9)操作系统 FXSAVE/FXRSTOR1表示操作系统支持FXSAVE和FXRSTOR指令用于保存/恢复 SSE 等扩展寄存器。OSXMMEXCPT(bit 10)操作系统 SSE 异常1表示操作系统支持处理 SSE/SSE2 的 SIMD 浮点异常。UMIP(bit 11)用户模式指令预防1阻止用户态执行SGDT、SIDT、SLDT、SMSW、STR等敏感指令。VMXE(bit 13)虚拟机扩展启用1启用 Intel VT-x 硬件虚拟化技术。SMXE(bit 14)SMX 启用启用 Safer Mode Extensions为可信执行环境TXT提供支持。FSGSBASE(bit 16)FS/GS 基址读写1启用RDFSBASE、WRFSBASE等指令允许用户态直接读写 FS/GS 的基址。PCIDE(bit 17)进程上下文标识符1启用 PCID 特性让 TLB 缓存带上进程标签减少 CR3 切换时的 TLB 刷新开销。OSXSAVE(bit 18)操作系统 XSAVE1表示操作系统支持XSAVE指令集用于保存/恢复 AVX 等扩展寄存器。SMEP(bit 20)监管模式执行保护1禁止内核Ring 0执行用户态Ring 3的代码页防止内核被劫持。SMAP(bit 21)监管模式访问保护1禁止内核Ring 0访问用户态Ring 3的数据页防止内核意外读取用户数据。CET(bit 23)控制流执行技术启用英特尔 CET一种针对 ROP/JOP 等控制流劫持攻击的硬件防护机制。CR1 和 CR2CR1在 x86 架构中保留未使用。CR2专门用于页错误Page Fault。当 CPU 发生页错误时CR2 会自动保存触发错误的线性地址虚拟地址。操作系统如 Linux 的do_page_fault函数会读取 CR2以知道是哪个地址访问出了问题。总结这些控制寄存器一起构建了现代操作系统运行的基础CR0决定了 CPU 工作在实模式还是保护模式以及分页是否开启是一切的基础。CR3负责内存地址的转换是进程独立的虚拟内存空间的核心。CR4则负责开启各种“高级功能”如大页支持PSE、64位支持PAE、虚拟化VMXE、内核防护SMEP/SMAP等。
返回列表