第五章 虚拟存储器【操作系统】1

简介: 第五章 虚拟存储器【操作系统】1

前言

以下内容源自计算机操作系统(第四版)

关于操作系统,
CSDN有很多的优秀博客。
在这里,
本文摘取其他博客内容,
并附上相关链接,
如有侵权,
联系删除,
仅供学习交流使用

请您阅读文章声明,默认同意该声明

推荐

计算机操作系统(第四版)之虚拟存储器要点梳理

第五章 虚拟存储器

5.1 虚拟存储器概述

虚拟存储器实现了内存扩充功能。但该功能并非是从物理上实际地扩大内存的容量,而是从逻辑上实现对内存容量的扩充。

第四章所介绍的各种存储器管理方式有一个共同的特点,即它们都要求将一个作业全部装入内存后方能运行。于是,出现了下面这样两种情况:

1)有的作业很大,其所要求的内存空间超过了内存总容量。

2)有大量作业要求运行,但由于内存容量不足以容纳所有这些作业。

都是由于内存容量不够大导致的,一种解决方法是从逻辑上扩充内存容量,这正是虚拟存储技术所要解决的主要问题。

5.1.1 常规存储管理方式的特征和局部性原理

1.常规存储器管理方式的特征
1)一次性。指作业必须一次性地全部装入内存后方能开始运行。

2)驻留性。作业装入内存后,整个作业会一直驻留在内存中,其中任何部分都不会被换出,直至作业运行结束。

一次性及驻留性特征,使许多在程序运行中不用或暂不用的程序(数据)占据了大量的内存空间,使得一些需要运行的作业无法装入运行。

2.局部性原理

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

1)程序执行时,除了少部分的转移和过程调用指令外,在大多数情况下是顺序执行的。

2)过程调用将会使程序的执行轨迹由一部分区域转至另一部分区域。

3)程序中存在许多循环结构,这些虽然只由少数指令构成,但是它们将多次执行。

4)程序中还包括许多对数据结构的处理,如对数组进行操作,它们往往都局限于很小的范围内。

局限性还表现在下述两个方面:

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

2)空间局限性。程序在一段时间内所访问的地址,可能集中在一定的范围之内,其典型情况便是程序的顺序执行。

3.虚拟存储器的基本工作情况
基于局部性原理可知,应用程序在运行之前,没有必要全部装入内存,仅须将那些当前要运行的少数页面或段先装入内存便可运行,其余部分暂留在盘上。程序在运行时,如果它所要访问的页(段)已调入内存,便可继续执行下去;但如果程序所要访问的页(段)尚未调入

内存(称为缺页或缺段),此时程序应利用 OS 所提供的请求调页(段)功能,将它们调入内存,以使进程能继续执行下去。如果此时内存已满,无法再装入新的页(段),则还须再利用页(段)的置换功能,将内存中暂时不用的页(段)调至盘上,腾出足够的内存空间后,再将要访问的页(段)调入内存,使程序继续执行下去。这样,便可使一个大的用户程序能在较小的内存空间中运行;也可在内存中同时装入更多的进程使它们并发执行。

5.1.2虚拟存储器的定义和特征

1.虚拟存储器的定义
所谓虚拟存储器,是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。其逻辑容量由内存容量和外存容量之和所决定,其运行速度接近于内存速度,而每位的成本却又接近于外存。
2.虚拟存储器的特征
1)多次性。是指一个作业中的程序和数据无需在作业运行时一次性地全部装入内存,而是允许被分成多次调入内存运行,即只需将当前要运行的那部分程序和数据装入内存即可开始运行。

2)对换性。是指一个作业中的程序和数据,无须在运行时一直常驻内存,而是允许在作业的运行过程中进行换进、换出。

3)虚拟性。是指能够从逻辑上扩充内存容量,使用户所看到的内存容量远大于实际内存容量。就可以在小的内存中运行大的作业,或者能提高多道程序度。

虚拟性是以多次性和对换性为基础的,而多次性和对换性是必须建立在离散分配的基础上。

5.1.3虚拟存储器的实现方法

1.分页请求系统
这是在分页系统的基础上,增加了请求调页功能和页面置换功能所形成的页式虚拟存储系统。置换时以页面为单位。

1)硬件支持。

①请求分页的页表机制。

②缺页中断机构。

③地址变换机构。

2)实现请求分页的软件。

包括有用于实现请求调页的软件和实现页面置换的软件。
2.分段请求系统
这是在分段系统的基础上,增加了请求调段及分段置换功能后所形成的段式虚拟存储系统。置换时以段为单位。

1)硬件支持。

①请求分段的段表机制。

②缺段中断机构。

③地址变换机构。

2)实现请求分段的软件。

包括有用于实现请求调段的软件和实现段置换的软件。

因为请求分页系统换进和换出的基本单位都是固定大小的页面,所以在实现上要容易些。而请求分段系统换进换出的基本单位是段,其长度是可变的,分段的分配类似于动态分区方式,它在内存分配和回收上都比较复杂。


段页式虚拟存储器系统。

在段页式系统基础上,增加请求调页和页面置换功能形成段页式虚拟存储器系统。

5.2 请求分页存储管理方式

