开始学习操作系统时,我们被问到什么是TRAP操作以及何时调用它。
尝试通过阅读“现代操作系统” \ Tanenbaum(第1章)来确定答案,我注意到了2个概念,这就是我的理解:
a)“ TRAP”-操作,在用户程序进行系统调用后调用:
系统调用->
编译器将参数推入堆栈,并将syscall密钥保存在寄存器->
编译器调用库函数->
库函数调用TRAP->
TRAP从用户模式切换到内核模式->
OS调用相关的syscall处理程序。
b)“陷阱”-从用户切换到内核的任何情况。 不一定要通过TRAP(但要通过除以0等例外,在 浮动..和...更多...我不知道..)
所以我的问题:
TRAP和陷阱是两个不同的(虽然很接近)概念?
除TRAP之外,操作系统是否可以其他方式从用户切换到内核模式(陷阱)?
(继续(2))是什么触发了系统调用旁边的TRAP调用?
答案 0 :(得分:0)
通常,一条指令会导致两种类型的异常:故障和陷阱。在大多数处理器上,异常和中断是进入内核模式的两种方法。
如果除以零,尝试在用户模式下执行特权指令,或访问未映射的内存,则会出现异常,处理器将被分类为故障或陷阱。
区别在于可以重新启动导致故障的指令。导致陷阱的指令不能。
当进程导致异常时,硬件通常将寄存器值压入堆栈,切换到内核模式,然后使用分派表调用该异常的处理例程。
大多数处理器都具有用于明确引起异常的指令。