【清华大学陈渝】第五章 虚拟存储

时间:2022年10月15日

一、虚拟内存的起因

  • 有没有比内存更便宜、容量更大的设备?

  • 有,硬盘。但是硬盘的速度远远慢于内存,程序不能放在硬盘上执行。

  • 因此,操作系统能不能做出一个 更大、更快、更便宜 的虚拟内存空间。程序员直接针对虚拟内存空间操作。

    如上图,一种OS抽象技术。在OS Kernel管理下,常用数据代码放在内存中。

在没有虚拟内存技术时,使用覆盖技术或交换技术:

  • 程序太大,超过了内存的容量,可以采用手动的覆盖(overlay)技术;
  • 程序太多,超过了内存的容量,可以采用自动交换(swapping)技术。
  • 而虚拟内存技术,则是以更小的页粒度为单位,装入更多更大的程序。

二、 覆盖技术

2.1 产生

上世纪80年代,当时操作系统能力较弱(DOS),硬件640K内存。

2.2 基本原理

  • 把程序按照其自身逻辑结构,划分为若干个功能相对独立的程序模块;那些不会同时执行的模块共享同一内存区域,按时间先后来运行:

    • 必要部分(常用功能)的代码和数据常驻内存;
    • 可选部分(不常用功能)在其他程序模块中实现,平时存放在外存中,在需要用时才装入内存;
    • 不存在调用关系的模块不必同时装入到内存,从而可以相互覆盖,即这些模块共用一个分区。

    上图是一个例,A、B、C、D、E、F是六个函数,不存在相互调用关系的函数共享一个内存空间,用到谁时调谁。

注意上例还有另外一种覆盖方法:(100K)
A 占一个分区:20K;
B、E和F共用一个分区:50K;
C和D共用一个分区:30K。

2.3 存在问题

最大问题开销问题非常大:

  • 设计开销大,设计者需要考虑最优设计,如何安排模块;
  • 运行过程中不停地涉及到硬盘读写。

三、交换技术

3.1 产生

早期Unix提供的一种方法:当多个程序运行时,交给操作系统管理内存,空间不够时,将不使用的程序导到硬盘中去。

  • 内存保存到外存(swap out)
  • 从外存导入内存(swap in)

3.2 交换技术中的问题

  • 交换时机的确定:只有当内存空间不够或又不够的危险时换出;
  • 交换区的大小:必须足够大存放所有用户进程的所有内存映像的拷贝,必须对这些内存映像进行直接存取;
  • 程序换入的重定位:换出后再换入内存的位置不一定一样,寻址可能会出现问题。所以最好采用动态地址映射的方法。

交换技术对于程序员来说是透明的,减轻了程序员的负担,但是系统的开销变大了。

四、虚存技术

4.1 目标

  • 像覆盖技术那样,不是把程序的所有内容都放在内存中,但是是自动执行的,无需程序员干涉;
  • 像交换技术那样,实现进程在内存与外存之间的交换,但是不是以一个程序为粒度,而是以页为粒度。

4.2 程序的局部性原理

程序的局部性原理(principle of locality):指程序在执行过程中一个较短时期,所执行的指令地址和指令的操作数地址,分别局限于一定区域。可以表现为:

  • 时间局部性:一条指令的一次执行和下次执行,一个数据的一次访问都集中在一个较短时间内;
  • 空间局部性:当前指令和临近的几条指令,当前访问的数据和邻近的几个数据都集中在一个较小的区域内。

程序的局部性原理表明,从理论上说,虚拟存储技术是能够实现的,而且在实现了以后应该能够取得一个满意的效果的。

例:页面大小为4K,分配给每个进程的物理页面数为1。在一个进程中,定义了如下的二维数组int A[1024][1024],该数组按行存放在内存中,每一行放在一个页面中。

操作系统只用利用程序的局部性特点,才能很好地实现虚存技术。

