版权归原作者所有,如有侵权,请联系我们

[科普中国]-内存转储文件

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

内存转储是用于系统崩溃时,将内存中的数据转储保存在转储文件中,供给有关人员进行排错分析用途。而它所保存生成的文件就叫做内存转储文件。

概念内存转储文件也被称作虚拟内存,它是用硬盘里的一段空间虚拟成内存来存放程序来运行,由于硬盘的运行速度比内存慢很多,所以虚拟内存应不要很大,操作系统把虚拟内存存在一个文件里,那个文件有多大表示当前操作系统虚拟的内存有多大 。1

性质内存转储文件 不可彻底删除。但可修改,右击我的电脑,选中高级,选项卡,单击设置,再单击一下高级选项卡,下面有个虚拟内存,你单击一下更改在里面设置,可以设置关闭虚拟内存(最好不关闭虚拟内存,除非你的内存有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 的计算机上起作用。2

虚拟内存虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。与没有使用虚拟内存技术的系统相比,使用这种技术的系统使得大型程序的编写变得更容易,对真正的物理内存(例如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

VirtualQuery3

参见高速缓存文件置换机制

本词条内容贡献者为:

张磊 - 副教授 - 西南大学