1--背景概念
在计算机系统中,当多道程序同时运行时可能会出现内存不足的情况,一般可通过以下技术进行解决:
覆盖技术:
当程序太大超出内存容量时,可以采用手动覆盖的技术,只把需要的指令和数据保存在内存当中;
交换技术:
当程序太大超出内存容量时,可以采用自动交换的技术,把暂时不能执行的程序送到外存中;
虚拟存储技术:
采用自动的虚拟存储技术可以实现在有限容量的内存中,以更小的页粒度为单位来装入更大更多的程序;
2--覆盖和交换技术的缺陷
覆盖技术:
需要程序员自己把整个程序划分为若干个小的功能模块,并确定各个模块之间的覆盖关系,增加了程序员的负担;
交换技术:
以进程作为交换的单位,需要把进程的整个地址空间都换进换出,增加了处理器的开销;
3--虚存技术
虚存技术兼顾覆盖技术和交换技术的特点,即虚存技术不把程序的所有内容都放在内存中,同时虚存技术可以实现进程的部分内容在内存和外存之间进行交换,这一过程由操作系统自动完成,无需程序员的干涉;
虚存技术的实现基于程序的局部性原理:即程序在执行过程中的一个较短时期,所执行的指令地址和指令的操作数地址,分别局限于一定区域,具体表现为:
时间局部性:一条指令的一次执行和下次执行,一个数据的一次访问和下次访问都集中在一个较短的时期内;
空间局部性:当前指令和邻近的几条指令,当前访问的数据和邻近访问的几个数据都集中在一个较小的区域内;
实例说明:
程序 1 将按一列一列的形式进行访问,但由于C语言的数组在实际存储中是按行进行存储的,所以程序 1 这种访问方式在访问每一个数据时,操作系统都会把整行(页)的数据加载到内存中,导致内存负担的加重;
而程序 2 将按一行一行的形式进行访问,访问当个数据时,操作系统只需将本行数据加载到内存即可,待访问下一行的数据时再把下一行的数据加载到内存当中;
因此,程序 2 的设计满足程序的局部性原理,显然对于虚拟内存管理来说是更优的设计;
虚存技术可以在页式或段式内存管理的基础上实现:
① 在装入程序时,无需将全部程序内容装入到内存中,只需将当前需要执行的部分页面或段装入到内存中;
② 在程序执行过程中,如果需执行的指令或访问的数据尚未在内存中,则由处理器通知操作系统将相应的页面或段调入到内存,然后继续执行程序;
③ 操作系统会将内存中暂时不使用的页面或段调出保存在外存中,从而腾出空间存放将要装入的程序或将要调入的页面和段;
虚存技术的基本特征:
① 更大的用户空间:物理内存和外存相结合,提供的虚拟内存空间通常大于实际的物理内存;
② 部分交换:与交换技术相比,虚拟存储的调入和调出是对部分虚拟地址空间进行的;文章来源:https://www.toymoban.com/news/detail-419998.html
③ 不连续性:物理内存分配的不连续,虚拟地址空间使用的不连续性;文章来源地址https://www.toymoban.com/news/detail-419998.html
到了这里,关于操作系统笔记--虚拟内存的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!