5.2.1 请求分页中的硬件支持

1.请求页表机制

在请求页表中增加了四个字段:

1)状态位(存在位) P:指示该页是否已调入内存。

2)访问字段A:记录该页在一段时间内的访问次数,或者最近多久未被访问,为置换算法选择置换页提供参考;

3)修改位M:指示该页在调入内存后是否被修改过。

4)外存地址:指示该页在外存的地址,通常是物理块号。
2.缺页中断机构
在请求分页系统中,每当所要访问的页面不在内存时,便产生一缺页中断,请求 OS 将所缺之页调入内存。缺页中断作为中断,它们同样需要经历诸如保护 CPU 环境、分析中断原因、转入缺页中断处理程序进行处理、恢复 CPU 环境等几个步骤。但缺页中断又是一种特殊的中断,它与一般的中断相比,有着明显的区别,主要表现在下面两个方面:

1)在指令执行期间产生和处理中断信号。即在指令执行期间,发现所要访问的指令或数据不在内存时所产生和处理的。

2)一条指令在执行期间,可能产生多次缺页中断。并保证最后能返回到中断前产生缺页中断的指令处继续执行。

3.地址变换机构

相关文章
|
2月前
|
人工智能 供应链 小程序
高效赋能数字人:2025 精选工具大推荐
2025 年,生成式 AI 技术推动数字人工具从 “单一功能落地” 迈向 “全链路价值赋能”,不仅能解决 “降本增效” 的基础需求,更能助力个人与企业解锁 “场景创新”。以下精选 5 款能力差异化的数字人工具,从核心技术、适配场景、实用价值等维度拆解,帮你找到能真正落地的数字人解决方案。
|
存储 数据库管理 索引
索引的优点和缺点是什么
【10月更文挑战第15天】索引的优点和缺点是什么
|
JavaScript 前端开发 安全
怎样用Node.js搭建web服务器
本文探讨了如何使用Node.js构建高效的HTTP服务器。首先,介绍了HTTP常见请求方法,如GET、POST、PUT等。接着,展示了如何使用Node.js的`http`模块创建服务器,并根据请求方法进行不同处理,如判断GET和POST请求,以及获取GET请求参数和处理POST请求数据。最后,讨论了服务器代码的模块化管理,包括路由管理和业务逻辑拆分,以提升代码的维护性和扩展性。通过本文,读者可以掌握基础的Node.js服务器开发及模块化设计技巧。
311 0
基于最小二乘递推算法的系统参数辨识matlab仿真
该程序基于最小二乘递推(RLS)算法实现系统参数辨识,对参数a1、b1、a2、b2进行估计并计算误差及收敛曲线,对比不同信噪比下的估计误差。在MATLAB 2022a环境下运行,结果显示了四组误差曲线。RLS算法适用于实时、连续数据流中的动态参数辨识,通过递推方式快速调整参数估计,保持较低计算复杂度。
|
存储 缓存 负载均衡
elasticsearch写入流程和请求检索流程原理全方位解析
elasticsearch写入流程和请求检索流程原理全方位解析
|
算法 搜索推荐 数据挖掘
图计算中的图算法有哪些常见的类型?请举例说明每种类型的算法。
图计算中的图算法有哪些常见的类型?请举例说明每种类型的算法。
423 0
|
开发框架 安全 .NET
C# .NET面试系列三:集合、异常、泛型、LINQ、委托、EF!
<h2>集合、异常、泛型、LINQ、委托、EF! #### 1. IList 接口与 List 的区别是什么? IList 接口和 List 类是C#中集合的两个相关但不同的概念。下面是它们的主要区别: <b>IList 接口</b> IList 接口是C#中定义的一个泛型接口,位于 System.Collections 命名空间。它派生自 ICollection 接口,定义了一个可以通过索引访问的有序集合。 ```c# IList 接口包含一系列索引化的属性和方法,允许按索引访问、插入、移除元素等。 由于是接口,它只定义了成员的契约,而不提供具体的实现。类似于 IEnumera
732 2
|
运维 监控 安全
运维工程师的转型与升级:解析35岁半衰期现象及其应对策略
运维工程师的转型与升级:解析35岁半衰期现象及其应对策略
1232 1
|
存储 安全 区块链
探索Web 3.0:构建去中心化应用的实践指南
在本篇文章中,我们将深入探讨Web 3.0的核心概念及其对未来互联网发展的影响。通过引导读者了解去中心化技术的基础,本文旨在提供一个实践指南,帮助开发者构建自己的去中心化应用(DApps)。我们将从介绍区块链、智能合约的基础知识出发,逐步深入到如何利用现有框架和工具(如Ethereum、IPFS等)开发DApps的详细步骤。此外,文章还将探讨Web 3.0技术在数据安全、用户隐私以及去中心化金融(DeFi)等领域的应用前景,旨在为开发者提供一份全面、实用的参考资料,助力他们在去中心化互联网时代占据先机。
|
块存储
【Openstack】排错:Cinder创建云硬盘状态错误解决
Cinder创建云硬盘状态错误,配置服务器时钟同步
5135 0
【Openstack】排错:Cinder创建云硬盘状态错误解决

热门文章

最新文章