如果你是一位 windows 内核开发者,那有个东西你绝对是绕不开的,它就是 i r q l 中断请求级别。好,今天我们就来把这个东西彻底讲明白,哈哈,这个界面 我相信只要你写过驱动,就肯定跟这位老朋友打过交道。这个蓝屏错误简直是很多人的噩梦,一看到它感觉头都大了,完全不知道从哪下手。 所以这到底是怎么回事呢?嗯,十有八九,罪魁祸首就是一个叫 i r q r 的 东西, 而这也正是我们今天准备要攻克的难题。行,那咱们就开门见山啊,直接从这个最让人头疼的蓝屏错误开始,把它背后的原理一层一层的剥开。 你可以这么想,把 i r q a 想象成是 windows 内核里面的一本秘密的交通法规手册, 它的存在就是为了确保内核里那么多同时运行的部件不会互相撞车,导致整个系统崩溃。 那么 i r q 到底是个啥?它究竟是怎么工作的呢?咱们来深入了解一下。好,简单来说, i r q l 全称是中段请求级别, 你可以把它看作是给 cpu 核心上正在运行的任务排了一个优先级,从零到三十一, 数字越高,就代表这个任务越紧急,越重要。当一个高 i r q l 的 代码在运行的时候,它就相当于在对 cpu 说,哎,我现在有天大的事要处理,所有比我级别低的事情都先给我停下。 当然了,你不需要把三十二个级别都背下来,但屏幕上这几个你必须得牢牢记住。最底层零级叫做 pass level, 但真正改变游戏规则的是二级 dispatch level, 记住它,线程调度器就在这运行。那再往上呢,就是各种硬件中断的级别了。我们管它叫 i r q l 好 了,一旦你的代码运行级别超过了 passive level, 那 情况可就变得严肃起来了。 在高 i r q l 下,你必须遵守一些嗯,非常非常严格的规则。 记住这个魔法数字二,也就是 dispatch level。 只要你的代码运行在等于或高于这个级别,那么之前的规则手册就得扔掉了。一本全新的、更严苛的规则手册会立刻生效。 这本新规则手册的核心其实就两条,我管它们叫黄金法则。在 passive level 的 时候,你几乎想干啥都行,可以等待,可以访问任何内存。但是一旦到了 dispatch level 或者更高, 第一条,绝对不能等待。为啥?因为负责切换任务的那个系统组建,它自己都停摆了,还怎么给你切换任务? 第二条,绝对不能碰分页内存。分页内存是啥?就是那些可能被临时存到硬盘上的数据,访问,它就可能需要等待硬盘。这就又违反了第一条规则,你看,它们是缓缓相扣的。 这么一说,我们开头提到的那几个蓝屏代码,是不是一下子就说得通了?那个经典的 i r q l not less or equal, 其实就是系统在对你大喊, 你居然敢在不准等待的时候进行等待操作。而另一个 page fault in non paged area 呢?没说你猜对了,就是因为你在高 i r q l。 下碰了不该碰的分页内存。 你现在可能在想,好吧,那在高 i r q r 下,我岂不是啥也干不了了?别急,可那儿当然也想到了这一点,他给了我们两件法宝来应对这种情况, 它们就是自旋锁和 d p c。 我 们先看第一个自旋锁,它是一种超级快、超级轻量级的锁,它的唯一工作就是在高 irq 这种混乱的环境下,保护好一块共享储具,确保同一时间只有一个人能动弹, 而且用起来特别简单。你看,你只要调用 key acquire spin lock, 系统嗖的一下就自动帮你把 iql 提到了 dispatch level, 然后你就可以安全的操作你的共享数据了。 完事之后呢,再调用 key release spin lock, iql 又会嗖的一下自动降回原来的级别,是不是很方便? 好。第二件法宝 d p c, 也就是延迟过重,调用这个工具就更聪明了, 它的作用是把一个硬件中断后需要立即处理的工作稍微往后推一推,等系统不那么忙的时候,在一个相对低一点,但仍然是高优先级的级别上执行。我们来想象一个场景啊,比如你的网卡收到了一个数据包,这就会触发一个硬件中断, 这时候代码是在一个极高的 i q l, 也就是 d i q l 上运行,你肯定不希望在这里耽误太久,所以中断服务程序只会做最最紧急的事情。比如把数据包从网卡里读出来,然后他就会说好了剩下的处理工作打包成一个 d p c, 排队去吧。 过一会等 cpu 稍微喘口气了,系统就会在 dispatch level 这个级别上帮你执行这个 d p c, 这简直就是一种绝妙的工作延迟机制。 好了好了,理论说了这么多,是不是有点枯燥?来,我们看一个真实世界的例子,一个无数开发者都掉进去过的坑,把刚才讲的所有知识点都串起来。问题来了, 你现在在一个 d p 七历程里面,需要往日制文件里写一条消息,这听起来是不是一个再正常不过的需求了?但这里面就藏着一个巨大的陷阱,如果你真的直接在 d p 里调用了像 z w create file 这样的文件操作函数,碰 系统会立刻给你一个蓝屏。到现在你肯定已经知道为什么了,因为你的 d p c 运行在 dispatch level, 而文件操作,天呐,它可能需要等待硬盘,这可是高 i q l 下最大的禁忌,直接违反了我们的黄金法则第一条。 那正确的做法是什么呢?一个非常优雅的解决方案就是使用工作现成,你的 d p c 只做最快的事,把要写的日制信消息打包好,放进一个队列里,然后他发个信号去唤醒一个正在旁边睡觉的工作现成。 这个工作现成呢?他可是一直在安逸的 passive level 下运行的。他被唤醒后从队列里拿到消息,因为他在 passive level, 所以 他想怎么操作文件都行,想等多久就等多久, 你看,问题就这么完美地解决了。好了,我们来快速总结一下,如果你今天只能记住几件事,请记住这些,第一, i r q l 就是 c p o 的 优先级规则。 第二,也是最重要的 dispatch level 及以上的两大黄金法则,禁止等待,禁止访问分拣内存。跟我说一遍,禁止等待,禁止分拣内存。 第三,用自选锁来做快速的数据同步。第四,任何可能耗时或者堵塞的操作,统统交给 d、 p、 c 加工作现成的组合来处理。 最后,我想问问你,在你调试代码的过程中,有没有遇到过哪个和 i r q l 相关的 bug, 让你抓耳挠腮,百思不得其解,甚至一度怀疑人生?欢迎在评论区分享你的泻泪史,希望这次的讲解能帮你以后彻底征服蓝屏!感谢观看!
粉丝1.3万获赞4.7万

