为您找到与虚拟机的物理内存相关的共200个结果:
组装电脑,内存是大家比较关注的电脑硬件,如今内存的价格与容量都比较大,内存目前2G也仅100元左右,内存知识方面我们常听说的“虚拟内存”和 “物理内存”是不能混为一谈的。接下来由读文网小编为大家推荐的技巧,希望对你有所帮助!
我们主要从以下方面对电脑物理内存与虚拟内存之间的关系:
物理内存是真正的内存,在应用中顾名思义,物理上,真实的插在板子上的内存是多大就是多大了。看机器配置的时候,看的就是这个物理内存。
虚拟内存是为了满足系统对超出物理内存容量的需求时在外存(如硬盘)上开辟的存储空间。由于虚拟内存其实是放在外存上,因而与物理内存相比读写速度比较慢。那么虚拟内存有什么作用呢?
我们知道, 32位CPU,有32根地址线,那么它的寻址空间就是4GB。也就是说,如果没有其它的限制,我们的主板上最大可以安装4GB的物理内存。但是一般的机器 是不会装那么多物理内存,而有时软件应用时所需内存确大大超过了物理内存,这怎么办?总不能不用那些程序了吧。OS就提出了一个虚拟内存的概念。就是进 程、用户、不必考虑实际上物理内存的限制,而直接对 4GB的进程空间进行寻址。如果所寻址的数据实际上不在物理内存中,那就从“虚拟内存”中来获取。
一般情况下,虚拟内存的大小,各个OS也进行了限制(比 如linux的swap分区的大小,win下也可以调整虚拟内存文件的大小和位置)。所以,我们程序所能使用的存储空间大小就是:物理内存+虚拟内存。
浏览量:3
下载量:0
时间:
当我们选购回来一条内存条,上面标明着128M。你可能知道这就是我们说的“物理内存”,可你知道什么是虚拟内存吗,它和物理内存又有着什么样的区别呢?不要心急,今天读文网小编就为大家整理了一套相关知识,希望能帮到大家。
和许多电脑软件一样,虚拟内存也是可以被优化的,首先我们可以尝试改变页面文件的位置,此举的目的就是为了保证虚拟内存能连续被使用,当页面文件被存放在磁盘上的不同区域是,磁头读取时就要跳来跳去,不利于效率的提高。其次我们可以改变页面文件的大小,一般情况下,我们将最小页面文件设定值调到尽量小,这样就能保证在内存中尽可能多地存储数据,相应的效率也就越高,然后我们把最大页面文件设定得更大,这样一来可以避免“超载”的情况。通常情况下,虚拟内存经过以上两种方式就可以达到最大的优化效果。
相信经过了以上这些关于物理内存和虚拟内存的知识讲解,大家都能够轻松对自己的电脑虚拟硬盘进行操作了,
浏览量:2
下载量:0
时间:
打开虚拟机时提示报错:“物理内存不足,无法使用配置的设置开启虚拟机”。下面读文网小编就针对 Windows 8.1 的主机环境,为大家介绍一下具体的解决方法吧,欢迎大家参考和学习。
1、修改虚拟机的配置参数文件:
C:Documents and SettingsAll UsersApplication DataVMwareVMware Workstation 或 C:ProgramDataVMwareVMware Workstation 路径下的 config.ini,把 “prefvmx.useRecommendedLockedMemSize = ”设为"TRUE" “prefvmx.minVmMemPct = ”改成一个足够小的数,例如“1”。
2、然后再将系统的虚拟内存提高。右键在“计算机”上点击“属性”,在左侧点击“高级系统设置”。选择“高级”选项卡→性能“设置”按钮,选择“高级”选项卡→虚拟内存的“更改...”按钮。
3、在此处可自行设置分配到每个硬盘分区的虚拟内存分页文件大小,“无分页文件”意味着在该分区中不分配虚拟内存分页文件,页面文件占用的大小可以自定义。
注意事项:操作系统为Windows8.1或以上适用此方法,其他系统待验证。
浏览量:3
下载量:0
时间:
电脑在运行时,偶尔会出现提示“虚拟内存不足,请增加你的虚拟内存”信息,虚拟内存是什么?怎样增大虚拟内存?但是又有网友这么跟读文网小编说1g物理内存开多少虚拟内存比较合适?其实虚拟内存一般开到1.5倍就比较合适的了!比如你1G内存 那么就1.5G虚拟内存就比较合适。下面就由读文网小编来说说如何怎么设置虚拟内存吧。
虚拟内存:虚拟内存是在磁盘上划出一块区域,用来当作内存来使用,弥补内存条不足的一种方法。
怎样增加虚拟内存:电脑系统有虚拟内存设置功能,可以自定义设置虚拟内存的大小。具体如何设置虚拟内存,设置多大最为合适,请看以下教程。
1,在桌面点击“开始”,然后打开“控制面板”。
2,在控制面板内,打开“系统”快捷图标。
3,在系统属性窗口,选择“高级”->“性能”下的“设置”按钮。
4,在性能选项窗口中,选择“高级”->“虚拟内存”下的“更改”按钮。
5,在这里,显示的是我原来的虚拟内存设置,我的物理内存为1G,虚拟内存设置在C盘,它推荐我设置虚拟内存设为1536MB=1.5G,但我没有按它的要求设置,我只设置了1024MB=1G。
虚拟内存设置大小一般应该为物理内存的1.5倍为好,
如果物理内存为2G,虚拟内存应该设置为3G=3072MB,
如果物理内存为4G,那虚拟内存应该设置为6G=6144MB,
我的物理内存为1G,那虚拟内存应该设置为1.5G=1536MB,
注:1G=1024MB
6,开始修改我的虚拟内存:
一,仍然设置在C盘。
二,选择“自定义大小”,
三,把初始值与最大值都设置为1536MB=1.5G,(提示:最小值与最大值最好设置为相同,这样更利于电脑的性能稳定)
四,设置好后按“设置”按钮,这样才能生效。
五,最后按“确定”。
7,当按了“确定”后,会弹出提示框“要使改动生效,必须重新启动计算机”,虚拟内存设置完成。
注意事项
如果物理内存偏小,可以把虚拟内存设置得大一点,可以为物理内存的2倍或3倍。
如果物理内存已经很大,比如有4G或者8G,那就只要设置为1.5倍即可,太大了,反而浪费
浏览量:2
下载量:0
时间:
有网友说Linux的内存与Windows的内存有区别吧?针对这个问题,读文网小编就给大家整理了相关文章给大家普及下关于Linux 虚拟内存和物理内存的理解。
IA32架构中内核虚拟地址空间只有1GB大小(从3GB到4GB),因此可以直接将1GB大小的物理内存(即常规内存)映射到内核地址空间,但超出1GB大小的物理内存(即高端内存)就不能映射到内核空间。为此,内核采取了下面的方法使得内核可以使用所有的物理内存。
1).高端内存不能全部映射到内核空间,也就是说这些物理内存没有对应的线性地址。不过,内核为每个物理页框都分配了对应的页框描述符,所有的页框描述符都保存在mem_map数组中,因此每个页框描述符的线性地址都是固定存在的。内核此时可以使用alloc_pages()和alloc_page()来分配高端内存,因为这些函数返回页框描述符的线性地址。
2).内核地址空间的后128MB专门用于映射高端内存,否则,没有线性地址的高端内存不能被内核所访问。这些高端内存的内核映射显然是暂时映射的,否则也只能映射128MB的高端内存。当内核需要访问高端内存时就临时在这个区域进行地址映射,使用完毕之后再用来进行其他高端内存的映射。
由于要进行高端内存的内核映射,因此直接能够映射的物理内存大小只有896MB,该值保存在high_memory中。内核地址空间的线性地址区间如下图所示:
从图中可以看出,内核采用了三种机制将高端内存映射到内核空间:永久内核映射,固定映射和vmalloc机制。
浏览量:2
下载量:0
时间:
读文网小编今天为大家分享物理内存4g设虚拟内存的操作步骤,欢迎大家前来阅读。
1,在桌面点击“开始”,然后打开“控制面板”。
2,在控制面板内,打开“系统”快捷图标。
3,在系统属性窗口,选择“高级”->“性能”下的“设置”按钮。
4,在性能选项窗口中,选择“高级”->“虚拟内存”下的“更改”按钮。
5,在这里,显示的是我原来的虚拟内存设置,我的物理内存为1G,虚拟内存设置在C盘,它推荐我设置虚拟内存设为1536MB=1.5G,但我没有按它的要求设置,我只设置了1024MB=1G。
虚拟内存设置大小一般应该为物理内存的1.5倍为好,
如果物理内存为2G,虚拟内存应该设置为3G=3072MB,
如果物理内存为4G,那虚拟内存应该设置为6G=6144MB,
我的物理内存为1G,那虚拟内存应该设置为1.5G=1536MB,
注:1G=1024MB
6,开始修改我的虚拟内存:
一,仍然设置在C盘。
二,选择“自定义大小”,
三,把初始值与最大值都设置为1536MB=1.5G,(提示:最小值与最大值最好设置为相同,这样更利于电脑的性能稳定)
四,设置好后按“设置”按钮,这样才能生效。
五,最后按“确定”。
7,当按了“确定”后,会弹出提示框“要使改动生效,必须重新启动计算机”,虚拟内存设置完成。
注意事项
如果物理内存偏小,可以把虚拟内存设置得大一点,可以为物理内存的2倍或3倍。
如果物理内存已经很大,比如有4G或者8G,那就只要设置为1.5倍即可,太大了,反而浪费。
读文网小编分享了物理内存4g设虚拟内存的解决方法,希望大家喜欢。
浏览量:2
下载量:0
时间:
有网友问小编“在虚拟机上装乌班图被提醒物理内存不足该怎么解决?”读文网小编今天给大家介绍一下乌班图虚拟机物理内存不足的解决方法,供大家参考!
方法一:① 如果主机的操作系统版本是 Windows 8.1 或以上,请把 VMware Workstation 升级至10.0.4版本,此版本解决了在 Win8.1 下物理内存识别出错的问题。如果在升级版本之后虚拟机仍然不能正常启动,则可参考以下所有方法,依次尝试之。
方法二
1② 重启电脑,并在电脑启动之后优先打开VMware Workstation以让虚拟机享用足够的物理内存;
方法三
1③ 新建一个虚拟机(任意操作系统)并启动,此时通常情况下这个新的虚拟机是可以正常运行的,之前所创建的虚拟机也可以正常运行。
方法四
1 虚拟机的菜单“编辑”→“首选项”,在左边的选项中选择“内存”。
2将系统为虚拟机预留的主机物理内存提升至一个“警告临界值”,也就是大于这个值的时候会提示警告:预留内存量大于针对此系统建议的最大值,可能会降低系统性能。
方法五
修改虚拟机的配置参数文件:
C:Documents and SettingsAll UsersApplication DataVMwareVMware Workstation 或 C:ProgramDataVMwareVMware Workstation 路径下的 config.ini,把 “prefvmx.useRecommendedLockedMemSize = ”设为"TRUE" “prefvmx.minVmMemPct = ”改成一个足够小的数,例如“1” 。
然后再将系统的虚拟内存提高。右键在“计算机”上点击“属性”,在左侧点击“高级系统设置”。选择“高级”选项卡→性能“设置”按钮,选择“高级”选项卡→虚拟内存的“更改...”按钮。
在此处可自行设置分配到每个硬盘分区的虚拟内存分页文件大小,“无分页文件”意味着在该分区中不分配虚拟内存分页文件,页面文件占用的大小可以自定义。
读文网小编介绍了乌班图虚拟机物理内存不足的解决方法,希望你喜欢。
浏览量:2
下载量:0
时间:
物理内存不足虚拟机mac启动不了怎么办啊?读文网小编给大家介绍一下物理内存不足虚拟机mac的解决方法。供大家参考!
参考如下
Mac虚拟机内存怎么分配?有不少Mac用户都安装了虚拟机软件,虚拟机可以让我们在 Mac 上运行各种平台的操作系统,如 Linux、Windows、Unix 等,它是用软件的方法来模拟一台真实的电脑,有自己的 CPU、内存、硬盘,光驱等硬件。对于不熟悉电脑的小伙伴而言,可能不知道到底应该为即将要安装的系统分配多少内存,PC6苹果网小编给您简单介绍一些在为虚拟机分配内存时的技巧,希望能对你安装虚拟机系统有所帮助。
内存分配原则一、根据你 Mac 自身的内存
1、虚拟机上分配的内存,最终是要落实到 Mac 上的物理内存,也就是说要从 Mac 上划分一部分内存出去。所以大家先要清楚自己的 Mac 电脑当前有多少内存,可以在关于本机中查看。如下图所示,我的 Mac 电脑上有 8G 内存,这样的话,只要为自己的 Mac 预留4G内存就可以了。
2、如果你不顾 Mac 上的物理内存,为虚拟机分配过多的内存的话,结果就会导致本身的 Mac 系统运行缓慢,从而也会导致虚拟机也支持缓慢。
内存分配原则二、根据虚拟机的用途
1、根据虚拟机的用途来分配内存,如果你只是在虚拟机上运行一些简单的应用,如办公,安装学习软件等,一般情况下划分1-2G 内存就可以了。1G=1024MB内存,2G=2048MB内存
2、如果你会在虚拟机上的系统中运行大型软件,需要大内存的话,建议是多分配一些内存,结合 Mac 自身的内存来分配。
内存分配原则三、根据系统来分配
1、小伙伴们一般在 Mac 上安装的应该都是 Windows 系统,如 Windows XP、Windows7、Windows8 等。如果是 Windows XP 系统的话,建议内存在 512MB-2G内存之间,都是可以的。
2、如果你是安装的 Windows7 或 Windows8 系统的话,由于这二套系统对硬件的资源占用相对 Windows XP 都会大一些,建议分配的内存不得少于 1GB 内存,最好是在 2G-4G 内存之间。
重新为虚拟机分配内存
1、当然在我们初次为虚拟机分配了内存以后,在以后是可以为它更改内存容量的。不过在为虚拟机重新分配内存时,需要关闭当前正在运行的虚拟机,也就是说虚拟机要处于关机状态。
2、这里以 VirtualBox 为例,在虚拟机的“设置”窗口中点击“系统”栏目,如图所示
3、随后在系统的“主板”下就可以重新为虚拟机分配内存了,如图所示
4、如果你是用的 Vmware 虚拟机的话,请先选中虚拟机,再点击“设置”按钮,如图所示
5、接着请在设置窗口中点击“处理器和内存”选项,如图所示
6、随后即可为虚拟机重新分配内存了,滑动内存分配滑杆即可调节。
读文网小编介绍了物理内存不足虚拟机mac的相关知识,希望你喜欢。
浏览量:2
下载量:0
时间:
Windows大家都已经很熟悉物理内存和虚拟内存了把,现在小编带你们走进Linux的虚拟内存和物理内存吧。
物理内存,在应用中,自然是顾名思义,物理上,真实的插在板子上的内存是多大就是多大了。看机器配置的时候,看的就是这个物理内存。 虚拟内存,这个概念就要稍微了解一下CPU了,^_^,只是稍微,毕竟我们现在谈的是应用中的概念。我们应该知道,对于一般的32位CPU,有32根地址线,那么它的寻址空间就是4GB。也就是说,如果没有其他的限制,我们的主板上最大可以安装4GB的物理内存。哈哈,一般的机器是不会装那么多物理内存的,大把的银子啊,性价比可合不上。程序员可不管这个,我们对CPU编程,不能一台机器根据你物理内存的大小我编一个程序吧?那也太原始社会了吧。所以程序员都是直接使用的4GB的奢侈的进程空间(或许,不应该用奢侈这么短视的词。曾几何时,128M的物理内存也是我们不可想象的呢?)。这怎么办?总不能不用那些程序了吧。好吧,这个问题交给OS去解决吧。这样,OS就提出了一个虚拟内存的概念。就是进程、用户、不必考虑实际上物理内存的限制,而直接对4GB的进程空间进行寻址。如果所寻址的数据实际上不在物理内存中,那就从“虚拟内存”中来获取。这个虚拟内存可以是一个专门文件格式的磁盘分区(比如linux下的swap分区),也可以是硬盘上的某个足够大的文件(比如win下的那个i386文件,好像是这个名字)。物理内存中长期不用的数据,也可以转移到虚拟内存中。这样的交换由OS来控制,用户看起来就好像物理内存大了一样。有了虚拟内存的概念,我们就可以自由的使用4GB的进程空间了。但是,前提是你的硬盘由足够的空间,而且你舍得划分出(4GB-物理内存)大的虚拟内存空间来。^_^。一般情况下,虚拟内存的大小,各个OS也进行了限制(比如linux的swap分区的大小,win下也可以调整虚拟内存文件的大小和位置)。所以,我们程序所能使用的存储空间大小就是:物理内存+虚拟内存。要调大虚拟内存,右键单击我的电脑,属性,高级,性能的设置,高级选项卡
浏览量:2
下载量:0
时间:
大家可能都对电脑的内存熟悉,可是说起虚拟内存和物理内存的话,我想,大部分人还是不熟悉的,下面小编给您做一个介绍。
物理内存是真正的内存,在应用中顾名思义,物理上,真实的插在板子上的内存是多大就是多大了。看机器配置的时候,看的就是这个物理内存。
虚拟内存是为了满足系统对超出物理内存容量的需求时在外存(如硬盘)上开辟的存储空间。由于虚拟内存其实是放在外存上,因而与物理内存相比读写速度都非常慢
那么虚拟内存有什么作用呢?
我们知道, 32位CPU,有32根地址线,那么它的寻址空间就是4GB。也就是说,如果没有其它的限制,我们的主板上最大可以安装4GB的物理内存。但是一般的机器是不会装那么多物理内存,而有时软件应用时所需内存确大大超过了物理内存,这怎么办?总不能不用那些程序了吧。OS就提出了一个虚拟内存的概念。就是进程、用户、不必考虑实际上物理内存的限制,而直接对 4GB的进程空间进行寻址。如果所寻址的数据实际上不在物理内存中,那就从“虚拟内存”中来获取。一般情况下,虚拟内存的大小,各个OS也进行了限制(比如linux的swap分区的大小,win下也可以调整虚拟内存文件的大小和位置)。所以,我们程序所能使用的存储空间大小就是:物理内存+虚拟内存.
浏览量:2
下载量:0
时间:
有网友问到小编物理虚拟内存是什么,那么物理虚拟内存到底是什么呢?读文网小编为大家介绍下。供大家参考!
前一段时间在面试总监的时候,总监问了我这样的一个问题:你跟我说说物理内存和虚拟内存到底是怎么一回事?
其实之前我看过这个问题,据我理解的,当时是这么回答的“进程在运行的时候,操作系统都为其分配一个4GB的地址空间,即所谓的虚拟地址空间,一般情况下,当我们的程序很大的时候,实际的物理内存根本不能满足我们的需求的时候,这个时候操作系统就会借助磁盘空间来做虚拟的内存空间,把当前进程不需要的数据放在磁盘上,等到用到的时候,在利用调度算法把所需要的数据从磁盘空间上调度到内存,虚拟内存就是为了扩大内存的容量,每当我们要运行一个程序的时候经过编译以后形成的仅仅是逻辑上的空间,根本不是可以直接运行的内存空间,所以它还存在一个地址映射的概念。”当时感觉回答的很是笼统,只见总监在最后说了一句,你下去还是把这一块的内容在好好看看,所以今天就好好的把这个概念理一理。
首先我从最基本的概念说起,什么是物理内存的概念,虚拟内存的概念?
物理内存,在应用中,自然是顾名思义,物理上,真实的插在板子上的内存是多大就是多大了。而在CPU中的概念,物理内存就是CPU的地址线可以直接进行寻址的内存空间大小。比如8086只有20根地址线,那么它的寻址空间就是1MB,我们就说8086能支持1MB的物理内存,及时我们安装了128M的内存条在板子上,我们也只能说8086拥有1MB的物理内存空间。同理我们现在大部分使用的是32位的机子,32位的386以上CPU就可以支持最大4GB的物理内存空间了。
先说说为什么会有虚拟内存和物理内存的区别。正在运行的一个进程,他所需的内存是有可能大于内存条容量之和的,比如你的内存条是256M,你的程序却要创建一个2G的数据区,那么不是所有数据都能一起加载到内存(物理内存)中,势必有一部分数据要放到其他介质中(比如硬盘),待进程需要访问那部分数据时,在通过调度进入物理内存。所以,虚拟内存是进程运行时所有内存空间的总和,并且可能有一部分不在物理内存中,而物理内存就是我们平时所了解的内存条。有的地方呢,也叫这个虚拟内存为内存交换区。关键的是不要把虚拟内存跟真实的插在主板上的内存条相挂钩,虚拟内存它是“虚拟的”不存在,假的啦,它只是内存管理的一种抽象!
那么,什么是虚拟内存地址和物理内存地址呢。假设你的计算机是32位,那么它的地址总线是32位的,也就是它可以寻址0~0xFFFFFFFF(4G)的地址空间,但如果你的计算机只有256M的物理内存0x~0x0FFFFFFF(256M),同时你的进程产生了一个不在这256M地址空间中的地址,那么计算机该如何处理呢?回答这个问题前,先说明计算机的内存分页机制。
计算机会对虚拟内存地址空间(32位为4G)分页产生页(page),对物理内存地址空间(假设256M)分页产生页帧(page frame),这个页和页帧的大小是一样大的,所以呢,在这里,虚拟内存页的个数势必要大于物理内存页帧的个数。在计算机上有一个页表(page table),就是映射虚拟内存页到物理内存页的,更确切的说是页号到页帧号的映射,而且是一对一的映射。但是问题来了,虚拟内存页的个数 > 物理内存页帧的个数,岂不是有些虚拟内存页的地址永远没有对应的物理内存地址空间?不是的,操作系统是这样处理的。操作系统有个页面失效(page fault)功能。操作系统找到一个最少使用的页帧,让他失效,并把它写入磁盘,随后把需要访问的页放到页帧中,并修改页表中的映射,这样就保证所有的页都有被调度的可能了。这就是处理虚拟内存地址到物理内存的步骤。
现在来回答什么是虚拟内存地址和物理内存地址。虚拟内存地址由页号(与页表中的页号关联)和偏移量组成。页号就不必解释了,上面已经说了,页号对应的映射到一个页帧。那么,说说偏移量。偏移量就是我上面说的页(或者页帧)的大小,即这个页(或者页帧)到底能存多少数据。举个例子,有一个虚拟地址它的页号是4,偏移量是20,那么他的寻址过程是这样的:首先到页表中找到页号4对应的页帧号(比如为8),如果页不在内存中,则用失效机制调入页,否则把页帧号和偏移量传给MMU(CPU的内存管理单元)组成一个物理上真正存在的地址,接着就是访问物理内存中的数据了。总结起来说,虚拟内存地址的大小是与地址总线位数相关,物理内存地址的大小跟物理内存条的容量相关。
第一层理解
1. 每个进程都有自己独立的4G内存空间,各个进程的内存空间具有类似的结构
2. 一个新进程建立的时候,将会建立起自己的内存空间,此进程的数据,代码等从磁盘拷贝到自己的进程空间,哪些数据在哪里,都由进程控制表中的task_struct记录,task_struct中记录中一条链表,记录中内存空间的分配情况,哪些地址有数据,哪些地址无数据,哪些可读,哪些可写,都可以通过这个链表记录
3. 每个进程已经分配的内存空间,都与对应的磁盘空间映射
问题:
计算机明明没有那么多内存(n个进程的话就需要n*4G)内存
建立一个进程,就要把磁盘上的程序文件拷贝到进程对应的内存中去,对于一个程序对应的多个进程这种情况,浪费内存!
第二层理解
1. 每个进程的4G内存空间只是虚拟内存空间,每次访问内存空间的某个地址,都需要把地址翻译为实际物理内存地址
2. 所有进程共享同一物理内存,每个进程只把自己目前需要的虚拟内存空间映射并存储到物理内存上。
3. 进程要知道哪些内存地址上的数据在物理内存上,哪些不在,还有在物理内存上的哪里,需要用页表来记录
4. 页表的每一个表项分两部分,第一部分记录此页是否在物理内存上,第二部分记录物理内存页的地址(如果在的话)
5. 当进程访问某个虚拟地址,去看页表,如果发现对应的数据不在物理内存中,则缺页异常
6. 缺页异常的处理过程,就是把进程需要的数据从磁盘上拷贝到物理内存中,如果内存已经满了,没有空地方了,那就找一个页覆盖,当然如果被覆盖的页曾经被修改过,需要将此页写回磁盘
总结:
优点:
1.既然每个进程的内存空间都是一致而且固定的,所以链接器在链接可执行文件时,可以设定内存地址,而不用去管这些数据最终实际的内存地址,这是有独立内存空间的好处
2.当不同的进程使用同样的代码时,比如库文件中的代码,物理内存中可以只存储一份这样的代码,不同的进程只需要把自己的虚拟内存映射过去就可以了,节省内存
3.在程序需要分配连续的内存空间的时候,只需要在虚拟内存空间分配连续空间,而不需要实际物理内存的连续空间,可以利用碎片。
另外,事实上,在每个进程创建加载时,内核只是为进程“创建”了虚拟内存的布局,具体就是初始化进程控制表中内存相关的链表,实际上并不立即就把虚拟内存对应位置的程序数据和代码(比如.text .data段)拷贝到物理内存中,只是建立好虚拟内存和磁盘文件之间的映射就好(叫做存储器映射),等到运行到对应的程序时,才会通过缺页异常,来拷贝数据。还有进程运行过程中,要动态分配内存,比如malloc时,也只是分配了虚拟内存,即为这块虚拟内存对应的页表项做相应设置,当进程真正访问到此数据时,才引发缺页异常。
补充理解:
虚拟存储器涉及三个概念: 虚拟存储空间,磁盘空间,内存空间
可以认为虚拟空间都被映射到了磁盘空间中,(事实上也是按需要映射到磁盘空间上,通过mmap),并且由页表记录映射位置,当访问到某个地址的时候,通过页表中的有效位,可以得知此数据是否在内存中,如果不是,则通过缺页异常,将磁盘对应的数据拷贝到内存中,如果没有空闲内存,则选择牺牲页面,替换其他页面。
mmap是用来建立从虚拟空间到磁盘空间的映射的,可以将一个虚拟空间地址映射到一个磁盘文件上,当不设置这个地址时,则由系统自动设置,函数返回对应的内存地址(虚拟地址),当访问这个地址的时候,就需要把磁盘上的内容拷贝到内存了,然后就可以读或者写,最后通过manmap可以将内存上的数据换回到磁盘,也就是解除虚拟空间和内存空间的映射,这也是一种读写磁盘文件的方法,也是一种进程共享数据的方法 共享内存
在内核态申请内存比在用户态申请内存要更为直接,它没有采用用户态那种延迟分配内存技术。内核认为一旦有内核函数申请内存,那么就必须立刻满足该申请内存的请求,并且这个请求一定是正确合理的。相反,对于用户态申请内存的请求,内核总是尽量延后分配物理内存,用户进程总是先获得一个虚拟内存区的使用权,最终通过缺页异常获得一块真正的物理内存。
1.物理内存的内核映射
IA32架构中内核虚拟地址空间只有1GB大小(从3GB到4GB),因此可以直接将1GB大小的物理内存(即常规内存)映射到内核地址空间,但超出1GB大小的物理内存(即高端内存)就不能映射到内核空间。为此,内核采取了下面的方法使得内核可以使用所有的物理内存。
1).高端内存不能全部映射到内核空间,也就是说这些物理内存没有对应的线性地址。不过,内核为每个物理页框都分配了对应的页框描述符,所有的页框描述符都保存在mem_map数组中,因此每个页框描述符的线性地址都是固定存在的。内核此时可以使用alloc_pages()和alloc_page()来分配高端内存,因为这些函数返回页框描述符的线性地址。
2).内核地址空间的后128MB专门用于映射高端内存,否则,没有线性地址的高端内存不能被内核所访问。这些高端内存的内核映射显然是暂时映射的,否则也只能映射128MB的高端内存。当内核需要访问高端内存时就临时在这个区域进行地址映射,使用完毕之后再用来进行其他高端内存的映射。
由于要进行高端内存的内核映射,因此直接能够映射的物理内存大小只有896MB,该值保存在high_memory中。内核地址空间的线性地址区间如下图所示:
从图中可以看出,内核采用了三种机制将高端内存映射到内核空间:永久内核映射,固定映射和vmalloc机制。
2.物理内存管理机制
基于物理内存在内核空间中的映射原理,物理内存的管理方式也有所不同。内核中物理内存的管理机制主要有伙伴算法,slab高速缓存和vmalloc机制。其中伙伴算法和slab高速缓存都在物理内存映射区分配物理内存,而vmalloc机制则在高端内存映射区分配物理内存。
伙伴算法
伙伴算法负责大块连续物理内存的分配和释放,以页框为基本单位。该机制可以避免外部碎片。
per-CPU页框高速缓存
内核经常请求和释放单个页框,该缓存包含预先分配的页框,用于满足本地CPU发出的单一页框请求。
slab缓存
slab缓存负责小块物理内存的分配,并且它也作为高速缓存,主要针对内核中经常分配并释放的对象。
vmalloc机制
vmalloc机制使得内核通过连续的线性地址来访问非连续的物理页框,这样可以最大限度的使用高端物理内存。
3.物理内存的分配
内核发出内存申请的请求时,根据内核函数调用接口将启用不同的内存分配器。
3.1 分区页框分配器
分区页框分配器 (zoned page frame allocator) ,处理对连续页框的内存分配请求。分区页框管理器分为两大部分:前端的管理区分配器和伙伴系统,如下图:
管理区分配器负责搜索一个能满足请求页框块大小的管理区。在每个管理区中,具体的页框分配工作由伙伴系统负责。为了达到更好的系统性能,单个页框的申请工作直接通过per-CPU页框高速缓存完成。
该分配器通过几个函数和宏来请求页框,它们之间的封装关系如下图所示。
这些函数和宏将核心的分配函数__alloc_pages_nodemask()封装,形成满足不同分配需求的分配函数。其中,alloc_pages()系列函数返回物理内存首页框描述符,__get_free_pages()系列函数返回内存的线性地址。
3.2 slab分配器
slab 分配器最初是为了解决物理内存的内部碎片而提出的,它将内核中常用的数据结构看做对象。slab分配器为每一种对象建立高速缓存。内核对该对象的分配和释放均是在这块高速缓存中操作。一种对象的slab分配器结构图如下:
可以看到每种对象的高速缓存是由若干个slab组成,每个slab是由若干个页框组成的。虽然slab分配器可以分配比单个页框更小的内存块,但它所需的所有内存都是通过伙伴算法分配的。
slab高速缓存分专用缓存和通用缓存。专用缓存是对特定的对象,比如为内存描述符创建高速缓存。通用缓存则是针对一般情况,适合分配任意大小的物理内存,其接口即为kmalloc()。
3.3 非连续内存区内存的分配
内核通过vmalloc()来申请非连续的物理内存,若申请成功,该函数返回连续内存区的起始地址,否则,返回NULL。vmalloc()和kmalloc()申请的内存有所不同,kmalloc()所申请内存的线性地址与物理地址都是连续的,而vmalloc()所申请的内存线性地址连续而物理地址则是离散的,两个地址之间通过内核页表进行映射。
vmalloc()的工作方式理解起来很简单:
1).寻找一个新的连续线性地址空间;
2).依次分配一组非连续的页框;
3).为线性地址空间和非连续页框建立映射关系,即修改内核页表;
vmalloc()的内存分配原理与用户态的内存分配相似,都是通过连续的虚拟内存来访问离散的物理内存,并且虚拟地址和物理地址之间是通过页表进行连接的,通过这种方式可以有效的使用物理内存。但是应该注意的是,vmalloc()申请物理内存时是立即分配的,因为内核认为这种内存分配请求是正当而且紧急的;相反,用户态有内存请求时,内核总是尽可能的延后,毕竟用户态跟内核态不在一个特权级。
看过“ 物理虚拟内存 ”
浏览量:2
下载量:0
时间:
虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间)。那么内存条物理内存怎么设置虚拟内存?读文网小编内存条物理内存设置虚拟内存的相关资料,下面大家跟着读文网小编一起去了解一下吧。
1、右击这台电脑,单击”属性“。
2、在系统属性对话框,选择”高级系统设置“。如下图。
3、点击”性能“——”设置“。如下图。
4、找到性能选项对话框中的”高级“菜单,找到”虚拟内存“,点击”更改“。如下图。
5、将”自动管理所有驱动器的分页文件大小“前面的勾去掉。
6、然后选择系统盘c盘,设置虚拟内存一般原则是:虚拟内存不设置在系统盘。所以,选择c盘后,勾选”无分页文件“,再单击”设置“,弹出的提示框中选择”是“。这样c盘分页文件,也就是虚拟内存就设置为0了,提高了系统盘运行效率。
7、然后需要将虚拟内存设置到非系统盘。比如设置在F盘,勾选”自定义大小“,初始值和最大值都设置为2048Mb,然后单击”设置“。再单击下面的应用和确定完成修改。修改后重启win10系统后(www.xitonghe.com )生效。
8、之所以将虚拟内存初始值和最大值设置为一样大,是为了防止系统频繁请求不同大小的分页文件,无故消耗系统资源,提高运行效率。
看过“ 内存条物理内存怎么设置虚拟内存”
浏览量:3
下载量:0
时间:
打开虚拟机时提示:“物理内存不足,无法使用配置的设置开启虚拟机。下面读文网小编分享解决VMware虚拟机物理内存不足无法使用的五种解决方法,需要的朋友可以参考下
注:以下解决方法针对 Windows 8.1 的主机环境,Win7 也可能适用。
方法一:
1、打开虚拟机时提示报错:“物理内存不足,无法使用配置的设置开启虚拟机。要修复此问题,请将该虚拟机的内存大小减少到 *** MB、将所有虚拟机使用的物理内存量增加到 *** MB,或调整其他内存设置,以允许交换更多的虚拟机内存。
本机应用程序和/或服务可能已锁定内存,这将阻止虚拟机启动。关闭不需要的应用程序或服务可能可以释放足够内存来启动此虚拟机。如果您以前能够在此主机上开启该虚拟机,请尝试重新引导此主机。重新引导主机后,可用于运行虚拟机的主机内存资源也许会比现在稍微多一些。“
解决方法如下,以下针对 Windows 8.1 的主机环境,Win7 也可能适用:
2、① 如果主机的操作系统版本是 Windows 8.1 或以上,请把 VMware Workstation 升级至10.0.4版本,此版本解决了在 Win8.1 下物理内存识别出错的问题。如果在升级版本之后虚拟机仍然不能正常启动,则可参考以下所有方法,依次尝试之。
方法二:
1、② 重启电脑,并在电脑启动之后优先打开VMware Workstation以让虚拟机享用足够的物理内存;
方法三:
1、③ 新建一个虚拟机(任意操作系统)并启动,此时通常情况下这个新的虚拟机是可以正常运行的,之前所创建的虚拟机也可以正常运行。
方法四:
1、虚拟机的菜单“编辑”→“首选项”,在左边的选项中选择“内存”。
2、将系统为虚拟机预留的主机物理内存提升至一个“警告临界值”,也就是大于这个值的时候会提示警告:预留内存量大于针对此系统建议的最大值,可能会降低系统性能。
方法五:
1、修改虚拟机的配置参数文件:
C:Documents and SettingsAll UsersApplication DataVMwareVMware Workstation 或 C:ProgramDataVMwareVMware Workstation 路径下的 config.ini,把 “prefvmx.useRecommendedLockedMemSize = ”设为"TRUE" “prefvmx.minVmMemPct = ”改成一个足够小的数,例如“1”。
2、然后再将系统的虚拟内存提高。右键在“计算机”上点击“属性”,在左侧点击“高级系统设置”。选择“高级”选项卡→性能“设置”按钮,选择“高级”选项卡→虚拟内存的“更改...”按钮。
3、在此处可自行设置分配到每个硬盘分区的虚拟内存分页文件大小,“无分页文件”意味着在该分区中不分配虚拟内存分页文件,页面文件占用的大小可以自定义。
注意事项:操作系统为Windows8.1或以上适用此方法,其他系统待验证。
看过“VM虚拟机提示物理内存不足怎么办 ”
浏览量:4
下载量:0
时间:
在存储器里以字节为单位存储信息,为正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址,称为物理地址(Physical Address),又叫实际地址或绝对地址。,读文网小编为大家介绍一下物理内存与虚拟内存(虚拟地址)的区别,供大家参考!
零碎的叫法常常来自与相对感觉深奥诙涩的虚拟内存概念。物理的东西,人们大多不去碰它,毕竟是实实在在存在的。而虚拟内存就经常有别冒名顶替的。“一个进程有4个GB的虚拟内存”这样的说法屡见不鲜,其实,这是混淆了4GB的进程地址空间和虚拟内存这两个概念。也算令一种解释吧,毕竟那4个GB也是见不着影的,也是虚拟的。
浏览量:2
下载量:0
时间:
内存主要作用是在计算机运行时为操作系统和各种程序提供临时储存。常见的物理内存规格有256M、512M、1G、2G等,现如今随着计算机硬件的发展,已经出现4G、8G甚至更高容量的内存规格。当物理内存不足时,可以用虚拟内存代替。那么win7电脑中的物理内存和虚拟内存怎么查看呢?小编为大家分享了win7电脑中的物理内存和虚拟内存怎么查看的解决方法,下面大家跟着读文网小编一起来了解一下吧。
1.返回到桌面界面,找到计算机图标,然后右键点击,选择属性,就会出现如下图中所示的界面,这里的安装内存就是咱们想要查询的物理内存的大小值。
2.接下来,咱们还是在这个窗口,点击左侧菜单中的高级系统设置,然后在弹出来的系统属性窗口中切换到高级这一栏,然后点击性能后面的设置按钮,在出现窗口中的最后一项,便是电脑的虚拟内存了,一般来说,虚拟内存是可以设置的。
看过“ win7电脑中的物理内存和虚拟内存怎么查看 ”
浏览量:2
下载量:0
时间:
打开虚拟机时提示报错:“物理内存不足,无法使用配置的设置开启虚拟机。那么启动VMware虚拟机“物理内存不足”怎么办呢?今天读文网小编与大家分享下解决启动VMware虚拟机“物理内存不足”的具体操作步骤,有需要的朋友不妨了解下。
重启电脑,并在电脑启动之后优先打开VMware Workstation以让虚拟机享用足够的物理内存;
浏览量:2
下载量:0
时间:
物理内存不足,无法使用配置的设置开启虚拟机。打开虚拟机的时候总是这样提示,那么启动VMware虚拟机“物理内存不足”怎么解决呢?今天读文网小编与大家分享下解决启动VMware虚拟机“物理内存不足”的具体操作步骤,有需要的朋友不妨了解下。
修改虚拟机的配置参数文件:
C:Documents and SettingsAll UsersApplication DataVMwareVMware Workstation 或 C:ProgramDataVMwareVMware Workstation 路径下的 config.ini,把 “prefvmx.useRecommendedLockedMemSize = ”设为"TRUE" “prefvmx.minVmMemPct = ”改成一个足够小的数,例如“1” 。
然后再将系统的虚拟内存提高。右键在“计算机”上点击“属性”,在左侧点击“高级系统设置”。选择“高级”选项卡→性能“设置”按钮,选择“高级”选项卡→虚拟内存的“更改...”按钮。
在此处可自行设置分配到每个硬盘分区的虚拟内存分页文件大小,“无分页文件”意味着在该分区中不分配虚拟内存分页文件,页面文件占用的大小可以自定义。
浏览量:4
下载量:0
时间:
打开虚拟机时提示报错:“物理内存不足,无法使用配置的设置开启虚拟机,那么虚拟机显示物理内存不足怎么解决呢?接下来大家跟着读文网小编一起来了解一下虚拟机显示物理内存不足的解决方法吧。
1、虚拟机的菜单“编辑”→“首选项”,在左边的选项中选择“内存”。
2、将系统为虚拟机预留的主机物理内存提升至一个“警告临界值”,也就是大于这个值的时候会提示警告:预留内存量大于针对此系统建议的最大值,可能会降低系统性能。
所谓"内存不足"就是指在启动或运行DOS应用程序和Windows应用程序时,系统报"Out of
memory"或"内存不足"的错误信息。"内存不足"是一种很常见的故障,运行DOS应用程序和Windows应用程序引起"内存不足"的原因不完全相同。
知识拓展:
一、DOS下的内存不足
如果是在运行DOS应用程序时出现" Out of memory"(内存不足)的故障,可按以下方法进行检查和处理:
1、检查系统是否提供对扩充内存的支持,必须保证CONFIG.SYS文件中的EMM386.EXE命令中含有RAM参数,关于RAM参数的设置请参考相关文章,这里就不述叙;
2、 如果故障仍存在,检查DOS内核程序与其它运行的应用程序是否兼容,某些程序是否占用了大量的常规内存,并作出相应的处理。
举个例子:一次我在运行WPS
时,屏幕显示"内存不够",系统无法运行。考虑到在运行WPS之前曾执行过一些其它程序,可能是这些程序没有完全从内存中退出,于是重新启动,运行金山汉字系统,WPS
编辑软件仍无法进入,用DOS
6.22的Mem命令查看内存,仅剩200KB左右的空间,且CHLIB文件占用主内存达255KB,即字库放在了常规内存中,而金山系统是应该可以自动使用扩展内存存放字库的,查看系统配置情况,在CONFIG.SYS中设有:
DEVICE=C:DOSHIMEM.SYS
DOS=HIGH
这就是说,DOS内核程序调入扩展内存后,虽然扩大了可用主内存空间,但是由于扩展内存与金山系统发生冲突,以致汉字库无法载入扩展内存。解决的办法有两种:
1、去掉DOS=HIGH设置,将DOS内核程序从扩展内存撤出,即可正常运行。
2、将"/DEVICE=C:DOSHIMEM.SYS"改为"/DEVICE=C:DOSHIMEM.SYS/INT15=320",因金山系统使用的是扩展内存的低端,这一区域若有其它程序驻留,字库就不能正常载入,利用INT15参数给系统先预留出一部分传统的扩展存储器(即不由XMS规范管理而由INT15直接使用的扩展存储器),字库和DOS内核都可使用扩展内存了,这样设置之后,在金山汉字系统状态下可用的主内存空间可达512KB,比不设置时多出250KB左右。
二、Windows中的内存不足
如果在运行Windows应用程序时,出现"内存不足"的故障,可按下列方法进行检查和处理:
1、首先应检查Windows的资源使用情况,如果资源占用较多,可用资源较少,打开新文件时会出现"内存不足"的问题。这时可以清理屏幕,减少窗口的数目,关闭不用的应用程序,包括TSR内存驻留程序,将Windows应用程序最小化为图标,如果问题只是在运行一特殊的应用程序时出现,则与应用软件销售商联系,可能是数据对象的管理不好所致;
2、如果问题没有解决,清除或保存Clipboard(剪贴板)的内容,使用ControlPanel
Desktop选项将墙纸(Wallpaper)设置为None;
3、如问题仍存在,可用PIF编辑器编辑PIF文件,增大PIF文件中定义的MemoryRequirements:KB
Required的值;在标准模式下,选择Prevent
ProgramSwitch,该开关选项打开后,退出应用程序返回Windows;如果是386增强模式,则要将Display
Usage设置成Full Screen(全屏幕方式),将Execution设置为Exclusive,将Video
memory设置为尽可能低的方式;
4、
如果问题仍存在,则重新开机进入Windows系统,并且确保在"启动"图标中没有其它无关的应用软件同时启动运行,在WIN.INI文件中也没有Run或Load命令加载的任何无关的应用程序。
在平时,出现"内存不足"的问题一般可以按以下办法处理。
首先,退出那些不需要运行的应用程序,然后,再检查系统的可用资源为多少。如果可用资源大于30%,一般可以运行新的程序。当有多个应用程序在系统中运行时,可以退出一个,检查一次可用资源,如果某个应用程序在退出前后,可用资源的百分比没有变化,说明这个应用程序没有释放它所占用的资源。如果要收回这些没有释放的资源,只能退出Windows后,再重新进入Windows。为了确保在启动进入Windows时系统的可用资源足够,在"启动"图标中应该没有无关的应用软件同时启动运行,在WIN.INI文件中也没有由Run或Load命令加载的任何无关的应用程序,因为这些同时启动的无关应用程序可能已经占用了很多资源,使得要使用的应用程序无法运行。
一般说来,经过这样处理,就不会出现"内存不足"的问题了.
看过“虚拟机显示物理内存不足怎么解决”
浏览量:2
下载量:0
时间: