存储管理详解

目录

存储管理(1)

第一节 存储管理概述(内存管理)

一、存储体系

二、存储管理的任务 

三、地址转换 

存储管理(2)

第二节 分区管理方案

一、固定分区

二、可变分区 

三、分区管理方案的优缺点

第三节 覆盖与交换技术

一、覆盖技术

二、交换技术 

存储管理(3)

第四节 虚拟页式存储管理方案

一、虚拟存储技术

二、虚拟页式存储管理 

 三、物理内存的分配与回收

存储管理(4)

四、虚拟页式存储地址转换过程

存储管理(5)

五、虚拟页式存储管理优点缺点

六、虚拟存储管理得性能问题


存储管理(1)

第一节 存储管理概述(内存管理)

一、存储体系

二、存储管理的任务 

内存空间一般分为两个区域:
(1)系统区,存放操作系统常驻内存部分,用户不能占用这部分空间
(2)用户区,分配给用户使用,用于装入和存储用户程序和数据,随时变化。
存储管理的实质:用户空间管理
内存管理问题主要包括:
①内存管理方法
②内存的分配和释放算法
③虚拟存储器的管理
④控制内存和外存之间的数据流动方法
⑤地址变换技术
⑥内存数据保护和共享技术 

1.内存的分配和回收
(1)功能:①记住每个存储区域的状态,空闲与否;②实施分配,用户提出请求,分配内存;③回收,回收用户释放的区域
(2)内存分配表:①位视图表示法;②空闲页面法;③空闲块表法;
(3)内存分配方式:①静态分配:程序运行前分配内存,不允许“搬家”;②动态分配:程序运行时允许动态分配内存,且允许“搬家”。
2.存储共享
所谓存储共享是指两个或多个进程共用内存中相同区域。
包括:代码共享和数据共享。
目的:节省内存空间,提高内存利用率;通过内存共享实现进程通信。
3.存储保护
目的:为多个程序共享内存提供保障,使在内存中的各道程序,只能访问自己的区域,避免各道程序互相干扰。
方法:(1)地址越界保护;(2)权限保护;
4.“扩充”内存容量
用户在编制程序时,不应该受内存容量的限制,所以要采用一定技术来“扩充”内存的容量,使得用户得到比实际内存容量大得多得内存空间。
借助虚拟存储技术或交换技术完成,达到在逻辑上扩充内存容量得目的。 

三、地址转换 

(1)绝对地址:存储器以字节为单位编址,每个字节都有对应的地址。假定内存容量为n,则编号顺序为0,1,2,……,n-1,该地址称为物理地址或绝对地址。
(2)物理地址空间:由绝对地址对应的内存空间称为“物理地址空间”。
(3)逻辑地址:在多道程序系统中,内存中同时存储了多个用户程序,每个用户不能预先知道他的程序存储到了什么地方。为了方便,每个用户都可以认为自己的程序和数据存储在一组“0”地址开始的连续空间中,用户程序中使用的地址,称为“逻辑地址”或相对地址。
(4)逻辑地址空间:由逻辑地址对应的存储空间称为逻辑地址空间。 

1.地址重定位,当用户把程序装入内存时,存储管理为他分配的内存空间可能是从某一单元开始的一组连续的地址空间,它的起始地址不固定,即逻辑地址与物理地址经常不一致。
把逻辑地址转换为绝对地址的工作称为“地址重定位”,分为“静态重定位”和“动态重定位”两种。
2.静态重定位,内存在装入一个程序时,把程序中的指令和数据地址全部转换为绝对地址,该过程在程序运行前进行,程序运行过程中无需再转换,这种转换方式称为“静态重定位”。


3.动态重定位,内存在装入程序时,不进行地址转换,而是直接把程序装入到分配的内存中,程序在执行过程中完成地址的转换,这种转换方式称为“动态重定位”。  

存储管理(2)

第二节 分区管理方案

一、固定分区

1.基本思想,多道程序环境下,整个用户空间划分为若干个固定大小的区域,每个分区只装入一道作业(一个程序对应一个分区),分区大小可以相同,也可以不同。
2.内存分配表与分区的分配、回收
内存分配表是一张分区说明表,记录分区号、分区大小、分区起始地址及使用状态等。
分配时按照进程的内存需求,按一定策略从分区表中找到空闲分区进行分配。
回收时,将内存分区登记在分区说明表(内存分配表)中,并将其状态置为空闲状态。
示例:图6-4

