基本概念
IOPL:
IOPL 和 DPL 等类似是正对IO操作的特权保护级别,IOPL存储在 标志寄存器 EFLAGS 中,他指示了当前IO操作的保护级别,只有当CPL<= IOPL是IO操作才被允许
IO位图:
IO位图存储在TSS段中,是按位表示的IO端口的随意读写权限,比如位M 就表示IO端口M是否可随意读写,IO与IOPL是或的关系,即只要满足一个条件即可,0 表示允许 1表示不允许
所以可以看出,IO特权级的宝库是这个任务切换的,而不是全局的
IO操作特权级
标记寄存器的保护
由于IOPL是存储在标记志存器上的,为了不允许随意改变IOPL,所以对于标记寄存器上的某些字段,也是存在保护的,保护如下
可改变标记寄存器的指令包括, PUSHF POPF CLI STI 等