操作系统的虚拟内存和物理内存

  早期的计算机系统只有物理内存的概念,所谓的物理内存就是真实的内存直观一点就是计算机的内存条,他的大小决定了内存的大小。但是直接使用物理内存会存在很多的问题,首先就是直接使用物理内存可能会产生很多的内存碎片,因为如果把程序读取到内存需要连续的内存空间,由于对物理内存进行分页后会导致很多次的内存分割这样会产生很多的内存碎片。直接使用物理内存最主要的问题就是内存不足的问题,如果一个需要很大内存的程序需要运行而此时的物理内存大小不足以支撑这个程序的运行这是就会内存溢出。
  由于以上的种种不足物理内存也就诞生了。所谓的虚拟内存是一种抽象的逻辑的一种概念,他不是实际存在的内存,只是一段连续的内存地址他的实际内存可能在磁盘也可能在物理内存,,当程序运行时会首先将程序维护到虚拟内存中,而物理内存中只读取需要的程序,不再运行的程序和代码及时从内存中删除,提高了内存的利用率,保证了大程序能在小内存上运行。然后通过一定的映射机制将虚拟内存的地址映射到物理内存。
  接下来讲下物理内存和虚拟内存映射的关系,要了解他两个的关系就首先要大体知道操作系统的内存管理机制,现代操作系统所支持的内存管理机制主要有页式存储管理,段式存储管理以及段页式存储管理等,咱们接下来以页式存储管理机制为例讲下物理内存和虚拟内存的关系。
  在操作系统中会将虚拟内存和物理内存的分成大小相等的多个片(通常为4k),虚拟内存中叫页物理内存中叫页框,一个页对应一个页框具体如图所示:
在这里插入图片描述
  但是虚拟地址和物理地址的映射关系维护在一个页表中,具体的关系图如图:
在这里插入图片描述
  在页表中维护了虚拟地址和实际物理地址的映射关系具体的映射流程为:
  1.cpu想访问虚拟地址所在的虚拟页(VP3),根据页表,找出页表中对应的页表项,判断有效位。
  2.若有效位为1,则DRMA缓存命中,根据物理页号,找到物理页当中的内容,返回。
  3.若有效位为0,则发生缺页异常,调用内核缺页异常处理程序。内核通过页面置换算法选择一个页面作为被覆盖的页面,将该页的内容刷新到磁盘空间当中。然后把VP3映射的磁盘文件内容缓存到该物理地址对应的页上面。然后将页表项中的有效位变成1,第二部分存储了对应的物理内存也的地址。
  4.缺页异常处理完毕后,返回中断前的指令,重新执行,此时缓存命中,执行1。
  5.将找到的内容映射到高速缓存当中,CPU从高速缓存中获取该值,结束。
  这样保证了虚拟内存中的地址是连续的但是实际的物理地址是非连续的,这样可以减少内存碎片的产生。以上就是虚拟内存以及物理内存的概念和关系。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值