3.7 虚拟存储器

news2024/12/22 18:42:55

学习目标:

建议按照以下学习目标进行学习:

  1. 了解虚拟存储器的基本概念和原理。包括什么是虚拟存储器、虚拟地址和物理地址、虚拟内存、页面置换算法等。

  2. 了解虚拟存储器的实现方式。包括基于请求分页、请求分段和请求段页混合的虚拟存储器实现方式,以及页表、页表项等相关概念。

  3. 学习虚拟存储器的常见页面置换算法,包括最优页面置换算法、先进先出页面置换算法、最近最久未使用页面置换算法、时钟页面置换算法等。了解各种算法的特点和适用场景。

  4. 学习虚拟存储器中的页面调度算法,包括随机调度算法、先入先出调度算法、轮转调度算法、优先级调度算法等。

  5. 了解虚拟存储器的性能评价指标,包括缺页率、命中率、访问时间等。了解如何通过调整页面大小、调整页面置换算法、增加物理内存等方式来改善性能。

  6. 了解虚拟存储器在操作系统中的实现和应用,包括在不同操作系统中的实现方式、虚拟内存的大小和配置、应用程序如何利用虚拟存储器等。

  7. 了解虚拟存储器在计算机系统中的作用和意义,以及未来的发展方向和趋势。

以上是虚拟存储器的一些学习目标,您可以根据自己的兴趣和需求进行深入学习。

学习步骤:

学习虚拟存储器的过程中,我会按照以下步骤进行:

  1. 理解虚拟存储器的基本概念:了解虚拟存储器是一种将磁盘空间当作内存来使用的技术,实现了对物理内存的扩展和管理。同时需要理解虚拟内存空间的划分、分页、虚拟页表等基本概念。

  2. 学习虚拟存储器的实现原理:了解虚拟存储器的实现原理,包括缺页中断的处理、页面置换算法、页面淘汰策略等。需要了解常用的页面置换算法,如最近最少使用(LRU)、先进先出(FIFO)等。

  3. 掌握虚拟存储器的性能分析方法:了解虚拟存储器的性能指标,如命中率、缺失率、缺失率的成本等,并学会使用性能分析工具来分析虚拟存储器的性能问题。

  4. 学习虚拟存储器的优化技术:了解如何通过合理的页面置换算法、页面淘汰策略、预取技术等来优化虚拟存储器的性能。同时需要了解虚拟存储器和物理内存的映射关系,以及如何在不同的操作系统和处理器架构上进行配置和优化。

  5. 实践虚拟存储器:通过实验和项目来加深对虚拟存储器的理解和掌握。可以自己编写虚拟存储器相关的程序来体验虚拟存储器的实现过程,也可以参加开源项目或者研究课题来实践虚拟存储器的优化技术。

  6. 不断更新知识:虚拟存储器是一个发展迅速的领域,需要不断更新知识,了解最新的技术和研究成果,参加相关的培训和学术会议,积极参与社区和论坛的讨论和交流。

3.7.1 虚拟存储器的基本概念 

虚拟存储器是计算机系统中的一种技术,它把主存储器和磁盘存储器组合起来,使得程序运行时所需的数据可以从磁盘中读取到主存中,从而避免了程序运行时因为内存不足而导致的程序异常中断等问题。虚拟存储器实际上是一种把主存储器扩展到磁盘存储器的技术,使得程序在运行时可以利用更大的存储器空间,提高系统的性能。

虚拟存储器的基本概念包括以下几个方面:

  1. 虚拟地址:程序在运行时所使用的地址,它是由程序生成的地址,不同于实际的物理地址。

  2. 物理地址:计算机系统中实际的地址,它是由硬件生成的地址。

  3. 页:是虚拟存储器中的基本单位,它是一段连续的虚拟存储空间。

  4. 页面:是虚拟存储器中的基本单位,它是一段连续的物理存储空间。

  5. 页表:是一个数据结构,用于记录虚拟地址与物理地址之间的映射关系。

  6. 页面置换算法:虚拟存储器中当内存空间不足时,需要把部分页面从内存中置换出去,以腾出空间给新的页面使用,这就需要使用页面置换算法。

  7. 页面请求算法:虚拟存储器中当程序需要访问某个页时,需要先判断该页是否已经在内存中,如果不在内存中,需要使用页面请求算法将其从磁盘中调入内存。

  8. 页面保护:虚拟存储器中需要保护一些关键的数据不被非法访问,需要使用页面保护技术来实现。

 

