杀毒引擎外一篇--讨论杀软卡机的原理

我们使用的intel系的处理器有两个 ring层,对应两个层,微软的操作系统将系统中的所有行为分为如下几个层:

1.最底层:系统核心层,这个层的所有行为都由操作系统已经内置的指令来实现,所有外界因素(即使你是系统管理员)均不能影响该层的行为。诺顿的核心层既工作在这个层上。

2.硬件虚拟层,一般称之为HAL。为了实现硬件无关性,微软设计了该层。所有的外部工作硬件(相对于系统核心而言)都进入HAL,并被HAL处理为核心层可以相应的指令。我们所使用的硬件的驱动程序既工作在该层上。当外界硬件存在指令请求时,驱动程序作出相关处理后传给核心层。如果无与之对应的驱动相应,那么将按照默认硬件进行处理。好像安全模式下硬件的工作就被置于默认硬件模式。Mcafee被认为工作与该层上。

3.用户层。我们所知的大部分杀毒软件既工作与该层上。
一个完整的程序行为请求是如下流程:位于3户层上的应用程序产生指令行为请求,被传递至2HAL进行处理,最后进入1最底层后进入CPU的指令处理循环,然后反向将软件可识别的处理结果经1-2-3再响应给应用程序。对于诺顿而言,其整个工作过程如下:3-2-1,完成;mcafee:3-2-1-1-2,完成:其余:3-2-1-1-2-3,完成;这个环节代表了杀毒软件引擎的前端行为规范的获得。只从这个过程而言,诺顿和mcafee是比较先进的。(具体的系统与CPU的ring()的对应,记不清楚了。 WinNT时代,微软的NT系统被设计有与四个ring()层相对应,RISC系列的处理器有四个ring。因此现在的大部分杀毒软件是不能工作与NT上的。具体的CISC和RISC的ring()数我记得可能有误,反正是一个2ring(),一个4ring().)。

尽管比较先进的工作方式给诺顿和mcafee带来了较高的系统稳定性(HAL层很少出现问题,最底层出问题的几率接近于零),较快的响应速度(减少了环节),但同时也带来了一些问题:

1.资源占用比较厉害。在mcafee上体现的不是很明显,在诺顿上表现非常明显。因为对于越底层的行为,硬件资源分配越多。最好资源的是什么?当然是操作系统。应为它最最底层。

2.卸载问题。卸载底层的组件出问题的概率是相对比较高的,因此诺顿的卸载比较慢,偶尔还出问题。


估计很多人就算看完了还是不懂(因为并没有直接谈这个问题,呵呵),我再加工一下

系统架构由三层构成,分为1,2,3三层,1最底层,2属于中间层,3是用户层,一般程序运作是3->2->1->2->3,如果杀软要监视文件,则看运作在哪一层:

在第一层,即最底层,正常程序的数据提交过程照旧,只不过在1层停留时间略长,因为是1层完成监控过程。

在第二层,在中间层,提交顺序为:3->2->1->2->1->2->3,注意到在中间多到了一次2层,因为监控的过程是在2完成的。

在第三层,即用户层,提交顺序为:3->2->1->2->3->2->1->2->3,亦即多到了一次3层,因为监控完成在3层上。

也许有人会问,只不过多了几个循环而已,会严重拖累机器吗?答案是会的,尤其是在CPU占用时很高尤其明显。因为虽然说分为三层,但因为分层的初衷有限制程序权限的考虑(当然不全是这个原因),所以工作层数越高,程序效率越低。
打个简单的例子,系统是工作在底层的,而一般应用程序是工作在3层上的。一般程序容易出现因为负荷过大而造成假死,但系统却很少(不要说系统的负荷不大,有兴趣看看操作系统原理就明白系统比一般应用程序的负荷大得多),因为系统工作在底层,可以直接操控底层总线以及CPU运算,是离CPU最近的。同样的原因亦可解释杀软,离底层越近,限制越少,自然运算的流畅程度也会越高(这个可以学习一下程序运行的原理,一般好点的编程书都会讲)。
所以实际上运行速度1层杀软>2层>>3层。
而且一般出现卡机情况比较明显的是在WinRAR解压时,因为这个时候CPU占用率一定是100%(不管你多好的CPU),此时多出现一个循环轮次速度就可以很明显的下降。所以越底层的杀软优势越明显.


按照上面的分析,工作在1、2层上的Norton和咖啡是几乎不卡机但占用资源很大(具体看第一部分),其它工作在3层上的杀软则有不同程度的卡机,并且根据具体引擎的实现资源分配也各有不同。(参考第一部分原作者所说)。

以上基本就是杀软卡机的原理。当然如果引擎写的好,工作在3层上的杀软可能也不卡机,但如果是一个同时需要大量磁盘操作(而且操作文件扩展名为杀软监控对象)和极高CPU占用率的程序运行的话,卡机是不可避免的。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值