切换到内核模式 - 特权指令

时间:2018-01-15 12:53:32

标签: linux-kernel operating-system interrupt

我研究过切换到内核模式的指令是特权指令的一个例子。硬件允许特权指令仅在内核模式下执行。

但是如果切换到内核模式只能在内核模式下执行(?),如果系统处于用户模式,怎么能切换到内核模式?

3 个答案:

答案 0 :(得分:1)

让我们一步一步地看到它:

  1. 正在运行一个流程。
  2. 进程正在运行时出现异常。
  3. 进程被中断以调用异常或中断处理程序。
  4. 指令(称为陷阱或系统调用处理程序)读取所请求的服务+参数的详细信息,然后在内核模式下执行此请求。
  5. 现在我们回到了用户模式,在调用中断的位置。

答案 1 :(得分:1)

进入内核模式有两种方法:异常或中断。在大多数处理器中,异常和中断都分配了数字。操作系统必须定义一个表,该表包含每个异常和中断的处理程序指针数组。

如果在代码中除以零,则将进入内核模式作为例外。然后处理器跳转到处理程序以除以零。

如果调用系统服务(在大多数系统上),则执行一条导致异常进入内核模式的指令。处理器调用系统服务的处理程序。

这是一般工作方式。英特尔芯片有进入内核模式的奇怪方式。

答案 2 :(得分:0)

我回答了类似的问题,你可以在这里查看: How to switch from user mode to kernel mode?

简而言之,为了使用户空间程序进入内核模式,它需要进行显式系统调用,如打开,读取,写入等,导致软件中断(SWI)导致系统切换到内核模式。你可以在给定的链接中找到更详细的答案,希望它有所帮助。