熱點推薦:
您现在的位置: 電腦知識網 >> 操作系統 >> Windows系統管理 >> 正文

Windows死機原理揭密

2013-11-11 21:42:36  來源: Windows系統管理 

  只要是使用過Windows 或Windows 的用戶我估計沒有遇到過一般性保護錯(GPF)的人幾乎沒有當一個程序試圖訪問其內存地址空間之外的內存時就會引發這種錯誤每當發生這種錯誤系統就會提示程序執行了非法操作這時我們該怎麼辦呢?下面是針對不同程序的GPF而分別采取的處理辦法
    基於MSDOS程序中的GPF
    由於每個MSDOS程序只在獨自的虛擬機上運行故基於MSDOS的程序出現一般性保護錯後受影響的僅僅是該MSDOS程序因此當這類程序出現GPF後用戶只須在GPF對話框中單擊關閉按鈕就將終止該MSDOS程序以及運行它的虛擬機而收回被該程序調用的系統資源
    點擊GPF對話框中的詳細資料按鈕系統將提供一些堆棧轉儲數據這些堆棧轉儲數據是在程序崩潰時存儲在系統寄存器中的消息該信息一般只對編寫程序的人有用
    位Windows程序中的GPF
    由於基於Windows的所有位程序享用相同的地址空間故只要一個位程序出現GPF則其他正在運行的位Windows程序都將因此而終止只有將出現GPF的位程序清除後其他位程序才能繼續讀線程中的消息和正常進行操作
    由於所有位的Windows程序共享相同的資源因此即使將出現故障的位程序關閉通常也不能把資源徹底返回操作系統而這些不能回收的資源又可能造成另外的位Windows程序出現GPF故當位Windows程序出現GPF時要徹底收回系統資源唯一的辦法是關閉所有的位Windows程序
    當位Windows程序出現故障時Windows系統也將發出指示故障的程序的GPF對話框該對話框是基於Windows 舊類型的對話框關閉按鈕和忽略按鈕所構成用戶選擇關閉按鈕後將看到Windows / GPF的對話框位Windows程序中的GPF
    雖然所有的位Windows程序都使用同一個系統虛擬機但是它們都有單獨的虛擬地址空間所以當位Windows程序出現GPF故障時不會對其他任何程序產生影響
    要收回出現GPF故障的位Windows程序占用的系統資源用戶只須在出現的Windows / GPF對話框中單擊關閉按鈕Windows就會關閉出錯的程序並把其資源返回操作系統設備驅動程序中的GPF
    設備驅動程序中也會出現GPF由於設備驅動程序能直接訪問硬件並作為基本操作系統的一部分運行所以當設備驅動程序出現GPF故障後將會影響整個Windows系統的穩定和繼續正常運行因此設備驅動程序出現了一般性保護錯後最好的解決辦法就是重新啟動系統 將詳細講講如何跟蹤虛擬機看看理論是否與事實相吻合
    點擊開始/附件/系統工具中的系統監視器
    打開系統監視器中的編輯菜單選擇添加項目(A)選項
    選擇核心類別中的虛擬機項目單擊確定按鈕即可利用系統監視器查看虛擬機的運行狀態
    從下面的介紹中我們可以看到Windows程序和MSDOS程序調用虛擬機的真實情況程序調用情況只運行了Windows 系統
    虛擬機運行情況只調用了系統虛擬機
    說明Windows系統的系統程序只在系統虛擬機中運行
    程序調用情況打開了Word和PhotoShop程序
    虛擬機運行情況仍然只調用了系統虛擬機
    說明基於Windows的所有程序(無論是位還是位程序)均在系統虛擬機中運行
    程序調用情況在上個基礎上調用了一個MSDOS程序
    虛擬機運行情況調用了系統虛擬機和一個MSDOS虛擬機
    說明從圖中可以看出MSDOS程序不在系統虛擬機中運行而是單獨調用一個MSDOS虛擬機運行並且一個MSDOS虛擬機的峰值為程序調用情況在上個基礎上再打開了一個MSDOS程序
    虛擬機運行情況調用了系統虛擬機和兩個MSDOS虛擬機
    說明:基於MSDOS的程序並不是在同一個MSDOS虛擬機中運行一個MSDOS虛擬機中只能運行一個MSDOS程序而且MSDOS虛擬機相互之間互不干擾
    總結Windows系統中的所有程序只能在系統虛擬機和MSDOS虛擬機中運行!程序的不響應又稱為程序被掛起那麼什麼叫程序的不響應呢?形象地說就是某個正在運行的程序非正常地停留在某一狀態而又不對系統作出相應的反應就仿佛死了一般與出現GPF故障的程序不同的是被掛起的程序並不會被系統強制終止而是在繼續運行但不會對系統作出響應
    造成程序不響應的原因是多方面的但有一點是我們應該了解的那就是線程的阻塞是造成程序掛起的主要因素而不是虛擬機的問題另外一些其他原因也能造成程序被掛起如造成位Windows程序被掛起可能是該程序不能與別的位程序共享資源或者因其他的位程序出現GPF而沒有得到及時消除造成:位的Windows程序所需資源被其他程序使用時也會出現程序不響應故障從而我們可以看到如果一個程序在使用一個關鍵資源時被掛起則所有其他需要該資源的程序也將被掛起掛起的程序必須關閉以釋放其占用的資源後其他程序才能夠繼續運行
    下面就是不同程序出現不響應故障後的解決措施
    掛起的MSDOS程序
    由於每個MSDOS程序使用獨自的MSDOS VM而每個MSDOS VM擁有單獨的線程(注每個MSDOS VM擁有個線程)因此當一個MSDOS程序被掛起時其他的MSDOS程序仍能正常運行要關閉被掛起的MSDOS程序用戶只需同時按下CTR l+ALT +del鍵調出圖界面然後選中被掛起的MSDOS程序單擊結束任務按鈕即可
    掛起的位Windows 程序
    位Windows 程序被掛起時它們一般不會釋放對線程和其它系統資源的控制又由於位Windows程序共享單個線程因此當一個位Windows 程序被掛起後可能導致越來越多的位Windows 程序被掛起所以必須將所有的被掛起的位Windows程序關閉後其它的位程序才能繼續正常運行
    另外Windows X系統使用WinMutex標志來指示某個特定的位Windows 程序正在使用的資源WinMutex標志的出現會產生一個副作用即當被掛起的位Windows 程序被釋放後會產生一些位代碼碎片如果位的Windows程序正准備使用這些碎片則可能會被其他試圖使用相同碎片的位程序掛起
    因此位程序被掛起時最穩妥的方法是重新啟動計算機
    掛起的位Windows 程序
    位Windows 程序被掛起時則不起影響其他位Windows程序!這主要是因為它們擁有獨自的線程因此當一個位Windows 程序被掛起後只需按三鍵組合點擊結束任務按鈕將其關閉即可

From:http://tw.wingwit.com/Article/os/xtgl/201311/9045.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.