计算机操作系统(五、虚拟存储器)

121 阅读5分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情

作者:大三的土狗

专栏:计算机操作系统 Snipaste_2022-10-03_20-24-01.png

前言

  操作系统 (英语:Operating System,缩写:OS) 是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。

  虚拟存储器(Virtual Memory):在具有层次结构存储器的计算机系统中,自动实现部分装入和部分替换功能,能从逻辑上为用户提供一个比物理贮存容量大得多,可寻址的“主存储器”。虚拟存储区的容量与物理主存大小无关,而受限于计算机的地址结构和可用磁盘容量。根据所用的存储器映像算法,虚拟存储器管理方式主要有段式、页式、和段页式三种。

image-20221007213957878.png

常规存储管理方式的特征

  • 一次性
  • 驻留性

局部性原理

 程序在执行时将呈现出局部性特征,即在一较短的时间内,程序的执行仅局限于某个部分,相应地,它所访问的存储空间也局限于某个区域

时间局限性

  • 如果程序中的某条指令一旦执行, 则不久以后该指令可能再次执行;如果某数据被访问过, 则不久以后该数据可能再次被访问。产生时间局限性的典型原因,是由于在程序中存在着大量的循环操作

空间局限性

  • 一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址,可能集中在一定的范围之内,其典型情况便是程序的顺序执行。

定义

指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统

优点

  • 大程序:可在较小的可用内存中执行较大的用户程序;
  • 大的用户空间:提供给用户可用的虚拟内存空间通常大于物理内存(real memory)
  • 并发:可在内存中容纳更多程序并发执行;
  • 易于开发:不必影响编程时的程序结构
  • 以CPU时间和外存空间换取昂贵内存空间,这是操作系统中的资源转换技术

特征

离散性

  • 指在内存分配时采用离散的分配方式,它是虚拟存储器的实现的基础

多次性

  • 指一个作业被分成多次调入内存运行,即在作业运行时没有必要将其全部装入,只须将当前要运行的那部分程序和数据装入内存即可。多次性是虚拟存储器最重要的特征

对换性

  • 指允许在作业的运行过程中在内存和外存的对换区之间换进、换出。

虚拟性

  • 指能够从逻辑上扩充内存容量,使用户所看到的内存容量远大于实际内存容量。

虚拟存储器的实现方式

请求分页存储管理方式

image-20221007214106077.png

  • 硬件

    • 请求页表机制

      • 格式:页号+物理块号+状态位P+访问字段A+修改位M+外存地址
    • 缺页中断机构

    • 地址变换机构(过程图很关键)

  • 请求分页中的内存分配

    • 最小物理块数

      • 即能保证进程正常运行所需的最小物理块数
    • 内存分配策略

      • 固定分配局部置换(国王的大儿子)
      • 可变分配全局置换(国王的二儿子)
      • 可变分配局部置换(国王的小儿子)
  • 物理块分配算法

    • 平均分配算法
    • 按比例分配算法
    • 考虑优先权的分配算法
  • 页面调入策略

    • 系统应在何时调入所需页面

      • 预调页策略(不能实现)
      • 请求调页策略(需要才给)
    • 系统应该从何处调入这些页面

      • 对换区
      • 文件区
    • 页面调入过程

    • 缺页率(出计算题)

请求分段系统

  • 硬件

    • 请求分段的段表机构
    • 缺段中断机构
    • 地址变换机构

页面置换算法

  当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间,而用来选择淘汰哪一页的规则叫做页面置换算法。

抖动的概念

  • 即刚被换出的页很快又要被访问,需要将它重新调入,此时又需要再选一页调出

1、最佳置换算法(需要预知后面进程,所以不能实现)

2、先进先出页面置换算法(FIFO)

  最简单的页面置换算法是先入先出(FIFO)法。这种算法的实质是,总是选择在主存中停留时间最长(即最老)的一页置换,即先进入内存的页,先退出内存。

  • 选择在内存中驻留时间最久的页面予以淘汰

3、最近最久未使用置换算法(LRU)Recently

  • 寄存器支持
  • 特殊的栈结构

4、最少使用置换算法(LFU)Frequently

5、clock置换算法(对访问位A的判断)

  • 改进型——增加对修改位M思维判断

6、页面缓冲算法(PBA,page buffering algorithm)

  • 空闲页面链表
  • 修改页面链表

总结

  以上就是计算机操作系统虚拟存储器的全部内容,希望可以帮到学习计算机操作系统的同学,不过本教程仅仅是对知识框架的梳理,想要具体学习还需参考书籍视频等等。