cpu 3 模式
按照 CPU 功能升级迭代的顺序,CPU 的工作模式有实模式、保护模式、长模式。他们的主要区别是寻址方式和指令权限。下文以 x86_64 为例
实模式
实模式寄存器
每个 16 bit 大小,可以分成 H 和 L 两个。下图的右半边的寄存器。
实模式寻址
-
寻址范围
8086 cpu 的地址总线有 20 位,所以寻址范围 2**20 = 1 MB(后续的 cpu 兼容了实模式的寻址方法) -
寻址方式
寄存器 16 位,地址有 20 位,为了访问更高的内存引入了段式内存管理——8086CPU将1MB存储空间分成许多逻辑段,每个段最大限长为64KB(但不一定就是64KB)。这样每个存储单元就可以用“段基地址+段内偏移地址”表示段基地址由16位段寄存器值左移4位表达,段内偏移表示相对于某个段起始位置的偏移量。
实模式中断
保护模式
保护模式寻址
段机制 分页机制
逻辑地址---------->线性地址-------------->物理地址
和实模式直接把段基址放在寄存器当中的做法不一样。保护模式设置了 GDT 段描述符表,寄存器里面存放了段的序号。
保护模式新增了对段落的权限检查,比如读写权限等等:
保护模式的中断同理,也增加了权限检查
长模式
长模式寻址
x 86-64 体系结构在长模式(64 位模式)下不使用分段。其中四个段寄存器:CS、SS、DS 和 ES 强制为 0,限制为 2^64。长模式访存