当我们的 root 机到手后,很多人最头疼的就是怎么玩内核了,七夕根本不必慌张,今天我就出一个玩内核的全套教学,好吧,从怎么刷驱动到怎么玩内核,全部讲清楚。这里主播拿一台一加 s 五来做演示, 这里先刷入对应你手机内核版本号的驱动,像这样就是刷成功了。然后我们找到自己想玩的内核, 屏幕右边随便画一下,然后点击根目录,找到一个叫 dota 的 点进去,再找到一个叫 logo 的, 把你要玩的内核解压进去。 这里想按内核找到雄性,给予内核七七七权限,然后打开内核,按照我们杀的驱动对应的选择好就可以玩了。要是有什么不懂的可以加主播的群。

今天教你安装的是和平精英密钥透,操作简单,小白一看就会附带详细的安装教程,安卓、苹果平板都能用,还不知道哪下载的。 我一个视频教会你,你只需要依次点一下这两个箭头,然后打开这个工具,没有的安装一个,打开后会自动弹出这个窗口,没有弹出的在这输入百乐宝库,立即查看,在这个文件里就能找到和平密钥透了,保存安装就能玩。

看好了朋友们,最近全网都在找到这个和平密钥透,直到现在还有很多人不知道如何去进行获取,已经获取了,不知道怎么去进行设置的,接下来我三秒钟教会大家。首先咱们点击我视频右下方的小箭头,选择分享链接或者复制链接, 然后我们打开手机自带的应用商店,找到这个软件,下载后打开它,点击游戏粘贴,下面会弹出一个文件夹,如果没有弹出,我们在上方打字搜索北方宝藏,点下方立即查看,我们点进来 点击游戏资源,然后我们找到这个密钥透,点击下方保存去下载就可以了。

十秒搞定 s s h 密钥,对链接输入 s s h, 三次回车。 ok 了,我们看看生成了什么吧。切换到点 s s h 目录下, 我们可以看到两个文件,一个后面带有怕吧?一个不带,这就是公钥和私钥,链接 s s h 的 时候要私钥,而不是公钥,私钥绝对不能泄露。

看好了,这个是不是你们最近都在找的这个和平精英密奥透啊?还有的朋友不知道咋样获取。接下来我给大家出个教程,我们首先点我视频下方的分享箭头,选择分享,我复制链接,然后我们打开手机来用商店去搜索这个,然后下载打开它, 在这个上方我们打字搜索时代分享,点击立即查看,咱们点将进保存,要在解压打开就可以了。

看好了,今天一个视频教你们获取最近非常火的这个和平密钥透,接下来我给大家出个教程,我们首先点我视频下方的分享箭头,然后选择分享复制链接,然后我们打开手机,在应用商店去搜索这个,然后打开它, 在这个上方打字,输入时代分享,点击立即查看,咱们点下方进行保存以后再安装就可以了。

终于可以给我们的开发版注入灵魂了,没错,就是 linux 内核的编辑下载,以及如何在优步特下通过 tft 去下载我们的内核,我们来一起看一下怎么操作吧。第一步当然是拉取我们代码,我这里使用的是 linux 六点一八的内核,是最新的法宝湾的一个内核,输入这款指令 由于我已经拉取过这个代码仓库了,所以他不会拉取。第二遍第二步呢,我就可以去编辑我们的内核了。首先编辑之前要配置我们的内核, 就说你需要开启哪些开关,就相当于进行内核一个裁剪,配置完成之后,输入这份指令就可以编辑我们的代码了,我之前已经编辑过了,所以说这里它已经存在了。下面我们就演示一下 如何使用 tftp 去加载我们的内核。要想用 tftp 的 方式加载内核,你首先主机端要运行一个 tftp d 六四或 tftp d 六三二的软件,这里选择 ip 地址。接下来我们就是给我们开发版上电 进行进了优步特的赛后,首先我们要把卡尔板的 ip 地址设一下,这里设为一九二点幺六八点一点一零一。 然后我们要设一下我们主机的服务器的地址,接下来我们就拼一下我们的主机能不能拼通,可以发现拼通了,接下来我们就来加载我们的内核,输入这团指令,我可以从主机端把内核加载到我们的卡尔板上。接下来我们需要加载我们 gtp, 输入这团指令就好了。 接下来我们怎么去启动我们的内核呢?输入这份指令就好了,可以发现我们内核已经起来了,他也加载了设备数跑不下去了,因为我没有挂载文件系统,这个视频就到这里了,如果我的视频哪里有不对或者有错误的地方,欢迎小伙伴们进行指正,我们一起学习,一起进步。