好友
阅读权限10
听众
最后登录1970-1-1
|
女萝岩
发表于 2020-4-3 22:23
IRQL是Interrupt ReQuest Level的简写,翻译成中文就是中断请求级别。网上搜索了一下看的云里雾里的,大多是机器翻译,我根据自己理解说一下IRQL到底是个什么东西,不一定对哈,贵在交流。
我们可以把CPU理解成一个人,就叫他铁锤,他每天要做很多事情,而且事情有个轻重缓急,于是铁锤给每件事情设定一个优先级,看电影的优先级是1,和同学聚会的优先级是2,吃饭的优先级是3,撩妹的优先级是4等等,最高的优先级是10。
某天铁锤在吃饭,优先级是3,那么优先级小于等于3的事情铁锤都不会去做了,目前暂时没有什么比吃饭更重要的了,这叫关中断。正吃的香的时候突然肚子里面翻江倒海,铁锤知道目前最重要的事情是去厕所,拉肚子可会出人命的,这件事情的优先级是10,它是今天优先级最高的事情,谁也别想打扰他,就算天塌下来,就算有妹子撩他他也不管,这也叫关中断。于是铁锤去附近商场解决了问题,回来后继续吃饭。有人问铁锤,你咋不回家上厕所呢?铁锤说,你傻啊,来回一趟多费时间啊。这就是为什么IRQL等级越高,越不能访问分页内存只能访问非分页内存的原因,因为分页内存可能在硬盘里面,读取一趟数据趟猴年马月了。要是有重要事情赶紧花最少的事情做完,做完还有其它重要的事情要做的。
总结一下。
1.高等级的IRQL可以打断低等级IRQL的执行。
2.IRQL等级越高,越不能访问分页内存,只能访问非分页内存,这导致你能使用的API越少。
第二点和应用层是完全不一样的,应用层的API随便用,几乎不用考虑后果。内核层的API使用的时候还得考虑IRQL,用错了就蓝屏了。
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|