記憶體轉儲是用於系統崩潰時,將記憶體中的數據轉儲保存在轉儲檔案中,供給有關人員進行排錯分析用途。而它所保存生成的檔案就叫做記憶體轉儲檔案。
基本介紹
概念,性質,分類,生成,虛擬記憶體,Windows作業系統的虛擬記憶體,參見,
概念
記憶體轉儲檔案也被稱作虛擬記憶體,它是用硬碟里的一段空間虛擬成記憶體來存放程式來運行,由於硬碟的運行速度比記憶體慢很多,所以虛擬記憶體應不要很大,作業系統把虛擬記憶體存在一個檔案里,那個檔案有多大表示當前作業系統虛擬的記憶體有多大 。
性質
記憶體轉儲檔案 不可徹底刪除。但可修改,右擊我的電腦,選中高級,選項卡,單擊設定,再單擊一下高級選項卡,下面有個虛擬記憶體,你單擊一下更改在裡面設定,可以設定關閉虛擬記憶體(最好不關閉虛擬記憶體,除非你的記憶體有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 的計算機上起作用。
虛擬記憶體
現代所有用於一般套用的作業系統都對普通的應用程式使用虛擬記憶體技術,例如文字處理軟體,電子製表軟體,多媒體播放器等等。老一些的作業系統,如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
參見
- 高速快取檔案置換機制