虚拟地址、虚拟内存、物理地址、物理内存

虚拟地址、虚拟内存、物理地址、物理内存

物理内存和虚拟内存

物理内存

  • 物理内存时有限的,当有多个进程要执行的时候,假设都要给4G内存,很显然你内存小一点,这很快就分配完了,于是没有得到分配资源的进程就只能等待。当一个进程执行完了以后,再将等待的进程装入内存。这种频繁的装入内存的操作是很没效率的
  • 由于指令都是直接访问物理内存的,那么我这个进程就可以修改其他进程的数据,甚至会修改内核地址空间的数据,这是我们不想看到的

虚拟内存

  • 通过 虚拟内存 可以让程序可以拥有超过系统物理内存大小的可用内存空间。另外,虚拟内存为每个进程提供了一个一致的、私有的地址空间,它让每个进程产生了一种自己在独享主存的错觉(每个进程拥有一片连续完整的内存空间)
  • 使用虚拟寻址,CPU需要将虚拟地址翻译成物理地址,这样才能访问到真实的物理内存。 实际上完成虚拟地址转换为物理地址转换的硬件是 CPU 中含有一个被称为 内存管理单元(Memory Management Unit, MMU)的硬件。MMU 需要借助存放在内存中的页表来动态翻译虚拟地址,该页表由操作系统管理。

虚拟地址、物理地址

首先,我们打开一个进程发一个指令,会生成一个虚拟地址,该虚拟地址中有虚拟页号和页偏移量,由虚拟页号和MMU中的页表寄存器(表示页表在主存当中的起始位置)做一个偏移,就可以找到与这个虚页号对应的页表项在主存当中的物理地址,如果有效位为1的话,表示当前主存有这个页,那么我们就将这个页表项取出来,也就是知道了物理页号,再用这个物理页号与虚拟地址中的页内偏移相拼接,这样就得到物理地址。这样实现了虚拟地址向物理地址转化的过程。

如果有效位为0的话,表示要的页不在主存中,这个时候产生一个缺页异常,请求操作系统将所需要页调换进主存。之后返回产生缺页异常的进程,再次进行虚实地址的转化。
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值