操作系统原理第九章 虚拟内存

本科生操作系统原理学习记录
学习记录全家桶

代码必须转入内存才能运行,但是并不是所有代码都需要装入

局部性原理:一个程序只要部分装入内存就可以运行

9.1 虚拟内存技术

当进程运行时,先将其一部分装入内存,另一部分暂留在磁盘,当要执行的指令或访问的数据不在内存时,由操作系统自动完成将它们从磁盘调入内存执行。

虚拟地址空间:分配给进程的虚拟内存

虚拟地址:在虚拟内存中指令或数据的位置

虚拟内存:把内存和磁盘有机结合起来使用,得到一个容量很大的“内存”,即虚存。但是也要结合电脑本身的地址空间,即32位和64位的影响。32位最大只能为4G,64位可以很大。

写时复制 Copy-on-Write

写时复制允许父进程和子进程在初始化时共享页面

如果一个进程对共享页面进行修改,会产生副本。

9.2 虚拟内存的实现

两种实现方式:

  • 虚拟页式(虚拟存储技术+页式存储管理)

  • 虚拟段式(虚拟存储技术+段式存储管理)

虚拟页式有两种方式:

  • 请求分页(一开始全在外存之中)
  • 预调页(预先调一些页)

请求分页

  • 进程开始运行之前,不是装入全部页面,而是装入一个或零个页面

  • 运行之后,根据进程运行需要,动态装入其他页面

  • 当内存空间已满,而又需要装入新的页面时,则根据某种算法置换内存中的某个页面,以便装入新的页面

缺页中断

如果对一个页的访问,首次访问该页需要陷入OS 缺页中断( page-fault trap)

  1. 访问指令或数据
  2. 查看另一个表来决定:
    2.1 无效引用 => 终止
    2.2 仅仅不在内存
  3. 找到页在后备存储上的位置
  4. 得到空的页框,把页换入页框
  5. 重新设置页表,把有效位设为v
  6. 重启指令

缺页中断的处理过程(期末考试)内中断,软中断

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t0aLtc9Q-1641365786872)(E:\文档和PPT\大三课程学习\操作系统\Pictures\第九章\缺页中断处理过程)]

请求分页的性能(期末考试)

时间换空间

缺页率:缺页次数 / 总的访问次数 ,缺页的概率。

有效访问时间(EAT)

EAT = (1-p)* 内存访问时间 + p * 页面出错时间

9.3 页面置换

基本的页置换方法:

  1. 找到页在磁盘中的位置
  2. 查找一空闲框(这里需要处理很多中可能以及策略)
  3. 将页写入空闲框,更新页表和帧表
  4. 重启用户进程

页面置换算法

FIFO先进先出算法

先进先出算法采用队列实现,对每次要写入的页,先在队列中查找是否有空闲位置,有的话直接将页插入队尾;没有空闲页则查找是否原本就存在这个页,如果存在,则不做任何操作;如果没有,则将队列头部的页挤掉,这个页插入队尾。

Belady异常,更多的页框可能呢会导致更多的缺页(四个页框就比三个要多缺页)

OPT最优置换算法

被置换的页是将来不再需要的或最远的将来才会被使用的页(从当前的页号往后看,哪个不再需要或者最远需要)

作用:作为一种标准来衡量其他算法的性能

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mogotoAH-1641365786874)(E:\文档和PPT\大三课程学习\操作系统\Pictures\第九章\OPT置换算法)]

LRU最近最少使用算法

往前看,看哪个页号最长时间没被使用,而且在画图更新的时候,最好将最近使用的页面放在最上面,最久使用的放在最后面。

置换最长时间没有使用的页

二次机会算法

需要访问位

如果访问位为0,直接置换

如果将要交换的页访问位是1,则:

​ 把访问位设位0

​ 把页留在内存中

​ 以同样的规则,替换下一个页

实现:时钟置换(顺时针方式)

9.4 系统颠簸

9.4.1 页框分配

必须满足:每个进程所需的最少的页数

两个主要的分配策略

  • 固定分配
  • 优先级分配

固定分配:

平均分配 –均分法
例:如果有100个页框,和5个进程,则每个进程分给20个页
按比率分配 – 根据每个进程的大小来分配

优先级分配:

根据优先级而不是进程大小来使用比率分配策略

如果进程Pi产生一个缺页

  • 选择替换其中的一个页框
  • 从一个较低优先级的进程中选择一个页面来替换

9.4.2 颠簸

如果一个进程没有足够的页,那么缺页率将很高,这将导致:

  • CPU利用率低下.
  • 操作系统认为需要增加多道程序的道数
  • 系统中将加入一个新的进程

颠簸(抖动):一个进程的页面经常换入换出

抖动的原因:进程频繁访问页面数目高于可用的物理块数(分配给进程的物理块不够)

工作集模型:

工作集概念:某短时间间隔里,进程实际访问页面的集合。

a 安装更快的CPU 不行

b. 安装更大的分页磁盘 不行

c. 提高多道程度

d. 降低多道程度

e. 安装更多内存

f. 安装更快的硬盘或者具有多个硬盘的多个控制器 有可能

g. 为页面获取算法添加预先调页

9.5 内核内存分配

不同于用户内存

通常从空闲内存池中获取

  • 内核需要为不同大小的数据结构分配内存
  • 一些内核内存需要连续的物理页模拟

内核在使用内存块时有如下特点:
(1)内存块的尺寸比较小;
(2)占用内存块的时间比较短;
(3)要求快速完成分配和回收;
(4)不参与交换。
(5)频繁使用尺寸相同的内存块,存放同一结构的数据;
(6)要求动态分配和回收。

伙伴系统

Buddy System

主要思想:内存按照2的幂

9.6 其他因素

9.6.1 预调页

在进程启动初期,减少大量的缺页中断

在引用前,调入进程的所有或一些需要的页面

如果预调入的页面没有被使用,则内存被浪费

9.6.2 页面尺寸选择

尺寸选择

  • 碎片 – 需要小的页
  • 表大小 – 需要大的页
  • I/O 开销 – 需要大的页
  • 程序局部 – 需要小的页
  • 缺页次数 – 需要大的页
  • 其他因素

没有最佳答案,总的来说,趋向更大的页

9.6.3 TLB范围

TLB 范围 – 通过TLB所访问的内存量

TLB 范围 = (TLB 大小) X (页大小)

理想情况下,一个进程的工作集应存放在 TLB中

  • 否则会有大量的缺页中断

增加页的大小

  • 对于不需要大页的应用程序而言,这将导致碎片的增加

提供多种页的大小

  • 这允许需要大页的应用程序有机会使用大页而不增加碎片的大小

猜你喜欢

转载自blog.csdn.net/weixin_45788387/article/details/122323806
今日推荐