- 用户程序要求操作系统的服务,即系统调用。
- 发生一次中断。
- 用户程序中产生了一个错误状态。
- 用户程序中企图执行一条特权指令。
- 从核心态转向用户态由一条指令实现,这条指令也是特权指令,一般是中断返回指令。
注意:
1)若程序的运行由用户态转到核心态,则会用到访管指令,访管指令是在用户态使用的,所以访管指令不可能是特权指令。其基本功能是让程序“自愿进管”,从而引起访管中断。
2)计算机区分核心态和用户态后,从核心态到用户态的转换是由操作系统程序执行后完成的,而用户态到核心态的转换规则则是由 硬件 完成的,而从用户态转到核心态的唯一途径是中断或异常。
3)由用户态到核心态,不仅状态需要转换,而且所用的堆栈也可能需要由用户堆栈切换为系统堆栈,但是这个系统堆栈是属于该进程的。