Intel架构与VxD开发中的关键技术解析
1. 内存引用检查机制
在进行内存引用时,处理器会进行一系列检查以确保操作的安全性和合法性。
-限制检查:处理器会将指令中指定的偏移量与段的限制进行比较。若偏移量大于限制,就会产生异常。这种保护机制能防止错误指针越界写入段的末尾。
-类型检查:将段缓存寄存器中的类型信息与内存访问类型(读或写)进行对比。例如,向CS段的某个位置写入数据通常会引发异常,因为CS段一般是只读执行段。
-特权级检查:最后会验证段的特权级别,这是确保系统安全的重要环节。
2. 特权级别
在执行指令前,处理器会检查应用程序的特权级别。合理使用特权级别能让操作系统以三种方式与应用程序隔离:
- 阻止应用程序访问特定的数据段和执行特定的代码段。
- 防止应用程序执行影响操作系统数据结构(如描述符表)的特定指令。
- 避免应用程序执行控制I/O设备或禁用/启用硬件中断的指令。
每个段(代码段或数据段)都有一个描述符特权级别(DPL),DPL位存储在段的描述符中。特权级别范围从0到3,0表示最高特权或最受信任,3表示最低特权。系统设计者可以使用这四个级别来完全隔离系统组件,例如操作系统内核运行在DPL 0,设备驱动程序运行在DPL 1,文件系统运行在DPL 2,应用程序运行在DPL 3。不过,许多操作系统(如Windows)只使用两个级别,仅区分操作系统(DPL 0)和应用程序(DPL 1、2或3)。
特权级别的基本规则是:代码不能访问更具特权的