当前位置:首页 > 内存 > 正文

linux物理内存和虚拟内存

  • 内存
  • 2024-06-08 11:44:26
  • 1397

一、物理内存,交换区和虚拟内存各是什么意思物理内存(RAM)是指RAM(记忆棒)提供的临时数据存储空间。
交换空间是指Unix/Linux系统前端和后端之间交换数据的虚拟区域。Unix/Linux系统中的内存
虚拟内存一般是指在磁盘存储上存储临时数据的技术(简单来说就是留出一部分磁盘作为临时RAM)。Windows系统上的“交换空间”和Linux系统上的“交换空间”都是虚拟内存
二、什么叫物理内存和虚拟内存类别:计算机/网络>>操作系统/系统故障
分析:
1.
物理内存,在应用中,当然是顾名思义。看机器配置的时候,看这个物理内存。
虚拟内存,这个概念需要对CPU有一点了解,^_^,就一点点,毕竟我们是在应用中谈论这个概念。要知道,对于一般的32位CPU来说,有32条地址线,所以它的地址空间是4GB。也就是说,如果没有其他限制的话,我们的主板上最多可以安装4GB的物理内存。哈哈,普通机器不会装那么多物理内存,要花很多钱,性价比没有可比性。程序员不关心这个当我们对CPU进行编程时,我们不能根据你的物理内存的大小来对机器进行编程,对吗?这将是一个非常原始的社会。因此,程序员直接使用4GB的豪华进程空间(或许,我们不应该使用豪华这样短视的词,曾经,1.28亿物理内存对我们来说是不可想象的?)。应该做什么?我不能没有这些程序。好吧,这个问题就交给操作系统来解决吧。这样,操作系统就提出了虚拟内存的概念。即进程和用户不需要考虑实际的物理内存限制,直接寻址4GB进程空间。如果要寻址的数据实际上不在物理内存中,则从“虚拟内存”中获取。这个虚拟内存可以是特殊文件格式的磁盘分区(比如Linux下的swap分区),也可以是硬盘上相当大的文件(比如win下的i386文件,好像就是这个名字)。物理内存中长期不用的数据也可以转移到虚拟内存中。这种类型的交换由操作系统控制,并且对用户来说就像物理内存更大一样。有了虚拟内存的概念,我们就可以自由使用4GB的进程空间。不过,前提是你的硬盘有足够的空间,并且你愿意共享大量的虚拟内存(4GB-物理内存)。^_^。一般情况下,虚拟内存的大小也受到各个操作系统的限制(比如Linux中交换分区的大小,win下也可以调整虚拟内存文件的大小和位置)。因此,我们的程序可以使用的存储空间大小为:物理内存+虚拟内存。
2CPU中的概念。
物理内存,CPU的地址线可以直接寻址的内存空间的大小。例如,8086只有20条地址线,因此它的地址空间为1MB。假设8086可以支持1MB物理内存。即使我们在板上安装了128M的内存模块,我们也只能说8086有1MB的物理内存空间。同样,32位386或更高的CPU可以支持最大4GB的物理内存空间。
虚拟内存,这是一个与CPU的寻址方式相关的概念。在x86架构中,为了更好地管理内存空间,内存以分段的方式寻址。例如8086使用两字节的段基地址和两字节的偏移地址来对整个可寻址内存空间进行寻址,即:mode0000:0000(具体如何计算实际地址,请参见杂项资料编译教程)。这样,寻址整个1MB物理内存空间就没有问题了。然而,在此模式下,最大可寻址地址为10FFEF。这就超过了20条地址线的FFEF地址大小空间,可以说是8086的虚拟内存,所以可以说8086的虚拟内存地址空间可以达到10FFEF。^_^如何使用和处理这块内存取决于A20线是否关闭。同样,386以上的CPU在保护模式下使用GDT和LDT来设置内存中的段定义,从而可以使用16位段地址和32位偏移地址。这样算下来,386以上CPU的虚拟内存地址空间可达64TB。真是太神奇了看来这么大的地址空间在软件开发中一时半会儿是无法消除的。
3个零碎的名字。
系统的名称往往来自于相对神秘的虚拟内存概念。大多数人不会接触物理事物,毕竟它们是存在的。并且通常会强制使用虚拟内存。经常说“一个进程有4GB虚拟内存,实际上,这混淆了4GB进程地址空间和虚拟内存这两个概念”。毕竟这也算是一种解释,那4GB是不可见的、虚拟的。