覆盖技术,交换技术,虚拟存储技术

不尝人间醋与墨,怎知人间酸与苦

文章目录

  • 前言
  • 覆盖技术
  • 交换技术
  • 虚拟存储技术
  • 三者的共同点


前言

本文参考:
博客1
博客2

虚拟存储:在非连续存储内存分配的基础上,可以把一部分内容放到外存的做法

覆盖技术

在较小的可用内存中运行较大的程序,常用于多道程序系统,与分区存储管理配合使用(分区存储管理是把主存储器中的用户区作为一个连续区或分成若干个连续区进行管理,每个连续区中可装入一个作业。多道程序系统一般都采用多个分区的存储管理,具体可分为固定分区和可变分区两种方式。详情请看内存)
方法:对于一个进程,不需要一开始就把程序的全部指令和数据都装入内存再执行。程序划分为若干个功能上相对独立的程序段,按照程序逻辑结构让那些不需要同时执行的程序段共享同一块内存区,当有关程序段的先头程序段已经执行结束后,再把后续程序段从外存调入内存覆盖前面的程序段把程序按照其自身逻辑结构,划分为若干个功能上相对独立的程序模块,那些不会同时执行的模块共享一块内存区域,按时间先后来运行。覆盖技术必须是同一进程里的几个独立的程序段进行相互覆盖,也就是这几个独立的程序段无互相调用关系,互相无关。
缺点:因此程序员必须给出程序内的各个模块之间的逻辑覆盖结构,这就使程序员担负加大。用于早期的单用户操作系统,一旦转入内存,就始终占据内存直到结束,并且覆盖区的大小必须小于内存
优点:打破了必须将一个进程全部信息放入主存后才能运行的限制,支持部分装入

交换技术

以进程为单位进行交换。
操作系统把一个进程的整个地址空间的内容保存到外存中(换出),而将外存中的某个进程的地址空间读入内存中(换入),换入换出内容的大小为整个程序的地址空间。就是中级调度(内存调度)将暂时不用的进程调出内存,等内存宽裕的时候再将进程唤醒(这里需要注意这里是属于挂起态,是一种主动的行为)
因为换入换出后内存位置不一定相同,所以使用动态地址映射(即在程序运行过程中把逻辑地址转化为物理地址)
缺点:运行的进程的大小受到实际内存的限制
优点:打破了一个程序一旦进入主存便一直运行到结束的限制

虚拟存储技术

将进程划分为段或页,换入换出以段或页为单位。虚拟段式存储,虚拟页式存储,将不常用的部分内存块暂存到外存中
装入程序时:只将当前指令执行需要的部分页面或段装入内存中,既可以开始执行
在运行过程中查块表页表段表,发现需要的指令或访问的数据所指向的地址尚未存在于内存中,即缺页/缺段中断,操作系统就会将所缺的内存块从外存中调入内存,再继续执行
也会在合适时候将暂时不适用的页面或段调出保存到外存上(怎么判断哪些是不用的,就是所谓的置换算法
程序的大小不受内存容量的限制,只受计算机地址结构的限制(虚存容量不是无限的,最大容量受内存和外存可利用的总容量限制 , 虚存搜索实际容量受计算机总线地址结构限制,若是超过了虚拟存储的容量自然就不能将所需要的块调入,所谓虚拟存储就是min(主存+外存,2^地址总线的个数))
而交换技术是内存紧张时,换出某些进程,腾出内存空间,换入其他进程。换而言之,交换技术是在不同的进程(作业)间的,虚拟存储技术是在一个作业间的。另外提一嘴,覆盖技术也是在同一个程序或进程中的
交换技术是以进程为单位,若进程所需内存大于系统内存 ,则此进程无法进行。覆盖技术通过程序员给进程进行分模块,这些需要程序员进行区分模块,不同时调用模块可以不同时存在于内存中,所以进程所需的内存大于系统内存时候也可以运行,而虚拟存储是以页或段为单位这些都是操作系统完成的,是把进程再分为页或段对内存进行分化,若是缺失再调用即可,若进程所需内存大于系统内存,进程也可以运行,因为该进程的一部分可换到外存上,

三者的共同点

都是为了解决内存空间不足的问题,提高内存的利用率
都是在逻辑上扩充内存容量
都是内存和外存之间交换信息

你可能感兴趣的:(笔记,操作系统,408,考研)