二、可变分区 

1.基本思想,系统不预先划分固定分区,而是在装入程序时划分内存分区,使为程序分配的内存区的大小正好等于程序的需求量,且分区的个数是可变的。
2.紧缩技术,内存经过一段时间分配后,会存在很多很小的空间。如右边的图,假定此时有进程E(40KB),此时空闲分区都不能满足它的需求。
解决办法:紧缩(剩余空闲分区合并为新的分区分配给进程)
紧缩后


紧缩应注意的问题:
(1)增加系统开销
(2)移动是有条件,比如进程正在与设备交换信息,此时不能移动。所以,采用紧缩技术时,应该尽可能减少需要移动的进程数和信息量。
3.可变分区的实现
(1)硬件支持,两个专用控制寄存器:基址寄存器和限长寄存器。
(2)绝对地址形成,程序装入内存后,分区的起始地址和长度装入两个寄存器,程序执行后,取出指令中的逻辑地址,绝对地址=逻辑地址+基址寄存器内容
(3)地址越界,当逻辑地址>限长寄存器值时,产生“地址越界”中断。
(4)地址转换过程,图6-8所示

(5)内存分配表:两个表格 

4.可变分区的分配策略
(1)首次适应算法
思想:当接到内存申请时,查找分区说明表(内存分配表),直到找到一个大小能满足要求的空闲分区为止,将其分割并分配。
优点:简单,可以快速做出分配决定。
(2)最优适应算法
思想:当接到内存申请时,查找分区说明表(内存分配表),找到一个大小能满足要求的最小空闲分区,将其分割并分配。
优点:节约空间
缺点:形成许多小碎片
(3)最坏适应算法
思想:当接到内存申请时,查找分区说明表(内存分配表),直到找到一个大小能满足要求的最大空闲分区,将其分割并分配。
优点:碎片少
缺点:分割了大的空间,遇到较大申请,无法满足。
5.分区的回收,当用户程序执行结束后,系统回收已使用完毕的分区,将其记录在空闲区表中。假定归还的分区起始地址为S,长度为L。考虑如下四种可能性:


①回收分区与插入点的上邻空闲分区F1相邻接
②回收分区与插入点的下邻空闲分区F2相邻接
③回收分区同时与插入点的上下、两个空闲分区相邻接
④回收区既不与F1邻接,又不与F2邻接
6.分区的保护
两种方法:(1)系统设置界限寄存器,包括:上、下界寄存器或基址,限长寄存器。
(2)保护键方法 

三、分区管理方案的优缺点

优点:简单、表格不多,实现起来容易,内存额外开销小,保护措施也简单。在内存利用率方面可变分区比固定分区高。
缺点:碎片多,不能为用户提供“虚存”,每个用户程序的存储受物理存储的限制。

第三节 覆盖与交换技术

一、覆盖技术

1.概念,是指一个程序若干程序段,或几个程序的某些部分共享某一存储空间。
2.实现,把程序划分为若干个功能上相对独立的程序段,按照其自身逻辑结构使那些不会同时执行的程序段共享同一块内存区域。
3.解决的问题,从用户级彻底解决内存小装不下程序的问题。


4.优点:打破了需要将一个程序的全部信息装入内存后程序才能运行的限制,在逻辑上扩充了内存空间,从而在某种程度上实现了在小容量内存上运行较大程序的功能。
缺点:对用户不透明,增加了用户的负担。

二、交换技术 

1.交换的含义,进程从内存移到磁盘,并再移回内存。
2.适用场合,分时系统和大多数现在操作系统,是虚拟存储系统的基础。
3.主要内容:(1)换出进程的选择;(2)交换时机的确定;(3)交换空间的分配;(4)换入进程换回内存时位置的确定。

存储管理(3)

第四节 虚拟页式存储管理方案

一、虚拟存储技术

