|
|
1
232
trap 是用户进程中的异常。它是由零除或无效的内存访问造成的。这也是调用内核例程的常用方法(a) system call )因为它们的运行优先级高于用户代码。处理是同步的(因此用户代码被挂起并随后继续)。在某种意义上,它们是“活动的”——大多数时候,代码期望陷阱发生并依赖于这个事实。 安 interrupt 是由硬件(如硬盘、图形卡、I/O端口等设备)生成的。它们是异步的(即它们不会发生在用户代码中可预测的地方)或“被动的”,因为中断处理程序必须等待它们最终发生。 您还可以将trap看作一种CPU内部中断,因为trap handler的处理程序看起来像一个中断处理程序(寄存器和堆栈指针被保存,有一个上下文切换,在某些情况下可以继续执行)。 |
|
2
128
和 中断 例外 ,异常类似于中断。 英特尔x86定义了两个重叠的类别,矢量事件( 中断 例外情况 ),和异常类( 断层 与 陷阱 与 ). 这篇文章中的所有引用都来自2016年4月版本的 Intel Software Developer Manual . 对于x86(明确而复杂的)透视图,我建议阅读SDM中关于中断和异常处理的一章。 矢量化事件矢量化事件( 中断 和 例外情况
中断
异常分类
陷阱 递增指令指针, 断层 不要,而且 “爆炸”。陷阱
示例:页面错误通常是可恢复的。应用程序地址空间的一部分可能已从ram交换到磁盘。当应用程序试图访问被调出的内存时,它将触发一个页面错误。内核可以将内存从磁盘拉到ram,并将控制权交还给应用程序。应用程序将继续它停止的地方(在访问交换出的内存的错误指令处),但是这次内存访问应该不会出现错误。
模拟浮点指令或其他丢失指令的非法指令错误处理程序必须手动递增返回地址,以获得所需的类似陷阱的行为,然后才能查看错误指令是否是它可以处理的指令。x86个
软件调用的中断(由INT指令触发)的行为类似于陷阱。指令在处理器保存状态并跳转到中断处理程序之前完成。 |
|
|
3
11
一般来说,异常、故障、中止等术语, 陷阱 ,和 中断 所有的意思都是一样的,被称为“中断”。 关于陷阱和中断的区别:
作为
|
|
|
4
7
A 陷阱 是一种特殊的 通常被称为 . 安 打断 是一个更一般的术语,涵盖了两者 硬件中断 (来自硬件设备的中断)和 软中断 陷阱 ). |
|
|
5
4
陷阱是由类似代码的程序调用的,例如。g。调用操作系统例程(即。e。通常是同步的)。 |
|
|
6
3
中断是系统内由硬件产生的流量变化。打断 传唤处理人处理中断原因;然后将控件返回到 中断的上下文和指令。陷阱是软件生成的中断。一个中断可以 用于发出I/O完成的信号,以避免设备轮询的需要。陷阱可以 |
|
|
7
3
我认为陷阱是由当前指令的执行引起的,因此它们被称为同步事件。其中as中断是由处理器中运行的独立指令引起的,该指令与外部事件有关,因此称为异步指令。 |
|
|
8
3
中断是硬件中断,而陷阱是软件调用的中断。硬件中断的出现通常会禁用其他硬件中断,但陷阱则不是这样。如果需要在提供陷阱之前禁止硬件中断,则需要显式清除中断标志。通常计算机上的中断标志会影响(硬件)中断,而不是陷阱。这意味着清除此标志不会阻止陷阱。与陷阱不同,中断应该保持CPU以前的状态。 |
|
|
9
2
陷阱是一种软件中断。如果您编写一个程序,其中声明一个变量的值被零除,则该变量将被视为陷阱。每当您运行此程序时,它将同时抛出相同的错误。系统调用是陷阱的一个特殊版本,在该版本中,程序向操作系统请求所需的服务。 |
|
|
10
1
一个陷阱可以被识别为一个控制转移,它是由程序员发起的。术语Trap可与术语Exception(一种自动发生的软件中断)互换使用。但也有人认为陷阱只是一个特殊的子程序调用。因此它们属于软件调用中断的范畴。例如,在8086机器中,程序员可以使用int指令启动陷阱。因为陷阱总是无条件的,所以控制权总是转移到与陷阱相关联的子例程。调用例程来处理陷阱的确切指令很容易识别,因为显式指令用于指定陷阱。 Trap Vs Interrupt |
|
|
Denis · 在C、linux中同步进程 2 年前 |
|
|
ridhomblr · 如果DI>32767,VGA输出不显示 2 年前 |
|
|
dmgzh · 如何根据所使用的系统更改变量值?(Python) 3 年前 |
|
|
gitm_248 · Ubuntu安装和关闭的问题:寻求解决问题的指导 3 年前 |
|
|
Adriana · 尝试创建文件列表时出错 3 年前 |