【操作系统】虚拟内存浅析

文章目录

  • 虚拟内存的概念
  • 虚拟内存的实现
    • 请求分页存储管理
      • 缺页中断机构
      • 地址变换机构
      • 页面置换算法
      • 页面分配策略
        • 调入页面的时机

虚拟内存的概念

所谓的虚拟内存,是具有请求调入置换功能,从逻辑上对内存容量加以扩充的一种存储器系统。他的组成如下:

在这里插入图片描述
可以看到,操作系统将内存、外存结合起来,形成的存储器系统就是虚拟内存。

虚拟内存的工作原理主要有以下两点:

  • 时间局部性(一定时间内,多次执行)
  • 空间局部性(对于某些热点内存,多次频繁的访问并执行)

另一方面,虚拟内存具有下面的特征:

  • 多次性
  • 对换性(比如进程挂起时,会从主存储器迁出到硬盘缓存中)
  • 虚拟性

虚拟内存的实现

结合虚拟内存的组成(内存+外存)以及笔者前面几篇关于内存分配管理方式的介绍,将虚拟内存的实现所涉及的几点总结为下图:

在这里插入图片描述
具体的实现方式有以下三种:

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

下面将主要介绍请求分页存储管理,另外两种基本原理也都差不多,就不再赘述。

请求分页存储管理

由于进程在执行过程中,并不会一次性将程序装入,因此每当需要装入新的程序部分到内存时,就会进行请求。在这个过程中,涉及到了请求分页的存储管理页表。

在这里插入图片描述

  • 页号:内存(一般指的是主存储内存)中的逻辑地址;
  • 内存块号:页号所对应的内存中的物理地址;
  • 状态位:是否已经加载到内存中;
  • 访问字段:代表了对应内存页的访问频率,可以用于“对换”的判断参考;
  • 修改位:表示对应的内存页中数据是否发生过修改;
  • 外存地址:内存页所对应的程序对换存储地址(硬盘);

缺页中断机构

当程序执行过程中,发现所需要的部分未加载至内存,将会发生缺页中断,将所需部分程序装入至内存。以上面的存储管理页表为例。

假如此时需要页号0的程序部分,操作系统将其装入内存后维护存储管理页表:更新内存块号、状态位等。

在这里插入图片描述
相对应的,如果页面置换算法判断为淘汰时(例如访问频率低),内存中的程序就需要对换入硬盘缓存中。在这个过程中也需要缺页中断来完成。

操作系统根据存储管理表中的外存地址,将进行多次缺页中断,将对应程序部分挂起到硬盘缓存中。

在这里插入图片描述

地址变换机构

虚拟内存的地址变换机构与前几篇文章所介绍的非连续内存分配差不多。区别在于页表的结构内容更多了。整个流程如下:

在这里插入图片描述

  • 首先请求调页,根据逻辑地址(程序中写的地址是逻辑的,不是物理的实际的地址)判断是否在内存中(查表,优先快表);
  • 如果内存不足,则需要进行页面置换,即将内存中部分程序对换至硬盘缓存中,将淘汰的程序在页表中的数据修改为调入程序对应的数据;
  • 如果内存充足,则在页表中进行新增,完成程序的装入;
  • 将某些热点表同步至快表中;

页面置换算法

上面多次提到了页面置换算法,简单的了解几个总结如下:

  • 先进先出置换算法
  • 最佳置换算法
  • 最近最久置换算法
  • 时钟置换算法
  • 改进型时钟置换算法

在这里插入图片描述

页面分配策略

页面分配策略涉及到的问题是:操作系统分配给进程多少内存页才比较合适?

首先需要知道驻留集,驻留集表示驻留在主存中的页面数。驻留集的大小对操作系统的影响有以下几点:

  • 给进程分配的页面总空间小,会使得支持的进程数量增多,因此CPU时间利用率高;
  • 给进程分配在主存中的页数少,会使得错页率高(可能会频繁的换入换出);
  • 进程在主存的页数多,但是错页率不会有明显改善(因为内存足够,错页率已经低了);

几种页面分配策略
首先两种分配方式:固定分配、可变分配。所谓的“固定分配”就是操作系统分配固定大小的总页面,不够时不能向操作系统申请新的内存空间;而“可变分配”指的是,操作系统分配内存页后,还可以再向操作系统申请。

然后是两种置换方式:局部置换、全局置换。所谓的“局部置换”,是说分配的内存不足时,只能在进程所分配的内存页中进行置换;而“全局置换”是可以从主存中其余空闲的内存中进行置换。

