在操作系统中解决“程序大小超过物理内存总和“的几种技术(覆盖技术、交换技术、虚拟存储技术)

来源:https://www.bilibili.com/video/BV1YE411D7nH

在操作系统中解决"程序大小超过物理内存总和"的几种技术

一、覆盖技术

基本思想:将一个程序分为多段,对于常用的段应当常驻内存,不常用的段在需要的时候进入内存

采用这种技术的时候,内存中被划分为:一个固定区 + N个覆盖区常驻内存的段进入固定区(进入之后只有在程序结束时调出);不常用的段进入覆盖区(需要的时候进入,不需要的时候调出)。

**注意:**覆盖技术应用于一个进程中

二、交换技术

基本思想:在内存空间不足的时候,将内存中某些作业暂时放置到外存(存放在磁盘上面的对换区,这个区的IO效率高于磁盘上的文件区),将外存中需要进入内存中的作业调入内存。(在内存和磁盘间频繁调度)

注意:

  • 进程被放置在外存的时候,进程的PCB会留在内存(不然追踪不到当前作业了)

  • 交换技术应用于多个进程中

三、虚拟存储技术

传统存储管理方式的缺点

​ 传统存储方式包括连续分配和非连续分配方式,连续分配方式包括:单一连续分配、固定分区分配、动态分区分配三种方式,而非连续分配包括:页式存储、段式存储、段页式存储三种方式。

​ 传统存储方式要求一次性将作业加载进内存。这会导致两个问题

  • 当作业很大时,无法全部装入内存,导致不能运行(一个作业的角度)
  • 大作业要求运行时,如果内存无法容纳所有作业,那么就只有少量作业能够运行,导致多道程序并发度下降 (多个作业的角度)
  • 一个作业放入内存中,会全部驻留在内存中,但是实际上,可能在一个时间段只需要一部分的数据就可以正常运行了,这会导致内存在某个时间段被大量无用的数据占用。

总结:传统存储管理方式具有一次性、驻留性的缺点

高速缓存技术

思想:将近期会频繁访问的数据放到更高速的存储器中暂时用不到的数据放到更低速的存储器中。

虚拟内存的定义和特征

虚拟内存的定义

​ 基于局部性原则,在程序装入的时候,可以将程序中很快就会使用到的部分装入内存暂时用不到的留在外存,就可以让程序开始运行。

​ 在程序执行的时候,当所访问的信息不在内存的时候,由操作系统负责将所需要的信息由外存调入内存,然后继续执行程序。

​ 若内存空间不足了,就由操作系统负责将内存中暂时用不到的信息换出到外存

​ 在操作系统的管理下,在用户看来似乎有一个比实际内存大得多的内存,这就是虚拟内存

虚拟内存的特征

  • 多次性:一个作业可以被分成多次载入内存
  • 对换性:允许在一个作业运行过程中,将作业换入、换出
  • 虚拟性:在逻辑上扩充了内存

虚拟内存技术的实现

​ 虚拟内存技术的实现建立在==离散分配==的存储管理方式之上。传统的离散分配方式(非连续分配)包括:基本分页存储管理、基本分段存储管理、基本段页存储管理。在这三种方式上应用了虚拟技术后,分别形成了:请求分页存储管理、请求分段存储管理、请求段页式存储管理

上面两大类存储管理的主要区别在于:

​ 1、虚拟内存技术在程序执行过程中,当访问的信息不在内存时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序请求调页请求调段功能);

​ 2、在内存空间不够时,操作系统会将内存中暂时用不到的信息换出到外存页面置换段置换功能

如何实现基于虚拟内存技术的页表机制呢?

​ 要实现该机制,那么要考虑两点:①在请求分页存储管理中,要实现"请求调页",操作系统需要知道每个页面是否调入内存;如果没有调入,那么还应知道该页面在外存中存储的地址。②当内存空间不足时,要实现"页面置换"功能,操作系统会根据一些指标决定到底选择哪些页面进行置换;同时对于置换出去的页面检查是否被修改过,如果没有被修改,则不用再次写入外存;如果被修改过,那么就要重新写入外存。因此,操作系统还需要记录每个页面是否被修改过的信息

于此。请求分页存储管理的页表结构如下:
在这里插入图片描述

什么是缺页中断机构?
在这里插入图片描述

假设此时要访问的逻辑地址 = (页号, 页内偏移量) = (0, 1024)

在请求分页系统中,每当要访问的页面不在内存时,便会产生一个缺页中断,然后由操作系统的缺页中 断处理程序处理该中断,这时候有两种情况:

情况一:如果内存中有空闲块,则为进程分配一个空闲块,将所缺页面装入该块,并修改页表中对应的页表项(还需要将页表项写入到快表),如下图所示:

在这里插入图片描述

情况二:如果内存中没有空闲块,那么会根据一定的算法(如LRU)淘汰一个页面,对应该淘汰的页面,会检查其是否被修改,若修改了,则还需要写回外存若没修改,则什么也不做。最后将该页装入内存块 中,同时还需要更新当前页表,(还需要将页表项写入到快表)。

寻址过程:

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值