我仔细检查了有关“虚拟内存”的注释,教科书中的定义是:
分配一部分二级存储以充当主内存的一部分的过程
凡为维基百科说:
虚拟内存是一种计算机系统技术,可以使应用程序拥有连续的工作内存(地址空间)的印象。
和(维基百科也说)
请注意,“虚拟内存”不仅仅是“使用磁盘空间扩展物理内存大小”
谁能提供关于哪个正确的任何澄清?
我仔细检查了有关“虚拟内存”的注释,教科书中的定义是:
分配一部分二级存储以充当主内存的一部分的过程
凡为维基百科说:
虚拟内存是一种计算机系统技术,可以使应用程序拥有连续的工作内存(地址空间)的印象。
和(维基百科也说)
请注意,“虚拟内存”不仅仅是“使用磁盘空间扩展物理内存大小”
谁能提供关于哪个正确的任何澄清?
Answers:
Note that "virtual memory" is more than just "using disk space to extend physical memory size"
虚拟内存是提供给每个进程的抽象层。例如,计算机具有2GB的物理RAM,地址从0到2G。一个进程可能会看到一个4GB的地址空间,它完全拥有它自己的空间。从虚拟地址到物理地址的映射由内存管理单元处理,该内存管理单元由操作系统管理。通常,这是在4KB“页面”中完成的。
这提供了几个功能:
您的教科书将虚拟内存(错误地)定义为#3。
即使不进行任何交换,如果为执行DMA(直接内存访问)的设备编写设备驱动程序,则特别需要注意虚拟内存。您的驱动程序代码在CPU上运行,这意味着其内存访问是通过MMU(虚拟)进行的。该设备可能未通过MMU,因此可以看到原始物理地址。因此,作为驱动程序编写者,您需要确保:
我会尝试慢慢开始,然后为您整合所有内容。就像这样:
通常使用的虚拟内存是指“分页”。顾名思义,分页就像人类的记事本。
当您计算简单的总和或学习简单的信息时,您就可以轻松完成所有事情:您只需加载所有信息,对其进行处理并获得答案。这就像计算机从硬盘驱动器加载文件一样,它会将需要处理的程序或图片或其他信息加载到其“真实内存”(或“物理内存”)中,并使用其“大脑”(它的处理器)。
但是,当您学习复杂的信息或处理复杂的金额时,可能无法一次将所有内容放到脑海中。您会感到困惑,开始放慢脚步,无法一次全部收拾其中,而不得不忘记一些东西以记住其他东西。
人类的解决方案是使用记事本。我们在页面上记下了我们一次不记得的所有事情,但是在进行总结时请参考它们。我们可能无法记住一个月的销售数字,但是我们可以查看页面,一次获取一点信息,然后逐一处理。这就像计算机在“分页”其内存时一样-写满信息的页面,然后将其放入“虚拟内存”以供以后参考,并意识到它需要一个页面,然后将该页面从虚拟内存加载回真实内存。在Linux和UNIX上,这些页的存储位置从字面上称为“ pagefile”,而内存中的数据页从字面上称为“ pages”。对于这些事物,不同的系统使用不同的名称,但是总体概念几乎相同。
所以说真的,分页非常简单。所有信息页面都无法容纳在内存中,因此某些页面被放置在磁盘上,并在以后再次加载。
现在,更为复杂的是,现代系统具有内存映射和内存保护功能,通常都由计算机中的同一硬件系统(内存管理单元或MMU)来处理。
在(现代)多任务计算机中,该计算机可以一次运行多个程序,并具有内存保护功能,每个程序通常与同一系统上运行的其他程序分开。这样,一个程序不能仅通过访问其内存来更改另一个程序-MMU在物理上将一个程序的地址空间与其他程序分开。换句话说,用户程序看不到其他用户程序,甚至看不到其他程序。他们看不到“真实内存”,而是看到了自己的“虚拟内存”。
现在,此内存隔离概念和页面文件概念是两个概念上不同的事物,这可能就是您感到困惑的原因。但是,关键是它们都使用MMU进行工作-内存管理单元,它将内存分成页面,并将页面映射到虚拟地址空间。
因此,当程序在某个“内存地址”处请求内存时,真正发生的是查找该程序的内存页面及其对应的地址(程序的“地址空间”),并找到与之对应的页面。找到该内存块。该页面可以加载到实际内存中的某个位置(在这种情况下,可以访问该程序),也可以将其分页到磁盘。如果将其分页,则会触发“页面错误”-访问磁盘,并将页面加载到内存中。因此,即使没有足够的内存,该程序也可以运行,但是如果必须使用磁盘进行通常非常快速的内存访问,则该程序运行缓慢。
现在,如果没有足够的空间将该页面加载到内存中,那么您将遇到问题。在这种情况下,必须将某些已经在内存中的OTHER页面“交换”到磁盘上,以便可以加载第一个程序的页面。或者,它们可能同样是同一程序的页面。您有时会在图形程序中看到这种情况,例如在负载较重的系统上,当图片的一部分缓慢加载并快速绘制时,下一部分同样缓慢加载并快速绘制,而当您回到第一个工作时部分,再慢一点。这是因为要先加载它们再进行处理,然后再换出,以便可以进行其他处理。显然,这是一种非常缓慢的工作方式,而您真正需要的是更多的真实内存。
虚拟内存是操作系统(OS)的一项功能,该功能允许计算机通过将数据页从随机访问内存(RAM)临时传输到磁盘存储中来弥补物理内存的不足。
这意味着它就像虚拟机或虚拟盒子中用来在不格式化计算机的情况下尝试操作系统的镜像或示例内存。
虚拟内存是硬盘驱动器的一部分,除了物理RAM外,系统还用作系统的页面文件。
由于Windows不会对硬盘驱动器的这一部分进行碎片整理,因此它变得棘手,有时甚至很慢。
我可以提供的2条最佳技巧:1)Virt Mem的最小值和最大值应设置为物理内存的1.5倍左右。例如 2GB内存= 3070MB Virt。2)进行碎片整理时,请关闭分页文件。对2倍进行碎片整理,然后重置为原始编号。这样可以提供清晰的驱动器,并提高分页文件的速度。