多核設(shè)備的病毒掃描方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種多核設(shè)備的病毒掃描方法和裝置,其中,方法包括:根據(jù)多核設(shè)備的CPU核數(shù),創(chuàng)建多個掃描線程,掃描線程的個數(shù)大于或等于多核設(shè)備的CPU核數(shù);根據(jù)待掃描的一個或多個文件生成多個掃描任務(wù),將多個掃描任務(wù)添加到掃描任務(wù)隊列中;將掃描任務(wù)隊列中的掃描任務(wù)分配給掃描線程,以供掃描線程執(zhí)行病毒掃描。根據(jù)本發(fā)明提供的方案,能夠保證所有CPU核處于非空閑狀態(tài),充分地利用系統(tǒng)資源,提高掃描的速度,從而降低掃描占用CPU運算和磁盤操作的時間,提升了用戶對設(shè)備的使用效率。
【專利說明】多核設(shè)備的病毒掃描方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機【技術(shù)領(lǐng)域】,具體涉及一種多核設(shè)備的病毒掃描方法和裝置。
【背景技術(shù)】
[0002]計算機病毒是編制或者在計算機程序中插入的破壞計算機功能的數(shù)據(jù),會影響計算機的正常使用并且能夠自我復(fù)制,通常以一組計算機指令或者程序代碼的形式呈現(xiàn)。反病毒引擎是一套判斷特定程序行為是否為病毒程序(包括可疑程序)的技術(shù)機制。反病毒引擎是殺毒軟件的主要部分,是檢測和發(fā)現(xiàn)病毒的程序,而病毒庫是已經(jīng)發(fā)現(xiàn)的病毒的特征集合。在殺毒過程中,用病毒庫中的特征對照系統(tǒng)中的所有程序或文件,將符合這些特征的程序或文件判定為病毒。
[0003]隨著計算機的普及,用戶端基本上都需要安裝殺毒軟件對計算機內(nèi)的文件進行掃描。在殺毒軟件進行掃描時,需要大量的CPU運算和磁盤操作,使得掃描過程漫長而且影響系統(tǒng)速度。而對于計算機系統(tǒng)中包含很多相同的文件,例如Windows文件,軟件安裝包文件,幫助文件,壓縮文件等?,F(xiàn)有技術(shù)中,用戶端的殺毒軟件第一次掃描時會全盤掃描計算機內(nèi)的所有文件,并且會掃描文件中的各種內(nèi)容,例如,對于壓縮包,現(xiàn)有技術(shù)會按照正常的掃描流程將壓縮包中的內(nèi)容解壓然后逐個進行掃描,以保證文件安全?,F(xiàn)有的病毒掃描方式,掃描病毒的線程數(shù)是固定的,對于多核設(shè)備,可能無法完全釋放系統(tǒng)的資源,例如,對于8核CPU,如果線程數(shù)固定為6個,則可能會有多余的CPU處于空閑狀態(tài),這也會顯著降低病毒掃描速度,從而延長了整個掃描的時間。對于用戶,長時間的掃描會一直占用CPU運算和磁盤操作影響了系統(tǒng)的速度,降低了用戶對設(shè)備的使用效率。
【發(fā)明內(nèi)容】
[0004]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的多核設(shè)備的病毒掃描方法和裝置。
[0005]根據(jù)本發(fā)明的一個方面,提供了一種多核設(shè)備的病毒掃描方法,包括:根據(jù)多核設(shè)備的CPU核數(shù),創(chuàng)建多個掃描線程,掃描線程的個數(shù)大于或等于多核設(shè)備的CPU核數(shù);根據(jù)待掃描的一個或多個文件生成多個掃描任務(wù),將多個掃描任務(wù)添加到掃描任務(wù)隊列中;將掃描任務(wù)隊列中的掃描任務(wù)分配給掃描線程,以供掃描線程執(zhí)行病毒掃描。
[0006]根據(jù)本發(fā)明的另一方面,提供了一種多核設(shè)備的病毒掃描裝置,包括:線程創(chuàng)建模塊,適于根據(jù)多核設(shè)備的CPU核數(shù)創(chuàng)建多個掃描線程,創(chuàng)建的掃描線程的個數(shù)大于或等于多核設(shè)備的CPU核數(shù);任務(wù)生成模塊,適于根據(jù)待掃描的一個或多個文件生成多個掃描任務(wù),將多個掃描任務(wù)添加到掃描任務(wù)隊列中;分配模塊,適于將掃描任務(wù)隊列中的掃描任務(wù)分配給掃描線程,以供掃描線程執(zhí)行病毒掃描。
[0007]根據(jù)本發(fā)明的多核設(shè)備的病毒掃描方法和裝置,掃描進程發(fā)起后,根據(jù)多核設(shè)備的CPU核數(shù),創(chuàng)建個數(shù)大于或等于設(shè)備CPU核數(shù)的掃描線程;根據(jù)待掃描的一個或多個文件生成多個掃描任務(wù)并將多個掃描任務(wù)添加到掃描任務(wù)隊列中;將掃描任務(wù)隊列中的掃描任務(wù)分配給所述掃描線程,以供所述掃描線程執(zhí)行病毒掃描。根據(jù)該方案,掃描線程數(shù)量不小于設(shè)備CPU核數(shù),能夠保證所有CPU核處于非空閑狀態(tài),充分地利用系統(tǒng)資源,提高掃描的速度,從而降低掃描占用CPU運算和磁盤操作的時間,提升了用戶對設(shè)備的使用效率。
[0008]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的【具體實施方式】。
【專利附圖】
【附圖說明】
[0009]通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0010]圖1示出了根據(jù)本發(fā)明一個實施例的多核設(shè)備的病毒掃描方法的流程圖;
[0011]圖2示出了根據(jù)本發(fā)明另一個實施例的多核設(shè)備的病毒掃描方法的流程圖;
[0012]圖3示出了根據(jù)本發(fā)明一個實施例的多核設(shè)備的病毒掃描裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0013]下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。
[0014]圖1示出了根據(jù)本發(fā)明一個實施例的多核設(shè)備的病毒掃描方法的流程圖,如圖1所示,該方法包括如下步驟:
[0015]步驟S101,根據(jù)多核設(shè)備的CPU核數(shù),創(chuàng)建多個掃描線程,掃描線程的個數(shù)大于或等于多核設(shè)備的CPU核數(shù)。
[0016]具體實現(xiàn)時,獲取多核設(shè)備的CPU核數(shù)等特征信息的時機可以有多種,例如,可以在安裝殺毒軟件的過程中獲取,或者,在用戶修改設(shè)置信息時獲取,又或者在掃描過程中獲取,等等,具體的時機可以根據(jù)具體的特征信息進行選擇。
[0017]例如,如果想要獲取計算機系統(tǒng)的硬件環(huán)境信息,則可以在安裝的過程中,就去獲取相應(yīng)的特征信息,包括內(nèi)存的大小、CPU處理速度等等。如果需要獲取用戶使用的防護類型,則可以在用戶對殺毒軟件的設(shè)置信息進行設(shè)置或者修改時獲取。如果需要獲取待掃描文件的類型信息,則可以在殺毒軟件執(zhí)行掃描的過程中,在具體需要掃描某一文件之前,首先判斷該文件的類型,等等。
[0018]本發(fā)明實施例的病毒掃描程序發(fā)起掃描進程時,通常能夠獲取包括設(shè)備CPU核數(shù)在內(nèi)的硬件資源信息。在多核設(shè)備中,通常以多線程方式對多個掃描任務(wù)進行掃描,多個線程交由多個CPU核心分別進行處理。在本發(fā)明中,為實現(xiàn)對設(shè)備CPU的充分利用,掃描線程的個數(shù)應(yīng)該大于或等于CPU核數(shù),這樣,在掃描任務(wù)足夠時,每個CPU核都能夠參與掃描線程處理。
[0019]步驟S102,根據(jù)待掃描的一個或多個文件生成多個掃描任務(wù),將多個掃描任務(wù)添加到掃描任務(wù)隊列中。[0020]掃描線程以文件作為主要的掃描對象。掃描過程中,為每個待掃描的文件生成至少一個掃描任務(wù)。需要以一種數(shù)據(jù)結(jié)構(gòu)對多個掃描任務(wù)進行管理,這通常通過隊列來實現(xiàn),將已完成的掃描任務(wù)從前端刪除,新生成的掃描任務(wù)自隊尾插入。
[0021]步驟S103,將掃描任務(wù)隊列中的掃描任務(wù)分配給掃描線程,以供掃描線程執(zhí)行病
毒掃描。
[0022]這時,掃描線程從建立的掃描任務(wù)隊列中獲取到了掃描任務(wù),之后可以通過特征信息匹配等方式執(zhí)行病毒掃描。
[0023]根據(jù)本發(fā)明上述實施例提供的方法,掃描進程發(fā)起后,根據(jù)多核設(shè)備的CPU核數(shù),創(chuàng)建個數(shù)大于或等于設(shè)備CPU核數(shù)的掃描線程,多個線程交由多個CPU核心分別進行處理;根據(jù)待掃描的一個或多個文件生成多個掃描任務(wù)并將多個掃描任務(wù)添加到掃描任務(wù)隊列中;將掃描任務(wù)隊列中的掃描任務(wù)分配給所述掃描線程,以供所述掃描線程執(zhí)行病毒掃描。根據(jù)該方案,掃描線程的數(shù)量不小于設(shè)備CPU核數(shù),因此能夠保證所有CPU核處于非空閑狀態(tài),充分地利用系統(tǒng)資源,提高掃描的速度,從而降低掃描占用CPU運算和磁盤操作的時間,提升了用戶對設(shè)備的使用效率。
[0024]圖2示出了根據(jù)本發(fā)明另一個實施例的多核設(shè)備病毒掃描方法的流程圖,如圖2所示,該方法包括如下步驟:
[0025]步驟S201,根據(jù)多核設(shè)備的CPU核數(shù),創(chuàng)建多個掃描線程,掃描線程的個數(shù)大于或等于多核設(shè)備的CPU核數(shù)。
[0026]病毒掃描程序發(fā)起掃描進程時,通常能夠獲取包括設(shè)備CPU核數(shù)在內(nèi)的硬件資源信息。在多核設(shè)備中,通常以多線程方式對多個掃描任務(wù)進行掃描,多個線程交由多個CPU核心分別進行處理。在本發(fā)明中,為實現(xiàn)對設(shè)備CPU的充分利用,掃描線程的個數(shù)應(yīng)該大于或等于CPU核數(shù),這樣,在掃描任務(wù)足夠時,每個CPU核都能夠參與掃描線程處理。
[0027]在創(chuàng)建多個掃描線程中,每個掃描線程分配在CPU的一個核上,多個掃描線程并行執(zhí)行。
[0028]可選地,如果運行病毒掃描程序的設(shè)備的CPU核數(shù)為n,創(chuàng)建2n+l個掃描線程。
[0029]步驟S202,根據(jù)待掃描的一個或多個文件生成多個掃描任務(wù),將多個掃描任務(wù)添加到掃描任務(wù)隊列中。
[0030]掃描線程以文件作為主要的掃描對象。掃描過程中,為每個待掃描的文件生成至少一個掃描任務(wù)。需要獲取待掃描文件的文件屬性信息,例如文件大小、文件修改時間和文件路徑等。系統(tǒng)中文件屬性記錄了該文件最后一次被修改后的文件大小、修改時間和文件路徑等屬性信息,屬性信息根據(jù)文件的修改進行實時更新。
[0031]例如,可以通過內(nèi)存的掃描方式,將文件屬性信息與緩存中保存的文件屬性信息進行匹配,當(dāng)待掃描文件的文件屬性與緩存中保存的文件屬性匹配時,將待掃描文件確定為惡意文件或非惡意文件,當(dāng)待掃描文件的文件屬性與緩存中保存的文件屬性不匹配時,將待掃描文件確定為通過名單掃描方式進行掃描的其它文件。由于文件屬性信息包括多種信息,因此在進行匹配時可以按照預(yù)設(shè)順序?qū)γ恳环N屬性信息進行逐一匹配,例如,先匹配文件大小,其次匹配文件修改時間,最后匹配文件路徑等。
[0032]其中,當(dāng)某一文件的所有屬性信息都與緩存中保存的文件屬性信息一致時,才確定該文件的文件屬性與緩存中保存的文件屬性匹配,當(dāng)某一文件的任意一種屬性信息與緩存中保存的文件屬性信息不一致時,則確定該文件的文件屬性與緩存中保存的文件屬性不匹配。當(dāng)某一文件的所有屬性信息都與緩存中保存的文件屬性信息一致時,才確定該文件的文件屬性與緩存中保存的文件屬性匹配,此時如果內(nèi)存中相匹配的文件屬性信息對應(yīng)的文件為惡意文件,則該文件的掃描結(jié)果即為惡意文件,如果內(nèi)存中匹配的文件屬性信息對應(yīng)的文件為非惡意文件,則該文件的掃描結(jié)果即為非惡意文件。
[0033]進一步的,還可以通過黑白名單的方式對文件進行掃描,通過預(yù)先保存的黑名單進行掃描時,將其它文件中的每一個文件的文件名與黑名單中預(yù)先保存的文件名進行比較,當(dāng)某個文件的文件名與預(yù)先保存的文件名匹配時,確定某個文件為屬于第二確定文件的惡意文件;通過預(yù)先保存的白名單進行掃描時,將其它文件中的每一個文件的文件名與白名單中預(yù)先保存的文件名進行比較,當(dāng)某個文件的文件名與預(yù)先保存的文件名匹配時,確定某個文件為屬于第二確定文件的非惡意文件。
[0034]其中,白名單通常由用戶在客戶端進行維護,用戶將確定為非惡意的文件加入到白名單中進行保存,白名單中可以記錄文件的文件名和文件路徑等信息;黑名單通常由殺毒軟件提供方進行維護,根據(jù)監(jiān)控將確定的惡意文件加入到黑名單中進行保存。
[0035]本發(fā)明實施例中,掃描的對象可以包括PE類型文件,PE類文件通常是指Windows操作系統(tǒng)上的程序文件,常見的PE類型文件包括可執(zhí)行文件、動態(tài)鏈接庫文件、對象類別擴充組件等類型文件。掃描對象還包括各種非PE類文件,例如,應(yīng)用程序臨時文件,歷史訪問痕跡等。
[0036]所述掃描對象的的掃描位置信息包括桌面,我的文檔,下載目錄,基于即時通訊軟件和/或電子郵件接收到的文件,和/或,外接存儲設(shè)備;其中,所述下載目錄,基于即時通訊軟件和/或電子郵件接收到的文件的掃描位置信息,通過從相應(yīng)軟件的配置文件中讀取獲得;所述外接存儲設(shè)備的掃描位置信息,通過由操作系統(tǒng)的應(yīng)用程序接口 API函數(shù)發(fā)起與當(dāng)前設(shè)備相連的外接存儲設(shè)備的查詢獲得;所述文件格式信息包括可執(zhí)行文件,和/或,OFFICE 文檔。
[0037]例如,可以包括如以下表I所示的掃描對象標(biāo)識和對應(yīng)的掃描位置信息;以及,如以下表2所示的掃描對象標(biāo)識和對應(yīng)的文件格式信息。
[0038]表1:
[0039]
掃描對象標(biāo)識掃描位置信息
[0040]
【權(quán)利要求】
1.一種多核設(shè)備的病毒掃描方法,包括: 根據(jù)所述多核設(shè)備的CPU核數(shù),創(chuàng)建多個掃描線程,所述掃描線程的個數(shù)大于或等于所述多核設(shè)備的CPU核數(shù); 根據(jù)待掃描的一個或多個文件生成多個掃描任務(wù),將所述多個掃描任務(wù)添加到掃描任務(wù)隊列中; 將掃描任務(wù)隊列中的掃描任務(wù)分配給所述掃描線程,以供所述掃描線程執(zhí)行病毒掃描。
2.根據(jù)權(quán)利要求1所述的方法,所述多個掃描線程并行運行。
3.根據(jù)權(quán)利要求1所述的方法,每個文件要經(jīng)過多個反病毒引擎進行掃描; 所述根據(jù)待掃描的一個或多個文件生成多個掃描任務(wù)具體包括:將每個反病毒引擎掃描每個文件的行為生成對應(yīng)的一個掃描任務(wù)。
4.根據(jù)權(quán)利要求1所述的方法,所述將掃描任務(wù)隊列中的掃描任務(wù)分配給所述掃描線程包括: 判斷所述掃描任務(wù)隊列中的掃描任務(wù)是否大于或等于掃描線程的個數(shù); 若是,為每個掃描線程分配至少一個掃描任務(wù); 否則,將所述掃描任務(wù)隊列中的全部掃描任務(wù)分配給選定的部分掃描線程。
5.根據(jù)權(quán)利要求1-4中任一項所述的方法,所述根據(jù)多核設(shè)備的CPU核數(shù),創(chuàng)建多個掃描線程具體為:創(chuàng)建2n+l個掃描線程,其中η為所述多核設(shè)備的CPU核數(shù)。
6.根據(jù)權(quán)利要求1所述的方法,還包括:在所述掃描任務(wù)隊列中的所有掃描任務(wù)執(zhí)行完成后,釋放所有掃描線程。
7.根據(jù)權(quán)利要求1-6中任一項所述的方法,所述掃描線程執(zhí)行病毒掃描具體包括: 掃描進程將文件的特征信息與該文件驗證數(shù)據(jù)包中的特征信息進行匹配,若匹配,則確定所述文件不是病毒;若不匹配,則確定所述文件為病毒。
8.根據(jù)權(quán)利要求7所述的方法,所述特征信息進行匹配的優(yōu)先順序依次為:文件大小,文件修改時間,文件名循環(huán)冗余校驗值和內(nèi)容匹配信息。
9.一種多核設(shè)備的病毒掃描裝置,包括: 線程創(chuàng)建模塊,適于根據(jù)所述多核設(shè)備的CPU核數(shù)創(chuàng)建多個掃描線程,所述掃描線程的個數(shù)大于或等于所述多核設(shè)備的CPU核數(shù); 任務(wù)生成模塊,適于根據(jù)待掃描的一個或多個文件生成多個掃描任務(wù),將所述多個掃描任務(wù)添加到掃描任務(wù)隊列中; 分配模塊,適于將掃描任務(wù)隊列中的掃描任務(wù)分配給所述掃描線程,以供所述掃描線程執(zhí)行病毒掃描。
10.根據(jù)權(quán)利要求9所述的裝置,所述線程創(chuàng)建模塊創(chuàng)建多個并行運行的掃描線程。
【文檔編號】G06F9/38GK103559443SQ201310535046
【公開日】2014年2月5日 申請日期:2013年11月1日 優(yōu)先權(quán)日:2013年11月1日
【發(fā)明者】謝重陽, 鄒貴強 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司