292-局部性和虚拟内存

局部性和虚拟内存

虚拟内存的优点是很具有吸引力的,但这个方案切实可行吗?关于这一点曾经有过相当多的争论,但是众多操作系统中的经验已多次证明了虚拟内存的可行性。因此,基于分页或分页和分段的虚拟内存已经成为当代操作系统的一个基本构件。
为理解关键问题是什么以及为什么会有这么多的争论,需要再次分析一下就虚拟内存而言的操作系统任务。考虑一个由很长的程序和许多个数组的数据组成的大进程。在任何一段很短的时间内,执行可能会局限在很小的一段程序中(如一个子程序),并且可能仅仅会访问一个或两个数组的数据。这样,如果在程序被挂起或被换出前仅仅使用了一部分进程块,那么为该进程给内存中装入太多的块显然会带来巨大的浪费。可以通过仅仅装入这一小部分块来更好地使用内存然后,如果程序转移到或访问到不在内存中的某个块中的指令或数据,就会引发一个错误,告诉操作系统读取需要的块。
因此,在任何时刻,任何一个进程只有一部分块位于内存中,可以在内存中保留更多的进程。此外,由于未用到的块不需要换入换出内存,因而节省了时间。但是,操作系统必须很“聪明”地管理这个方案。在稳定状态,几乎内存的所有空间都被进程块占据,处理器和操作系统可以直接访问到尽可能多的进程。因此,当操作系统读取一块时,它必须把另一块换出。如果一块正好在将要被用到之前换出,操作系统就不得不很快把它取回来。太多的这类操作会导致一种称为系统抖动的情况:处理器的大部分时间都用于交换块,而不是执行指令。在20世纪70年代,如何避免系统抖动是一个重要的研究领域,同时也出现了许多复杂但有效的算法。从本质上看,这些算法都是操作系统试图根据最近的历史来猜测在不远的将来最可能用到的块。
这类推断基于局部性原理。概括来说,局部性原理描述了一个进程中程序和数据引用的集簇倾向因此,假设在很短的时间内仅需要进程的一部分块是合理的。同时,还可以对在不远的将来可能会访问的块进行猜测,从而避免系统抖动。
证实局部性原理的一种方法是在虚拟内存环境中查看进程的执行情况。下图是一个动态地阐明了局部性原理的著名图表。注意,在进程的生命周期中,所有引用都局限在进程页的一个子集中。
在这里插入图片描述
局部性原理说明了虚拟内存方案是可行的。为了使虚拟内存比较实用并且有效,需要两方面的因素。

首先,必须有对所采用的分页或分段方案的硬件支持;其次,操作系统必须有管理页或段在内存和辅助存储器(简称辅存)之间移动的软件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林林林ZEYU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值