`

什么是物理内存、虚拟内存、交换区?

 
阅读更多
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了。真是大的惊人,看来,这么大的地址空间,一时还不能被软件的发展淘汰 .
3、零碎的叫法。
零碎的叫法常常来自与相对感觉深奥诙涩的虚拟内存概念。物理的东西,人们大多不去碰它,毕竟是实实在在存在的。而虚拟内存就经常有别冒名顶替的。“一个进程有4个GB的虚拟内存”这样的说法屡见不鲜,其实,这是混淆了4GB的进程地址空间和虚拟内存这两个概念。也算令一种解释吧,毕竟那4个GB也是见不着影的,也是虚拟的。
虚拟内存:
虚拟内存指在硬盘中开辟出的、用于辅助物理内存交换数据的那部分空间,在WINDOWS中可以指定其大小,也可以让WINDOWS自动调节。
进入“控制面板/系统/高级/性能/设置/高级/虚拟内存/更改”,来到虚拟内存设置窗口,首先确定你的页面文件在哪个驱动器盘符,然后将别的盘符驱动器的页面文件全部禁用。建议你把它是设置到其他分区上,而不是默认的系统所在的分区,这样可以提高页面文件的读写速度,有利于系统的快速运行。根据微软的建议,页面文件应设为内存容量的1.5倍,但如果你的内存比较大,那它占用的空间也是很可观的,所以,建议如果内存容量在256MB以下,就设置为1.5 倍,最大值和最小值一样,如果在512MB以上,设置为内存容量的一半完全可行。
交换区:一块内存区域或硬盘区域,用来处理数据交换.
分享到:
评论

相关推荐

    深入理解linux虚拟内存管理(中+英)

    Linux虚拟内存管理是操作系统设计中的核心部分,它允许程序访问比实际物理内存更大的地址空间,同时优化了内存的使用效率。这一系统通过映射技术,将进程的虚拟地址转换为实际物理地址,使得多个进程可以共享同一...

    操作系统---虚拟存储区和内存工作区

    虚拟存储系统通过将物理内存与硬盘上的交换空间结合,创建了一个逻辑上比实际物理内存大得多的地址空间,即虚拟存储区。每个进程都有自己独立的虚拟地址空间,使得多个进程可以并发运行,而不会相互干扰。 虚拟...

    【操作系统课程设计】使用C++实现模拟虚拟内存系统

    3. **页替换算法**:当物理内存不足时,操作系统会采用页替换算法将部分页移出内存到磁盘的交换区。常见的算法有最近最少使用(LRU)、最不经常使用(LFU)等,C++实现时需要设计相应的数据结构和算法。 4. **内存...

    虚拟内存分配示例的资源

    虚拟内存是计算机操作系统中的一种重要概念,它是一种内存管理技术,允许程序使用超过物理内存容量的地址空间。在本文中,我们将深入探讨虚拟内存分配的原理、作用以及如何在实际应用中进行分配。 虚拟内存的核心...

    Linux内核的内存管理探秘之四 虚拟内存的管理.pdf

    虚拟内存技术是现代操作系统中的一个关键技术,它克服了旧有的内存管理的限制,允许系统运行比物理内存大的应用程序,同时也允许把暂时不用的页交换到磁盘,从而得到更多的可用内存。本文将深入剖析 Linux 内核的...

    UCOS 内存虚拟文件系统

    内存虚拟文件系统,顾名思义,是在内存中实现的一种模拟文件系统的机制,它不依赖于物理存储介质,而是利用内存来模拟文件的创建、读写和删除等操作,为应用程序提供类似传统文件系统的功能。 UCOS内存虚拟文件系统...

    深入理解Linux虚拟内存管理_英文原版

    1. **虚拟内存**:虚拟内存是一种技术,它使得一个进程能够访问的地址空间远远超过系统中实际存在的物理内存大小。这种技术通过将部分不常用的内存页面交换到磁盘上(称为分页或交换)来实现。 2. **分页机制**:...

    Linux设置虚拟内存

    虚拟内存是现代操作系统中一项关键技术,它允许系统将部分物理内存(RAM)的页面暂时转移到硬盘上,从而为运行更多或更大的程序腾出空间。在Linux系统中,这一功能同样存在,对于那些希望优化系统性能或者解决内存...

    实验六 Windows 2000虚拟内存.rar_虚拟内存_虚拟实验

    虚拟内存是计算机系统内存管理的一种技术,它使得应用程序认为它拥有连续的可用内存(一个连续完整的地址空间),而实际上,它通常被分隔成多个物理内存碎片,还有些暂时存储在外部磁盘存储器上,在需要时进行数据...

    虚拟内存的意思

    3. **交换文件/分区**:除了物理内存外,系统还会在硬盘上的交换文件或分区中为进程分配额外的空间。这些空间用于存储历史上活跃但目前较少访问的代码和数据。当物理内存紧张时,系统可能会将这部分数据换出到磁盘,...

    Linux操作系统内存管理.pdf

    Linux操作系统的内存管理机制还包括延迟分配和请页机制释放内存时,先释放线性区对应的物理内存,然后释放线性区。这就叫做延迟分配和请页机制,充分利用了程序的局部性,节约内存空间,提高系统吞吐。 Linux操作...

    用JAVA做的虚拟内存管理.rar,JDK是6.2

    虚拟内存管理是操作系统的重要组成部分,它允许程序使用比实际物理内存更大的地址空间,并在需要时动态地将部分数据交换到磁盘上。 首先,虚拟内存系统由以下几个关键组件构成: 1. **堆内存**:这是Java程序的...

    内存虚拟硬盘

    内存虚拟硬盘技术是一种高效利用计算机内存的技术,它允许操作系统将一部分物理内存作为临时存储空间,类似于硬盘,但速度远超传统的机械硬盘或固态硬盘。这种技术尤其在处理大量临时数据、缓存或者运行高性能应用时...

    操作系统课程设计报告书-设计一个虚拟存储区和内存工作区.doc

    虚拟存储技术允许程序使用比实际物理内存更大的地址空间,通过将部分数据和代码存储在磁盘上的交换区域(称为“交换文件”或“页面文件”)来实现这一点。当需要访问的数据不在内存中时,操作系统会进行页面调度,将...

    深入理解Linux虚拟内存管理

    本文将详细介绍Linux虚拟内存管理机制,包括物理内存的描述、页表管理、进程地址空间、启动时内存分配器、物理页面分配、非连续内存分配、slab分配器以及高内存管理等核心概念和技术细节。 #### 物理内存描述 物理...

    Linux虚拟内存管理基础v2共23页.pdf.zip

    首先,我们需要理解什么是虚拟内存。虚拟内存是一种技术,它允许每个进程都有一个独立的地址空间,这个空间可以比实际物理内存大得多。通过虚拟内存,进程可以直接访问超出物理内存大小的地址,这些超出的部分会被...

    操作系统实验五 虚拟内存页面置换算法

    虚拟内存允许程序使用超过实际物理内存大小的地址空间,通过将不常用的数据存储到硬盘上,形成一个“虚拟”的内存空间。当需要访问这些数据时,操作系统会自动将其调入内存,这一过程称为页面交换。然而,由于内存和...

    操作系统课件-虚拟内存.rar

    虚拟内存的基本思想是将物理内存(RAM)与硬盘上的交换空间相结合,形成一个逻辑上比实际物理内存大的内存空间。这样,即使物理内存不足,系统也能运行多个大型程序,因为不常用的数据可以被暂时移出内存到硬盘上,...

    行业分类-设备装置-一种面向MIPS平台的内存虚拟化方法.zip

    内存虚拟化是现代计算机系统中的关键技术之一,尤其在多任务、多用户环境下,它为操作系统提供了隔离和管理物理内存的有效手段。本主题聚焦于一种面向MIPS(Microprocessor without Interlocked Pipeline Stages)...

    重大软院操作系统实验四:虚拟内存

    虚拟内存是一种内存管理技术,它为每个进程提供了一个独立的、连续的内存空间,即使实际物理内存可能是分散的。这种技术允许程序运行时无需一次性全部加载到内存中,而是根据需要动态地将部分代码和数据从硬盘交换到...

Global site tag (gtag.js) - Google Analytics