7.虚拟存储器

简介: 7.虚拟存储器

zhuanlan.zhihu.com/p/391327282

页面置换算法

当需要调入新页面,但内存已满时,页面置换算法 选择一个被换出的页面,再将新页面载入

先进先出算法

OPT页面置换算法

最佳算法(OPTimal):选择未来最久不被访问的

不可能实现!(预测未来最热卖的商品)

意义:给出理论上的最好结果,以供比较

最近最久未使用(Least Recently Used)LRU

选择自上次被访问以来经历时间最久的

硬件开销太大,难以实现

实际OS中,采用近似LRU的方法

Clock算法

循环队列,依次检查。若A(访问位)=0,换出;若A=1,置A=0,检查下一个。

改进后

不仅利用访问位A,还利用修改位D

  • A=0,D=0,最近未访问,也未被修改;
  • A=0,D=1,最近未访问,但被修改;
  • A=1,D=0,最近被访问,但未被修改;
  • A=1,D=1,最近被访问,且被修改。

AD=00最应该被替换,AD=11最不应替换

页面分配策略

给每个进程分配至少多少个物理块

固定分配和可变分配

给每个进程分配多少个物理块?

固定

  • 平均分配算法
  • 比例分配算法
  • 优先级分配算法

可变

允许分配给进程的物理块数随时间变化

全局&局部置换

可变分配在置换时,换出属于谁的页面?

若每个进程已经固定分配物理页面数量,则不可能去抢夺其它进程的页面,因而也就不可能全局置换

全局置换(Global Replacement)

  • 可以置换所有进程的页面

局部置换(Local Replacement)

  • 仅置换进程自己的页面

页面缓冲算法

页缓冲算法(PBA,Page Buffering Algorithm)

  • 空闲页面池,统一管理空闲的物理页面
  • 修改页面池,将D=1的页面暂存

好处:防止将被换出的页面马上又要使用的情况(house keeping)

实用策略-工作集

  • 进程开始执行后,随着访问新页面逐步建立较稳定的工作集
  • 当内存访问的局部性区域的位置大致稳定时,工作集大小也大致稳定
  • 局部性区域的位置改变时,工作集快速扩张和收缩过渡到下一个稳定值

抖动

  • CPU利用率与并发进程数存在相互促进和制约的关系
  • 进程数少时,提高并发进程数,可提高CPU利用率
  • 并发进程进一步增加,导致内存访问增加
  • 分配给每个进程的物理块太少,导致缺页率上升和CPU利用下降
  • 抖动:每个进程频繁的缺页,换进/换出
  • 抖动
  • 进程物理页面太少,不能包含工作集
  • 造成大量缺页,频繁置换
  • 进程运行速度变慢
  • 产生抖动的原因
  • 随着驻留内存的进程数目增加,分配给每个进程的物理页面数
  • 不断减小,缺页率不断上升
  • 抖动的预防方法
  • 采用局部置换策略
  • 把工作集算法融入处理机调度
  • “L=S”准则
  • 选择暂停的进


相关文章
|
7月前
|
缓存 Linux C语言
Linux内存管理宏观篇(四)物理内存:物理内存管理区
Linux内存管理宏观篇(四)物理内存:物理内存管理区
105 1
|
7月前
|
存储 缓存 调度
虚拟存储
虚拟存储
168 0
|
6月前
|
存储 机器学习/深度学习 Linux
程序员必知:关于Linux内存寻址与页表处理的一些细节
程序员必知:关于Linux内存寻址与页表处理的一些细节
52 0
|
6月前
|
存储 算法 调度
虚拟存储器
虚拟存储器
70 0
段页式内存管理
为了方便管理程序被分成了若干逻辑段,后来为了解决大量外部内存碎片问题,出现了内存分页,本期将介绍分段、分段机制以及后来出现的调表机制。
|
存储 算法 定位技术
4.2虚拟存储器
计算机组成原理之虚拟存储器
546 0
|
存储
存储器-虚拟内存
存储器-虚拟内存
81 0
|
存储 芯片 块存储
3.2主存储器的基本组成
3.2主存储器的基本组成
172 0
3.2主存储器的基本组成
|
存储 算法 程序员
3.3操作系统(基本地址变换机构 快表 两级页表 分段 段页式)
🍓基本地址变换机构 🍒对页表项大小的进一步探讨 🥭具有快表的地址变换机构 🌽 什么是快表(TLB) 🥕引入快表后,地址的变换过程 🥒局部性原理 🍉两级页表 🧅单级页表存在的问题 🍍如何解决单级页表的问题? 问题一: 🍅1. 两级页表的原理、地址结构 🥝 2. 如何实现地址变换 问题二: 🍆 1. 需要注意的几个细节 🍪基本分段存储管理方式 🥥 分段 🍦段表 🧊地址变换 🍋 分段、分页管理的对比 🍎段页式管理方式 🧀 分页、分段的优缺点分析 🧇 分段+分页=段页式管理 🌮段页式管理的逻辑地址结构 🍞段表
3.3操作系统(基本地址变换机构 快表 两级页表 分段 段页式)
|
存储 负载均衡 算法
【Linux进程概念——下】验证进程地址空间的基本排布 | 理解进程地址空间 | 进程地址空间如何映射至物理内存(页表的引出) | 为什么要存在进程地址空间 | Linux2.6内核进程调度队列
本文中会介绍很多结构化的知识,我们会通过很多例子里的角色和场景来对一个概念进行定位和阐述,让大家有一个宏观的认识,之后再循序渐进的填充细节,如果你一上来就玩页表怎么映射,那么你可能连页表存在的价值是什么都不知道,最后也只是竹篮打水。
269 0
【Linux进程概念——下】验证进程地址空间的基本排布 | 理解进程地址空间 | 进程地址空间如何映射至物理内存(页表的引出) | 为什么要存在进程地址空间 | Linux2.6内核进程调度队列