• 8章讨论计算机系统所使用的各种内存管理策略。
  • 都同一目的:
    • 同时将多个进程存放在内存,以便允许多道程序设计。
  • 这些策略都需在进程执行前将整个进程放在内存

  • 虚内技术允许执行进程不必完全在内存
  • 程序可以比物理内存大
  • 且虚拟内存将内存抽象成一个巨大的存储数组,将用户看到的逻辑内存与物理内存分开
  • 允许程序员不受内存存储限制
  • 虚拟内存允许进程很容易共享文件和地址空间,
    • 还为创建进程提供了有效的机制。
  • 虚拟内存的实现并不容易,
    • 使用不当可能会大大地降低性能。
  • 本章通过按需分页来讨论虚拟内存,并研究其复杂性与开销

  • 本章目标
  • 介绍虚拟内存系统的优点。
  • 描述按需调页概念、页替换算法和帧分配算法
  • 讨论工作集模型原理。

9.1背景

  • 8章的内存管理算法都基于:执行指令必须在物理内存中。
  • 满足这一要求的第一种方法是将整个进程放在内存中。
  • 动态载入能帮助减轻这一限制,但它需要程序员特别小心并且需要一些额外的工作。

  • 指令必须都在物理内存内的这一限制,这似乎是必需和合理的,但也是不幸的,因为这使得程序的大小被限制在物理内存的大小以内。
  • 实际程序许多情况下并不需要将整个程序放到内存中。

  • 程序通常有处理异常错误条件的代码。由于这些错误即使有也是很少发生,所以这种代码几乎不执行

  • 数组、链表和表通常分配了比实际所需要的更多的内存。
  • 声明一个有100×100个元素的数组,可能实际用的只是10×10元素。
  • 汇编程序系统表可能有3000个符号,但程序平均可能用到的只有不到200

  • 程序的某些选项或功能可能很少使用。
  • 美国政府计算机上的用于平衡预算的程序就很少使用。
  • 即使在需要完整程序时,也并不同时需要所有程序

9 虚拟内存

9.4页面置换

  • 在迄今有关页错误率的讨论,
  • 假定每页最多只出现一次错误(即首次引用时)
  • 这种描述并不严格
  • 一进程有10页而事实上只用5页
    • 那请求页面调度就节省了用以装入(从不用)另5页所必需IO
    • 也可通过运行两倍进程以增加多道程序程度
  • 如果40帧,那么可运行8进程
    • 而不是当每个进程都需要10帧(5个决不用)时只能运行4进程

  • 增加多道程序的程度,那会过度分配内存。
  • 如果运行6进程,且每进程有10页但事实上只5页
    • 那就获得了更高的CPU利用率和吞吐量,且有10帧可作备用。
  • 有可能每个进程,对于特定数据集合,会突然用其所有的10页,从而产生共需要60帧,而只有40帧可用。

  • 还需考虑到内存不是仅用于保存程序的页面。
  • I/O缓存也需用大量内存
  • 这种使用会增加内存分配算法的压力。
  • 确定多少内存用于分配给I/O
    • 多少内存分配给程序页面是棘手
  • 有的系统为IO缓存分配了一定比例的内存,
    • 其他系统允许用户进程和IO子系统竞争使用所有内存

  • 内存的过度分配会出现
  • 当一个用户进程执行时,一个页错误发生。
  • 操作系统会确定所需页在磁盘上的位置,但却发现空闲帧列表上并没有空闲帧,所有内存都在用(见图9.9)

  • 这时操作系统会有若干选择。
  • 它可终止用户进程。
  • 然而,按需调页是操作系统试图改善计算机系统的使用率和吞吐量的技术。
  • 用户并不关心其进程是否运行在调页系统上调页对用户而言应是透明的。因此,这种选项并不是最佳选择。

9 虚拟内存

  • OS也可交换出一个进程,释放其所有帧,降低多道程序的级别。
  • 这种选择在有些环境下是好的,这将在9.6节讨论。
  • 现讨论一个更为常用的解决方法:
    • 页置换( page replacement)。

9.4.1基本页置換

  • 页置换用如下
  • 如果没空闲帧,就査找当前没有用的帧,将其释放。
  • 可采用这样的方式样来释放一个帧:
    • 将其内容写到交换空间,并改变页表(和所有其他表)以表示该页不在内存中(见图9.10)
  • 现在可使用空闲帧来保存进程出错的页。
  • 修改页错误处理程序以包括页置换

  • ①查找所需页在磁盘上的位置。
  • ②査找一个空闲帧
    • a.如果有空闲帧,那么就用它
    • b.如果没有空闲帧,那么就使用页置換算法以选择一个“牺牲”帧
    • c.将“牺牲”恢的内容写到磁盆上,改变页表和帧表。
  • ③将所需页读入(新)空闲帧,改变页表和帧表。
  • ④重启用户进程。

  • 如果没有帧空闲,那么需要采用两个页传输(一个换出,一个换入)。这种情况实际上把页错误处理时间加倍了,且也相应地增加了有效访问时间

9 虚拟内存

相关文章:

猜你喜欢
  • 2021-10-05
  • 2021-12-14
  • 2021-12-12
  • 2022-01-01
  • 2021-12-05
相关资源
相似解决方案