3-4存储系统-虚拟存储器(CO)

news2024/9/27 11:54:50

文章目录

  • 一.页式存储
    • 1.页式存储系统
    • 2.逻辑地址到物理地址的转换
    • 3.页表
    • 4.快表TLB
  • 二.虚拟存储器
    • (一)页式虚拟存储器
    • (二)段式虚拟存储器
    • (三)段页式虚拟存储器

一.页式存储

1.页式存储系统

为提高主存的空间利用率,将程序(进程)在逻辑上分为若干个大小相等的“页面”,“页面”大小与“块”的大小相同,使每个页面可以离散地放入不同的主存块中。(若不分页,只能将程序一整块连续放入内存)
在这里插入图片描述

2.逻辑地址到物理地址的转换

(1)逻辑地址/虚地址:程序员视角看到的地址
(2)物理地址/实地址:实际在主存中的地址

若x的逻辑地址为001000000011,取变量x至ACC的机器指令为000001 001000000011(操作码000001表示取数)。若程序每个页的大小是1KB=210B,对于12bit的逻辑地址来说,可以用后10位表示页内地址,前面2位表示逻辑页号。因此变量x应该在0号页面。若0号页面被映射到2号主存块,用2号主存块号(000000000010)拼接x的页内地址(1000000011),即可得到x实际存放的物理地址0000000000101000000011

在这里插入图片描述
在这里插入图片描述
页表寄存器指明了页表在主存中的存放地址
在这里插入图片描述

3.页表

记录了每个逻辑页存放在哪个主存块中,通过页表即可完成逻辑地址到物理地址的转换(主存块号拼页内地址)。CPU查页表需要进行一次访存操作。

在这里插入图片描述

4.快表TLB

快表又称联想寄存器,是一种访问速度比内存快很多的高速缓存,用来存放最近访问的页表项的副本,可以加快逻辑地址到物理地址转换的速度。与此对应,内存中的页表项称为慢表。

快表未命中才访问慢表,刚访问的逻辑页可以将其页表项放入快表(基于局部性原理)。查询快表速度更快,查询慢表的时间相当于一次访存。快表成本高,只能保存页表中的一部分信息。

若快表命中,则访问某个逻辑地址仅需一次访存即可(访问内存)。若快表未命中,则访问某个逻辑地址需要两次访存(访问页表和内存)。

快表中存储的是页表项的副本,Cache中存储的是主存块的副本。

快表采用SRAM,是一种相联存储器。主存采用DRAM

回顾:
①相联存储器:全相联映射指主存中的每一块可以装入Cache中的任何位置,每行的标记用于指出取自主存的哪一块,所以CPU访存时需要与所有Cache行的标记进行比较。标记比较的速度较慢,实现成本高。通常需要采用按内容寻址的相联存储器进行地址映射。根据标记的内容通过硬件电路寻址比主存的按地址信息寻访要快
②DRAM有电容,破坏性读出,需要重写,速度较慢,用于主存,结构简单,集成度高,发热量小,电容易失,需要刷新,存储容量大,行/列地址先分别放到行/列缓冲区,分两批送到行/列地址译码器

详细内容见操作系统-3-1内存管理-内存管理概念-四.非连续分配管理方式-(一)基本分页存储管理方式

二.虚拟存储器

多道程序并发执行不仅使进程之间共享了处理器,而且同时共享了主存。然而随着对处理器需求的增长,进程的执行速度会以某种合理平滑的方式慢下来。但是,若同时运行的进程太多,则需要很多的内存,当一个程序没有内存空间可用时,那么它甚至无法运行。所以,在物理上扩展内存相对有限的条件下,应尝试一些其他可行的方式在逻辑上扩充内存。

虚拟内存使用外存上的空间来辅助扩充内存空间,通过一定的换入/换出,使得整个系统在逻辑上能够使用一个远远超出其物理内存大小的内存容量。因为虚拟内存技术调换页面时需要访问外存,会导致平均访存时间增加,若使用了不合适的替换算法,则会大大降低系统性能。

(一)页式虚拟存储器

将程序分页,将需要用到的页放到主存的各个位置。

