IRQL的理解
IRQL是Interrupt ReQuest Level的简写,翻译成中文就是中断请求级别。网上搜索了一下看的云里雾里的,大多是机器翻译,我根据自己理解说一下IRQL到底是个什么东西,不一定对哈,贵在交流。我们可以把CPU理解成一个人,就叫他铁锤,他每天要做很多事情,而且事情有个轻重缓急,于是铁锤给每件事情设定一个优先级,看电影的优先级是1,和同学聚会的优先级是2,吃饭的优先级是3,撩妹的优先级是4等等,最高的优先级是10。
某天铁锤在吃饭,优先级是3,那么优先级小于等于3的事情铁锤都不会去做了,目前暂时没有什么比吃饭更重要的了,这叫关中断。正吃的香的时候突然肚子里面翻江倒海,铁锤知道目前最重要的事情是去厕所,拉肚子可会出人命的,这件事情的优先级是10,它是今天优先级最高的事情,谁也别想打扰他,就算天塌下来,就算有妹子撩他他也不管,这也叫关中断。于是铁锤去附近商场解决了问题,回来后继续吃饭。有人问铁锤,你咋不回家上厕所呢?铁锤说,你傻啊,来回一趟多费时间啊。这就是为什么IRQL等级越高,越不能访问分页内存只能访问非分页内存的原因,因为分页内存可能在硬盘里面,读取一趟数据趟猴年马月了。要是有重要事情赶紧花最少的事情做完,做完还有其它重要的事情要做的。
总结一下。
1.高等级的IRQL可以打断低等级IRQL的执行。
2.IRQL等级越高,越不能访问分页内存,只能访问非分页内存,这导致你能使用的API越少。
第二点和应用层是完全不一样的,应用层的API随便用,几乎不用考虑后果。内核层的API使用的时候还得考虑IRQL,用错了就蓝屏了。
xiaomi9nyxs 发表于 2020-4-4 14:19
中断请求IRQ,包含软件中断、硬件中断
中断都映射成为不同级别的中断请求级IRQL
中断请求分外部中断和内 ...
多谢多谢,让我了解了很多新概念。我是在分析一个样子的时候遇到了sys,昨天就初步了解了一下内核的东西,现在感觉好难啊,完全一团麻 中断请求IRQ,包含软件中断、硬件中断
中断都映射成为不同级别的中断请求级IRQL
中断请求分外部中断和内部中断,外部中断分可屏蔽中断和非可屏蔽中断
IRQ一共24个,中断请求级IRQL,一共32个,还有IDT表一共255个,这些傻傻分不清楚了 i不错的分享。
学到了。先向烈士敬礼!!! 学到了很多呢,谢谢分享 不能说关中断吧 屏蔽权限低的可屏蔽中断 CPU有中断器的通过Cr0 - Cr7控制的 非分页在DPC权限而分页内存在低权限导致你访问不一定就蓝屏 而是数据从硬盘回到 内存无法挂靠 puggs 发表于 2020-4-4 13:57
不能说关中断吧 屏蔽权限低的可屏蔽中断 CPU有中断器的通过Cr0 - Cr7控制的 非分页在DPC权限而分页内存 ...
多谢多谢,我在学习学习。 学到就是转到
页:
[1]
2