操作系统概念(九):虚拟内存

May 11, 2019
3分钟阅读时长

前言

本章目标:

  • 介绍虚拟内存系统优点
  • 描述按需调页概念、页替换算法

操作系统原理是武汉大学计算机学院软件工程专业所学习的一门专业课,教材为机械工业出版社的操作系统概念,本系列博客为该课程的学习笔记。

正文

1. 虚拟存储器

虚拟存储器是指具有请求调入和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。 虚拟存储器是一种以时间换空间的技术。

1.1. 理论基础

虚拟存储器的理论基础是程序执行时的局部性原理。

局部性原理是指程序在执行过程中一个较短时间内,程序所执行的指令地址和操作数地址分别局限于一定区域内。 例如:除转移和过程调用外,程序主要是顺序执行。过程调用使程序从一部分区域转至另一部分区域。

局部性体现为:

  • 时间局部性:一条指令的一次执行和下次执行,一个数据的一次访问和下次访问,都集中在一个较短时间内。
  • 空间局部性:当前执行的指令和将要执行的指令,当前访问的数据和将要访问的数据,都集中在一个较小范围内。

1.2. 基本原理

  • 在程序运行之前,将程序的一部分放入内存后就启动程序执行。
  • 在程序执行过程中,当所访问的信息不在内存时,由操作系统将所需要的部分调入内存,然后继续执行程序。
  • 另一方面,操作系统将内存中暂时不使用的内容换出到外存上,从而腾出空间存放将要调入内存的信息。

从效果上看,这样的计算机系统好像为用户提供了一个存储容量比实际内存大得多的存储器,将这个存储器称为虚拟存储器。

1.3. 特征

  • 离散性:不连续内存分配
  • 多次性:一个作业分多次装入内存
  • 对换性:允许运行中换进换出
  • 虚拟性:逻辑上扩充内存

1.4. 本质

虚拟存储器的本质是将程序的访问地址和内存的可用地址分离,为用户提供一个大于实际主存的虚拟存储器。 虚拟存储器的容量受限于:

  • 地址结构
  • 外存容量

2. 虚拟存储器的实现

2.1. 实现虚拟存储技术的物质基础

  • 相当数量的外存:足以存放多个用户的程序。
  • 一定容量的内存:在处理机上运行的程序必须有一部分信息存放在内存中。
  • 地址变换机构:动态实现逻辑地址到物理地址的变换。

2.2. 实现方式

虚拟内存通过以下方式实现:

  • 请求分页存储管理
  • 请求分段存储管理
  • 请求调页的段页式存储管理

2.3. 请求分页存储管理

请求分页存储管理方法是在分页存储管理的基础上增加了请求调页和页面置换功能。

2.3.1. 实现思想

在作业运行之前只装入当前需要的一部分页面便启动作业运行。在作业运行过程中,若发现所要访问的页面不在内存,便由硬件产生缺页中断,请求OS将缺页调入内存。若内存无空闲存储空间,则根据某种置换算法淘汰已在内存的某个页面,以腾出内存空间装入缺页。

2.3.2. 支持机构

请求分页中的支持机构有:

  • 页表
  • 缺页中断机构
  • 地址变换机构
  • 请求调页和页面置换软件
2.3.3. 页表

由于每次只将作业的一部分调入内存,还有一部分内容存放在磁盘上,故需要在页表中增加若干项。 扩充后的页表项如下所示:

  • 页号和物理块号:其定义同分页存储管理。
  • 状态位:用于表示该页是否在主存中。
  • 访问字段:用于记录本页在一段时间内被访问的次数,或最近已有多长时间未被访问。
  • 修改位:用于表示该页调入内存后是否被修改过。
  • 外存地址:用于指出该页在外存上的地址。

缺页中断

  • 缺页中断处理程序根据该页在外存的地址把它调入内存。
  • 在调页过程中,若内存有空闲空间,则缺页中断处理程序只需把缺页装入并修改页表中的相应项;
  • 若内存中无空闲物理块,则需要先淘汰内存中的某些页,若淘汰页曾被修改过,则还要将其写回外存。

本文首发于我的个人博客技术公馆(wangchucheng.com)
原文链接:https://wangchucheng.com/zh/posts/operating-system-concepts-9/
本博客内文章除特别声明外均为原创,采用CC BY-NC-SA 4.0 许可协议进行许可。超出CC BY-NC-SA 4.0 许可协议的使用请联系作者获得授权。

Avatar
C. Wang 说学逗唱样样不精的地道天津人。