我研究过切换到内核模式的指令是特权指令的一个例子。硬件允许特权指令仅在内核模式下执行。
但是如果切换到内核模式只能在内核模式下执行(?),如果系统处于用户模式,怎么能切换到内核模式?
答案 0 :(得分:1)
让我们一步一步地看到它:
答案 1 :(得分:1)
进入内核模式有两种方法:异常或中断。在大多数处理器中,异常和中断都分配了数字。操作系统必须定义一个表,该表包含每个异常和中断的处理程序指针数组。
如果在代码中除以零,则将进入内核模式作为例外。然后处理器跳转到处理程序以除以零。
如果调用系统服务(在大多数系统上),则执行一条导致异常进入内核模式的指令。处理器调用系统服务的处理程序。
这是一般工作方式。英特尔芯片有进入内核模式的奇怪方式。
答案 2 :(得分:0)
我回答了类似的问题,你可以在这里查看: How to switch from user mode to kernel mode?
简而言之,为了使用户空间程序进入内核模式,它需要进行显式系统调用,如打开,读取,写入等,导致软件中断(SWI)导致系统切换到内核模式。你可以在给定的链接中找到更详细的答案,希望它有所帮助。