页表的修改
(1)有效位
在页表中需记录当前页表是否被调入内存,引入有效位(有效位为1表示已调入,为0表示未调入)
(2)外存块号
将程序的某一页调入内存时,为确定当前页在外存的存放位置,在页表中引入外存块号(将外存分块)。
(3)访问位
由于主存比辅存小得多,为实现页面替换算法,引入访问位。如用访问位表示当前页面被访问次数(即LFU算法)
(4)脏位
主存中只能保存辅存的一些副本,如果修改了主存中某些块的数据,需要将其写回外存。若当前主存块的内存进行了修改,脏位置1,否则置0

逻辑页号也叫虚页号,主存也叫物理存储器
在这里插入图片描述

(二)段式虚拟存储器

段式虚拟存储器中的段是按程序的逻辑结构划分的,各个段的长度可能不同。虚拟地址格式为(段号,段内地址)
在这里插入图片描述
在此方式下,主存不会分块,每个段可以存在主存的任意位置
在这里插入图片描述
1.段表
段表是程序的逻辑段和在主存中存放位置的对照表,虚拟地址到实地址(物理地址)之间的变换是通过段表实现的。

段表的结构:
①段首址:表示段在主存中存放的起始位置
②装入位:1表示已调入主存,0表示未调入
③段长:段的长度

在这里插入图片描述
2.地址转换过程
CPU根据虚拟地址访存时,首先根据段号与段表基地址(段首址)拼接成对应的段表行,然后根据该段表行的装入位判断是否已调入主存。已调入主存时,从段表读出该段在主存中的起始地址,与段内地址相加,得到对应的主存实地址

3.优点
段的分界与程序自然分界相对应,因而仅有逻辑独立性,使得它易于编译、管理、修改和保护,也便于多道程序的共享

4.缺点
因为段长度可变,分配空间不变,容易在段间留下不便使用的碎片,造成空间浪费

(三)段页式虚拟存储器

把程序按逻辑结构分段,每段再划分为固定大小的页,主存空间也划分为大小相等的页,程序对主存的调入、调出仍以页为基本传送单位。每个程序对应一个段表,每段对应一个页表。

地址结构(段号,段内页号,页内地址)

关于基本分段存储管理方式、分段与分页、段页式管理方式的具体内容见操作系统3-1内存管理-内存管理概念-四.非连续分配管理方式-(二)(三)(四)

关于虚拟内存、页表机制、缺页中断机构、地址变换机构的详细内容见操作系统-3-2内存管理-虚拟内存-一二

  • 虚拟内存是什么,它有什么优点?
    虚拟内存是计算机系统内存管理的一种技术,虚拟存储器将主存或辅存的地址空间统一编址,形成一个庞大的地址空间,在这个空间内,用户可以自由编程,而不必在乎实际的主存容量和程序在主存中实际的存放位置。(或者说虚拟内存使得应用程序认为它拥有连续的可用的内存,而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。)
    优点:可以弥补物理内存大小的不足;一定程度的提高反映速度;减少对物理内存的读取从而保护内存,延长内存使用寿命。
    缺点:占用一定的物理硬盘空间;加大了对硬盘的读写;设置不得当会影响整机的速度与稳定性
  • 什么是TLB?
    TLB是相联存储器,也叫做快表。这是为了加快地址变换过程而增设的高速缓冲存储器,在虚拟存储器中进行地址变换时,需要虚页号变换成主存中实页号的内部地址变换这一过程。
    缓存时首先要到主存查页表,然后才能根据主存物理地址访问主存的存取指令或数据。因此采用虚拟存储器机制后,访存的次数增加了。为了减少访存的次数,往往将页表中最活跃的几个页表项复制到高速缓存中。这种在高速缓存中的页表项称为快表。查表时,根据虚页表同时查找快表和慢表(也可先查快表,未命中再查慢表),当在快表中查到该虚页号时,就能很快找到对应的实页号,将其送入主存实地址寄存器,同时使慢表的查找作废,这使主存的访问速度有所提升。如果在快表中查不到,则经过一个访存的时间延迟后,将从慢表中查到的实页号送入实地址寄存器,同时将此虚页号和对应的实页号送入快表。
    TLB是根据局部性原理而设计的,会存放我们最近使用的页。一般快表的命中率可达九成以上,这样分页带来的速度损失就可以降低到10%以下。
  • 虚拟存储器都有哪几种分类?
    虚拟存储器是指具有请求调入和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。分为页式虚拟存储器、段式虚拟存储器、段页式虚拟存储器。
    ①页式虚拟存储器:把虚拟存储空间和实际空间等分成固定大小的页,各虚拟页可装入主存中的不同实际页面位置。页式存储中,处理机逻辑地址由虚页号和页内地址两部分组成,实际地址也分为页号和页内地址两部分,由地址映射机构将虚页号转换成主存的实际页号。页式管理的页表包括页号、每页在主存中起始位置、装入位等。页表是虚拟页号与物理页号的映射表,页式管理由操作系统进行,对应用程序员的透明的。
    ②段式虚拟存储器:是一种把主存按段分配的存储管理方式,是一种模块化的存储管理方式。每个用户程序模块可分到一个段,该程序模块只能访问分配给该模块的段所对应的主存空间。段长可以任意设定,并可放大和缩小。系统中通过一个段表指明各段在主存中的位置,段表中包括段名(段号),段首址、装入位和段长等信息。段表本身也是一个段,段一般是按程序模块分的。
    ③段页式虚拟存储器:是上述两种方法的结合,它将存储空间按逻辑模块分成段,每段又分成若干个页,访存通过一个段表和若干个页表进行。段的长度必须是页长的整数倍,段的起点必须是某一页的起点。

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

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

