每个进程如何拥有自己的一组寄存器?

问题描述

我读过:

I/O Instructions can run when CPL <= IOPL

但是 IOPL 是否在不同进程之间共享?我读到每个进程/线程都有自己的一组寄存器,所以如果每个进程/线程都有自己的 IOPL 版本,那么上面的引用就没有意义。

解决方法

是的,每个进程都有自己的 IOPL:

来自https://pdos.csail.mit.edu/6.828/2008/readings/i386/s08_03.htm

因为每个任务都有自己独特的标志寄存器副本,所以每个任务可以有不同的 IOPL。主要功能是执行 I/O 的任务(设备驱动程序)可以从 IOPL 为 3 中受益,从而允许任务的所有过程执行 I/O。其他任务通常将 IOPL 设置为 0 或 1,从而保留为最有特权的过程执行 I/O 指令的权利。