操作系统(3)—— 覆盖、交换技术和虚存技术

操作系统(3)—— 虚拟内存

本节要学习的知识点如下:

  • 虚拟内存的起因
  • 覆盖技术
  • 交换技术
  • 虚存技术

一. 虚拟内存的起因

  • 程序规模的增长速度远远大于存储器容量的增长速度
  • 理想中的存储器 :更大、更快、更便宜、非易失性。
  • 常用的数据程序放在CPU中便于访问,不常用的放在内存、硬盘中。
  • 早期DOS——内存不够用的情况及解决方法
    • 程序太大,超过内存容量,可以采用手动的覆盖技术,只把需要的指令和数据保存在内存中。
    • 程序太多,超过内存容量,可以采用自动的交换技术,把暂时不能执行的程序送到外存中去。
    • 如果想要在有限容量的内存中,以更小的页粒度为单位装入更多更大的程序,可以采用自动的虚拟存储技术

二. 覆盖技术

  • 目标:

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

  • 原理:

    ​ 把程序按照其自身逻辑结构,划分为若干个功能上相对独立的程序模块,那些不会同时执行的模块共享同一块内存区域,按时间先后来运行。

    • 必要部分(常用功能)的代码和数据常驻内存
    • 可选部分(不常用功能)在其他程序模块中实现,平时存放在外存中,在需要时才装入内存;
    • 不存在调用关系的模块不必同时装入到内存,从而可以相互覆盖,即这些模块共用一个分区
  • 缺点:

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

三. 交换技术

  • 目标:

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

  • 方法:

    • 将暂时不能运行的程序送到外存 ,从而获得空闲内存空间;
    • 操作系统把一个进程的整个地址空间的内存保存到外存中(换出swap out),而将外存中的某个进程的地址空间读入到内存中(换入swap in)。换入换出内容的大小为整个程序的地址空间
  • 实现中的问题

    • 交换时机的确定:只当内存空间不够或有不够的危险时换出;
    • 交换区的大小:必须足够大以存放所有用户进程的所有内存映像的拷贝;必须能对这些内存映像直接进行存取;
    • 程序换入时的重定位:换出后再换入的内存位置可能发生变化,因此最好采用动态地址映射的方法。
覆盖与交换的比较
  • 覆盖只能发生在那些相互之间没有调用关系的程序模块之间。因此程序员必须给出程序内的各个模块之间的逻辑覆盖结构。
  • 交换技术是以在内存中的程序大小为单位进行的,它不需要程序员给出各个模块之间的逻辑覆盖结构。
  • 换言之,交换发生在内存中程序与管理程序或操作系统之间,而覆盖则发生在运行程序的内部。

四. 虚存技术——虚拟内存管理技术

  • 虚拟内存 = 物理内存 + 硬盘

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

    ​ 程序在执行过程中的一个较短时期,所执行的指令地址和指令的操作数地址,分别局限于一定区域。该原理表明,理论上说,虚存技术可以实现并达到满意效果。

    • 时间局部性:一条指令的一次执行和下次执行,一个数据的一次访问和下次访问都集中在一个较短时间内;
    • 空间局部性:当前指令和临近的几条指令,当前访问的数据和临近的几个数据都集中在一个较小区域内。
    • 例,访问n×n的矩阵,按列访问会产生n×n次缺页中断,但按行访问只产生n次缺页中断。
  • 虚存技术可以在页式或段式管理的基础上实现。
    • 在装入程序时,不必将其全部装到内存中,而只需将当前需要执行的部分页面或段装入内存,就可让程序开始执行;
    • 在程序执行过程中,如果需执行的指令或访问的数据尚未在内存(称为缺页或缺段),则由处理器通知操作系统将相应的页面或段调入到内存,然后继续执行程序;
    • 另一方面,操作系统将内存中暂时不使用的页面或段调出保存在外存上,从而腾出更多空间存放将要装入的页面或段。
  • 虚存技术的基本特征
    • 大的用户空间:通过把物理内存与外存相结合,提供给用户的虚拟内存空间通常大于实际的物理内存,即实现了这两者的分离。如32位的虚拟地址理论上可访问4GB,而计算机上可能仅有256M物理内存,但硬盘容量大于4GB。
    • 部分交换:与交换技术相比,虚拟存储的调入和调出是对部分虚拟地址空间进行的。
    • 不连续性:物理内存分配的不连续,虚拟地址空间使用的不连续性。
  • 虚存技术的具体实现——虚拟页式内存管理

    页表完成逻辑地址(页)与物理地址(帧)的映射。大部分虚拟存储系统都采用虚拟页式内存管理技术,即在页式存储管理的基础上,增加请求调页页面置换功能。

    页表项增加的几个

    • 驻留位:表示该页实在内存还是在外存。如果该位等于1,表示该页位于内存当中,表示该页表项是有效的,可以使用;如果该位等于0,表示该页在外存中,如果访问该页表项,导致缺页中断。
    • 保护位:表示允许对该页做何种类型的访问,如只读、可读写、可执行等。
    • 修改位:表明此页在内存中是否被修改过,当系统回收该物理页面时,根据此位来决定是否把它的内存写回外存。
    • 访问位:如果该页面被访问过,则设置此位,用于页面置换算法。
  • 后备存储(Backing Store),又称二级存储
    • 在何处保存未被映射的页?
      • 能够简单的识别在二级存储器中的页
      • 交换空间(磁盘或文件):特殊格式,用于存储未被映射的页面
    • 后备存储的部分
      • 一个虚拟地址空间的页面可以被映射到一个文件(在二级存储中)的某个位置;
      • 代码段:映射到可执行二进制文件;
      • 动态加载的共享库程序段:映射到动态调用的库文件;
      • 其他段:可能被映射到交换文件。
  • 虚拟内存性能

    为了便于理解分页的开销,使用有效存储器访问时间 EAT(Effective memory access time);

    EAT = 访存时间 × 页表命中几率 + page fault处理时间 × page fault几率

发布了76 篇原创文章 · 获赞 30 · 访问量 5831

猜你喜欢

转载自blog.csdn.net/weixin_45926367/article/details/104798659