将 CPU 切换到用户模式和内核模式的汇编指令?

ron*_*y_t 5 x86 assembly operating-system

根据我的理解,当中断被触发时,CPU 会切换到内核态,而当中断被处理时,操作系统会将 CPU 切换回用户态。

现在我的问题是:

  1. 操作系统是如何将 CPU 切换到用户模式的(使用的汇编指令是什么?)。
  2. 是否有将 CPU 切换到内核模式的汇编指令,还是只有在触发中断时才会切换到内核模式?

use*_*003 2

操作系统如何将CPU切换到用户模式(使用的汇编指令是什么?)。

处理器有特殊的中断返回指令。指令的名称因处理器而异,但它们都执行大致相同的操作。REI、IRET 就是例子。

是否有汇编指令可以将 CPU 切换到内核模式,或者只有在触发中断时才会切换到内核模式?

进程进入内核模式有两种方法:(1)触发异常或(2)执行特殊指令。例如,

    DIVL2 #0, R0
Run Code Online (Sandbox Code Playgroud)

会让你进入内核模式

 int a = b / 0 ;
Run Code Online (Sandbox Code Playgroud)

进入内核模式的指令因处理器而异,但示例包括 CHMK、INT。i86 系列有多种方法可以实现这一点。