OrangeOS-定义速查表

OrangeOS-定义速查表

主要放置一些结构体定义,寄存器定义和中断定义等

保护模式

段式寻址过程

image-20211108112908961

段描述符

image-20211108112825528

描述符属性

P位:存在(Present)位。P=1表示段在内存中存在;P=0表示段在内存中不存在。
DPL :描述符特权级(Descriptor Privilege Level)。特权级可以是0、1、2或者3。数字越小特权级越大。
S位 :指明描述符是数据段/代码段描述符(S=1)还是系统段/门描述符(S=0)。

G位: 段界限粒度(Granularity)位。G=0时段界限粒度为字节;G=1时段界限粒度为4KB。
D/B位: 这一位比较复杂,分三种情况。 在可执行代码段描述符中,这一位叫做D位。D=1时,在默认情况下指令使用32位地址及32位或8位操作数;D=0时,在默认情况下使用16位地址及16位或8位操作数。 在向下扩展数据段的描述符中,这一位叫做B位。B=1时,段的上部界限为4GB;B=0时,段的上部界限为64KB。 在描述堆栈段(由ss寄存器指向的段)的描述符中,这一位叫做B位。B=1时,隐式的堆栈访问指令(如push、pop和call)使用32位堆栈指针寄存器esp;D=0时,隐式的堆栈访问指 令(如push、pop和call)使用16位堆栈指针寄存器sp。
AVL位: 保留位,可以被系统软件使用。

描述符类型

image-20211108113146797

选择子结构

image-20211108112848519

TI=0: GDT, TI=1:LDT

GDTR

image-20211108112939922

CR0(实/保切换)

PE=0:实模式,PE=1:保护模式

image-20211108113120874

保护模式下I/O

eflags

image-20211108120441963

部分中英文对照

image-20211108113232596

特权级

特权级分级

image-20211108114105708

特权级检验

  1. CPL(Current Privilege Level): CPL是当前执行的程序或任务的特权级。它被存储在cs和ss的第0位和第1位上。在通常情况下,CPL等于代码所在的段的特权级。当程序转移到不同特权级的代码段时,处理器将改变CPL。 在遇到一致代码段时,情况稍稍有点特殊,一致代码段可以被相同或者更低特权级的代码访问。当处理器访问一个与CPL特权级不同的一致代码段时,CPL不会被改变。
  2. DPL(DescriptorPrivilege Level): DPL表示段或者门的特权级。它被存储在段描述符或者门描述符的DPL字段中,正如我们先前所看到的那样。当当前代码段试图访问一个段或者门时,DPL将会和CPL以及段或门选择子的RPL相比 较,根据段或者门类型的不同,DPL将会被区别对待,下面介绍一下各种类型的段或者门的情况。
  • 数据段: DPL规定了可以访问此段的最低特权级。比如,一个数据段的DPL是1,那么只有运行在CPL为0或者1的程序才有权访问它。
  • 非一致代码段(不使用调用门的情况下): DPL规定访问此段的特权级。比如,一个非一致代码段的特权级为0,那么只有CPL为0的程序才可以访问它。
  • 调用门: DPL规定了当前执行的程序或任务可以访问此调用门的最低特权级(这与数据段的规则是一致的)。
  • 一致代码段和通过调用门访问的非一致代码段: DPL规定了访问此段的最高特权级。比如,一个一致代码段的DPL是2,那么CPL为0和1的程序将无法访问此段。
  • TSS: DPL规定了可以访问此TSS的最低特权级(这与数据段的规则是一致的)。
  1. RPL(RequestedPrivilege Level): RPL是通过段选择子的第0位和第1位表现出来的。处理器通过检查RPL和CPL来确认一个访问请求是否合法。即便提出访问请求的段有足够的特权级,如果RPL不够也是不行的。也就是说,如果RPL 的数字比CPL大(数字越大特权级越低),那么RPL将会起决定性作用,反之亦然。

一致/非一致代码段特权转移规则

image-20211108113653215

门描述符

image-20211108114523273

Param Count:参数个数,用于堆栈切换时的参数拷贝

调用门特权级规则

image-20211108114653609

短调用堆栈

image-20211108114727502

image-20211108115032645

长调用堆栈

image-20211108115053954

image-20211108115105399

特权级变换堆栈转移

image-20211108115144226

image-20211108115308094

TSS结构

image-20211108115202826

分页机制

地址转换原理

image-20211108115515007

页式寻址过程

image-20211108115549510

PDE

image-20211108115611312

PTE

image-20211108115626833

cr3

image-20211108115659378

分页示例

image-20211108115733079

ARDS(地址范围描述符结构)

image-20211108115816252

中断和异常

中断调用过程

image-20211108115916345

中断门和陷阱门

image-20211108115932693

部分中断向量号定义

image-20211108120010951

8259A

image-20211108120030467

ICW格式

image-20211108120053968

image-20211108120106099

OCW1

image-20211108120153432

OCW2

image-20211108120221443

中断堆栈变换

image-20211108120302282

FAT12

软盘结构

image-20211108120601662

根目录条目(Directory Entry)

image-20211108120623209

BIOS ParameterBlock(BPB)

image-20211108120539807

根目录占用扇区数计算公式

image-20211108120734967

或者:

image-20211108120808244

FAT项

image-20211108120825629

int 13h(读软盘)

image-20211108120852718

磁头号、柱面号、起始扇区号计算公式

image-20211108120918295

操作系统内核

ELF格式

image-20211108121017919

ELF header

image-20211108121120280

image-20211108121100916

Program header

image-20211108121149023

载入内核后的内存分布

image-20211108121307904

载入内核后的寄存器分布

image-20211108121350216


OrangeOS-定义速查表
http://example.com/2023/01/10/OrangeOS-定义速查表/
作者
Chen Shuwen
发布于
2023年1月10日
许可协议