以上两种方式的搭配,形成了三种分配策略:

  • 固定分配局部置换;
  • 可变分配全局置换;
  • 可变分配局部置换;
调入页面的时机

根据页面的调入时机,有两种策略:

  • 预调页策略:一般用于进程的首次调入,一次性调入若干相邻页面;
  • 请求调页策略:在进程运行时发现缺页再进行调入,由于要从硬盘进行调入调出,因此I/O操作开销较大;

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/190213.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wpf devexpress 绑定数据编辑器

定义视图模型 打开前一个项目 打开RegistrationViewModel.cs文件添加如下属性到RegistrationViewModel类 [POCOViewModel] public class RegistrationViewModel {public static RegistrationViewModel Create() {return ViewModelSource.Create(() > new RegistrationVie…

【踩坑笔记】国科GK7202V300芯片开发常见问题解决办法

国科Linux芯片开发常见问题&解决办法 0.读前须知 不管什么时候,下载程序还是啥,一定要检查路径!!!别问我为什么,呜呜呜~ tips:该芯片是仿造海思的产品,所以,有些不…

Docker Volume: 实现容器间数据共享与持久化的利器

文章目录 Docker Volume的作用Docker Volume与容器内数据的比较优势劣势 Docker Volume的创建和管理创建Docker Volume管理Docker Volume 演示Docker Volume的挂载Docker Volume的生命周期安全性考虑与Docker Volume应用场景Docker Volume与多容器协作容器迁移与Docker Volume未…

深度学习数据集—文本、数字、文字识别大合集

最近收集了一大波关于文本、数字识别相关的数据集,有数字识别、也有语言文字识别,废话不多说现在分享给大家!! 1、500张手写拼音数据集 500张手写拼音数据集,包含对应txt格式标注及图片,,并提…

Vatee万腾科技引领创新潮流:Vatee数字化探索的前沿之光

在Vatee万腾科技引领创新潮流的浪潮中,我们见证了一场数字化探索的前沿之光。Vatee万腾以其卓越的科技实力和创新精神,成为数字化时代的领军者,为创新潮流注入了强大动力。 Vatee万腾积极探索数字化的前沿,不断挑战科技的极限。他…

MatLab的下载、安装与使用(亲测有效)

1、概述 MatLab是由MathWorks公司开发并发布的,支持线性代数、矩阵运算、绘制函数和数据、信号处理、图像处理以及视频处理等功能。广泛用于算法开发、数据可视化、数据分析以及数值计算等。 Matlab 的主要特性包括: 简单易用的语法,使得程…

第四篇 《随机点名答题系统》——基础设置详解(类抽奖系统、在线答题系统、线上答题系统、在线点名系统、线上点名系统、在线考试系统、线上考试系统)

目录 1.功能需求 2.数据库设计 3.流程设计 4.关键代码 4.1.设置题库 4.1.1数据请求示意图 4.1.2选择题库(index.php)数据请求代码 4.1.3取消题库(index.php)数据请求代码 4.1.4业务处理Service(xztk.p…

JUC并发工具-CAS机制

面试的时候经常被问到锁、JUC工具包等相关内容,其中CAS机制是必问题目,以下简单总结CAS的机制、CAS产生的ABA现象、CAS产生的ABA现象解决思路 1.什么是CAS? CAS(Compare and Swap)是一种多线程同步的原子操作&#xf…

【Nacos】配置管理、微服务配置拉取、实现配置热更新、多环境配置

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 Nacos 一、nacos实现配置管理1.1 统一配置管…

生成式AI模型量化简明教程

在不断发展的人工智能领域,生成式AI无疑已成为创新的基石。 这些先进的模型,无论是用于创作艺术、生成文本还是增强医学成像,都以产生非常逼真和创造性的输出而闻名。 然而,生成式AI的力量是有代价的—模型大小和计算要求。 随着生…

基础模型的自然语言处理能力综述

NLP作为一个领域为基础模型开辟了道路。虽然这些模型在标准基准测试中占据主导地位,但这些模型目前获得的能力与那些将语言描述为人类交流和思维的复杂系统的能力之间存在明显的差距。针对这一点,我们强调语言变异的全部范围(例如&#xff0c…

H5ke11--1登录界面一直保存--用本地localStorage存储

目录 代码详解 localStage优点 :一直保存着 注意事项: storage属性们 代码详解 ke8学校陈老师H5-CSDN博客文章浏览阅读76次。实现H5中新增的三个元素:forEach的使用方法。https://blog.csdn.net/m0_72735063/article/details/134019012即此之后 当然可以分为按…