注意:我假设“带有 BIOS 的旧 80x86”,因为我认为这是最有可能的,并且它涵盖了大多数情况。
什么是中断?
一般来说; 中断是导致由某个事件(通常由 CPU 外部的硬件触发)触发的控制流更改(到中断处理程序)的东西。换句话说,它是中断正常执行的东西。然而,在不期望的情况下(例如基于外部信号)中断当前正在执行的代码的能力需要能够确保被中断的软件的状态不会被弄乱并且可以被恢复;并且用于确保被中断软件的状态不会被弄乱的机制通常会被回收用于其他事情(该软件可以/做除外)。
中断可以分为3类:
IRQ。这些被设备用来引起注意。设备的每个设计者决定他们的设备将其 IRQ/s 用于什么目的。通常还涉及某种 IRQ 控制器将信号(来自设备)转换为 CPU 理解的格式并为它们提供中断编号。
例外。这些是由设计 CPU(例如 Intel)或 CPU 扩展的人设计的;并指示软件何时尝试执行 CPU 不能或不允许的操作(例如除以零、访问当前无法访问的内存、软件尝试执行需要它没有的权限的操作,等等)
软件中断。这些被用作一种 API,软件可以使用它来要求其他软件做某事。谁设计它们取决于哪个 API(例如 Microsoft 设计了 MS-DOS 使用的接口,Linux 内核开发人员设计了int 0x80早期 Linux 中的 API 等)。对于旧的 BIOS;最初它是由 IBM 设计的(然后被其他人逆向工程和克隆);但多年来,不同的团体创建了扩展原始 BIOS 的标准;像“int 0x13 extensions”(绕过旧“CHS”功能的“最大磁盘大小”限制),“El Toritio可引导CD规范”(添加使用CD模拟软盘和硬盘并管理它们的功能) 、“VESA BIOS 扩展”(使超级 VGA/更高分辨率的视频卡更易于软件使用)等。这些 BIOS 扩展大部分来自固件/BIOS 创建者(例如 Phoenix)、行业团体/委员会/标准化机构(例如 VESA、PCI 特殊利益集团等),或硬件制造商(例如英特尔)。
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |