【问题标题】:Is TRAP instruction triggered only by a syscall?TRAP 指令是否仅由系统调用触发?
【发布时间】:2019-06-05 19:15:38
【问题描述】:

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

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

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

系统调用->

编译器将参数压入堆栈,并将系统调用键保存在寄存器中 ->

编译器调用一个库函数 ->

库函数调用TRAP ->

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

操作系统调用相关的系统调用处理程序。

b) “陷阱” - 任何从用户模式切换到内核模式的情况。 不一定通过 TRAP(但通过除以 0 等例外情况,操作 浮动……还有……更多……我不知道……)

所以我的问题:

  1. TRAP 和 trap 是 2 个不同(尽管很接近)的概念?

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

  3. (继续 (2))除了系统调用之外,还有什么触发 TRAP 调用?

【问题讨论】:

    标签: operating-system os-trap


    【解决方案1】:

    一般来说,一条指令会导致两种类型的异常:FAULTS 和 TRAPS。在大多数处理器上,异常和中断是进入内核模式的两种方式。

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

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

    当进程引发异常时,硬件通常会将寄存器值压入堆栈,切换到内核模式,然后使用调度表调用异常处理例程。

    大多数处理器都有明确引发异常的指令。

    【讨论】:

      猜你喜欢
      • 2019-05-10
      • 1970-01-01
      • 2022-08-17
      • 1970-01-01
      • 1970-01-01
      • 2013-02-11
      • 1970-01-01
      • 2016-06-09
      • 2021-08-02
      相关资源
      最近更新 更多