虚拟内存和物理内存的区别和联系

1. 虚拟内存的发展由来

        在计算机的远古时代其实还没有虚拟内存机制,程序指令所访问的内存地址就是物理内存地址. 也就是不得不把程序的全部装进内存当中,然后运行 。

        首先我们知道的物理内存其实就是插在计算机主板内存槽上的实际物理内存,CPU可以直接进行寻址. 物理内存的容量是固定的,但是寻址空间却取决于cpu地址线条数,如32位机,则寻址空间为2^32 = 4G.所以最大支持4G的寻址空间.即使我们插入了16G的内存条,我们也只是拥有4G内存.我们其实发现无论好多事物只要是一个一成不变的就会慢慢的出现各种问题,然后就得找到它的解决方法.这不物理内存也出现问题了.现在假设没有虚存机制,我们要运行一个程序,就不得不把程序的全部装入内存当中,然后运行.这个时候就会出现以下问题:

  • 现在有多个程序需要运行,但是内存空间不足了,就需要将其他程序暂时拷贝到硬盘当中,然后将新的程序装入内存运行.由于大量的数据装入装出,内存的使用效率会十分Low.
  • 由于程序都是直接访问物理内存的,所以一个进程可以修改其他进程的内存数据,甚至修改内核地址空间中的数据
  • 因为内存地址是随机分配的,所以程序运行的地址也是不正确的.

        我们可以看出来,这就是早期没有虚存机制的无奈.所以前辈们经过不懈努力找到了虚拟内存机制。

  • 进程创建加载的时候,自身感知获得了一个连续的内存地址空间,而实际上内核只是分配了一个逻辑上的虚拟内存空间,并且对虚拟内存和磁盘通过mmap做映射关系,对虚拟内存和物理内存的映射关系; 等到程序真正运行的时候,需要某些数据,并且不在虚拟内存中,才会触发缺页异常,进行数据拷贝.说白了虚拟内存就是磁盘上面的一
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值