首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我对中断、异常和信号定义的理解是否正确?

我对中断、异常和信号定义的理解是否正确?
EN

Stack Overflow用户
提问于 2019-12-22 10:22:20
回答 1查看 165关注 0票数 0

中断是基于硬件并发生异步的(数据输入到套接字,一些I/O准备从或写入,用户按下键盘。

异常也是基于硬件的,但是它们是同步的,在执行指令时是由CPU造成的。例如,虚拟内存地址空间中没有实际内存块映射到它的页面将导致页面错误。异常是故障、陷阱和中止的通用名称。

中断和异常由硬件生成,并由内核空间中的处理程序处理。它们可以看作是硬件和内核之间通信的手段。

信号信号可以看作是正在运行的进程与内核之间通信的一种手段。在某些情况下,中断/异常将使用信号作为内核处理的一部分。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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中扩展,但许多其他编程语言/系统也提供了对它们的访问。

你对信号的判断或多或少是正确的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59443373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档