9.虚拟内存管理

虚拟内存管理通过请求调页技术允许程序大于物理内存,利用局部性原理和高速缓存提高效率。文章介绍了请求调页的页表机制、缺页中断机构和地址变换机构,并详细讨论了页面置换算法,包括最佳置换、FIFO、LRU和时钟算法,以及如何避免系统抖动。最后,探讨了帧分配策略,包括固定分配、可变分配全局和局部置换。
摘要由CSDN通过智能技术生成

虚拟内存管理

目录
1 背景
2 请求调页
3 写时复制
4 页面置换
5 帧分配
6 系统抖动
7 总结

1 背景

上一章讨论了内存管理策略,这些策略的共同目标就是:同时将多个进程保存在内存中,以便允许多道程序。但是这些策略有个要求:在每个进程执行之前应完全处于内存中,也就是说,作业必须一次性全部装入内存。

这会导致两种情况发生:

  • 当作业很大,不能全部被装入内存时,将使该作业无法运行;
  • 当大量作业要求运行时,由于内存不足以容纳所有作业,只能使少数作业先运行,导致多道程序度的下降。

虚拟内存技术允许执行进程不必完全处于内存中,这样,程序可以大于物理内存。

虚拟内存将用户逻辑内存与物理内存分开,现有物理内存有限的情况下,为程序员提供了巨大的虚拟内存。

局部性原理

要真正理解虚拟内存技术的思想,首先必须了解计算机中著名的局部性原理。著名的 Bill Joy (SUN公司CEO)说过:”在研究所的时候,我经常开玩笑地说高速缓存是计算机科学中唯一重要的思想。事实上,髙速缓存技术确实极大地影响了计算机系统的设计。“快表、 页高速缓存以及虚拟内存技术从广义上讲,都是属于高速缓存技术。这个技术所依赖的原理就是局部性原理。局部性原理既适用于程序结构,也适用于数据结构(更远地讲,Dijkstra 著名的关于“goto语句有害”的论文也是出于对程序局部性原理的深刻认识和理解)。

局部性原理表现在以下两个方面:

  • 时间局部性:如果程序中的某条指令一旦执行,不久以后该指令可能再次执行;如果某数据被访问过,不久以后该数据可能再次被访问。产生时间局部性的典型原因,是由于在程序中存在着大量的循环操作。

  • 空间局部性:一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址,可能集中在一定的范围之内,这是因为指令通常是顺序存放、顺序执行的,数据也一般是以向量、数组、表等形式簇聚存储的。

    时间局部性是通过将近来使用的指令和数据保存到高速缓存存储器中,并使用高速缓存的层次结构实现。空间局部性通常是使用较大的高速缓存,并将预取机制集成到高速缓存控制逻辑中实现。虚拟内存技术实际上就是建立了 “内存一外存”的两级存储器的结构,利用局部性原理实现髙速缓存。

虚拟内存的实现

虚拟内存的实现方式有很多,主要有以下 3 种:

  • 请求分页存储管理。
  • 请求分段存储管理。
  • 请求段页式存储管理。

不管哪种方式,都需要有一定的硬件支持。一般需要的支持有以下几个方面:

  • 一定容量的内存和外存。
  • 页表机制(或段表机制)&#
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值