CPU在X86上从内核模式切换到用户模式:何时以及如何?

时间:2012-11-06 03:33:00

标签: linux-kernel context-switch

CPU何时以及如何从内核模式切换到用户模式在X86上:它到底是做什么用的?它是如何实现这种转变的?

2 个答案:

答案 0 :(得分:5)

在x86保护模式下,CPU正在执行的当前权限级别由CS寄存器的两个最低有效位(段选择器的RPL字段)控制。

因此,从内核模式(CPL=0)到用户模式(CPL=3)的切换是通过用用户模式替换内核模式CS值来实现的。有很多方法可以做到这一点,但是典型的一个是IRET指令,它从堆栈中弹出EIPCSEFLAGS寄存器。

答案 1 :(得分:2)

iret就是这样做的。请参阅代码here(INTERRUPT_RETURN宏)