多核设备的病毒扫描方法和装置制造方法
【专利摘要】本发明公开了一种多核设备的病毒扫描方法和装置,其中,方法包括:根据多核设备的CPU核数,创建多个扫描线程,扫描线程的个数大于或等于多核设备的CPU核数;根据待扫描的一个或多个文件生成多个扫描任务,将多个扫描任务添加到扫描任务队列中;将扫描任务队列中的扫描任务分配给扫描线程,以供扫描线程执行病毒扫描。根据本发明提供的方案,能够保证所有CPU核处于非空闲状态,充分地利用系统资源,提高扫描的速度,从而降低扫描占用CPU运算和磁盘操作的时间,提升了用户对设备的使用效率。
【专利说明】多核设备的病毒扫描方法和装置
【技术领域】
[0001]本发明涉及计算机【技术领域】,具体涉及一种多核设备的病毒扫描方法和装置。
【背景技术】
[0002]计算机病毒是编制或者在计算机程序中插入的破坏计算机功能的数据,会影响计算机的正常使用并且能够自我复制,通常以一组计算机指令或者程序代码的形式呈现。反病毒引擎是一套判断特定程序行为是否为病毒程序(包括可疑程序)的技术机制。反病毒引擎是杀毒软件的主要部分,是检测和发现病毒的程序,而病毒库是已经发现的病毒的特征集合。在杀毒过程中,用病毒库中的特征对照系统中的所有程序或文件,将符合这些特征的程序或文件判定为病毒。
[0003]随着计算机的普及,用户端基本上都需要安装杀毒软件对计算机内的文件进行扫描。在杀毒软件进行扫描时,需要大量的CPU运算和磁盘操作,使得扫描过程漫长而且影响系统速度。而对于计算机系统中包含很多相同的文件,例如Windows文件,软件安装包文件,帮助文件,压缩文件等。现有技术中,用户端的杀毒软件第一次扫描时会全盘扫描计算机内的所有文件,并且会扫描文件中的各种内容,例如,对于压缩包,现有技术会按照正常的扫描流程将压缩包中的内容解压然后逐个进行扫描,以保证文件安全。现有的病毒扫描方式,扫描病毒的线程数是固定的,对于多核设备,可能无法完全释放系统的资源,例如,对于8核CPU,如果线程数固定为6个,则可能会有多余的CPU处于空闲状态,这也会显著降低病毒扫描速度,从而延长了整个扫描的时间。对于用户,长时间的扫描会一直占用CPU运算和磁盘操作影响了系统的速度,降低了用户对设备的使用效率。
【发明内容】
[0004]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的多核设备的病毒扫描方法和装置。
[0005]根据本发明的一个方面,提供了一种多核设备的病毒扫描方法,包括:根据多核设备的CPU核数,创建多个扫描线程,扫描线程的个数大于或等于多核设备的CPU核数;根据待扫描的一个或多个文件生成多个扫描任务,将多个扫描任务添加到扫描任务队列中;将扫描任务队列中的扫描任务分配给扫描线程,以供扫描线程执行病毒扫描。
[0006]根据本发明的另一方面,提供了一种多核设备的病毒扫描装置,包括:线程创建模块,适于根据多核设备的CPU核数创建多个扫描线程,创建的扫描线程的个数大于或等于多核设备的CPU核数;任务生成模块,适于根据待扫描的一个或多个文件生成多个扫描任务,将多个扫描任务添加到扫描任务队列中;分配模块,适于将扫描任务队列中的扫描任务分配给扫描线程,以供扫描线程执行病毒扫描。
[0007]根据本发明的多核设备的病毒扫描方法和装置,扫描进程发起后,根据多核设备的CPU核数,创建个数大于或等于设备CPU核数的扫描线程;根据待扫描的一个或多个文件生成多个扫描任务并将多个扫描任务添加到扫描任务队列中;将扫描任务队列中的扫描任务分配给所述扫描线程,以供所述扫描线程执行病毒扫描。根据该方案,扫描线程数量不小于设备CPU核数,能够保证所有CPU核处于非空闲状态,充分地利用系统资源,提高扫描的速度,从而降低扫描占用CPU运算和磁盘操作的时间,提升了用户对设备的使用效率。
[0008]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【专利附图】
【附图说明】
[0009]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0010]图1示出了根据本发明一个实施例的多核设备的病毒扫描方法的流程图;
[0011]图2示出了根据本发明另一个实施例的多核设备的病毒扫描方法的流程图;
[0012]图3示出了根据本发明一个实施例的多核设备的病毒扫描装置的结构示意图。
【具体实施方式】
[0013]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0014]图1示出了根据本发明一个实施例的多核设备的病毒扫描方法的流程图,如图1所示,该方法包括如下步骤:
[0015]步骤S101,根据多核设备的CPU核数,创建多个扫描线程,扫描线程的个数大于或等于多核设备的CPU核数。
[0016]具体实现时,获取多核设备的CPU核数等特征信息的时机可以有多种,例如,可以在安装杀毒软件的过程中获取,或者,在用户修改设置信息时获取,又或者在扫描过程中获取,等等,具体的时机可以根据具体的特征信息进行选择。
[0017]例如,如果想要获取计算机系统的硬件环境信息,则可以在安装的过程中,就去获取相应的特征信息,包括内存的大小、CPU处理速度等等。如果需要获取用户使用的防护类型,则可以在用户对杀毒软件的设置信息进行设置或者修改时获取。如果需要获取待扫描文件的类型信息,则可以在杀毒软件执行扫描的过程中,在具体需要扫描某一文件之前,首先判断该文件的类型,等等。
[0018]本发明实施例的病毒扫描程序发起扫描进程时,通常能够获取包括设备CPU核数在内的硬件资源信息。在多核设备中,通常以多线程方式对多个扫描任务进行扫描,多个线程交由多个CPU核心分别进行处理。在本发明中,为实现对设备CPU的充分利用,扫描线程的个数应该大于或等于CPU核数,这样,在扫描任务足够时,每个CPU核都能够参与扫描线程处理。
[0019]步骤S102,根据待扫描的一个或多个文件生成多个扫描任务,将多个扫描任务添加到扫描任务队列中。[0020]扫描线程以文件作为主要的扫描对象。扫描过程中,为每个待扫描的文件生成至少一个扫描任务。需要以一种数据结构对多个扫描任务进行管理,这通常通过队列来实现,将已完成的扫描任务从前端删除,新生成的扫描任务自队尾插入。
[0021]步骤S103,将扫描任务队列中的扫描任务分配给扫描线程,以供扫描线程执行病
毒扫描。
[0022]这时,扫描线程从建立的扫描任务队列中获取到了扫描任务,之后可以通过特征信息匹配等方式执行病毒扫描。
[0023]根据本发明上述实施例提供的方法,扫描进程发起后,根据多核设备的CPU核数,创建个数大于或等于设备CPU核数的扫描线程,多个线程交由多个CPU核心分别进行处理;根据待扫描的一个或多个文件生成多个扫描任务并将多个扫描任务添加到扫描任务队列中;将扫描任务队列中的扫描任务分配给所述扫描线程,以供所述扫描线程执行病毒扫描。根据该方案,扫描线程的数量不小于设备CPU核数,因此能够保证所有CPU核处于非空闲状态,充分地利用系统资源,提高扫描的速度,从而降低扫描占用CPU运算和磁盘操作的时间,提升了用户对设备的使用效率。
[0024]图2示出了根据本发明另一个实施例的多核设备病毒扫描方法的流程图,如图2所示,该方法包括如下步骤:
[0025]步骤S201,根据多核设备的CPU核数,创建多个扫描线程,扫描线程的个数大于或等于多核设备的CPU核数。
[0026]病毒扫描程序发起扫描进程时,通常能够获取包括设备CPU核数在内的硬件资源信息。在多核设备中,通常以多线程方式对多个扫描任务进行扫描,多个线程交由多个CPU核心分别进行处理。在本发明中,为实现对设备CPU的充分利用,扫描线程的个数应该大于或等于CPU核数,这样,在扫描任务足够时,每个CPU核都能够参与扫描线程处理。
[0027]在创建多个扫描线程中,每个扫描线程分配在CPU的一个核上,多个扫描线程并行执行。
[0028]可选地,如果运行病毒扫描程序的设备的CPU核数为n,创建2n+l个扫描线程。
[0029]步骤S202,根据待扫描的一个或多个文件生成多个扫描任务,将多个扫描任务添加到扫描任务队列中。
[0030]扫描线程以文件作为主要的扫描对象。扫描过程中,为每个待扫描的文件生成至少一个扫描任务。需要获取待扫描文件的文件属性信息,例如文件大小、文件修改时间和文件路径等。系统中文件属性记录了该文件最后一次被修改后的文件大小、修改时间和文件路径等属性信息,属性信息根据文件的修改进行实时更新。
[0031]例如,可以通过内存的扫描方式,将文件属性信息与缓存中保存的文件属性信息进行匹配,当待扫描文件的文件属性与缓存中保存的文件属性匹配时,将待扫描文件确定为恶意文件或非恶意文件,当待扫描文件的文件属性与缓存中保存的文件属性不匹配时,将待扫描文件确定为通过名单扫描方式进行扫描的其它文件。由于文件属性信息包括多种信息,因此在进行匹配时可以按照预设顺序对每一种属性信息进行逐一匹配,例如,先匹配文件大小,其次匹配文件修改时间,最后匹配文件路径等。
[0032]其中,当某一文件的所有属性信息都与缓存中保存的文件属性信息一致时,才确定该文件的文件属性与缓存中保存的文件属性匹配,当某一文件的任意一种属性信息与缓存中保存的文件属性信息不一致时,则确定该文件的文件属性与缓存中保存的文件属性不匹配。当某一文件的所有属性信息都与缓存中保存的文件属性信息一致时,才确定该文件的文件属性与缓存中保存的文件属性匹配,此时如果内存中相匹配的文件属性信息对应的文件为恶意文件,则该文件的扫描结果即为恶意文件,如果内存中匹配的文件属性信息对应的文件为非恶意文件,则该文件的扫描结果即为非恶意文件。
[0033]进一步的,还可以通过黑白名单的方式对文件进行扫描,通过预先保存的黑名单进行扫描时,将其它文件中的每一个文件的文件名与黑名单中预先保存的文件名进行比较,当某个文件的文件名与预先保存的文件名匹配时,确定某个文件为属于第二确定文件的恶意文件;通过预先保存的白名单进行扫描时,将其它文件中的每一个文件的文件名与白名单中预先保存的文件名进行比较,当某个文件的文件名与预先保存的文件名匹配时,确定某个文件为属于第二确定文件的非恶意文件。
[0034]其中,白名单通常由用户在客户端进行维护,用户将确定为非恶意的文件加入到白名单中进行保存,白名单中可以记录文件的文件名和文件路径等信息;黑名单通常由杀毒软件提供方进行维护,根据监控将确定的恶意文件加入到黑名单中进行保存。
[0035]本发明实施例中,扫描的对象可以包括PE类型文件,PE类文件通常是指Windows操作系统上的程序文件,常见的PE类型文件包括可执行文件、动态链接库文件、对象类别扩充组件等类型文件。扫描对象还包括各种非PE类文件,例如,应用程序临时文件,历史访问痕迹等。
[0036]所述扫描对象的的扫描位置信息包括桌面,我的文档,下载目录,基于即时通讯软件和/或电子邮件接收到的文件,和/或,外接存储设备;其中,所述下载目录,基于即时通讯软件和/或电子邮件接收到的文件的扫描位置信息,通过从相应软件的配置文件中读取获得;所述外接存储设备的扫描位置信息,通过由操作系统的应用程序接口 API函数发起与当前设备相连的外接存储设备的查询获得;所述文件格式信息包括可执行文件,和/或,OFFICE 文档。
[0037]例如,可以包括如以下表I所示的扫描对象标识和对应的扫描位置信息;以及,如以下表2所示的扫描对象标识和对应的文件格式信息。
[0038]表1:
[0039]
扫描对象标识扫描位置信息
[0040]
【权利要求】
1.一种多核设备的病毒扫描方法,包括: 根据所述多核设备的CPU核数,创建多个扫描线程,所述扫描线程的个数大于或等于所述多核设备的CPU核数; 根据待扫描的一个或多个文件生成多个扫描任务,将所述多个扫描任务添加到扫描任务队列中; 将扫描任务队列中的扫描任务分配给所述扫描线程,以供所述扫描线程执行病毒扫描。
2.根据权利要求1所述的方法,所述多个扫描线程并行运行。
3.根据权利要求1所述的方法,每个文件要经过多个反病毒引擎进行扫描; 所述根据待扫描的一个或多个文件生成多个扫描任务具体包括:将每个反病毒引擎扫描每个文件的行为生成对应的一个扫描任务。
4.根据权利要求1所述的方法,所述将扫描任务队列中的扫描任务分配给所述扫描线程包括: 判断所述扫描任务队列中的扫描任务是否大于或等于扫描线程的个数; 若是,为每个扫描线程分配至少一个扫描任务; 否则,将所述扫描任务队列中的全部扫描任务分配给选定的部分扫描线程。
5.根据权利要求1-4中任一项所述的方法,所述根据多核设备的CPU核数,创建多个扫描线程具体为:创建2n+l个扫描线程,其中η为所述多核设备的CPU核数。
6.根据权利要求1所述的方法,还包括:在所述扫描任务队列中的所有扫描任务执行完成后,释放所有扫描线程。
7.根据权利要求1-6中任一项所述的方法,所述扫描线程执行病毒扫描具体包括: 扫描进程将文件的特征信息与该文件验证数据包中的特征信息进行匹配,若匹配,则确定所述文件不是病毒;若不匹配,则确定所述文件为病毒。
8.根据权利要求7所述的方法,所述特征信息进行匹配的优先顺序依次为:文件大小,文件修改时间,文件名循环冗余校验值和内容匹配信息。
9.一种多核设备的病毒扫描装置,包括: 线程创建模块,适于根据所述多核设备的CPU核数创建多个扫描线程,所述扫描线程的个数大于或等于所述多核设备的CPU核数; 任务生成模块,适于根据待扫描的一个或多个文件生成多个扫描任务,将所述多个扫描任务添加到扫描任务队列中; 分配模块,适于将扫描任务队列中的扫描任务分配给所述扫描线程,以供所述扫描线程执行病毒扫描。
10.根据权利要求9所述的装置,所述线程创建模块创建多个并行运行的扫描线程。
【文档编号】G06F9/38GK103559443SQ201310535046
【公开日】2014年2月5日 申请日期:2013年11月1日 优先权日:2013年11月1日
【发明者】谢重阳, 邹贵强 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司