Windows 操作系统的陷阱分发机制:中断和异常的处理

操作系统提供了一些基本机制供内核模式组件(如执行程序、内核和设备驱动程序)使用。

本章介绍以下系统机制并说明如何使用它们:

第三章 系统机制 3.1 陷阱分布

中断和异常是两种操作系统情况,它们会导致处理器重定向到正常控制流之外的代码。这两种情况都可以由硬件或软件检测到。

术语“陷阱”是指当发生异常或中断时,处理器捕获执行线程并将控制权转移到操作系统中的固定地址的机制。在 中,处理器将控制权转移到陷阱处理程序(陷阱)。

陷阱处理程序是与特定中断或异常相关的函数。

图 3.1 显示了一些可以激活陷阱处理程序的条件。

操作系统的主要功能_操作系统的描述_操作系统

内核通过以下方式区分中断和异常。

中断是异步事件(可随时发生),与处理器当前正在执行的任务无关。中断主要由 I/O 设备、处理器时钟或定时器产生,可以启用(打开)或禁用(关闭)。

相反,异常是一种同步条件,通常是执行特定指令的结果。(中止,例如机器检查,是与指令执行无关的典型处理器异常。)在相同条件下使用相同数据第二次运行程序可以重现原始异常。

例外情况包括:

内核还将系统服务调用视为异常(尽管从技术上讲,它们是系统陷阱)。

硬件和软件都可能产生异常和中断。例如,总线错误异常是由硬件问题引起的,而除以零异常则是软件错误的结果。同样,I/O 设备可以产生中断,内核本身也可以发出软中断(例如 APC 或 DPC,本章后面将讨论)。

当发生硬件异常或中断时,处理器会在被中断线程的内核堆栈中记录足够的机器状态信息,以便它可以返回到控制流中的该点并继续执行,就像什么都没有发生过一样。如果线程在用户模式下执行,则切换到线程的内核模式堆栈。然后,在被中断线程的内核堆栈上创建一个陷阱帧,并将线程的执行状态保存在陷阱帧中。

陷阱帧是线程完整执行环境的一个子集。您可以在内核调试器中键入 dt nt! 来查看陷阱帧的定义(第 5 章“进程和线程”介绍了线程环境)。当内核处理软中断时,它要么将软中断视为硬中断处理的一部分,要么在线程调用与软中断关联的内核函数时同步处理它。

在大多数情况下,内核会安装前端陷阱处理程序,这些处理程序在内核将控制权移交给与特定陷阱关联的处理程序之前或之后执行一些常规陷阱处理任务。例如,如果陷阱条件是设备中断,则内核的硬件中断陷阱处理程序会将控制权移交给中断设备的设备驱动程序提供的中断服务例程 (ISR)。如果陷阱条件是由对系统服务的调用引起的,则常规系统服务陷阱处理程序会将控制权移交给可执行文件中指定的系统服务函数。内核还会为它不希望看到或根本不处理的陷阱安装陷阱处理程序。这些陷阱处理程序通常执行系统函数,当内核检测到可能导致数据损坏的问题或不正确的行为时,这些函数会停止计算机(有关错误检查的更多信息࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

源码时代网

打赏一下可以使我更加卖力的分享

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值