虚拟内存管理

虚拟内存管理

为什么要引入虚拟内存?

我们知道,一个程序代码运行是需要内存空间的,由于在多道程序并发执行环境下,对内存的需求增大,所以我们要扩充内存。

又因为内存本身造价昂贵,一条金士顿 32GB DDR4 在京东购买就要900块左右,即使我们插满4条,也不过128GB内存,没办法同时运行几个大型游戏

在物理上扩展内存相对有限的情况下,我们尝试在逻辑上扩充内存,其主要原理就是利用局部性原理。

简单说打开游戏,玩家进入某个场景,只需要加载当前场景的资源到内存即可运行,每次切换场景,就加载对应场景数据,从而不用把这个游戏全部的程序代码放到内存。

虚拟内存容量大小

虚存的容量要满足2个条件

  1. 虚存的实际容量 =< 内存容量 + 外存容量,其实很好理解,外存可以存放当前运行游戏没有用到的程序代码,看做缓冲
  2. 虚存的最大容量 =< 计算机地址位数能容纳的最大容量,假设你的计算机地址是32,按字节编址,那么1个地址代表1个字节存储空间,那么虚存最大容量就是2^32个字节

实际虚存的容量取2个条件的交集

虚拟内存怎么解决问题

虚拟内存使用外存上的空间扩充内存空间,当访问的信息不在内存时,则产生缺页中断,这个时候由操作系统的缺页中断处理程序,将需要的数据从外存调入内存,这个过程就是请求调页功能

如果请求调页时,内存空间已经满了,则要选择替换老的页面数据,这个就是页面置换功能,分别有:

  1. 最佳置换算法OPT(optimal)

  2. 先进先出置换算法FIFO(first input first output)

  3. 最近最久未使用置换算法LRU(least recently)

  4. 时钟置换算法clock

  5. 改进型的时钟置换算法

引入虚拟内存会带来什么问题

因为虚拟内存技术页面调入、页面调出,需要访问外存,这么一来就会导致平均访存的时间增加,而且如果使用了不合适的页面置换算法,会大大降低系统的性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值