操作系统笔记--虚拟内存的使用

1--背景概念

        在计算机系统中,当多道程序同时运行时可能会出现内存不足的情况,一般可通过以下技术进行解决:

覆盖技术

        当程序太大超出内存容量时,可以采用手动覆盖的技术,只把需要的指令和数据保存在内存当中;

交换技术

        当程序太大超出内存容量时,可以采用自动交换的技术,把暂时不能执行的程序送到外存中;

虚拟存储技术

        采用自动的虚拟存储技术可以实现在有限容量的内存中,以更小的页粒度为单位来装入更大更多的程序;

2--覆盖和交换技术的缺陷

覆盖技术

        需要程序员自己把整个程序划分为若干个小的功能模块,并确定各个模块之间的覆盖关系,增加了程序员的负担;

交换技术

        以进程作为交换的单位,需要把进程的整个地址空间都换进换出,增加了处理器的开销;

3--虚存技术

        虚存技术兼顾覆盖技术和交换技术的特点,即虚存技术不把程序的所有内容都放在内存中,同时虚存技术可以实现进程的部分内容在内存和外存之间进行交换,这一过程由操作系统自动完成,无需程序员的干涉;

        虚存技术的实现基于程序的局部性原理:即程序在执行过程中的一个较短时期,所执行的指令地址和指令的操作数地址,分别局限于一定区域,具体表现为:

        时间局部性:一条指令的一次执行和下次执行,一个数据的一次访问和下次访问都集中在一个较短的时期内;

        空间局部性:当前指令和邻近的几条指令,当前访问的数据和邻近访问的几个数据都集中在一个较小的区域内;

实例说明:

         程序 1 将按一列一列的形式进行访问,但由于C语言的数组在实际存储中是按行进行存储的,所以程序 1 这种访问方式在访问每一个数据时,操作系统都会把整行(页)的数据加载到内存中,导致内存负担的加重;

        而程序 2 将按一行一行的形式进行访问,访问当个数据时,操作系统只需将本行数据加载到内存即可,待访问下一行的数据时再把下一行的数据加载到内存当中;

        因此,程序 2 的设计满足程序的局部性原理,显然对于虚拟内存管理来说是更优的设计;

虚存技术可以在页式或段式内存管理的基础上实现:

        ① 在装入程序时,无需将全部程序内容装入到内存中,只需将当前需要执行的部分页面或段装入到内存中;

        ② 在程序执行过程中,如果需执行的指令或访问的数据尚未在内存中,则由处理器通知操作系统将相应的页面或段调入到内存,然后继续执行程序;

        ​​​​​​​③ 操作系统会将内存中暂时不使用的页面或段调出保存在外存中,从而腾出空间存放将要装入的程序或将要调入的页面和段;

虚存技术的基本特征:

        ① 更大的用户空间:物理内存和外存相结合,提供的虚拟内存空间通常大于实际的物理内存;

        ② 部分交换:与交换技术相比,虚拟存储的调入和调出是对部分虚拟地址空间进行的;

        ③ 不连续性:物理内存分配的不连续,虚拟地址空间使用的不连续性;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值