谁负责 Defining/Designing 计算机的中断?

Who is Responsible for Defining/Designing a Computer's Interrupts?

我已经练习汇编一段时间了,我在 YouTube 上看到了一个视频,教你如何制作引导加载程序。在观看视频时,我脑海中浮现出一个问题,即什么是“int”。我开始搜索,发现它是中断的缩写。我想到了“什么是中断?”。再一次,我搜索并开始理解。但是,我很好奇中断是如何产生的以及它们是如何产生的?......制造商自己制造中断吗?或者什么?

注意:我假设“带 BIOS 的旧 80x86”,因为我认为这是最有可能的,而且它涵盖了大多数情况。

What are Interrupts?

一般;中断是由特定事件(通常由 CPU 之外的硬件触发)触发的控制流更改(到中断处理程序)。换句话说,它是中断正常执行的东西。然而,在不期望的情况下(例如基于外部信号)中断当前正在执行的代码的能力需要确保被中断软件的状态不会被弄乱并且可以恢复的能力; mechanism/s 用于确保被中断软件的状态不会被弄乱的 mechanism/s 经常被回收用于其他事情(该软件 can/does 除外)。

中断可以分为 3 类:

  1. IRQ。这些被设备用来请求关注。设备的每个设计者都决定他们的设备使用其 IRQ/s 的目的。通常还有某种 IRQ 控制器涉及将信号(来自设备)转换为 CPU 理解的格式并给它们一个中断号。

  2. 例外情况。这些是由设计 CPU(例如英特尔)或 CPU 扩展的人设计的;并指出软件何时试图做一些 CPU 不能或不允许的事情(例如除以零,访问当前无法访问的内存,软件试图做一些需要权限的事情它没有'有等)

  3. 软件中断。这些被用作一种 API 软件可以用来要求其他软件做某事。谁设计了它们取决于 API(例如,Microsoft 设计了 ​​MS-DOS 使用的接口,Linux 内核开发人员在早期 int 0x80 API Linux , ETC)。对于旧的 BIOS;最初它是由 IBM 设计的(然后由其他人进行逆向工程和克隆);但多年来,不同的团体创建了扩展原始 BIOS 的标准;如“int 0x13 extensions”(绕过旧“CHS”功能的“最大磁盘大小”限制),“El Toritio 可引导 CD 规范”(添加使用 CD 模拟软盘和硬盘的功能并管理它们) 、“VESA BIOS 扩展”(使 super-VGA/higher 分辨率视频卡更易于软件使用)等。大多数这些 BIOS 扩展来自 firmware/BIOS 创作者(例如 Phoenix),行业 groups/committees/standardization组织(例如 VESA、PCI 特别利益集团等)或硬件制造商(例如英特尔)。