最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

快播:期末复习——虚拟内存

来源:博客园

虚拟内存管理

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

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

  • 虚拟内存管理方式(内存管理中提到过
    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记不住的再见爷要睡了

关键词: 虚拟内存 缺页中断 存储管理