禁止转载!

Chapter 3. 内存管理

page-flow

页表不会可以埋了,下一个

覆盖与交换 (*)

  • 交换: 不同进程之间 (swap)
  • 覆盖: 同一进程中 (section)

内存分配方式

连续分配方式

  • 单一连续: 仅允许一道用户程序
  • 固定分区: 分区大小相等 | 不等,会产生较多碎片,且效率低下
  • 动态分区分配

    • 首次 (First Fit)
    • 临近 (Next Fit)
    • 最佳 (Best Fit) 最差,会产生最多碎片
    • 最坏 (Worst Fit)

分页

页面置换算法

Belady 异常: FIFO 特有,随着物理块数增大,缺页率不减反增

驻留集: 给一个进程分配物理页框的集合

抖动: 换出又换入

  • OPT 绝对最优,替换的是最长时间内不再被访问的页面,缺页率最低
  • FIFO 可能出现 Belady 异常
  • RLU 目前实在 OS 中最优,但开销较大,因此现代 OS 大多使用 CLOCK 的变体
  • CLOCK 试图以较小的开销接近 LRU 算法的性能
  • 改进型 CLOCK: 减少磁盘 I/O 次数

    • 新增修改位 (脏位)
    • 访问位 A, 修改位 M
    • 多轮扫描,A0M0 > A0M1 > A1M0 > A1M1
    • M 为 1 时写回需要拷贝

调入页面

时机
  • 预调页策略: 首次调入,程序员指出
  • 请求调页策略: 缺页中断
方式
  • UNIX: 文件区读取,换出 SWAP

缺页率的影响因素

工作集: 某段时间间隔内,进程要访问的页面集合

因此: 分配物理块 < 工作集,可能导致频繁缺页

  • 页面大小
  • 分配的物理块数 (与工作集有关)
  • 页面置换算法
  • 程序编制方法

Misc

  • Logic Address 形成时间: 链接时
  • 多级页表优点: 减少页表所占连续内存空间,其它略
  • Memory-Mapped Files: 允许多进程共用内存共享文件,进程退出时写回
  • 可能与计组综合考题 (王道 P211)
Last modification:September 6, 2022
如果觉得我的文章对你有用,请随意赞赏