Windows Internals学习笔记(四)Trap Dispatching
参考资料:
1. 《Windows Internals》
知识点:
● 陷阱trap:它是一种处理器机制,用以在某一异常或中断出现时,捕捉该执行线程,并将其控制权转交到操作系统中某一固定位置。在Windows中,处理器将控制权转交到一个trap handler(一个针对特定中断或异常的函数)。
● 一个中断是一个异步的事件,它与正执行的处理器无关。主要由I/O设备、处理器和时钟触发,且可以打开或关闭。
● 一个异常属于一种同步的情况,通常是由于执行某一特殊执行而触发的。
● 内核将系统服务调用当作是异常,尽管在技术上,它们是系统trap。
● 当执行线程处于用户态,且异常或中断发生了,Windows会切换到该线程的内核态。Windows接下来会在内核栈上创建一个trap frame存储线程的执行状态。trap frame是线程完整上下文的子集,可在Kernel Debugger里键入dt nt!_ktrap_frame命令查看其定义。

图1 frame的内容
● 内核安装interrupt trap handlers响应中断。ITH会将控制权交给一个ISR(interrupt service routine)或一个内核例程。设备驱动会提供处理该设备中断的ISR,而Kernel则提供处理其它类型的中断的例程。
● 硬件中断处理流程:①外部I/O中断传到中断控制器。②中断控制器中断处理器。③中断处理器被中断后,发送一个IRQ(interrupt request)请求到中断控制器。④中断控制器将IRQ翻译为一个中断号,并将该中断号作为IDT(interrupt dispatch table)的索引,然后将控制权交给合适的interrupt dispatch routine。我们可以通过!idt命令查看IDT的内容。

图2 IDT内容
● 每一个处理器有一个独立的IDT,因此,不同的处理器可以运行不同的ISR。

图3 x86 APIC架构
● 使用!pic和!apic查看中断控制器的配置。

图4 中断控制器配置
● 中断请求级:尽管中断控制器能中断优先化,但Windows强制使用自己的中断优先级方案IRQLs。尽管Kernel定义了软件中断的IRQL标准集,而HAL仍负责将硬件中断号映射为IRQL。
● 调度等级是线程的一个属性,而IRQL是中断源的一个属性。它们是不同的。
● IRQL值被保存在两个位置:PCR(processor control region)和PRCB(processor region control block)。

图5 IRQL和PCR
● 可以使用!apciirqarb命令获得ACPI IRQ arbiter的信息。
Windows Internals学习笔记(四)Trap Dispatching的更多相关文章
- Windows Internals学习笔记(六)Windows关键系统组件
参考资料: 1. <Windows Internals> 2. Dependency Walker 3. Ntoskrnl.exe 4. Livekd的使用 5. WinDbg的使用(一) ...
- Windows Internals学习笔记(二)系统架构
参考资料: 1. <Windows Internals> 2. http://bestcbooks.com 3. Windows Drive Kit 4. Microsoft Window ...
- Windows Internals学习笔记(八)IO系统
参考资料: 1. <Windows Internals> 知识点: ● 当一个进
- Windows Internals学习笔记(七)Image Loader
参考资料: 1. <Windows Internals> 2. Fibers 知识点: ● 当一个进程在系统上启动时,内核将创建一个进程对象来代表它,并执行各种内核相关的初始化任务.然而, ...
- Windows Internals学习笔记(五)Synchronization
参考资料: 1. <Windows Internals> 2. 自旋锁spinlock剖析与改进 3. Lock指令前缀 4. Lock指令前缀(二) 5. Kernel Dispatch ...
- Windows Internals学习笔记(一)概念与工具
参考资料: 1. <Windows Internals> 2. Windows Drive Kit 3. Microsoft Windows SDK 4. WDK下载地址 知识点: 1. ...
- Windows Internals学习笔记(三)Procdump的使用
参考资料: 1. 下载地址 2. 使用示例
- kvm虚拟化学习笔记(四)之kvm虚拟机日常管理与配置
KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...
- Linux学习笔记(四) vi编辑器
一.vi 编辑器 vi 编辑器 (Visual Interface) 是所有 Unix 及 Linux 系统下标准的编辑器,相当于 Windows 系统中的记事本 它有三种模式,分别是: Comman ...
随机推荐
- linux文件所属用户和组
使用chown命令可以修改文件或目录所属的用户: 命令:chown 用户 目录或文件名 例如:chown -R qq /home/qq (把home目录下的qq目录的拥有者改为qq用户) 使用chg ...
- java总结第二次(剩余内容)//类和对象1
7.成员变量和局部变量 成员变量:在类中定义,用来描述对象将要有什么 局部变量:在类的方法中定义,在方法中保存临时数据 区别:作用域不同 局部变量的作用域仅限于定义它的方法 成员变量的作用域在整个类内 ...
- android使用其他应用打开文件
根据文件的MIME类型来判断,手机中有哪些应用可以打开这个文件,然后把应用在弹窗列表中显示 /** * 打开文件 * * @param file */ public static void openF ...
- android 6.0权限处理
在模拟器测试好的程序,运行在mate8上面一直崩,经多方查探才找到以下博文,方法还没掌握,但也算是找到原因了: http://***/article/android-6-0-runtime-permi ...
- IE6下 input 背景图滚动问题及标签规范
ie6 背景图滚动问题: <title>ie6下input背景图滚动问题</title> <style> .box{ height:20px; width:300p ...
- python项目练习3:万能的XML
1.目的 如何用XML来表示多种数据,以及如何使用适合XML或SAX的简单API来处理XML文本.目标是通过一个描述各种网页和目录的XML文件生成一个完整的网站. 注:有关XML的描述参见http:/ ...
- Labeling Balls 分类: POJ 2015-07-28 19:47 10人阅读 评论(0) 收藏
Labeling Balls Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11893 Accepted: 3408 Descr ...
- Counterfeit Dollar 分类: POJ 2015-06-12 15:28 19人阅读 评论(0) 收藏
Counterfeit Dollar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 41559 Accepted: 13 ...
- 实现gabor filter的滤波
实现gabor filter的滤波 图像纹理对于航空遥感图片.织物图案.复杂自然风景和动植物都适合.这里我采用遥感图片.织物图案和钢铁表面来做,并和canny图片进行一定的对比. ...
- 切分vocab时遇到的问题
vocab的格式如下所示,每个词和对应100维的向量: </s> 0.004003 0.004419 -0.003830 -0.003278 0.001367 0.003021 0.000 ...