虚拟内存和硬件内存有什么区别

网络 z197 751次浏览 已收录 用手机观看

虚拟内存和硬件内存

1.虚拟内存地址和物理内存地址

操作系统会提供一种机制,将不同进程的虚拟地址和不同内存的物理地址映射起来。
如果程序要访问虚拟地址的时候,由操作系统转换成不同的物理地址,这样不同的进程运行的时候,写入的是不同的物理地址,这样就不会冲突了。
于是,这里就引出了两种地址的概念:
我们程序所使用的内存地址叫做虚拟内存地址(Virtual Memory Address)
实际存在硬件里面的空间地址叫物理内存地址(Physical Memory Address)。
操作系统引入了虚拟内存,进程持有的虚拟地址会通过 CPU 芯片中的内存管理单元(MMU)的映射关系,来转换变成物理地址,然后再通过物理地址访问内存,如下图所示:

2. 为什么有虚拟内存?

CPU是直接操作内存的物理地址。
在这种情况下,如果两个程序占用的内存有重叠,要想同时运行两个程序是不可能的。
如果第一个程序在2000的位置写入一个新的值,将会擦掉第二个程序存放在相同位置上的所有内容。
所以同时运行两个程序是根本行不通的,这两个程序会立刻崩溃。
因此,有了虚拟内存。每个进程分配独立的一套虚拟地址,互不干涉。(虚拟地址由操作系统负责映射到物理内存)