內存轉儲文件

虛擬內存

內存轉儲是用於系統崩潰時,將內存中的數據轉儲保存在轉儲文件中,供給有關人員進行排錯分析用途。而它所保存生成的文件就叫做內存轉儲文件。

基本概念


內存轉儲文件也被稱作虛擬內存,它是用硬碟里的一段空間虛擬成內存來存放程序來運行,由於硬碟的運行速度比內存慢很多,所以虛擬內存應不要很大,操作系統把虛擬內存存在一個文件里,那個文件有多大表示當前操作系統虛擬的內存有多大。

主要性質


內存轉儲文件 不可徹底刪除。但可修改,右擊我的電腦,選中高級,選項卡,單擊設置,再單擊一下高級選項卡,下面有個虛擬內存,你單擊一下更改在裡面設置,可以設置關閉虛擬內存(最好不關閉虛擬內存,除非你的內存有4G或以上)和虛擬內存的大小以及在哪個硬虛擬。最後單擊確定就可以了。

基本分類

小內存轉儲,只是保存內存前64K的基本內存空間的數據
核心內存轉儲,保存操作系統和相關係統級別服務的數據。
完全內存轉儲,就是將內存中的數據全部保存,包括系統數據和用戶數據。

生成條件

Windows 包含一種功能,可以用來促使系統停止響應並生成內存轉儲文件 (Memory.dmp)。在您執行此操作時,可能會收到一條類似以下內容的 Stop 錯誤消息: *** STOP:0x000000E2 (0x00000000,0x00000000,0x00000000,0x00000000)
The end-user manually generated the crashdump.
啟用此功能后,按住右 Ctrl 鍵,同時按 Scroll Lock 鍵兩次,即可生成一個內存轉儲文件。此功能適用於 PS/2 鍵盤和通用串列匯流排 (USB) 鍵盤。PS/2 鍵盤使用鍵盤自帶的 i8042prt.sys 驅動程序。但是,對於 USB 鍵盤,則必須為 Kbdhid.sys 驅動程序安裝一個修補程序。有關此修補程序的更多信息,請參見“更多信息”部分末尾的“Windows Server 2003 解決方案”小節。
注意:允許使用 USB 鍵盤生成內存轉儲過程的 Kbdhid.sys 驅動程序存在一定局限性。這就是,當計算機在高中斷請求級別 (IRQL) 停止響應時,Ctrl+Scroll Lock+Scroll Lock 鍵盤快捷方式不起作用。之所以存在此局限性是因為與 i8042prt.sys 驅動程序相比,Kbdhid.sys 驅動程序運行時的 IRQL 較低。此 USB 鍵盤功能只在運行 Microsoft Windows Server 2003 的計算機上起作用。

虛擬內存


虛擬內存是計算機系統內存管理的一種技術。它使得應用程序認為它擁有連續可用的內存(一個連續完整的地址空間),而實際上,它通常是被分隔成多個物理內存碎片,還有部分暫時存儲在外部磁碟存儲器上,在需要時進行數據交換。與沒有使用虛擬內存技術的系統相比,使用這種技術的系統使得大型程序的編寫變得更容易,對真正的物理內存(例如RAM)的使用也更有效率。
注意:虛擬內存不只是“用磁碟空間來擴展物理內存”的意思——這只是擴充內存級別以使其包含硬碟驅動器而已。把內存擴展到磁碟只是使用虛擬內存技術的一個結果,它的作用也可以通過覆蓋或者把處於不活動狀態的程序以及它們的數據全部交換到磁碟上等方式來實現。對虛擬內存的定義是基於對地址空間的重定義的,即把地址空間定義為“連續的虛擬內存地址”,以藉此“欺騙”程序,使它們以為自己正在使用一大塊的“連續”地址。
現代所有用於一般應用的操作系統都對普通的應用程序使用虛擬內存技術,例如文字處理軟體,電子製表軟體,多媒體播放器等等。老一些的操作系統,如DOS和1980年代的Windows,或者那些1960年代的大型機,一般都沒有虛擬內存的功能——但是Atlas,B5000和蘋果公司的Lisa都是很值得注意的例外。
那些需要快速訪問或者反應時間非常一致的嵌入式系統,和其他的特殊應用的計算機系統,可能會為了避免讓運算結果的可預測性降低,而選擇不使用虛擬內存。

Windows操作系統的虛擬內存

對於32位進程,其邏輯內存空間為4G。Windows API提供了一套函數操縱進程的虛擬內存:
• VirtualAlloc(PVOID開始地址,SIZE_T大小,DWORD內存類型,DWORD保護屬性)。內存類型有MEM_RESERVE(保留)、MEM_RELEASE(釋放)和MEM_COMMIT(提交)。保留是指佔用一塊邏輯地址空間,但未實際分配物理內存;提交是實際分配物理內存。MEM_RESET用於把內存清零。保護屬性為: PAGE_NOACCESS、PAGE_READONLY、PAGE_READWRITE、PAGE_EXECUTE、PAGE_EXECUTE_READ、PAGE_EXECUTE_READWRITE。
• VirtualProtect(PVOID基地址,SIZE_T大小,DWORD新保護屬性,DWORD舊保護屬性)。更改保護屬性。
• VirtualFree(PVOID基地址,SIZE_T大小,DWORD內存類型)。頁面釋放。內存類型是MEM_DECOMMIT或者MEM_RELEASE
• VirtualLock
• VirtualUnlock
• VirtualQuery

參見資料


• 高速緩存文件置換機制