TRAP指令仅由系统调用触发吗?

时间:2019-06-05 19:15:38

标签: operating-system os-trap

开始学习操作系统时,我们被问到什么是TRAP操作以及何时调用它。

尝试通过阅读“现代操作系统” \ Tanenbaum(第1章)来确定答案,我注意到了2个概念,这就是我的理解:

a)“ TRAP”-操作,在用户程序进行系统调用后调用:

系统调用->

编译器将参数推入堆栈,并将syscall密钥保存在寄存器->

编译器调用库函数->

库函数调用TRAP->

TRAP从用户模式切换到内核模式->

OS调用相关的syscall处理程序。

b)“陷阱”-从用户切换到内核的任何情况。    不一定要通过TRAP(但要通过除以0等例外,在    浮动..和...更多...我不知道..)

所以我的问题:

  1. TRAP和陷阱是两个不同的(虽然很接近)概念?

  2. 除TRAP之外,操作系统是否可以其他方式从用户切换到内核模式(陷阱)?

  3. (继续(2))是什么触发了系统调用旁边的TRAP调用?

1 个答案:

答案 0 :(得分:0)

通常,一条指令会导致两种类型的异常:故障和陷阱。在大多数处理器上,异常和中断是进入内核模式的两种方法。

如果除以零,尝试在用户模式下执行特权指令,或访问未映射的内存,则会出现异常,处理器将被分类为故障或陷阱。

区别在于可以重新启动导致故障的指令。导致陷阱的指令不能。

当进程导致异常时,硬件通常将寄存器值压入堆栈,切换到内核模式,然后使用分派表调用该异常的处理例程。

大多数处理器都具有用于明确引起异常的指令。