3.7.2 页式虚拟存储器

页式虚拟存储器是虚拟存储器的一种实现方式,它将主存和磁盘分成相等大小的块,称为页(page),而程序的地址空间也被分成相等大小的页框(page frame)。页框是主存中分配给进程使用的物理空间,页是程序地址空间中的逻辑空间。当程序需要访问一个页时,虚拟存储器将检查页表,查找页所对应的页框是否已经调入主存,若已经调入,则直接访问主存中对应的页框;若未调入,则将其从磁盘读入主存,然后访问该页框。这种方式可以将主存和磁盘组织成一个逻辑上连续的地址空间,使得程序能够像访问物理内存一样访问磁盘上的数据。

页式虚拟存储器的优点包括:

  1. 可以更有效地利用主存资源,避免了程序所需的全部地址空间都要占用主存的情况。

  2. 可以让多个程序同时运行,使得它们可以使用相同的物理内存地址。

  3. 可以实现虚拟内存技术,将磁盘空间用作虚拟内存,扩展了系统的可用内存空间。

  4. 可以实现页面置换和分配策略,根据不同的策略,可以提高程序的执行效率。

但是,页式虚拟存储器也存在一些缺点,例如:

  1. 页表占用的空间比较大,每个进程需要一个页表来映射其地址空间,因此当进程数量较多时,会占用大量的主存空间。

  2. 由于需要频繁地进行磁盘和主存之间的数据交换,会造成一定的时间开销和系统开销。

  3. 页面置换和分配策略的设计和实现比较复杂,需要考虑到许多因素,如程序访问模式、缺页率等。

总的来说,页式虚拟存储器是现代操作系统中常用的内存管理技术,其基本原理和实现方式对于理解计算机内存管理具有重要意义。

 

3.7.3 段式虚拟存储器和段页式虚拟存储器

段式虚拟存储器和页式虚拟存储器都是虚拟存储器的实现方式,而段页式虚拟存储器则是将两者相结合的一种实现方式。

段式虚拟存储器是将逻辑地址分成段的方式进行管理,每个段对应一个连续的地址空间,每个段的大小可以不同。每个段的起始地址和长度由段表中的条目描述。这种方式可以有效地利用地址空间,但是容易出现内部碎片。

页式虚拟存储器是将逻辑地址分成固定大小的页,将物理内存也分成相同大小的页帧,每个页可以映射到内存中的任意一个页帧上。这种方式可以有效地避免内部碎片,但会出现外部碎片,而且会浪费一些物理内存空间。

段页式虚拟存储器将逻辑地址划分为段和页两部分,将段式虚拟存储器和页式虚拟存储器结合起来,同时享受两种方式的优点。具体地,逻辑地址首先被分成段和页两个部分,其中段号用于索引段表,获得该段对应的页表的起始地址;然后,使用页号在页表中查找对应的页帧号,最终形成物理地址。

段页式虚拟存储器的优点在于既可以灵活地管理内存,又可以避免内部碎片和外部碎片的问题,但是也存在一些复杂性和额外的开销。

 

3.7.4 虚拟的替换算法

虚拟存储器中,由于物理内存的空间有限,当需要将某个页或段调入内存时,如果内存已满,就需要使用替换算法将一部分已存在内存中的页或段移出内存,以便为新的页或段腾出空间。

常见的虚拟存储器替换算法包括:

  1. 最近最少使用算法(Least Recently Used, LRU)

LRU算法根据最近一段时间内各页面被访问的情况,认为最近最少使用的页面在未来一段时间内也不会被使用,所以可以优先选择这些页面进行替换。

  1. 先进先出算法(First-In-First-Out, FIFO)

FIFO算法选择最先进入内存的页面进行替换,无论这些页面是否经常被访问。

  1. 时钟算法(Clock)

时钟算法维护一个环形链表,其中每个页面都对应一个标志位,初始值为0。当需要进行页面替换时,从链表的当前位置开始,遍历整个链表,对于每个页面的标志位,若为0则将其替换出去,若为1则将其标志位改为0并继续遍历。

  1. 最不经常使用算法(Least Frequently Used, LFU)

