浦东新区做网站公司,网站开发 wenzhou,网站建成后应该如何推广,网站 在线支付功能在保护模式下#xff0c;处理器中的“阶级”不仅体现在数据和代码的访问#xff0c;还体现在指令中。
一方面将指令分级的原因是#xff0c;有些指令的执行对计算机有着严重的影响#xff0c;它们只有在0特权级下被执行#xff0c;因此被称为特权指令#xff08;Privile…在保护模式下处理器中的“阶级”不仅体现在数据和代码的访问还体现在指令中。
一方面将指令分级的原因是有些指令的执行对计算机有着严重的影响它们只有在0特权级下被执行因此被称为特权指令Privilege Instruction。比如hlt指令它可以让计算机停机处理器只信任操作系统所以它不得不放在0特权级下。同类的指令还有lgdtlidtltrpopf等这些对计算机的正常运行起着非同小可的影响操作系统只有亲自执行它们才放心。
另一方面体现在I/O读写控制上。IO读写特权是由标志寄存器eflags中的IOPL位和TSS中的IO位图决定的它们用来指定执行IO操作的最小特权级。IO相关的指令只有在当前特权级大于等于IOPL时才能执行所以它们称为IO敏感指令I/O Sensitive Instruction如果当前特权级小于IOPL时执行这些指令会引发处理器异常。这类指令有in、out、cli、sti。所以你懂的不止是操作系统可以进行IO端口访问用户进程也是可以的只是操作系统不允许用户进程这么做。
平时我们被灌输的思想是用户进程无法直接访问硬件必须要向操作系统求助只有高高在上的操作系统才有能力访问外设。操作系统的职责就是管理计算机中的资源资源包括软件和硬件不允许用户进程直接操作外设这只是操作系统的一种管理策略因为这是出于对计算机的保护谁能保证用户程序个个都那么善良可靠呢万一用户程序非法使用硬件这种破坏可是难以估量呢保护计算机安全是操作系统的责任不应该让不受信任的程序有破坏计算机的可能。
我们在很久以前就介绍过eflags寄存器啦现在来查看下eflags寄存器的IOPL位如图 在eflags寄存器中第12~13位便是IOPLI/O Privilege Level即IO特权级它除了限制当前任务进行IO敏感指令的最低特权级外还用来决定任务是否允许操作所有的IO端口对没错是全部IO端口IOPL位是打开所有IO端口的开关用来单独设置端口访问的方式是IO位图一会介绍。每个任务内核进程或用户进程都有自己的eflags寄存器所以每个任务都有自己的IOPL它表示当前任务的要想执行全部IO指令的最低特权级也就是处理器最低的CPL只有任务的当前特权级大于等于IOPL才允许执行全部IO指令即数值上CPL IOPL。
CPL为0时处理器是法力无边的所以0特权级下处理器是不受IO限制的。IOPL如何设置呢下节再说。