物理内存和虚拟内存又是什么
发布网友
发布时间:2022-05-12 13:12
我来回答
共3个回答
热心网友
时间:2023-07-21 17:28
1、应用中的概念。
物理内存,在应用中,自然是顾名思义,物理上,真实的插在板子上的内存是多大就是多大了。看机器配置的时候,看的就是这个物理内存。
虚拟内存,这个概念就要稍微了解一下CPU了,^_^,只是稍微,毕竟我们现在谈的是应用中的概念。我们应该知道,对于一般的32位CPU,有32根地址线,那么它的寻址空间就是4GB。也就是说,如果没有其他的*,我们的主板上最大可以安装4GB的物理内存。哈哈,一般的机器是不会装那么多物理内存的,大把的银子啊,性价比可合不上。程序员可不管这个,我们对CPU编程,不能一台机器根据你物理内存的大小我编一个程序吧?那也太原始社会了吧。所以程序员都是直接使用的4GB的奢侈的进程空间(或许,不应该用奢侈这么短视的词。曾几何时,128M的物理内存也是我们不可想象的呢?)。这怎么办?总不能不用那些程序了吧。好吧,这个问题交给OS去解决吧。这样,OS就提出了一个虚拟内存的概念。就是进程、用户、不必考虑实际上物理内存的*,而直接对4GB的进程空间进行寻址。如果所寻址的数据实际上不在物理内存中,那就从“虚拟内存”中来获取。这个虚拟内存可以是一个专门文件格式的磁盘分区(比如linux下的swap分区),也可以是硬盘上的某个足够大的文件(比如win下的那个i386文件,好像是这个名字)。物理内存中长期不用的数据,也可以转移到虚拟内存中。这样的交换由OS来控制,用户看起来就好像物理内存大了一样。有了虚拟内存的概念,我们就可以自由的使用4GB的进程空间了。但是,前提是你的硬盘由足够的空间,而且你舍得划分出(4GB-物理内存)大的虚拟内存空间来。^_^。一般情况下,虚拟内存的大小,各个OS也进行了*(比如linux的swap分区的大小,win下也可以调整虚拟内存文件的大小和位置)。所以,我们程序所能使用的存储空间大小就是:物理内存+虚拟内存。
2、CPU中的概念。
物理内存,CPU的地址线可以直接进行寻址的内存空间大小。比如8086只有20根地址线,那它的寻址空间就是1MB。我们就说8086能支持1MB的物理内存。即使我们安装了128M的内存条在板子上,我们也只能说8086拥有1MB的物理内存空间。同理32位的386以上CPU,就可以支持最大4GB的物理内存空间了。
虚拟内存,这便是一个和CPU的寻址方式有关的一个概念了。x86体系结构中,为了更好的管理内存空间,采用分段的方式来对内存进行寻址。比如8086就用两个字节的段基地址和两个字节的偏移地址来寻址整个可以寻址的内存空间,即:0000:0000方式(具体怎么计算出实际的地址,参见各种汇编教材)。这样,对整个1MB的物理内存空间寻址是没有问题了。可是,用这种方式,最大可以寻址到10FFEF这个地址。这超出了20根地址线的地址的FFEF大小的空间,就可以说是8086的虚拟内存了,所以可以说8086的虚拟内存地址空间可以达到10FFEF。^_^,具体怎么使用和看待这段内存,还取决于A20线的选通与否了,这是另外的话题了。同样的道理,386以上的CPU,由于在保护模式下使用了GDT和LDT,将段的定义放到了内存中,从而可以使用16位的段地址和32位的偏移地址。这样算来,386以上的CPU的虚拟内存地址空间就可以达到64TB了。真是大的惊人,看来,这么大的地址空间,一时还不能被软件的发展淘汰。
热心网友
时间:2023-07-21 17:29
物理内存,就是插在你主板上实实在在的内存
虚拟内存,是Windows的机制,防止物理内存不足,在硬盘上虚拟出一个内存,把暂时不用的文件放到这里,保证物理内存够用。
热心网友
时间:2023-07-21 17:29
物理内存就是你电脑上带的内存卡是多少,比如现在一般的是1g到2g的,也有4g,8g的。虚拟内存是在硬盘上开辟一段空间来当物理内存使用,开辟多少根据你的物理内存决定,比如1g的物理内存一般开辟1.5g的虚拟内存,虚拟内存在电脑是以一个文件形式出现的,你把文件夹选项改成可以看到系统隐藏的文件,在c盘根目录下就可以看到一个叫pagefile.sys的文件,那个是多大虚拟内存就多大,设置虚拟内存的方法。。。给忘了,自己网上一查就查到了。。。