存储管理-存储管理的功能

article/2025/8/20 15:38:49

存储管理-存储管理的功能

存储器为什么比较重要?

存储器是计算机系统的重要资源之一。任何程序和数据以及各种控制用的数据结构都必须占用一定的存储空间,因此,存储管理直接影响系统性能。

存储器的组成

  • 内存:存由顺序编址的块组成,每块包含相应的物理单元
  • 外存

内存外存的信息交换式谁控制的?

CPU控制相应的输入输出设备实现外存与内存信息的交换。

C语言.c源程序文件变成.exe可执行文件的过程

预编译->编译->汇编->链接

预编译

1.删除所有#define,展开所有宏定义;
2.处理所有条件预编译指令,如#if,#ifdef,#elif,#else,#endif;
3.处理#include预编译指令,将被包含的文件插入到该预编译指令的位置(该过程是递归进行的);
4.删除所有注释(实际上是被替换为一个空格);
5.添加行号和文件名标识;
6.保留所有#pragma编译器指令。

编译过程

(编译之后生成.s文件)将预处理完的文件进行一系列的词法分析,语法分析,语义分析以及优化产生相应的汇编代码文件。

汇编过程

汇编之后生成.o文件,可重定位目标文件)将汇编代码转化成机器可以识别的指令。

链接过程(重要的步骤,涉及地址和空间的分配)

(链接之后生成.exe文件,可执行目标文件)合并多个可重定位目标文件生成可执行目标文件,需要完成的工作包括:地址和空间的分配;符号决议;重定位。
1734701-20191120144625108-1063810418.png

虚拟存储器

为什么要有虚拟存储器?

内存虽然访问速度快,但是太小了,而外存访问速度慢但是好处是空间大。引出问题,怎么相互弥补一下呢?不经常访问的数据和程序放到外存中去,只有在需要的时候才调入内存中。

虚拟存储器是干什么用的?

1.当物理内存不够用的时候,在硬盘上也就是外存开辟一块空间当内存用,但是这块内存不是内存条提供的,所以叫虚拟内存。
例子:玩游戏的时候,你电脑内存1G,如果没有虚拟内存的话是没办法玩的,但是有了虚拟内存就可以玩了

2.执行程序尽管向操作系统申请内存,而不管内存够不够用,好像有无限的内存一样

3.编译链接程序
什么是编译链接程序?源程序要由编译程序编译成CPU可以执行的代码,链接程序要把一个进程的不同程序段链接起来来让程序跑起来.
1734701-20191120145415317-1030949311.png

4.为进程提供虚拟空间

虚拟存储器的定义

进程中的目标代码、数据等的虚拟地址组成的虚拟空间称为虚拟存储器(virtual store或virtual memory)。

虚拟存储器的特点

1.虚拟存储器不考虑物理存储器的大小和信息存放的实际位置,只规定每个进程中互相关连信息的相对位置
2.每个进程拥有自己的虚拟存储器,且虚拟存储器的容量由计算机的地址结构和寻址方式确定的,直接寻址时,如果CPU的有效地址长度为16位,则其寻址范围为0到64K
3.要实现虚拟存储器到物理存储器的变换,必须有相应的硬件支
4.每个进程都拥有自己的虚存,且每个虚存的大小不受实际物理存储器的限制
5.内存只能存放经常被访问的程序和数据段,访问或在某一段时间内不会被访问的信息。进程执行过程中需要这些信息时,从外存中自动调入主存

地址变换

虚拟地址映射到物理地址涉及两个问题一个是分区问题,一个是虚拟空间的划分,另外一个是地址映射

虚拟空间的分区

虚拟空间的划分与计算机系统结构有关。一般划分为系统空间和进程空间两个部分,进程空间分为程序区和控制区
1734701-20191120150914618-575782817.png

地址映射

把虚拟空间中已链接和划分好的内容装入内存,并将虚拟地址映射为内存地址

静态地址重定位

静态地址重定位在虚拟空间程序执行之前由装配程序完成地址映射工作

特点:

  • 对于虚拟空间内的指令或数据来说,静态地址重定位只完成一个首地址不同的连续地址变换
  • 所有待执行的程序必须在执行之前完成它们之间的链接

优点:不需要硬件支持。
缺点:无法实现虚拟存储器;必须占用连续的内存空间,并且难以做到程序和数据的共享。

动态地址重定位

动态地址重定位在程序执行过程中,在CPU访问内存之前,将要访问的程序或数据地址转换成内存地址。

特点:动态重定位依靠硬件地址变换机构完成

优点:

  • 可以对内存进行非连续分配
  • 动态重定位提供了实现虚拟存储器的基础
  • 有利于程序段的共享

地址重定位机构需要一个(或多个)基地址寄存器BR和一个(或多个)程序虚拟地址寄存器VR。指令或数据的内存地址MA与虚拟地址的关系为:MA=(BR)+(VR)
1734701-20191120151504786-1170651639.png

内外存数据传输控制

目的

实现内存扩充

过程

内存和外存之间必须经常地交换数据,即将执行的程序和数据段调入内存,处于等待状态的程序和数据段调出内存

