WindowsXP中断处理.ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实例研究:Windows 2000/XP中断处理 1、Windows 2000/XP中断处理概述(1) 中断主要由I/O设备、处理器时钟或定时器、可以启用或禁用。中断是异步事件,可能随时发生,与处理器正在执行的内容无关。 异常是同步事件,它是某一个特定指令执行的结果。异常的例子是内存访问错误、调试指令及被零除。内核也将系统服务调用视作异常。 Windows 2000/XP中断处理 概述(2) 硬件和软件都可以产生中断和异常,如总线出错异常由硬件造成,而被零除异常是由软件引起的;同样,I/O设备可产生中断,而内核自身也可以发出中断。 Windows 2000/XP中断处理 概述(3) 陷阱指处理意外事件的一种硬件机制,当中断或异常发生时,它能发现并俘获正在执行的线程,把它从用户态切换到核心态,并将控制权交给内核的陷阱处理程序。 Windows 2000/XP中断处理 概述(4) Windows陷阱调度 2、Windows 2000/XP中断类型和优先级(1) ?中断请求级IRQL(Interrupt Request Level) ?内核维护的IRQL是可以移植的 ?IRQL将按照优先级排列中断,并按照优先级顺序服务中断,较高优先级中断可以抢占较低优先级中断服务 Windows 2000/XP中断类型和优先级(2) Windows中断请求级 Windows 2000/XP中断类型和优先级(3) Windows中断屏蔽 Windows 2000/XP硬件中断处理(1) ?中断产生时,陷阱处理程序保存运行程序的状态,调用中断调度程序。 ?中断调度程序提高处理器的IRQL到中断源的级别,以便在中断服务过程中屏蔽等于和低于当前中断源级别的其他中断。 ?重新启用中断,以使高优先级的中断仍然能够得到服务。 Windows 2000/XP硬件中断处理(2) ?Windows使用中断分配表IDT(Interrupt Dispatch Table)来查找处理特定中断的例程。 ?中断源的IRQL作为表的索引,表的入口指向中断处理例程。 Windows 2000/XP硬件中断处理(3) Windows中断服务 Windows 2000/XP软件中断处理 多数中断由硬件产生,但内核也为多种任务产生软件中断,包括:启动线程调度、处理计时器到时、在特定线程的描述表中异步执行一个过程及支持异步I/O等。 4、延迟过程调度和异步过程调用(1) 内核直接调用调度程序实现描述表切换时,在深入多层代码内检测到应该进行重调度,理想的解决方法是请求调度,但应延迟调度的产生直到内核完成当前活动为止,延迟过程调用DPC软件中断是实现这种延迟的简便方法。 延迟过程调度和异步过程调用(2) 延迟过程调度DPC的用法: 1)内核处理时钟中断 2)执行“延迟函数”, 3)设备驱动程序使用DPC完成I/O请求。 延迟过程调度和异步过程调用(3) 提交DPC 延迟过程调度和异步过程调用(4) 异步过程调用APC为用户程序和系统代码提供了一种在特殊用户线程的描述表(特殊的地址空间)中执行代码的方法。 延迟过程调度和异步过程调用(5) 两种APC,用户态APC和核心态APC。 核心态APC在线程描述表中运行并不需要得到目标线程的“允许”,而用户态APC则需要得到目标线程的“允许”。 核心态APC可以中断线程及执行过程,而不需要线程的干预和同意。 延迟过程调度和异步过程调用(6) 执行体使用核心态APC来执行必须在特定线程的地址空间(描述表)中完成操作系统的工作。 环境子系统使用核心态APC将线程挂起或终止自身的运行,或得到或设置它的用户态执行描述表。 POSIX子系统使用核心态APC来模仿POSIX信号到POSIX进程的发送。 延迟过程调度和异步过程调用(7) 设备驱动程序也使用核心态APC。 一些Win32 API,如ReadiEX,WriteFileEX和QueueUserAPC,使用用户态APC。 5、Windows 2000/XP异常调度(1) 异常是直接由运行程序的执行产生的情况。WIN32引入了异常处理工具,允许应用程序在异常发生时可以得到控制。 应用程序可以固定这个状态并返回到异常发生的地方展开堆栈,也可以向系统声明不能识别异常,并继续搜寻能处理异常的异常处理程序。 Windows 2000/XP异常调度(2) 除由陷阱处理程序解决的异常外,所有异常均由异常调度程序提供服务,它的任务是找到能处理该异常的异常处理程序。 如果异常产生于核心态,异常调度程序将调用一个例程来定位处理该异常的异常处理程序

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档