LFU算法根据页面在一段时间内被访问的次数,认为访问次数最少的页面在未来也很少被访问,所以可以优先选择这些页面进行替换。

不同的替换算法各有优缺点,要根据具体应用场景和需求选择适合的算法。

 

3.7.5 存储管理部件

存储管理部件(Memory Management Unit,MMU)是一种硬件设备,用于管理计算机系统中的物理内存和虚拟内存之间的映射关系。它是计算机操作系统中的一个重要组成部分,负责将程序访问的虚拟地址映射到实际的物理地址,保证程序能够正常运行。

MMU 通常由硬件实现,其主要功能包括地址转换、地址保护、内存共享等。其工作原理是通过将程序发出的虚拟地址映射到物理地址,从而实现内存的访问。在执行每个内存访问操作之前,CPU 将虚拟地址发送到 MMU 中,MMU 根据虚拟地址所在的段或页表中的映射信息,将其转换成对应的物理地址,并将物理地址返回给 CPU,CPU 再根据物理地址进行内存访问。

在操作系统中,MMU 的主要作用是实现虚拟内存管理,将虚拟地址空间映射到物理内存空间,从而提供比物理内存更大的地址空间,使得系统可以运行更多的程序和处理更多的数据。此外,MMU 还可以通过地址保护和内存共享等机制,保护程序的运行环境和数据的安全性,提高系统的性能和可靠性。

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前置操作:Kubernetes快速安装组件Kubectl Kubeadam Kubeinit

文章目录 配置K8S主从集群前置准备操作一:主节点操作 查看主机域名->编辑域名1.1 编辑HOST 从节点也做相应操作1.2 从节点操作 查看从节点102域名->编辑域名1.3 从节点操作 查看从节点103域名->编辑域名 二:安装自动填充,虚拟机默认…

对接ChatGPT开发对话机器人小程序

前言 ChatGPT已经非常火爆了,企业开始招聘ChatGPT工程师,可能对接ChatGPT接口进行企业级开发是程序员必备的技能了。本篇文章主要是基于ChatGPT开发接口进行对接,使用微信小程序制作一款自己的聊天机器人,通过这一案例你可以展开…

图神经网络:在KarateClub上动手实现图神经网络

文章说明: 1)参考资料:PYG官方文档。超链。 2)博主水平不高,如有错误还望批评指正。 3)我在百度网盘上传了这篇文章的jupyter notebook。超链。提取码8888。 文章目录 文献阅读:代码实操: 文献阅读: 参考文…

JavaWeb05(删除增加修改功能实现连接数据库)

目录 一.实现删除功能 1.1 url如何传参? xx.do?参数参数值&参数名参数值 1.2 servlet如何拿对应值? //根据参数名拿到对应的参数值 String str req.getParameter("参数名") 1.3 如何询问? οnclick"return con…

区位码-GB2312

01-09区为特殊符号 10-15区为用户自定义符号区(未编码) 16-55区为一级汉字,按拼音排序 56-87区为二级汉字,按部首/笔画排序 88-94区为用户自定义汉字区(未编码) 特殊符号 区号:01 各类符号 0 1 2 3 4 …

I/O多路转接——epoll服务器代码编写

目录 一、poll​ 二、epoll 1.epoll 2.epoll的函数接口 ①epoll_create ②epoll_ctl ③epoll_wait 3.操作原理 三、epoll服务器编写 1.日志打印 2.TCP服务器 3.Epoll ①雏形 ②InitEpollServer 与 RunServer ③HandlerEvent 四、Epoll的工作模式 1.LT模式与ET…

第二十一章 光源

光源是每个场景必不可少的部分,光源除了能够照亮场景之外,还可以产生阴影效果。 Unity中分为四种光源类型: 1. 方向光:Directional Light 用于模拟太阳光,方向光任何地方都能照射到。 2. 点光源:Point L…

JavaWeb-Servlet【内含思维导图】

目录 Servlet思维导图​编辑 1.什么是Servlet 2.Servelt概述 3.Servlet-Quickstart Your Project 3.1创建一个Web项目,导入Servlet依赖 3.1.1 选择Servlet导入依赖 3.1.2 导入Servlet依赖 3.2 在Web项目,定义类,实现Servlet接口…