基本控制方法

用户自己控制:

覆盖:
1.要求用户清楚地了解程序的结构,并指定各程序段调入内存的先后次序
2.覆盖技术不能实现虚拟存储器

操作系统控制

交换(swapping)方式

1.交换方式由操作系统把那些在内存中处于等待状态的进程换出内存,而把那些等待事件已经发生、处于就绪态的进程换入内存
2.交换方式一般不进行部分交换,每次交换除去常驻内存部分后的整个进程
3.交换方式能完成内存扩充任务,但不能实现进程大小不受内存容量限制的虚拟存储器

请求调入(on demand)方式和预调入(on prefetch)方式

请求调入方式是在程序执行时,如果所要访问的程序段或数据段不在内存中,则操作系统自动地从外存将有关的程序段和数据段调入内存

预调入由操作系统预测在不远的将来会访问到的程序段和数据段部分,并在它们被访问之前选择适当的时机调入内存

请求调入方式和预调入方式可以实现进程大小不受内存容量限制的虚拟存储器

内存的分配与回收

存储管理模块要为每一个并发执行的进程分配内存空间。另外,当进程执行结束之后,存储管理模块要及时回收该进程所占用的内存资源,以便给其他进程分配空间

策略:

(1) 分配结构:登记内存使用情况,供分配程序使用的表格与链表。例如内存空闲区表、空闲区队列等。

(2) 放置策略:确定调入内存的程序和数据在内存中的位置。这是一种选择内存空闲区的策略。

(3) 交换策略:在需要将某个程序段和数据调入内存时,如果内存中没有足够的空闲区,由交换策略确定内存中的哪些程序段和数据段调出内存,以便腾出足够的空间。

(4) 调入策略:外存中的程序段和数据段什么时间按什么样的控制方式进入内存。调入策略与内外存数据交换的控制方式有关。

(5) 回收策略:回收策略包括两点,一是回收的时机,二是调整回收空闲区和已存在空闲区。

内存信息的共享与保护

共享

在多道程序设计环境下,内存中的许多用户或系统程序和数据段可供不同的用户进程共享。这种资源共享将会提高内存的利用率

保护

内存信息保护方法有硬件法、软件法和软硬件结合三种:

上下界保护法是一种常用的硬件保护法

为每个进程设置一对上下界寄存器,分别放置被保护程序和数据段的起始地址和终止地址。
程序执行过程中,对内存进行访问操作时首先进行访址合法性检查,即检查重定位后的内存地址是否在上、下界寄存器规定的范围之内。
在规定的范围之内,访问是合法的;否则是非法的,并产生访址越界中断。

1734701-20191120152843274-1268988512.png

保护键法也是一种常用的存储保护法
为每一个被保护存储块分配一个单独的保护键。在程序状态字中设置相应的保护键开关字段,不同进程赋予不同的开关代码与被保护的存储块中的保护键匹配。保护键可设置成对读写同时保护或只对读、写进行单项保护。

保护键0对2K到4K的存储区进行读写同时保护的,保护键2对4K到6K的存储区进行写保护。

如果开关字与保护键匹配或存储块未受到保护,则访问该存储块是允许的,否则将产生访问出错中断。

1734701-20191120152901770-1133045141.png

界限寄存器与CPU的用户态或核心态工作方式相结合的保护方式

在这种保护模式下,用户态进程只能访问界限寄存器规定范围内的内存部分,核心态进程可以访问整个内存地址空间


http://chatgpt.dhexx.cn/article/wysDl7g1.shtml

相关文章

操作系统——存储管理方式

目录 1.分区存储管理 1-1单一连续分配 1-1-1基本原理: 1-1-2单一连续分区存储管理的地址变换与地址保护 1-1-3管理特点 1-2固定分区分配 1-2-1基本原理 1-2-2分区划分 1-2-3主存空间的分配与回收 1-2-4地址转换与存储保护 1-2-5管理特点 1-3动态分区分配…

页式存储管理、段式存储管理、段页式存储管理

目录 页式存储管理段式存储管理分页和分段存储管理的主要区别段页式存储管理 页式存储管理 1. 基本原理 页式存储管理是把主存储器划分成大小相等的若干区域,每个区域称为一块,并对它们加以顺序编号,如0#块、1#块等等。与此对应&#xff0c…

Android 存储管理

文章目录 保存数据的方式应用专属文件访问内部存储的专属空间持久化数据目录操作缓存数据目录操作 访问外部存储的专属空间验证存储空间的可用性选择物理存储位置访问和存储持久性文件操作缓存文件应用专属媒体内容 共享存储空间媒体内容请求必要权限检查媒体文件的更新打开媒体…

存储器管理之分区存储管理

分区式管理是满足多道程序的最简单的存储管理方案。它的基本思想是将内存划分成若干个连续区域,称为分区。每个分区只能存储一个程序,且程序也只能在它所驻留的分区中运行。 ⑴固定分区 操作系统预先把可分配的主存空间分割成若干个连续区域&#xff0…

存储管理的功能

