中断是基于硬件并发生异步的(数据输入到套接字,一些I/O准备从或写入,用户按下键盘。
异常也是基于硬件的,但是它们是同步的,在执行指令时是由CPU造成的。例如,虚拟内存地址空间中没有实际内存块映射到它的页面将导致页面错误。异常是故障、陷阱和中止的通用名称。
中断和异常由硬件生成,并由内核空间中的处理程序处理。它们可以看作是硬件和内核之间通信的手段。
信号信号可以看作是正在运行的进程与内核之间通信的一种手段。在某些情况下,中断/异常将使用信号作为内核处理的一部分。
发布于 2019-12-22 11:04:09
中断
在计算中,中断是表示需要注意的异步信号,或者是软件中指示执行中需要更改的同步事件。
(从堆栈溢出的标记描述中获得的定义)
所以,这并不是不必要的异步。只有当硬件发出它时,它才是异步的。想想一个虚拟设备或一个模拟器,用于同步中断的例子,当您正在为照相机编程时,而不是真正的设备时,您可以使用一个模拟器来编程来模拟中断。
例外情况
来自Microsoft 文档
操作系统所识别的大多数标准异常都是硬件定义的异常.Windows可以识别一些低级别的软件异常,但这些异常通常最好由操作系统来处理。 Windows将不同处理器的硬件错误映射到本节中的异常代码。在某些情况下,处理器可能只生成这些异常的一个子集。Windows对有关异常的信息进行预处理,并发出适当的异常代码。
异常不一定是硬件生成的,也不一定是同步的。
如果它们是同步的,那么软件就会发出它(就像照相机仿真器)。异步异常几乎可以在任何地方引发。
在更高级的编程语言中,可以使用异常处理程序,不同类型的异常有自己的异常子类。程序可以使用命令发出异常,通常是与异常实例配对的throw关键字。请参阅:https://www.geeksforgeeks.org/throw-throws-java/
可以根据业务逻辑实现自定义异常类,请参阅https://www.baeldung.com/java-new-custom-exception。
所以,例外的范围比你最初想象的要宽得多。
信号
信号是对进程发生事件的通知。信号有时被描述为软件中断。信号类似于硬件中断,因为它们中断程序的正常执行流程;在大多数情况下,无法准确预测信号何时到达。它们在C标准中定义,在POSIX中扩展,但许多其他编程语言/系统也提供了对它们的访问。
你对信号的判断或多或少是正确的。
https://stackoverflow.com/questions/59443373
复制相似问题