相关文章

JS中的splice方法添加或删除数组中的元素

splice方法嘚吧嘚语法下标问题实战splice(index)splice(index,howmany)示例一(howmany>0)示例二(howmany ≤ 0)splice(index,howmany,item1,.....,itemX)howmany ≤ 0示例一(index ≥ 0)示例二(index<0)howmany>0示例一(index ≥ 0)示例二(in…

Spring Cloud Kubernetes 本地开发

简介 Spring Cloud Kubernetes 是spring官方集成Kubernetes的一个框架.可以直接将springboot项目使用Kubernetes做为注册中心.很方便,但是我们本地开发的时候很难进行调试,因为我们本地没有Kubernetes环境. 下面介绍一种能够本地开发的方式 KT-Connect KtConnect(Kt…

【倍增+最短路】P1613 跑路

不知道是因为这样的套路太典了还是因为什么,这难度只有绿题,可是我感觉好难想到QwQ不过今天写了好几道倍增,好像有点感觉了捏P1613 跑路 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)题意:思路:一开始的思路就是建图…

【内存函数】-关于内存的操作函数

作者:小树苗渴望变成参天大树 作者宣言:认真写好每一篇博客 作者gitee:gitee 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧! 内存函数前言一、[memcpy](https://cplusplus.com/reference/cstring/memc…

初识软件测试

作者:~小明学编程 文章专栏:测试开发 格言:热爱编程的,终将被编程所厚爱。 目录 什么是软件测试? 软件测试和软件开发的区别? 调试和测试的区别? 优秀的测试人员应该具备哪些素质&#xff…

cherry-pick的定义和使用方法

1、定义 使用遴选(cherry-pick)命令,Git 可以让你将任何分支中的个别提交合并到你当前的 Git HEAD 分支中。当执行 git merge 或者 git rebase 时,一个分支的所有提交都会被合并。cherry-pick 命令允许你选择单个提交进行整合。 …

正点原子STM32(基于HAL库)3

目录RTC 实时时钟实验RTC 时钟简介RTC 框图RTC 寄存器硬件设计低功耗实验电源控制(PWR)简介电源系统电源监控电源管理PVD 电压监控实验PWR 寄存器硬件设计睡眠模式实验硬件设计停止模式实验PWR 寄存器硬件设计待机模式实验PWR 寄存器硬件设计ADC 实验ADC…

全国产加固以太网交换机选择技巧

全国产加固交换机用于连接以太网设备:首先接收由某台设备发出的数据帧,然后再将这些帧传送到与其它以太网设备相连的适当交换机端口上。随着它传送这些帧,学习并掌握以太网设备的位置,并用这些信息来决定该用哪些端口来传送帧&…

83. 深度循环神经网络及代码实现

1. 回顾:循环神经网络 2. 更深 再看公式: 3. 总结 深度循环神经网络使用多个隐藏层来获得更多的非线性性 4. 代码简洁实现 实现多层循环神经网络所需的许多逻辑细节在高级API中都是现成的。 简单起见,我们仅示范使用此类内置函数的实现方式…

虚拟机本地搭建Hadoop集群教程

Hadoop概述 狭义下Hadoop是Apache的一套开源软件,用java实现,广义上是围绕Hadoop打造的大数据生态圈 http://hadoop.apache.org Hadoop核心组件: HDFS(分布式文件存储系统):解决海量数据存储YARN&#…

Spring 常用组件

一. Spring 解决了什么问题 Spring 核心功能是整合,提供一个管理组件的容器, 以 Bean的形式管理组件及对象。Spring 采用分层架构和组件化设计,允许分层,插件化选择组件。二. Spring 整体架构 Spring4架构图 三. Spring 组件 1.…

Spring | 整合MyBatis中SqlSessionTemplate和MapperScannerConfigurer类的使用

0️⃣初始配置&#x1f6a9;pom.xml导入依赖<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"ht…

大数据开发工程师考试分享

在2022年年尾伴随着疫情政策的放开&#xff0c;压抑了3年的活力与生机正在悄然地蓄势待发。回顾这一整年&#xff0c;我们经历了核酸考验&#xff0c;互联网裁员危机&#xff0c;以及正面面对新冠等等。总之&#xff0c;在这一年无论是生活还是工作&#xff0c;大家都面临了不同…

大公司VS小公司,怎样选择更有前途?

你好&#xff0c;我是王喆。 学完上一讲&#xff0c;你已经知道了如何选择一个有前景的职业方向。在大方向确定好之后&#xff0c;接下来的问题就是如何在这个方向上进行具体的职业发展规划了。 我想你一定听说过很多牛人的“职场升级”故事&#xff1a;工作3年升到P7&#x…

春节不打烊,这份安全应急指南请收好!

春节作为中国的传统节日&#xff0c;不仅是各个企业的营销重点周期&#xff0c;也是黑灰产高发节点之一。尤其是伴随着互联网的兴起&#xff0c;春节红包逐渐成为主流营销节目&#xff0c;从支付宝的集五福到各种各样的红包活动&#xff0c;不断翻新的营销花样让黑灰产们赚的盆…

JUC面试(三)——CAS

CAS CAS的全称是Compare-And-Swap&#xff0c;它是CPU并发原语&#xff0c;自旋锁 它的功能是判断内存某个位置的值是否为期望值&#xff0c;如果是则更改为新的值&#xff0c;这个过程是原子的 CAS并发原语体现在Java语言中就是sun.misc.Unsafe类的各个方法。调用UnSafe类中…

深度学习 GAN生成对抗网络-1010格式数据生成简单案例

一、前言 本文不花费大量的篇幅来推导数学公式&#xff0c;而是使用一个非常简单的案例来帮助我们了解GAN生成对抗网络。 二、GAN概念 生成对抗网络&#xff08;Generative Adversarial Networks&#xff0c;GAN&#xff09;包含生成器&#xff08;Generator&#xff09;和鉴…

HyperLogLog和Set比较 !!!

HyperLogLog和Set比较 HyperLogLog HyperLogLog常用于大数据量的统计&#xff0c; 比如页面访问量统计或者用户访问量统计&#xff0c;作为一种概率数据结构&#xff0c;HyperLogLog 以完美的精度换取高效的空间利用率。Redis HyperLogLog 实现最多使用 12 KB&#xff0c;并提…

docker推送镜像至阿里私有镜像仓库

文章目录一、注册阿里私有镜像仓库二、将公共镜像推送至私有镜像仓库1、首先拉取到mysql镜像2、登录阿里云Docker Registry&#xff08;这里的信息要更换成自己的&#xff09;3、将mysql镜像推送至Registry4、查看5、拉取镜像三、将正在启动的容器导出并推送至私有仓库1、将启动…

二分查找的最多比较次数

答案 对于二分搜索次数最多的问题&#xff0c;计算公式为&#xff0c;其中a , b , n 均为整数 当顺序表有n个关键字时候&#xff0c;查找失败&#xff0c;至少需要比较a次关键字 查找成功&#xff0c;至少需要b次 举例 已有从小到大排序的10000个数据&#xff0c;用二分查…