1.基本思想,利用大容量外存(如硬盘)来扩充内存,产生一个比有限的实际内存空间大的多的、逻辑的虚拟虚拟内存空间,简称虚存。
采用二级存储器方式(内存、外存)
是一种设计技巧,受外存容量的限制。
2.虚拟存储器需要硬件支持:(1)系统有容量足够大的外存;(2)系统有一定容量的内存;(3)实现虚-实转换的地址映射机制(如物理地址到逻辑地址,逻辑地址到物理地址)
3.工作原理,程序部分装入内存便可运行,其他部分需要运行时再装入内存。
4.与交换技术的区别:(1)交换技术交换单位是进程;(2)虚拟内存以页为单位进行交换
虚拟存储技术和交换技术很像,乍一看都是换入换出,把暂时不需要用的数据换出内存,将需要用到的数据换入内存,从而实现逻辑上内存的扩充。二者之间的区别是,虚拟存储技术是在一个作业运行的过程中,将作业的数据进行换入换出。王道老师举得例子就是玩儿游戏。这儿换一个游戏,比如玩儿DOTA,停留在场景A的时候,场景B的数据不需要用到,所以不放在内存,转换到场景B的时候再把场景B的数据放入内存。而交换技术是内存紧张时,换出某些进程,腾出内存空间,换入其他进程。换而言之,交换技术是在不同的进程(作业)间的,虚拟存储技术是在一个作业间的。另外提一嘴,覆盖技术也是在同一个程序或进程中的。

二、虚拟页式存储管理 

1.物理页面和页面
物理页面:将内存分成大小相等的许多区,每个区称为一个“物理页面”。(物理块、页帧、页框)
页面:将程序中的逻辑地址也进行分页,页的大小和物理页面大小一致。
2.虚拟地址(逻辑地址)组成,虚拟页号和页内地址

 三、物理内存的分配与回收

1.位示图,位示图中的每一位与一个物理块对应,其值为0/1,表示空闲/占用。


2.内存分配与回收
分配:在位示图中找出空闲页面数,如果能满足,则分配,并把相应位置为1,计算物理页面号
物理页面号=字号*字长+位号
回收:当归还物理页面时,计算归还页面在位示图中对应位置,将1改为0。
字号=[i/字长],位号=i mod 字长;[]表示取整,mod表示取余
在位示图中,字号相当于行号,位长相当于列号

存储管理(4)

四、虚拟页式存储地址转换过程

1.页式存储管理的地址转换
页表:记录装入内存的逻辑页面与物理页面的对应关系,是硬件进行地址转换的依据。


硬件支持:页表始址寄存器和页表长度寄存器,分别用来存储正在运行程序的页表在内存的起始地址和页表的长度。
地址转换过程:(1)在执行检索前,先将页号(页表中的页号)与页表长度进行比较,若页号(页表中的页号)大于或等于页表长度,则地址越界。


(2)若未出现越界错误,则将页表始址与页号和页表项长度的乘积相加(即页表始址+页号*页表项长度),则找到该表项在页表中的位置,找到该页的物理页号。
(3)将有效地址的页内地址送入物理地址寄存器的块内地址字段中
(1)十进制计算:物理地址=物理页面号*块长+页内地址
(2)二进制计算:物理页面号作为绝对地址的高位地址,页内地址作为它的地址部分。
2.页表项
物理页面号:页面在内存对应的物理页面号
有效位:页面是在内存还是外存
访问位:页面在内存中是否被访问过
修改位:页面在内存中是否被修改过
保护位:页面能否读/写
3.页表:分为多级页表、散列页表、反置页表
4.转换检测缓冲区(TLB),高速缓存,也称为快表,登记了页表中的部分页号和物理页面的对应关系。
地址转换过程及原理,图6-17所示:


5.缺页异常处理
缺页异常:若在页表中发现所要访问的页面不在内存,则产生缺页异常。
处理:查看有无空闲页面,若有,把要访问的页面调入内存;若无,选择一页换出内存;再把要访问的页面调入内存。

6.页面调度策略
调入策略:决定什么时候将一个页由外村调入内存。两种方法:请求调页和预调页。
置页策略:当产生缺页时,将所调入的页面置于何处。
置换策略:如果内存已满,确定哪个页面从内存中移出,为新的页面腾出空位。三种方法:固定分配局部置换、可变分配全部置换、可变分配局部置换。

