CPU何时以及如何从内核模式切换到用户模式在X86上:它到底是做什么用的?它是如何实现这种转变的?
答案 0 :(得分:5)
在x86保护模式下,CPU正在执行的当前权限级别由CS
寄存器的两个最低有效位(段选择器的RPL
字段)控制。
因此,从内核模式(CPL=0)
到用户模式(CPL=3)
的切换是通过用用户模式替换内核模式CS值来实现的。有很多方法可以做到这一点,但是典型的一个是IRET
指令,它从堆栈中弹出EIP
,CS
和EFLAGS
寄存器。
答案 1 :(得分:2)
iret
就是这样做的。请参阅代码here(INTERRUPT_RETURN宏)