Java8新特性-流式操作

在Java8中提供了新特性—流式操作,通过流式操作可以帮助我们对数据更快速的进行一些过滤、排序、去重、最大、最小等等操作并且内置了并行流将流划分成多个线程进行并行执行,提供更高效、快速的执行能力。接下来我们一起看看Java8为我们新增了哪些便捷呢…

Python基础合集 练习19(类与对象3(多态))

多态 class Horse: def init(self, name) -> None: self.name name def fature(self):return 父亲-----马的名字: {0}.format(self.name)def mover(self):print(马儿跑起来很潇洒)class Monkey: def init(self, name) -> None: self.name name def fature(self):ret…

《用于准确连续非侵入性血压监测的心跳内生物标志物》阅读笔记

目录 0 基础知识 1 论文摘要 2 论文十问 3 实验结果 4 论文亮点与不足之处 5 与其他研究的比较 6 实际应用与影响 7 个人思考与启示 参考文献 0 基础知识 非侵入性是指在进行医学检查或治疗时,不需要切开皮肤或穿刺体内组织,而是通过外部手段进…

【VQGAN论文精读】Taming Transformers for High-Resolution Image Synthesis

【VQGAN论文精读】Taming Transformers for High-Resolution Image Synthesis 0、前言Abstract1. Introduction2. Related Work3. Approach3.1. Learning an Effective Codebook of Image Constituents for Use in Transformers学习一个有效的图像成分的Codebook为了在Transfor…

高性能:负载均衡

目录 什么是负载均衡 负载均衡分类 服务端负载均衡 服务端负载均衡——软硬件分类 服务端负载均衡——OSI模型分类 客户端负载均衡 负载均衡常见算法 七层负载均衡做法 DNS解析 反向代理 什么是负载均衡 将用户请求分摊(分流) 到不同的服务器上…

小记Java调用C++开发的动态链接库(DLL)

一、背景 五一快乐吖!死肥宅正趁着五一这段时间,努力提升自己! 最近使用Java拦截Windows系统中一些默认事件时,发现了一些瓶颈。 我用Java操作浏览器、用Java最小化其他应用窗口,但是我发现这个操作,他都…

【Unity-UGUI控件全面解析】| InputField 输入框组件详解

🎬【Unity-UGUI控件全面解析】| InputField 输入框组件详解一、组件介绍二、组件属性面板2.1 Content Type(内容类型)三、代码操作组件四、组件常用方法示例4.1 代码限制输入字符4.2 校验文本输入格式4.3 校验输入文本长度💯总结🎬 博客主页:https://xiaoy.blog.csdn.…

话说【永恒之塔sf】里面最有前途的职业:商人

如果有人问我永恒之塔里面什么职业最有前途!那我告诉你就是商人! 做一个NB商人比拥有一身牛b装备要更有成就感。 在老区由于进入的比较晚,所以最后随了大流被淹死在千万基纳中。为了证明商人在永恒之塔是钱途无量的,我转到了新区—…

快解析动态域名解析,实现外网访问内网数据库

今天跟大家分享一下如何借助快解析动态域名解析,在两种特定网络环境下,实现外网访问内网mysql数据库。 第1种网络环境:路由器分配的是动态公网IP,且有路由器登录管理权限。如何实现外网访问内网mysql数据库? 针对这种…

IDEA2022版教程上()

0、前景摘要 0.1 概览 0.2 套课程适用人群 初学Java语言,熟悉了记事本、EditPlus、NotePad或Sublime Text3等简易开发工具的Java初学者熟练使用其他Java集成开发环境(IDE),需要转向IDEA工具的Java工程师们关注IDEA各方面特性的J…

Hadoop大数据分析技术(伪分布式搭建)

一.安装JDK和配置SSH免密登录 (1)准备软件 (2)解压压缩包 tar -zxvf jdk-8u221-linux-x64.tar.gz (3)在此处我们配置系统环境变量,使用命令: vim /etc/profile (4&#x…

Python入门教程(高级版)

Python用了好几年了,但似乎一直没 “系统入门” 过(o(╯□╰)o)。今年(2023年)趁着五一假期,我做了一次相对完整的 “入门” ——本文是这次学习历程的详细记录。 目录 1 Python基础1.1 Python1.1.1 认识Py…