7.页面置换算法
“抖动”或“颠簸”刚被换出的页面又立即要用,把它装入内存后,不久又被换出,换出不久又被调入内存,如此反复,使调度非常频繁。这种现象称为“抖动”或“颠簸”。
算法:OPT、FIFO、第二次机会页面置换算法、CLOCK、LRU算法。
(1)OPT--理想页面置换算法,由Belady于1966年提出的一种理论上的算法。其所选择的被淘汰页面,将是以后永不使用的,或者是在最长(未来)时间内不再被访问的页面。采用OPT算法,通常可保证获得最低得缺页率。
(2)FIFO--先进先出,总是选择最先装入内存得页面调出,或者说,把驻留在内存中时间最长得那一页调出。
(3)LRU--最近最少使用,总是选择距离现在最长时间内没有被访问过的页面先调出。
8.缺页率
缺页率计算:f=F/A(f=F除以A),F为缺页次数,A为页面总访问次数。
影响缺页率的因素:
(1)分配给程序的物理页面数
(2)页面的大小
(3)程序编制方法
(4)页面调度算法

存储管理(5)

五、虚拟页式存储管理优点缺点

优点:不要求进程的程序段和数据段在内存中连续存放,有效解决了碎片问题,提高了内存利用率。
缺点:存在页面空间的浪费,程序的最后一页往往有一部分得不到利用。

六、虚拟存储管理得性能问题

(1)颠簸问题,缺页率高引起,如果页面置换算法不合理。
“活动”页面:进程在一段时间内集中访问的一些页面,与程序的局部性有关。
如果分配给进程的物理页面少,则活动页面不能全部装入内存,可能频繁产生缺页,从而导致“颠簸”。
(2)工作集模型,采用工作集模型可以解决颠簸问题
解决方法:操作系统为每一个进程保持一个工作集,并为该进程提供与工作集大小相等的物理页面数,这一过程可动态调整。

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

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

相关文章

docker openjdk:8-jdk-alpine 修改时区、添加字体

