windows中断请求级(IRQL)
来源:互联网 发布:微软小娜 知乎 编辑:程序博客网 时间:2024/05/22 13:06
windows是完全按照模块化设计的,那么它很重要的一个概念就是“交互”。在linux中,没有所谓的“交互”,如果非要对应一个,那么交互就是函数 调用,而windows的内核却不是这样简单。这也许就是宏内核和微内核的区别吧?windows是一个基本的c/s模式的系统,内核里面也不乏这样的例 子,到处都是c/s的影子,不信你看,到处都是xx管理器。所以如果一个模块需要一个服务,那么它就得请求一个服务(消息传递?)。
windows中将硬件中断和部分系统级别的软件执行绪都抽象成中断,比如如果需要重新调度,那么就请求一个DISPATCH_LEVEL级别的中断,但 是如果当前正在执行更高级别的中断,那么这个请求将被排队。直到irql降低到DISPATCH_LEVEL之下。这就是说在 DISPATCH_LEVEL之上是不会发生线程切换的;另一个例子,考虑缺页异常,缺页异常被影射到DISPATCH_LEVEL优先级,也就是说在 DISPATCH_LEVEL之上的程序如果产生缺页中断,那么内核将崩溃。
windows的这种做法有很多优点,比如:还记得linux的自旋锁吗?在单处理器环境下,如果内核非抢占,那么什么也不做,如果内核可抢占,那么就禁 用抢占,这是linux的实现,在windows中根本没有那么复杂,实际上就是一句话就可以实现和自旋锁一样的效果,就是将cpu提升到 DISPATCH_LEVEL优先级(限于单处理器,这就禁用了抢占)。但是windows的这种做法也有弊端,就是越往上irql,就有越少的内核函数 可供使用,比如在isr里面就不能用分页内存,不能切换线程。两种系统孰好孰怀,这是很愚蠢的问题,只能说windows的实现更加自洽(少量原则决定一切),而linux实现或许更加灵活
- windows中断请求级(IRQL)
- 中断请求级(IRQL)
- windows驱动开发---中断级(IRQL)
- IRQL 中断请求级别
- IRQL 中断请求级别
- IRQL中断请求级别
- IRQL 中断请求级别
- IRQL中断请求级别及APC_LEVEL讨论
- IRQL(转载 自 windows内核情景分析)
- IRQL(转载 自 windows内核情景分析)
- IRQL(转载 自 windows内核情景分析)
- IRQL(转载 自 windows内核情景分析)
- Windows驱动开发WDM (6)- 中断请求级别
- 中断请求与中断请求级
- 中断请求与中断请求级
- IRQL
- IRQL
- irql
- TP-Link WR340G+ 路由器桥接实践(2016年10月更新tplink新产品wifi中继器设备)
- linux内核网络协议栈实现中的几个问题
- rcu锁所使用的一个机制--dynticks
- POJ1094解题报告
- Windows与Linux的异步IO在设计上的差异
- windows中断请求级(IRQL)
- 首次制作动态网页
- windows驱动里面的问题
- 那些函数调用前需要清零字符串
- NT内核代码分析
- ReactOS实现的兼容NT内核分析--KfLowerIrql函数
- 使用Repo在Windows平台下載Android原始碼
- 通过IRQL看NT内核
- sql2000学习笔记之select统计数据