4.3 虚存技术基本特征

  • 大的用户空间:提供给用户的虚拟内存空间通常大于实际的物理内存,即实现了这两者的分离。如32位的虚拟地址理论上可以访问4GB,而可能计算机上仅有256M的物理内存,但硬盘容量大于4GB。
  • 部分交换:与交换技术相比,虚拟存储的调入和调出是对部分虚拟地址空间进行的;
  • 不连续性:物理内存分配的不连续,虚拟地址空间使用的不连续。

4.4 虚拟页式内存管理

物理内存与虚拟内存靠页表进行索引。页表项中,还有代表“存在与否”等的bit。

大部分虚拟存储系统都采用虚拟页式存储管理技术,即在页式存储管理的基础上,增加请求调页和页面置换功能。

基本思路:

  • 当一个用户程序要调入内存运行时,不是将程序的所有页面都装入内存,而是只装入部分的页面,就可启动程序运行;
  • 在运行的过程中,如果发现要运行的程序或要访问数据不在内存,则向系统发出缺页中断请求,系统在处理这个中断时,将外存中相应的页面调入内存,使得该程序能够继续运行。 (请求调页、页面置换)

因此,在页表表项增加几个bit。

例如下:

上图中,X代表驻留位为0。

对于逻辑地址0,其在0K到4K,索引值为2,其物理地址为4K*2=8192。而对于32790,32K~36K的驻留位为0,因此产生缺页异常。

因此,缺页中断时很重要的一个步骤,导演了内外存相互交换的动作。

具体细节将在实验环节展开讲解。置换算法将在下节课进行讨论。

4.5 后备存储(Backing Store)

  • 在何处保存未被映射的页?

    • 能够简单地识别在二级存储器中的页
    • 交换空间(磁盘或者文件):特殊格式,用于存储未被映射的页面。

因此有后备存储的概念:

  • 一个虚拟地址空间的页面可以被映射到一个文件(在二级存储中)中的某个位置;
  • 代码段:映射到可执行二进制文件;
  • 动态加载的共享库程序段:映射到动态调用的库文件;
  • 其他段:可能被映射到交换文件(swap file)

4.6 虚拟内存性能

为了便于理解分页的开销,使用有效存储器访问时间effective memory access time(EAT)。

EAT = 访问时间 * 页表命中几率 * + page fault处理时间 * page fault几率

例子:
访问时间:10ns
磁盘访问时间:5ms
参数p=page fault几率
参数q=dirty page几率

EAT=10(1−p)+5000000p(1+q)

如果p足够小,则使效率够。

我们的程序局部性保证了EAT足够小。

参考

  1. 清华大学陈渝 操作系统原理

感谢

清华大学 陈渝老师 操作系统原理(2014版)

