第3章 内存管理(2)

本文详细探讨了虚拟内存管理,包括传统内存与虚拟内存的对比、请求分页机制(页表、缺页中断和地址变换)、页框分配策略、页面置换算法(如LRU和时钟算法)、抖动和工作集的概念,以及内存映射文件在系统调用中的应用。

3.2虚拟内存管理

3.2.1 传统内存和虚拟内存对比

传统内存虚拟内存
一次性:全部装入内存才能运行多次性:仅装入当前需要的数据
驻留性:作业装入内存,运行时一直驻留内存对换性:暂时用不到的数据换出外存
虚拟性:逻辑上扩充内存
作业过大无法装入,作业过多也无法装入
需要添加请求调页功能和页面置换功能

3.2.2 请求分页管理

  • 1.页表格式
页号物理块号状态位[是否在内存]访问字段[最近是否访问]修改位[标记是否修改]外存位置
  • 2.缺页中断
    页面不在内存,产生缺页中断(异常/内中断),操作系统处理完后,重新执行被中断的指令一条指令可以产生多次缺页中断
    ①请求调页 ②页面置换 ③修改新增表项

  • 3.地址变换
    在这里插入图片描述
    发生缺页:①查块表 (没中) ②查慢表 (没中) ③调入页 (修改慢表,同时加入块表)


3.2.3页框分配

  • 1.驻留集:进程的物理块的集合

    • 过大:多道程序并发下降
    • 过小:缺页频繁
  • 2.内存分配策略

    • 1.固定分配局部置换:开始时分配全部内存,运行期间不变。
    • 2.可变分配全局置换:开始时分配部分内存,运行期间缺页使用任意空闲物理块。[缺页分配新物理块]
    • 2.可变分配局部置换:开始时分配部分内存,运行期间缺页使用进程拥有的空闲物理块。
  • 3.调入时机

    • 1.预调页策略:由局部性原理,调入连续几个页面。【在首次调入使用】
    • 2.请求调页策略:缺页才调入内存。【运行期间使用】
  • 4.何处调入

    • 对换区充足::先将进程相关文件放入对换区,再调入内存
    • 对换区不足:不会修改的文件从对换区调入,被修改的文件调出时 写入对换区
    • UNIX方式:进程相关的文件放入文件区,被换出的放在对换区

3.2.4 页面置换算法

  • 1.最佳(OPT)置换算法 【无法实现】:换出不再使用的页面或最长时间不会使用的页面。
  • 2.先进先出(FIFO)页面置换算法【实现简单,性能差,唯一可能出现Belady异常】:淘汰最先进入内存页面
  • 3.最近最久未使用(LRU)置换算法【需要专门硬件实现排序,性能好,但实现困难,性能最接近OPT】:换出最久没有使用的页面
  • 4.时钟(CLOCK)置换算法
    • 1.简单版:【访问位】
      • ①寻找访问位为0的,所经过的都置为0
      • ②第二轮一定可以找到
    • 2.改进版【访问位,修改位】
      • ①第一轮找(0,0),不做任何修改
      • ②第二轮找(0,1),经过的将访问位置为0
      • ③第三轮找(0,0),不做任何修改
      • ④第四轮找(0,1)
      • 总结:①未访问,未修改②未访问,被修改③被访问,未修改④被访问,被修改

3.2.5 抖动和工作集

  • 1.抖动:频繁换入换出。主要原因:频繁访问的页面数目大于进程拥有的物理块数
  • 2.工作集:驻留集大小应该大于等于工作集,否则发生抖动

3.2.6 内存映射文件【系统调用】

  • 1.方便访问文件数据
    • 传统文件访问:①open打开文件 ②seek移动读写指针 ③read读入多少数据 ④write 写回磁盘
    • 内存映射文件:①open打开文件 ②mmap文件映射到虚拟地址 ③访问内存一样访问数据 ④操作系统完成文件读入读出 ⑤OS自动写回被修改文件
  • 2.方便进程共享文件
    • 不同进程将虚拟存储映射到同一个物理块。
      在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mystic Musings

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

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

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

打赏作者

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

抵扣说明:

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

余额充值