陷阱到底是什么?

问题描述 投票:0回答:1

据我了解,中断有软件中断和硬件中断之分。软件中断包括异常和陷阱,其中陷阱是显式调用的(例如系统调用的情况),异常是隐式调用的(例如除0、缺页等情况)

我说得对吗? 陷阱仅用于系统调用吗?

我读过的所有解释似乎都互相矛盾。

operating-system trap
1个回答
0
投票

没有一致的术语。不同的架构/供应商使用这些词来表示不同的事物。

例如,在 Motorola 68000 上,陷阱是由

trap
trapv
指令调用的异常。正如您所说,它们被明确调用,但是它们仍然被视为异常 - 因为摩托罗拉将所有中断称为“异常”。

在 x86-64 上,异常是前 32 个保留中断 - 它们可以由 CPU 隐式调用。它们进一步分为陷阱、故障和中止:

  • 陷阱总是发生在指令结束时,保存下一条指令地址。从中断返回进入下一条指令。
  • 故障发生在指令开头,保存当前指令地址。从中断返回尝试再次运行指令。
  • 中止是不可恢复的,您不应该从该中断中返回。
© www.soinside.com 2019 - 2024. All rights reserved.