IRQL(多线程中断请求级别)

IRQL

IRQL(Interrupt ReQuest Level)中断请求级别,什么是"中断"呢?

中断就是硬件设备通过8259A中的中断控制器,向CPU发送的一个电信号,电信号表明中断控制码.CPU在收到电信号后就会停止正在执行的程序.识别控制码,根据中断码去中断向量表中找到对应的中断处理函数并执行,这时CUP就处于中断上下文中. 中断上下文就是系统代替硬件去做一些事情,进程上下文是系统代替进程做一些事情.
进程上下文是可以睡眠的,但中断上下文不可以睡眠.

中断又分为:外部中断和内部中断.由CPU内部引起的中断叫"陷阱"或"异常",我们通常所说的中断是由外部中断引起的,就是硬件中断.

中断流程

中断优先级

系统中有很多硬件,比如,显卡,鼠标,硬盘,内存,主板,键盘等....如果这些硬件同时向CPU发送电信号,那CUP先响应谁呢?所以,我们就要为这些硬件发过来的电信号为它们拟定一个优先级,这就是中断优先级的由来,优先级越高CPU就优先处理,优先级越低,CPU就最后处理.

内核代码运行在CPU上,同样也是拥有优先级的.就是IRQL:

无中断
PASSIVE_LEVEL(0)
// 级别最低.代表CPU在正常执行,没有中断发生
// DriverEntry、DriverUnload、DispatchRead.....等分发函数都处于这个级别,我们创建的线程也是这个级别

软中断
APC_LEVEL(1)
// 异步过程调用(以后补充)
DISPATCH_LEVEL(2)
// 这个级别重要运行完成例程,回调函数

硬终端
DIRQL // 设备中断请求级处理程序执行
PROFILE_LEVEL // 配置文件定时器
CLOCK@_LEVEL // 时钟
SYNCH_LEVEL // 同步级
IPI_LEVEL // 处理器之间中断级
POWER_LEVEL // 电源故障级

中断处理函数设计的时候一定要快速执行,在中断处理函数中不能做一些耗时的动作.因为如果我们正在执行某个中断,那么所有和它同级的,优先级比它低的这些中断都不会被相应了.如果长期调用这个函数,那么就会降低系统的响应能力,系统性能就会大幅下降.

如何遵守中断级别要求?

  1. 驱动中各个函数的中断级别
调用原 一般的运行中断级
DriverEntry,DriverUnload Passive级
各种分发函数 Passive级
完成函数 Dispatch级
各种NDIS回调函数 Dispatch级
  1. 调用的API的运行级别

  2. PASSIVE级别可以使用任何函数和内存

  3. DISPATCH级别只能访问能运行在DISPATCH级别的API和NonPagedPool

  4. NonPagedPool内存可在任何级别使用

  5. PagedPool只能在PASSIVE级别和APC_LEVEL级别使用

  6. 在Passive和APC级别代码中加入PAGED_CODE()宏

     #define PAGED_CODE()  \
         {  if(KeGetCurrentIrql() > APC_LEVEL) {  \
                   KdPrint("EX: Pageable code called at IRQL %d\n",KeGetCurrentIrql(); \
             }  \
         }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容

  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 4,004评论 0 23
  • 从本质上讲,中断(硬)是一种电信号,当设备有某种事情发生的时候,他就会产生中断,通过总线把电信号发送给中断控制器。...
    Joe_HUST阅读 22,290评论 0 10
  • http://blog.csdn.net/maochengtao/article/details/30713459...
    3e1094b2ef7b阅读 936评论 0 2
  • 序章(一) 湛湛长空黑,更那堪,斜风细雨,乱愁如织。老眼平生空四海,赖有高楼百尺。看浩荡千崖秋色。白发书生神洲泪,...
    三娘阅读 315评论 1 3
  • 001人脑 人脑是具有高度可塑性的"记忆棉",做的事情越多就越擅长。 如果你要形成一个习惯,尝试去强迫自己必须做一...
    枫丹白露苏眉鱼阅读 94评论 0 1