首页 > 系统相关 >期末复习——虚拟内存

期末复习——虚拟内存

时间:2023-02-19 02:11:16浏览次数:41  
标签:空闲 复习 置换 期末 内存 进程 虚拟内存 页面

虚拟内存管理

为什么要虚拟内存?
单道程序的时候
多道程序系统下,多个进程之间共享了主存,但是运行的进程会需要很多内存,物理上不扩展内存,在逻辑/虚拟层面扩充“内存”

虚拟内存将用户虚拟内存和物理内存分开。随着进程运行的需求,将需要的页面调入内存,将不需要的调出内存。像是一个更加大的物理存储空间,但是其实是不存在的。

  • 虚拟内存管理方式(内存管理中提到过
    1. 请求分页存储管理
    2. 请求分段存储管理
    3. 请求段页式存储管理
      需要硬件支持:内存外存空间、页表机制or段表机制、中断机制(访问页面不在内存时)、LA-->PA的映射(MMU)

请求分页管理

  • 从磁盘加载可执行程序到内存(两种方式)
    1. 整个一次性加载到物理内存
    2. 请求调页:仅在需要的时候才加载
      纯请求调页:只有需要这个页面时才调入。

请求调页

一开始只调入了少量页,运行过程中,惰性交换器(只有需要时才调入页)操纵真个过程。

几个特殊位设置

  1. 有效位
    • 有效:页面合法and页面在内存中
    • 无效:页面不合法or页面不在内存中
  2. 修改位(脏位)
    • 已修改:写入磁盘
    • 未修改:直接丢弃,因为并没有任何变化。

缺页中断/页面置换

  • 页面置换步骤:
    1. 找到所需页面P1的磁盘位置,确定这个引用是有效/无效。无效终止进程。
    2. 找到一个空闲帧
      1. 有空闲帧,直接用
      2. 没有空闲帧,使用页面置换算法选择一个牺牲帧
      3. 若牺牲帧被修改过(看修改位),将牺牲帧内容写入磁盘,修改页表、帧表。(有效位什么的要改)
    3. 将P1读入这个空闲帧,修改页表、帧表。
    4. 从缺页中断错误处继续用户进程。

不同于一般的中断,属于内部异常,缺页中断是指令执行期间发生的,而不是执行完后产生、处理中断信号。

页面置换算法

1 FIFO页面置换

移走最早进来的那个帧,无论其最近有没有被使用过。

2 OPT最优页面置换

要预知未来,很难实现
置换未来最长时间不会使用的页面

3 LRU页面置换

最近最少使用。
置换最长时间没有使用过的页面

  • 使用工具记录
    • 计时器:为每个页面关联一个时间域。每次内存引用递增。
    • 栈:页面被调用时,页面从栈中pop然后push入栈(到了栈顶),牺牲指针指向栈的底部。
4 近似LRU页面置换
  • 额外引用位算法:页表每个页面保留1B=8bits定期记录。每个时钟右移一位,修改位放到最高位,舍弃最低位。好理解,小数字是淘汰页。
  • 第二次机会算法:基于FIFO、采用循环队列实现。找到牺牲页面,
    • 修改位=0:直接置换
    • 修改位=1,置0,再给一次机会,寻找下一个牺牲帧同样检测。
      ps.若所有位=1,退化成FIFO。
  • 第二次机会算法(加强版):(引用位,修改位):(0,0)>(0,1)>(1,0)>(1,1)
5 基于计数页面置换
  • LFU最不经常使用
  • MFU最经常使用

帧分配

  • 平均分配:93帧 5进程:每个进程18个帧,剩余3个给空闲帧缓冲池
  • 比例分配:按照进程的优先级or大小和优先级的组合分配。
  • 全局置换:允许一个进程从另一个进程获取帧。
  • 局部置换:只允许从自己分配的帧中获取帧。

抖动

刚刚换出的页面现在又需要调入,抖动指这种频繁的页面调度行为。

  • 根本原因:系统中运行进程太多。可用帧太少。

工作集

为解决抖动问题,在某段时间内进程可能要频繁访问的页面集合——工作集

  • 可根据局部性原理,将最近访问的页面作为工作集。

内存映射文件

磁盘文件(全部or部分)与 进程虚拟地址空间某区域建立映射联系。不必执行文件I/O(read()、write()等等)操作了
使用于大文件。多进程一起访问。

  • 关于写入:可能即时可能不即时。
  • 关闭文件:将内存映射数据写入磁盘,从进程虚拟内存中删除。

请求调页性能

p的概率缺页,内存访问时间ma(ns)
有效访问时间 = (1-p)*ma + p*缺页错误处理时间

写时复制

针对父子进程之间,任何一个进程写入页面,就会复制一份共享页面副本。

  • 写时复制
  • 不写时共享
    页面池:空闲页面存储在这里,“写时复制”复制的内容利用这些空闲页面。
  • 按需填零技术:空闲页面之前填0,清除所有内容。

分配内核内存

1 伙伴系统

  • 从物理连续的大小固定的段分配。
  • 2的幂分配。
  • 合并的技术:将相邻的伙伴合成一个大的分段。有内碎片

就是一个二叉树画下去,叶子结点是父节点大小的二分之一。

2 slab分配

  • 内核对象-->指向cache
  • 一个cache(1 or 多个 slab组成)
  • 1个slab(1 or 多个 物理连续页面)
  • 过程:最初cache内所有对象都标记位空闲,内核数据结构需要新对象时,分配器从cache上分配任何空闲对象满足请求-->used标记。
  • 优点:
    1. 没有碎片引起的浪费
    2. 快速满足内存请求

虚拟内存空间大小怎么决定的?
同时满足两个条件
1. 虚拟内存容量<= 内存容量+外存容量
2. 虚拟内存容量<=计算机地址能容纳的总容量。32位地址,按字节编址(一个地址表示一个B)。
虚拟内存<=232B=4GB

虚拟内存如何解决问题?
使用外存扩充内存空间

...倒置页表不看了md记不住的再见爷要睡了

标签:空闲,复习,置换,期末,内存,进程,虚拟内存,页面
From: https://www.cnblogs.com/sectumsempra/p/17134100.html

相关文章

  • 【JS】简单复习及ES6
    一、JavaScript基础及ES6视频链接:https://www.bilibili.com/video/BV1Y84y1L7Nn 10.变量的声明var与let首先说结论,放弃var,使用let。let为了解决var的一些......
  • 【第一个随笔来啦~】Tuffy的复习笔记 —— 数字电路 —— 数据存储
    最近一直在为数字电路复习,发现数据存储这部分的知识点对于数字电路相关课程的初学者来说实在过于复杂不怎么好理解,所以希望通过这个blog为初学者解决这样的问题。注:本blog......
  • 期末复习——内存管理
    内存管理为什么要进行内存管理?对单道系统来说,内存分配较简单。对多道系统,如果不进行管理,容易导致数据混乱。内存两部分用于驻留OS:低地址内存空间用于用户进程:高......
  • 期末复习之逻辑电路
    非(NOT)门与门或门异或门与非或非逻辑电路布尔代数性质半加器全加器......
  • 成电分布式复习<上>
    第一章1、分布式系统的构建原因构造分布式系统的主要动机是资源共享和协同计算2、分布式系统举例WEB搜索:Google大型多人在线游戏金融交易区块链系统3、分布式系......
  • 第一周复习笔记(MySQL、Redis、JVM、JUC)
    MySQL1.引擎1.1Innodb和MyIsAM的区别1.2Innodb的逻辑存储结构2.索引2.1索引的分类2.2索引优化2.3索引失效的场景3.事务3.1事务的隔离级别3.2ACID原则......
  • 面试复习01
    面试复习总结day01目录面试复习总结day01一.python可变与不可变数据类型1.1可变数据类型1.2可变数据类型1.3哪些是可变数据类型1.4哪些是不可变数据类型1.5Tuple元组小......
  • 期末复习——同步、互斥、死锁
    不同进程之间的关系同步=直接制约关系,相互之间协调顺序,进行阻塞等调整。互斥=间接制约关系,一个进程进入临界区,另一进程必须等待。同步临界区问题多道程序环......
  • 统计学——复习笔记
    目录算数平均数计算加权算术平均数调和平均数(倒数平均数)加权调和平均数几何平均数在组距数列中确定中位数在组距数组中确定众数在组距数组中确定四分位数极差(全距)四分位差(......
  • 【数据结构复习】部分知识提纲/总结
    7.2图的存储结构7.4图的连通性问题最小生成树生成树条件:全部顶点部分边无回路最小生成树:权最小的生成树点:prim任取一个点,进入解集对解集画圈,找与圈连接的......