第五章、虚拟内存

虚拟内存:

1. 覆盖技术:

1.1 目标:

* 在较小的可用内存中运行较大的程序。常用于多道程序系统,与分区存储管理配合使用。

1.2 原理:

  • 把程序按照其自身的逻辑结构,划分为若干个功能上相对独立的程序模块,那些不会同时执行的模块共享同一块内存区域,按照时间先后来执行。
  • 必要部分(常用功能) 的代码和数据常驻内存;
  • 可选部分(不常用功能)在其他程序模块中实现,平时存放在外存中,在需要用到时才装入内存;
  • 不存在调用关系的模块不必同时装入内存,从而可以相互覆盖,即这些模块公用一个分区。

1.3 实例:

在这里插入图片描述

覆盖方法一:

​ 由于A会调用B、C、D、E、F,那么A就必须作为常驻内存;

​ 当A调用B的时候不会调用C,此时就可以将C存放在硬盘中,A调用完B后返回去调用C,此时会释放B的内存空间,将C从硬盘调入内存;

​ 同理当C调用E时,D和F不会运行,那么可以将D、F放入硬盘。

在这里插入图片描述

覆盖方法二:

​ B、E、F共享一块内存; C、D共享一块内存。

1.4 覆盖技术的缺点:

  • 由人来讲一个大的程序划分为若干个小的功能模块,并确定各个模块之间的覆盖关系,费时费力,增加了编程的复杂度;
  • 覆盖模块从外存装入内存,实际上是以时间延长来换取空间节省。

2. 交换技术

2.1 目标:

  • 多道程序在内存中时,让正在运行的程序或需要运行的程序获得更多的内存资源。

2.2 方法:

  • 将暂时不能运行的程序送到外存,而从获得空闲内存空间。
  • 操作系统把一个进程的整个地址空间的内容保存到外存中(换出 swap out),而将外存中的某个进程的地址空间读入到内存中(换入 swap in)。换入换出内容的大小为整个程序的地址空间。导入导出的力度会比较大,通常大于一个页。

2.3 交换技术实现的几个问题:

在这里插入图片描述

2.4 覆盖与交换的比较:

  • 覆盖只能发生在那些相互之间没有调用关系的程序模块之间,它发生在一个程序内,需要程序员给出程序内各个模块之间的逻辑覆盖结构。
  • 交换技术是以在内存中的程序大小为单位来进行,它不需要程序员给出各个模块之间的逻辑覆盖结构。换言之,交换发生在内存中程序与管理程序或操作系统之间,是由操作系统来操作的,而覆盖则发生在运行程序的内部。

3. 虚存技术

3.1 覆盖技术和交换技术的缺点:

在这里插入图片描述

3.2 虚存技术的目标:

  • 像覆盖技术那样,不是把程序的所有内容都放在内存中,因而能够运行比当前的空闲内存还要大的程序。但做的更好,由操作系统自动完成,无须程序员的干涉;
  • 像交换技术那样,能够实现进程在内存与外存之间的交换,因而能够获得更多的空闲内存空间。但做的更好,只对进程的部分内容在内存和外存之间进行交换。

在这里插入图片描述

3.3 程序的局部性原理----对虚存技术的支持

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

程序编写方法一:

​ 由于数组的一行放在一个页面中,而每次只能分配给每个进程一页数据。当开始访问 a(0,0)时由于数据还在磁盘中,需要调到内存中,因此发生了一次缺页异常。

​ 当a(0,0)访问完成后访问a(1,0),它在另外一页,此时又要到磁盘中调出该页到内存中,又发生了一次缺页异常。

程序编写方法二:

​ 当访问完a(0,0)后会继续访问a(0,1),都在同一页面中,因此不会发生缺页中断。总的来说只会发生1024次。

3.4 虚存技术-----基本概念:

在这里插入图片描述

3.5 虚存技术-----基本特征:

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

3.6 虚存技术----虚拟页式内存管理:

在这里插入图片描述

在这里插入图片描述

3.6.1 虚拟页式内存管理的实例:

在这里插入图片描述

如果,驻留位为X代表没有对应的页X帧,该页还处在外存中;驻留位为其它数字则代表内存中有对应页帧。

3.6.2 缺页中断异常的处理过程:

在这里插入图片描述

  • 第一种是:当发生缺页中断异常时,操作系统会检查在内存中是否有空闲的物理页面,然后从外存中将对应的页面调入到物理内存,同时还需要修改该页对应的页表项(包括页帧号、驻留位)。修改好后就会重新执行发生异常的指令。
  • 第二种是:内存中没有空闲的物理页面,此时就需要根据页面置换算法来选择一个被替换的页帧,此时可能会将处于使用状态的物理页面置于空闲状态,如果该物理页中的数据被修改过,那么要先将数据写回外存中;如果没有被修改过,就直接释放。

3.7 后备存储:

在这里插入图片描述

3.8 虚存管理性能:

在这里插入图片描述

当没有发生缺页异常时,操作系统会直接读取内存中的物理页,此时访时:10(1-p)

当发生了缺页异常时,操作系统需要到外存中去调用相应的物理页进入内存,但是如果内存容量不够就还需要采用页面置换算法进行页面置换,这就关系到当前正在执行页面的数据保存与统一,如果页面中的数据发生了改变就需要写回外存保证数据统一,这就又进行了一次磁盘访问。因此此时的访时:5000000p(1+q)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值