物理内存和虚拟内存的区别(浅析)

首先,我们先简单理解一下而这之间概念区别:

物理内存: 值通过物理内存条而获得的内存空间,是计算机上最重要的资源之一,从本质来说,物理内存是代码和数据在其中运行的窗口,物理内存是和cpu实现交互的重要硬件设备.

虚拟内存: 与物理内存相反,是指根据系统需要从硬盘中虚拟的划出一部分存储空间,是一种计算机系统的管理技术,数据计算机的程序.

下面将进行详细的介绍:

物理内存的作用: 计算机运行时为操作系统和各种程序提供临时的存储作用,而这种存储是没有写入硬盘的,在计算机关机后就会丢失.

物理内存工作的原理和流程:

首先,内存会从cpu获得需要查找到某个数据的指令,然后根据存储的位置信息,去找到数据存放的真实位置,这个过程式寻址, 对于电脑系统而言,找出这个地方时还必须确定是否位置正确,因此电脑还必须判读该地址的信号,横坐标有横坐标的信号(也就是RAS信号,Row Address Strobe)纵坐标有纵坐标的信号(也就是CAS信号,Column Address Strobe),最后再进行读或写的动作。每次访问一个地址都时需要将逻辑地址翻译为真实的物理地址,

所有的程序都时共享一个物理内存,这需要每个进程将自己目前需要的资源的虚拟地址映射到真实的物理内存上去,,进程需要知道那些地址空间是在内存上,那些在磁盘中,还要记录具体数据资源的存储位置,这些都记录在页表中,当一个进程需要访问资源寻找数据的时候,就会访问页表,查找对应的映射表,如果发现资源不在页表上,就会发生缺页异常,,缺页异常的处理过程, 操作系统立即阻塞该进程,并将硬盘里对应的页换入内存,然后使该进程就绪,如果内存已经满了,没有空地方了,那就找一个页覆盖,至于具体覆盖的哪个页,就需要看操作系统的页面置换算法.

物理内存和虚拟内存的区别(浅析)_第1张图片

置换算法发生后,os会从物理内存中再配一个物理页,然后将该”缺页”从磁盘中读到内存中,再设置缺页的虚拟页,和物理页的映射关系,,这样程序才会继续运行下去, 但是很明显的一点是,当操作系统捕获到缺页错误时,它应知道程序当前所需要的页在可执行文件中的哪一个位置。这就是虚拟空间与可执行文件之间的映射关系。这里的可执行文件的入口地址是虚拟内存地址,那么就可能存在两个可执行程序的虚拟入口地址相同的问题,这个问题怎么解决呢?这时一个叫做“内存管理单元(Memory Management Unit)”简称“MMU”的硬件就诞生了,它的作用之一就是地址翻译,将虚拟地址翻译成物理地址,可以看下图,

物理内存和虚拟内存的区别(浅析)_第2张图片

 

虚拟内存的作用:

通过虚拟技术,将外部存储设备的一部分空间,划分给系统,作为在内存不足时临时用作数据缓存。. 虚拟内存别称虚拟存储器(Virtual Memory)。. 电脑中所运行的程序均需经由内存执行,若执行的程序占用内存很大或很多,则会导致内存消耗殆尽。. 为解决该问题,os中运用了虚拟内存技术,即匀出一部分硬盘空间来充当内存使用。. 当 内存 耗尽时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。.

主要在以下方面:

  1. 被作为缓存的工具

概念上,虚拟内存被组织为一个由存放在磁盘上的N个连续字节大小的单元组成的数组。每字节都有一个唯一的虚拟地址,作为数组的索引。磁盘上的内容被缓存在主存中。
VM系统将虚拟内存分割为大小固定的块,称为虚拟页(VP,来作为磁盘和主存之间的传输单元。每个虚拟页的大小为P=2^p字节。类似地,物理内存也被分割为物理页(PP(也称为页帧),大小也是P字节。

  1. 作为内存管理工具

os为每个进程都分配了一个独立的页表,因此就独立的虚拟地址空间,

多个虚拟页面可以映射到同一个共享物理页面上,

  1. 虚拟内存作为内存保护工具:

操作系统会控制进程对内存系统的访问,例如:

1. 不允许一个用户进程修改它的只读代码段;

2. 不允许用户进程读或修改任何内核中的代码和数据结构;

3. 不允许用户进程读或写其他进程的私有内存;

4. 不允许用户进程修改任何其他进程共享的虚拟页表

而提供独立的地址空间是的区分不同进程的私有内存变得容易。但是,地址翻译机制可以从一种自然的方式扩展到提供更好的访问控制。CPU每次生成一个地址时,地址翻译硬件都会读一个PTE。所以通过在PTE上添加额外的许可位来控制对一个虚拟页面内容的访问十分简单。

 

你可能感兴趣的:(Linux运维,服务器)