平淡
打開每臺使用Windows的電腦的任務(wù)管理器后,都可以看到名為System的進(jìn)程。在System進(jìn)程上單擊鼠標(biāo)右鍵并選擇“打開文件的位置”,在打開的資源管理器窗口中可以看到該進(jìn)程所對應(yīng)的程序是“C:\Windows\System32\ntoskml.exe”(圖2)。
Ntoskml.exe是一個NT系統(tǒng)的內(nèi)核程序,它的主要作用是負(fù)責(zé)操作系統(tǒng)核心的任務(wù),如處理器管理、存儲管理、設(shè)備管理、文件管理、接口管理等。我們?nèi)粘J褂玫尿?qū)動程序(如很多sys文件),就是通過調(diào)用Ntoskrnl.exe的接口加載的。在系統(tǒng)后臺中,Ntoskrnl.exe扮演的是一個類似總管的角色,它會加載硬件驅(qū)動(如顯卡、網(wǎng)卡)、系統(tǒng)核心文件等多個線程,這些線程CPU資源占用之和就是任務(wù)管理器中System進(jìn)程的CPU資源占用顯示值。所以如果System進(jìn)程的CPU資源占用過高,我們就要查看Ntoskrnl.exe到底加載了什么線程,并找出哪個(或者哪些)線程的CPU資源占用出現(xiàn)了異常。
如上所述,找出異常的原因是要先查看Ntoskrnl.exe加載的線程。這個可以借助Process Explorer軟件(下載地址:https:∥docs.microseft.com/en-us/sysinternals/downloads/process-explorer,以下簡稱為PE)來完成。
啟動PE后,在進(jìn)程列表中找到System進(jìn)程,右鍵單擊該進(jìn)程,在彈出的菜單中選擇“屬性”(圖3)。在接著打開的詹性窗口中,點擊CPU資源進(jìn)行排序,在筆者的電腦中可以看到一個ID為13044的線程,其CPU資源占用為61.23%,而其他線程的CPU資源占用則幾乎為0,現(xiàn)在基本可以判斷出是這個線程導(dǎo)致了System進(jìn)程CPU資源占用過高(圖4)。
在上圖內(nèi)選中該線程后點擊“模塊”,打開加載的驅(qū)動文件屬性窗口。接著再依次切換到“數(shù)字簽名→詳細(xì)信息”,可以看到這是一個某網(wǎng)絡(luò)科技有限公司開發(fā)的驅(qū)動文件。最后經(jīng)過百度查詢,原來是筆者前幾天安裝的某銀行的U盾驅(qū)動(圖5)。
通過上面的方法可以初步確定CPU資源占用過高的元兇是PaGuard X64.sys文件,不過由于這是驅(qū)動文件且正被系統(tǒng)使用而無法直接刪除,而且貿(mào)然刪除驅(qū)動文件可能會帶來不可預(yù)測的后果。因此,為了確保系統(tǒng)的安全,接下來我們可以先將該驅(qū)動文件的啟動方式設(shè)置為“禁用”,重啟并確認(rèn)系統(tǒng)沒有異常后再進(jìn)行處理。驅(qū)動的啟動方式可以通過Autoruns軟件(https:∥docs.microsoft.com/zh-cn/sysinternals/downloads/autoruns)進(jìn)行查看。
啟動Autoruns后切換到“Drivers”,在啟動列表中找到PaGuard啟動項,可以看到其加載的就是圖4所示的窗口中顯示的驅(qū)動文件,現(xiàn)在記住文件的路徑,并按提示將其前面的勾選去除(圖6)。
接著按提示重啟電腦,進(jìn)入桌面后打開任務(wù)管理器查看,此時System進(jìn)程的CPU資源占用變?yōu)?.24%,系統(tǒng)恢復(fù)正常,并且使用一段時間后也沒有出現(xiàn)什么異?!,F(xiàn)在可以確定之前System進(jìn)程的CPU資源占用過高,正是由于PaGuard X64.sys導(dǎo)致的?,F(xiàn)在返回圖6所示的窗口,按照路徑提示找到對應(yīng)的PaGuard X64.sys文件并將其刪除,同時刪除其注冊表中對應(yīng)的鍵值,自此順利地解決這個問題。
那么PaGuard X64.sys文件為什么會導(dǎo)致CPU資源占用過高?一般情況下,正常的驅(qū)動加載調(diào)用Ntoskrnl.exe接口時并不會占用太多的系統(tǒng)資源。不過一些異常的驅(qū)動,比如本例的PaGuard X64.sys,它會在后臺頻繁地檢測用戶的電腦是否插入了U盾,從而不斷地向Ntoskrnl.exe發(fā)起請求,導(dǎo)致Ntoskrnl.exe占用過多的系統(tǒng)資源,在任務(wù)管理器中就體現(xiàn)為System進(jìn)程的CPU或者內(nèi)存資源占用過高。此外,一些不兼容或者過時的硬件驅(qū)動,由于其與系統(tǒng)的兼容性有問題,也會導(dǎo)致在調(diào)用接口時出現(xiàn)異常現(xiàn)象。
如上所述,System進(jìn)程的CPU資源占用過高的原因大部分是由于其加載的驅(qū)動文件有問題所導(dǎo)致。我們一般只要先找出占用資源高的.sys文件,然后通過查看文件的信息判斷來源,最后根據(jù)文件的性質(zhì)使用不同的方法來解決問題。如果確認(rèn)是新安裝的軟件(比如很多手機助手類的管理軟件)或硬件(如本例的U盾)所帶的驅(qū)動,那么可以嘗試卸載或者將其自啟動禁止后手動刪除;如果是本機中原有的硬件(如自帶的網(wǎng)卡、顯卡)的驅(qū)動文件,則可嘗試自動升級驅(qū)動來解決問題。