【清华大学陈渝】第五章 虚拟存储相关推荐

  1. 清华大学陈渝老师受聘车用操作系统与泛在操作系统联合实验室操作系统首席科学家

    汽车智能化已成为新一轮产业竞争的战略制高点.车用操作系统是智能网联汽车的灵魂,也是车路云一体化的基础.车用操作系统与芯片的协同变革将从根本上解决"缺芯少魂"问题,是实现国家战略的必 ...

  2. 操作系统笔记 清华大学陈渝

    课程概要 基本概念及原理 操作系统介绍 中断及系统调用 内存管理 进程及线程 调度 同步 文件系统 I/O子系统 1. 基本概念 操作系统是控制软件,管理应用程序,为应用程序提供服务,杀死应用程序,分 ...

  3. 【清华大学】操作系统 陈渝——Part6 全局页面置换算法

    [清华大学]操作系统 陈渝--Part6 局部页面置换算法 6.8 局部页面替换算法的问题,工作集模型 局部页面替换算法的问题 工作集模型 6.9 全局页面置换算法 1. 工作集页置换算法 2. 可变 ...

  4. 【清华大学】操作系统 陈渝 Part3 ——物理内存管理 之 连续内存分配

    [清华大学]操作系统 陈渝 Part3 --物理内存管理 之 连续内存分配 3.1计算机体系结构及内存分层 计算机体系机构 内存体系层次 管理内存方法 3.2地址空间 & 地址生成 地址空间定 ...

  5. 陈宝林《最优化理论与算法》超详细学习笔记 (七)————第五章 运输问题

    陈宝林<最优化理论与算法>超详细学习笔记 (七)----第五章 运输问题 第1节 运输问题的数学模型 第2节 表上作业法 2.1 确定初始基可行解 2.2 最优解的判别 2.3 改进的方法 ...

  6. java程序设计基础_陈国君版第五版_第五章习题

    java程序设计基础_陈国君版第五版_第五章习题 import java.util.Scanner; public class Main5_1 {public static void main(Str ...

  7. java程序设计基础_陈国君版第五版_第五章例题

    java程序设计基础_陈国君版第五版_第五章例题 public class Main5_1 {public static void main(String[] args){int i;int[] a; ...

  8. 清华大学操作系统公开课笔记(向勇、陈渝)

    转载:https://zhuanlan.zhihu.com/p/150510828 第一章:概述 内核功能:物理内存管理 | 虚拟内存管理 | 文件系统管理 | 中断处理和IO设备驱动 (底层硬件) ...

  9. 数字图像处理:第十五章 图象分割

    第十五章 图象分割 目录 1.    引言 2.    阈值与图象分割 3.    梯度与图象分割 4.    边界提取与轮廓跟踪 5.    Hough变换 6.    区域增长 作业 1.  引言 ...

  10. 数字图像处理:第五章 代数运算

    第五章 代数运算 目录 引言 加法运算 减法运算(差分) 乘法运算及除法运算 作业 1. 引言 代数运算是指两幅输入图象之间进行点对点的加.减.乘.除运算得到输出图象的过程.如果记输入图象为A(x,y ...

最新文章

  1. UVa12124 - Assemble(二分查找)
  2. Leetcode Permutation Sequence
  3. 开个坑, 写个阿里云开放储存服务(OSS)的C++版SDK以及客户端
  4. linux dup用法,Unix_Linux
  5. Java中key可以重复的Map集合:IdentityHashMap
  6. wampserver php扩展openssl 不可用_PHP基础及WAMP集成基础
  7. NET 4.0 System.Threading.Tasks学习笔记
  8. Cocos2d-x场景(Scene)详解
  9. 牛逼!只需 3 步,Java 也能做图片识别!
  10. C语言打开微信提示找不到文件,系统弹出提示:windows找不到文件 c:\user\admini~1\temp\appdata\xlliveud。。。什么原因?...
  11. AMD无悔卖掉晶圆厂:代工好处多 产能不再是问题
  12. matlab中contourf函数怎么用_有人可以解释如何使用contourf在MATLAB中绘制这个总和吗?...
  13. 计算用户的平均次日、三日和七日留存率
  14. 重庆南川金佛山中医院“扶正消瘤贴”专家评估研讨会圆满落幕
  15. 学计算机选择什么编程语言好一些?
  16. win10内置Ubuntu安装图形界面
  17. java毕业论文云笔记_java毕业设计_springboot框架的云笔记记事本
  18. STM32F767 资料汇总
  19. Java实现二分法排序
  20. Swoft中使用Consul微服务

热门文章

  1. 玩转数据可视化之R语言ggplot2:(九)网络图绘制
  2. Oracle数据库管理维护
  3. Office Execl常用函数使用方法
  4. 树莓派安装中文输入法(谷歌拼音)
  5. 浅谈搜索引擎优化方法
  6. 云研发 IDE Uncode:演示版发布(欢迎加入开发)
  7. DAY02,C语言基础编程题
  8. 一款阿里的知识管理工具
  9. 荆门市建设企业网站多少钱,荆门口碑好的网站建设多少钱
  10. 服务器删除的excel文件备份在哪里,excel自动备份文件在哪!如何找回EXCEL表格已删除的文件...