存储管理详解

目录

存储管理(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.mzph.cn/news/86141.shtml

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

相关文章

人类的态势感知可分为先验、似然、后验的三部分

人类的态势感知可以分为先验、似然和后验三个部分。这些部分描述了在不同阶段对环境的感知和理解。先验感知:先验感知基于先前的知识、经验和先验信息来理解环境。它利用已有的知识和模型,进行预测和推断,从而形成对当前环境的初步认知。先验…

Qt5开发及实例V2.0-第二十一章-Qt.Quick Controls开发基础

Qt5开发及实例V2.0-第二十一章-Qt.Quick Controls开发基础 第21章 Qt Quick Controls开发基础21.1 Qt Quick Controls概述21.1.1 第一个Qt Quick Controls程序21.1.2 Qt Quick窗体应用程序的构成 21.2 Qt Quick控件21.2.1 概述21.2.2 基本控件21.2.3 高级控件21.2.4 样式定制 2…

通过插件去除Kotlin混淆去除 @Metadata标记

在Kotlin中,Metadata是指描述Kotlin类的元数据。它包含了关于类的属性、函数、注解和其他信息的描述。Metadata的作用主要有以下几个方面: 反射:Metadata可以用于在运行时获取类的信息,包括类的名称、属性、函数等。通过反射&…

Spring面试题5:面试官:为什么说Spring是一个容器?如何给Spring容器提供配置元数据?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:为什么说Spring是一个容器? Spring被称为一个容器,是因为它提供了一个运行环境和管理机制,用于管理应用程序中的对象的生命周期和依赖关系。 …

多维时序 | MATLAB实现WOA-CNN-LSTM-Attention多变量时间序列预测(SE注意力机制)

多维时序 | MATLAB实现WOA-CNN-LSTM-Attention多变量时间序列预测(SE注意力机制) 目录 多维时序 | MATLAB实现WOA-CNN-LSTM-Attention多变量时间序列预测(SE注意力机制)预测效果基本描述模型描述程序设计参考资料 预测效果 基本描…

STL-函数对象、谓词、常用算法

函数对象 函数对象概念 重载函数调用操作符的类,其对象常称为函数对象 函数对象使用重载的()时,行为类似函数调用,也叫仿函数 本质: 函数对象(仿函数)是一个类,不是一个函数 函数对象使用…

嵌入式单片机上练手的小型图形库

大家好,今天分享一款小型的图形库。 Tiny Graphics Library: http://www.technoblogy.com/show?23OS 这个小型图形库提供点、线和字符绘图命令,用于 ATtiny85 上的 I2C 128x64 OLED 显示器. 它通过避免显示缓冲器来支持RAM有限的处理器&…

tcpdump常用命令

需要安装 tcpdump wireshark ifconfig找到网卡名称 eth0, ens192... tcpdump需要root权限 网卡eth0 经过221.231.92.240:80的流量写入到http.cap tcpdump -i eth0 host 221.231.92.240 and port 80 -vvv -w http.cap ssh登录到主机查看排除ssh 22端口的报文 tcpdump -i …

银行家算法——C语言实现

算法思路 将操作系统看作是银行家,操作系统所拥有的资源就相当于银行家所拥有的资产,进程向操作系统申请资源就相当于资产家向银行贷款,规定资产家在向银行贷款之前,先申明其所贷数额的最大值,申明之后其贷款的数额不…

数据结构与算法-时间复杂度与空间复杂度

数据结构与算法 🎈1.概论🔭1.1什么是数据结构?🔭1.2什么是算法? 🎈2.算法效率🔭2.1如何衡量一个算法的好坏?🔭2.2算法的复杂度🔭2.3时间复杂度📖2…

软件设计师考试学习2

数据结构与算法基础 数组 稀疏矩阵 用代入法计算,A 数据结构的定义 非线性结构分为树和图,区别在于有没有环路 顺序表与链表 引入头节点可以使所有的节点处理方式一致 如果没有空的头节点,头节点需要单独处理 顺序存储与链式存储 查找…

AI-Chat,一款集全网ai功能的应用(附下载链接)

AI-Chat是一款综合性的聊天机器人,集成了多种先进的模型和功能。它采用了GPT4.0、联网版GPT和清华模型等多种模型,使得其具备更强大的语言处理能力。同时,AI-Chat还融合了AI绘画模型,例如Stable Diffusion绘画、文生图、图生图、艺…

基于下垂控制的并网逆变器控制MATLAB仿真模型

微❤关注“电气仔推送”获得资料(专享优惠) 主要模块: 建议使用MATLAB2021b及以上版本打开! 功率计算模块、下垂控制模块、电压电流双环控制模块、虚拟阻抗压降模块 扰动设置: 在0.5秒到2秒始端设置0.25Hz的电网频…

手机上网流程解析

来看一个手机开机之后上网的流程,这个过程称为 Attach。可以看出来,移动网络还是很复杂的。因为这个过程要建立很多的隧道,分配很多的隧道 ID,所以我画了一个图来详细说明这个过程。 1、手机开机以后,在附近寻找基站 e…

Hadoop源码阅读(三):HDFS上传

说明: 1.Hadoop版本:3.1.3 2.阅读工具:IDEA 2023.1.2 3.源码获取:Index of /dist/hadoop/core/hadoop-3.1.3 (apache.org) 4.工程导入:下载源码之后得到 hadoop-3.1.3-src.tar.gz 压缩包,在当前目录打开Pow…

2023华为杯数学建模竞赛E题

一、前言 颅内出血(ICH)是由多种原因引起的颅腔内出血性疾病,既包括自发性出血,又包括创伤导致的继发性出血,诊断与治疗涉及神经外科、神经内科、重症医学科、康复科等多个学科,是临床医师面临的重要挑战。…

Python之网络编程

一、网络编程 互联网时代,现在基本上所有的程序都是网络程序,很少有单机版的程序了。 网络编程就是如何在程序中实现两台计算机的通信。 Python语言中,提供了大量的内置模块和第三方模块用于支持各种网络访问,而且Python语言在网络通信方面的优点特别突出,远远领先其他语…

KT142C语音芯片flash型用户如何更新固件的说明_V2

目录 一、简介 2.1 让芯片进入PC模式 2.2 双击提供的exe程序即可 一、简介 正常的情况下,用户肯定是不需要更新固件的,因为芯片出厂默认就烧录了对应的程序固件,但是有客户可能需要小修小改,或者订制一下某些功能&#xff0c…

Linux设备驱动之Camera驱动

Linux设备驱动之Camera驱动 Camera,相机,平常手机使用较多,但是手机的相机怎么进行拍照的,硬件和软件,都是如何配合拍摄到图像的,下面大家一起来了解一下。 基础知识 在介绍具体Camera框架前&#xff0c…

Linux——进程

目录 一、基本概念 二、描述进程-PCB (一)task_struct-PCB的一种 (二)task_ struct内容分类 三、查看进程 (一)利用ps命令 (二) 通过 /proc 系统文件夹查看 (三…