我是一个有强迫症的人,什么文件都要归类,电脑桌面干干净净的放着几个必要的文件夹,所有的文件对应有不同的文件夹存放,如果看到某个文件(只要不是临时存放的)出现在桌面上,就感觉非常刺眼。 我…

操作系统---存储管理

存储管理 操作系统将外存的文件调入到内存中,以便CPU调用,如果调用的内容不在内存中,则会产生缺页中断;产生缺页中断后,这事需要从外存调数据到内存中,然后CPU接着从断点继续调用内存中的数据;在…

操作系统的存储管理

写在前面:我们都希望计算机拥有一个私有的,无限大的,速度无限快并且是永久性的存储器,但是这样额要求必定会价格昂贵,经过多年的探索,人们提出了“分层存储管理体系”,在这个体系中有&#xff1…

页式存储管理

页式存储管理为操作系统中的内容,但是在计算机组成原理中的虚拟存储器部分也用到了这一方式。 分区式存储管理最大的缺点是碎片问题严重,内存利用率低。究其原因,主要在于连续分配的限制,即它要求每个作用在内存中必须占一个连续…

计算机操作系统-3-存储管理

Lecture3-存储管理 存储管理是操作系统的重要组成部分,负责管理计算机系统的重要资源——内存储器。内存空间一般分为两部分 系统区:存放操作系统内核程序和数据结构等。用户区:存放应用程序和数据。 存储管理包括以下功能: 存储…

(存储管理)存储管理的四大基本功能

存储管理的四大基本功能 1、内存分配与回收 当有作业进入系统时,存储管理模块就会根据当前内存情况来分配内存给它;当作业完成后,就会回收作业占用的内存,将这部分内存设置为可分配状态。 分配方式主要有两种: 静态…

实验三、存储管理

目录 实验三、存储管理实验目的实验内容实验步骤1、虚拟内存信息检测2、分配虚拟内存 实验三、存储管理 实验目的 (1)通过实验了解windows内存的使用,学习如何在应用程序中管理内存、体会Windows应用程序内存的简单性和自我防护能力&#x…

操作系统存储管理

目录 - 3.1 内存的基础知识 - 3.1.1 什么是内存,有何作用 - 3.1.2 进程运行的基本原理 - 3.2 内存管理的概念 - 3.3 覆盖与交换 - 3.4 连续分配管理方式 - 3.5 动态分区分配算法 - 3.6 基本分页存储管理的基本概念 - 3.7 基本地址变换机构 - 3.8 具有快表的…

计算机操作系统--存储管理

基本概念 1. 存储器的结构 存储器顾名思义,就是用来保存数据的东西。随着科技的进步,存储器正朝着高速度、大容量、小体积方向发展。一般情况下,存储器的结构有如下两类: 寄存器-主存-外存寄存器-缓存-主存-外存 对于存储器有…

操作系统——存储管理

文章目录 1.存储管理概述1.1存储层次结构1.2存储器管理的功能1.2.1内存分配1.2.2地址映射1.2.3存储保护1.2.4内存扩充 1.3地址重定位1.3.1名字空间、地址空间和存储空间1.3.2地址重定位1.3.2.1静态重定位1.3.2.2动态重定位 2.存储器连续分配2.1单一连续分配管理方式2.2分区存储…

拉格朗日乘数法基础

背景 线性可分 SVM 的目标函数最终转换为一个带约束条件的求极值问题,而拉格朗日乘子法,恰恰是一种多元函数在变量受到条件约束时,求极值的方法。正好可以用来解决 SVM 的目标函数最优化。 那么拉格朗日乘数法的理论过程如何呢?…

拉格朗日乘子法和KKT条件

拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush-Kuhn-Tucker)条件是求解约束优化问题的重要方法,在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件。前提是:只有当目标函数为凸函数时,使用这两种方法才保证求得的是…

拉格朗日乘子法几何意义

为什么出现拉格朗日乘子法? 最短路径问题从几何意义中获得灵感:从数学公式中获得灵感推广到高维空间 一个最短路径问题 假设你在M点,需要先到河边(上图右侧曲线 )再回到C点,如何规划路线最短?…

拉格朗日乘子法(自己总结一些要点)

主要是研究SVM算法的时候涉及到了拉格朗日乘子法,由于是大学数学的内容,开始看懂,也不高兴认真去看。后来发现绕不开,于是打算认真去研究下。主要还是百度百科(https://baike.baidu.com/item/%E6%8B%89%E6%A0%BC%E6%9C…

拉格朗日乘子法:写得很通俗的文章

拉格朗日乘子法 最近在学习 SVM 的过程中,遇到关于优化理论中拉格朗日乘子法的知识,本文是根据几篇文章总结得来的笔记。由于是刚刚接触,难免存在错误,还望指出?。另外,本文不会聊到深层次的数学推导,仅仅…

拉格朗日数乘法

拉格朗日乘数法(Lagrange Multiplier Method)之前听数学老师授课的时候就是一知半解,现在越发感觉拉格朗日乘数法应用的广泛性,所以特意抽时间学习了麻省理工学院的在线数学课程。新学到的知识一定要立刻记录下来,希望…