新建Dockerfile文件,制作新镜像 FROM openjdk:8-jdk-alpine 1、解决字体问题 RUN apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/* 2、解决时差问题 # 解决时差8小时问题ENV TZAsia/ShanghaiRUN ln -snf /usr/share/zoneinfo/$TZ /et…

Docker部署Nacos注册中心

文章目录 一、部署MySQL数据库并导入Nacos初始化SQL二、部署Nacos注册中心三、验证Nacos 一、部署MySQL数据库并导入Nacos初始化SQL 1、准备工作 docker pull mysql:8.0.27 Pwd"/data/software/mysql" mkdir ${Pwd}/{data,logs} -p chmod 777 ${Pwd}/logs2、添加配…

metinfo_5.0.4 EXP Python脚本编写

文章目录 metinfo_5.0.4EXP编写SQL注入漏洞 metinfo_5.0.4EXP编写 SQL注入漏洞 漏洞点:/about/show.php?langcn&id22 http://10.9.75.142/metInfo_5.0.4/about/show.php?langcn&id22验证漏洞(数字型注入) 状态码区分正确与错误 做比较的时候不能采用…

【计算机网络笔记二】网络层

IP 地址分类和子网掩码 IPv4 地址—简称 IP 地址,IP 地址由 32 位比特组成 IP地址现在由因特网名字和数字分配机构 ICANN(Internet Corporation for Assigned Names and Numbers)进行分配,IP地址的作用:用于网络寻址&…

猴赛雷 ! 上次我见过这么厉害的安全测试实战演练还是上次!

01、概念介绍 1.1 xss XSS 攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是 JavaScript,但实际上也可以包括 Java、 VBScript、Acti…

WebGL 计算平行光、环境光下的漫反射光颜色

目录 光照原理 光源类型 平行光 点光源 环境光 反射类型 漫反射 漫反射光颜色 计算公式 环境反射 环境反射光颜色 表面的反射光颜色(漫反射和环境反射同时存在时)计算公式 平行光下的漫反射 根据光线和法线方向计算入射角θ(以便…

Arduino驱动MMA7260三轴加速度传感器(惯性测量传感器篇)

目录 1、传感器特性 2、控制器和传感器连线图 3、驱动程序 Arduino驱动MMA7260三轴加速度传感器芯片,可以应用到摩托车和汽车放倒报警、遥控航模、游戏手柄、人形机器人跌倒检测、硬盘冲击保护、倾斜度测量等场合。 1

hadoop测试环境sqoop使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Sqoop看这篇文章就够了_must contain $conditions in where clause._SoWhat1412的博客-CSDN博客 大数据环境 C:\Windows\System32\drivers\etc 修改ip和hostname的对应关系 1…

第75步 时间序列建模实战:多步滚动预测 vol-3(以决策树回归为例)

基于WIN10的64位系统演示 一、写在前面 上两期,我们讲了多步滚动预测的第两种策略: 对于重复的预测值,取平均处理。例如,(1,2,3)预测出3.9和4.5,(2,3,4)预测出5.2和6.…

关于安卓SVGA浅尝(一)svgaplayer库的使用

关于安卓SVGA浅尝(一)使用 相关链接 SVGA官网 SVGA-github说明文档 背景 项目开发,都会和动画打交道,动画的方案选取,就有很多选择。如Json动画,svga动画,gif等等。各有各的优势。目前项目中…

工具及方法 - 二进制编辑软件

之前介绍过用Notepad和VSCode进行二进制文件编辑。 很多通用型的文本编辑器都会集成二进制文件编辑功能,或者使用插件等形式扩展此项功能。比如vi/vim等工具。 而且,作为文本编辑、二进制文件编辑一类的工具,数量众多,各有特色。…

面试官:为什么说HTTPS比HTTP安全? HTTPS是如何保证安全的?

公众号 小册 这是我整理的学习资料,非常系统和完善,欢迎一起学习 现代JavaScript高级小册 深入浅出Dart 现代TypeScript高级小册 linwu的算法笔记📒 一、安全特性 在前文中,我们已经了解到HTTP在通信过程中存在以下问题&…

STM32 EtherCAT 总线型(1 拖 4)步进电机解决方案

第 1 章 概述  技术特点  支持标准 100M/s 带宽全双工 EtherCAT 总线网络接口及 CoE 通信协议一 进一出(RJ45 接口),支持多组动态 PDO 分组和对象字典的自动映射,支持站 号 ID 的自动设置与保存,支持 SDO 的…

zemaxMIF曲线图

调制传递函数( Modulation Transfer Function,MTF )是用来形容光学系统成像质量的重要指标。 通过对光学系统像空间进行傅里叶变换,可以得到一张分析图表,来描述像面上对比度和空间频率之间的对应关系。 对比度&…

相机有俯仰角时如何将像素坐标正确转换到其他坐标系

一般像素坐标系转相机坐标系都是默认相机是水平的,没有考虑相机有俯仰角的情况,大致的过程是:像素坐标系统-->图像坐标系-->相机坐标系 ->世界坐标系或雷达坐标系: 像素坐标系 像素坐标系(u,v)是…

R语言贝叶斯MCMC:GLM逻辑回归、Rstan线性回归、Metropolis Hastings与Gibbs采样算法实例...

原文链接:http://tecdat.cn/?p23236 在频率学派中,观察样本是随机的,而参数是固定的、未知的数量(点击文末“阅读原文”获取完整代码数据)。 相关视频 什么是频率学派? 概率被解释为一个随机过程的许多观测…

Spring Cloud Gateway快速入门(一)——网关简介

文章目录 前言一、什么是网关1.1 gateway的特点1.2 为什么要使用gateway 二、使用 Nginx 实现网关服务什么是网关服务?为什么选择 Nginx 作为网关服务?如何使用 Nginx 实现网关服务?1. 安装 Nginx2. 配置 Nginx3. 启动 Nginx4. 测试网关服务 …

Windows11 手把手教授开放端口

首先在控制面板点击“系统与安全”,找到防火墙 然后点击“windows defender”打开防火墙 点击左侧目录栏中“高级设置” 点击“入站规则”,再点击新建入站规则(开放端口有开放入站端口与开放出站端口之分,这里讲入站端口的开放…

精品Python宠物领养网站系统失物招领

《[含文档PPT源码等]精品基于Python实现的宠物网系统》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等 软件开发环境及开发工具: 开发语言:python 使用框架:Django 前端技术:JavaScript、VUE.js&…

华为云云耀云服务器L实例评测|基于L实例安装Prometheus+Grafana插件实现数据可视化监控

文章目录 一、云耀云服务器介绍二、安装Prometheus创建prometheus.service配置文件启动prometheus服务查看prometheus服务进程三、安装node_exporter下载node_exporter组件包创建node_exporter.service配置文件启动node_exproter服务配置prometheus.yml文件访问Prometheus四、安…