<Linux>(极简关键、省时省力)《Linux操作系统原理分析之存储管理(1)》(14)

news2024/10/7 11:25:18

@[TOC](《Linux操作系统原理分析之存储管理》(14)

  • 5 存储管理
    • 5.1 存储管理的目的和功能
      • 5.1.1 存储管理目的:
      • 5.1.2 存储管理的主要功能
      • 5.1.3 存储管理主要是对用户区进行管理
    • 5.2 地址重定位
      • 5.2.1 作业的地址空间
      • 5.2.2.地址映射(重定位)
    • 5.3 分区存储管理
      • 5.3.1 固定分区管理
        • 1.基本思想
        • 2.分区说明表:PDT
        • 3 分配策略
        • 4.优、缺点
      • 5.3.2 可变分区管理
        • 1.基本思想(量体裁衣)
        • 2.与固定分区的区别
        • 3. 主存占有表和空闲说明表(链)
        • 4. 分配策略:主要问题:分配、回收
      • 5.3.3 分区管理存储保护

5 存储管理

5.1 存储管理的目的和功能

5.1.1 存储管理目的:

1) 为多道程序的并发执行提供良好的环境,时每道程序都能在不受干扰的环境中运行。
2)便于用户使用存储器,是用户从存储器的分配、保护和共享等繁琐的事务中解脱出来。
3) 提高存储器的利用率,以提高系统的吞吐量。
4)从逻辑上扩充内存空间,可是大的程序能在小的内存空间运行或允许更多的程序并发执行。

5.1.2 存储管理的主要功能

主存储器的存储空间一般分为两部分:

系统区:用于存放操作系统的程序和数据;
用户区:用于存放应用程序与用户的程序和数据。

5.1.3 存储管理主要是对用户区进行管理

1) 内存分配

a. 为每道程序分配内存空间,使他们“各得其所”
b. 提高存储器的利用率,以减少不可用的存储空间。(即“零头”)
c. 允许正在运行的程序申请附加内存空间,以适应程序或数据动态增长的需求。

为此存储分配机制应具有以下功能:

(1) 记录每个存储区(分配单位)的状态,作为内存分配的依据 (2) 能动态的分配内存:指在进程运行期间,根据系统或用户的请求,分配其所需要的内存空间,并修改相应的空闲存储区表。
(3)及时回收系统或用户进程释放的存储区。

2) 内存保护

内存保护的任务是确保每道程序都在自己的内存空间运行,互不干扰,为此系统需要每道程序 都能:
a. 不访问 os 的任何部分,包括程序区或数据区
b. 执行中的进程不会转移到其他进程的程序中去执行。
c.未经特殊安排,不能访问其他进程中的数据,若在执行中发生了上述情况,系统应能 立即抛弃这样的指令。上述检查需要硬件完成,使用软件不仅会显著增减 cpu 开销,且大大 降低了进程的运行速度。

3) 内存共享
4) 地址映射(讲述作业从源程序到装入的过程)
5) 内存扩充

内存扩充的任务是从逻辑上来扩充内存容量,是用户认为系统所拥有的内存空间比实际的空间大。为实现此任务,系统必须具有下述功能:
a. 请求调入功能
b. 置换功能 虚拟存储器——os
把主存和辅存两者融为一体,为用户提供一个超过实际主存容量的存储器。其容量由计算机的地质结构来决定。

5.2 地址重定位

5.2.1 作业的地址空间

名字空间:用户在使用汇编语言或高级语言编制作业的源程序时,一般要使用符号名来指定程序转移的目的地、子程序的入口地址以及要访问的数据等在作业中的位置。因此这个作业空间称为名字空间。

作业的逻辑地址空间(相对地址空间):源程序经过汇编或编译后,形成目标程序,每个目标程序都是以 0 为基址顺序进行编址的,原来用符号名访问的单元用具体的数据——单元号取代。这样生成的目标程序占据一定的地址空间,称为作业的逻辑地址空间,简称逻辑空间。在逻辑空间中每条指令的地址和指令中要访问的操作数地址统称为逻辑地址

作业的物理地址空间(绝对地址空间):内存是由若干个存储单元组成的,所有存储单元顺序编号,每个存储单元有一个编号,这种编号可唯一标识一个存储单元,称为内存地址(或物理地址)。程序装入内存后,它们占用的主存区域是由绝对地址来确定指令和数据的位置的,通常把这些绝对地址的集合形成的作业空间称为作业的物理地址空间(绝对地址空间)。
在这里插入图片描述

5.2.2.地址映射(重定位)

逻辑地址和物理地址。这两者在多道程序环境下是不一致的,因此存储管理必须提供地址映射功能(重定位),用于把逻辑地址转换为物理地址。

重定位分类定义优点缺点
静态重定位有装配程序来完成。物理地址=起始地址+逻辑地址不需要硬件支持、简单、速度快。无法进行地址变换,无法实现虚拟存储器
1)将程序一旦装入内存后就不能再移动,
2)必须在程序执行前将有关部分全部装入
3) 必须占用连续的内存空间
动态重定位在程序执行过程中,由硬件地址映射机构来完成。基地址寄存器BR,虚地址寄存器 VR,内存地址 MR=BR+VR为实现虚拟存储器提供了基础,有利于存储空间的共享
1) 可以将程序分配到不连续的存储空间
2) 在程序运行之前可以只装入它的部分代码即可投入运行,然后在程序运行期间,根据需要动态申请分配内存
3) 为用户提供一个比主存的存储空间大的多的地址空间。需要硬件
支持,且实现存储管理的软件算法比较复杂。

在这里插入图片描述

5.3 分区存储管理

单道系统: 单一连续存储管理。
多道系统: 最简单的方法是将内存用户区划分成若干区域,每个区域分配给一个用户作业,把用户作业次性全部装入内存,并限定它们只能在自己的区域内运行。

5.3.1 固定分区管理

1.基本思想

系统操作员或 OS将内存空间划分为若干分区,每个分区中驻留一道程序,这些分区的长度可以不同,但分区的个数和每个分区的长度、位置是固定的。

2.分区说明表:PDT
分区号大小内存始址状态
112K20K已分配
232K32K已分配
364K64K已分配
4128K128K未分配
3 分配策略

在调度作业时,存储器管理根据所需量在分区说明表中找出一个足够大的分区分配分区,然后用重定位装入程序。如果找不到合适得分区,则通知作业调度模块,另外选择一个作业。

分配:依次查找分区说明表中的信息,将分区大小满足作业请求容量,并且使用状态为空闲的第一个分区分配给该作业。同时将该分区的状态改为已使用。

回收:作业运行完毕后,将释放的分区收回,设分区使用状态为空闲。

4.优、缺点

优点: 能实现多个作业共享内存,保证多道运行、数据结构简单,分配回收算法容易实现等;

缺点: 内存利用不充分,小作业占用大分区,造成内碎片现象;作业的大小受到分区大小严格限制;

内碎片: 在固定分区方式中,一个分区分配给作业后,分区中未使用的空间区称为内碎片,又称内零头。

5.3.2 可变分区管理

1.基本思想(量体裁衣)

根据作业大小动态地划分分区,使分区大小正好适应作业的需要。克服了内碎片。在这里插入图片描述

2.与固定分区的区别

1) 系统运行过程中,作业装入时建立
2) 个分区的大小不确定
3) 内存中分区的数目可以(一般)不定

3. 主存占有表和空闲说明表(链)

分区说明表:记录占用内存分区的情况;
空闲说明表(空闲分区链):将内存中空闲分区单独构成一个空闲分区表和空闲分区链;

4. 分配策略:主要问题:分配、回收

1) 首次适应算法(FF):按始地址升序排列。从链首开始分配。
分配:从空闲分区表(空闲分区链)首部开始顺序查找,直到找到第一个能满足其大小要求的空闲地址为止。
优点:算法简单,查找速度快,大作业易满足要求。

在这里插入图片描述

2) 最佳适应算法(BF):按分区大小递增的顺序排列。
分配:从空闲分区表(链)首开始查找,直到找到第一个能满足其大小要求的空闲地址为止。
注意:此算法看起来最佳,其实不然。

在这里插入图片描述

3) 最坏适应算法(WF)按分区大小递减的顺序排列。
分配:总是把空闲链中的第一个分区,即将最大的空闲分区分配给作业;
缺点:大作业难以满足要求。
在这里插入图片描述
5. 分区回收
当进程运行完毕释放内存时,系统根据释放区的首址,从空闲链中找到相应的插入点,此时可能出现以下四种情况。
在这里插入图片描述
处理方法:

(a) 不再为回收区分配新表项,而只需修改 F1 的大小。
(b) 用回收区的首址作为新空闲区的首址,大小为两者之和。
© 将三个分区合并,区 F1 的首址,取消 F2 的表项
(d) 新建一个表项。

注:
外碎片:主存中的一个空闲区域在分配给作业后,一般总是剩余一个更小的空闲区。当这样的小分区不能再装入一个作业时,即不能被利用时,它们也成为主存碎片,这样的分区在作用使用的分区之外,所以称为外碎片。

内存紧凑技术( 拼接技术):通过移动各个作业分区的存储位置,把多个外碎片拼接成一个较大的空闲区,从而可以用于存放另一个新的作业。

采用动态重定位技术,一个作业在内存中移动后,只要改变重定位寄存器的内容即可。

5.3.3 分区管理存储保护

存储保护是为了防止一个作业有意或无意地破坏操作系统或其他作业。
1. 界限寄存器保护(上下界保护法)(上、下限)(PCB)
如图示:把作业 X 分配在 60K 到 124K 的一个分区内,当调度到该作业在 CPU 上执行时,由 OS 把这对寄存器分别设置成 60K 和 124K。在作业运行过程中形成的每一个访问地址,与这两个寄存器的值比较,进行地址有效性检验,发现非法访问时产生中断。
在这里插入图片描述
2. 基址,限长寄存器法(基址、限长)
限长寄存器中的值代表可以使用的最大地址位移量(即相对地址或逻辑地址),基址寄存器用以存放运行作业的起始地址。
Load 1,500——取逻辑地址 D=500 号单元的数到 1 号寄存器中。
在 CPU 执行该指令时,由硬件对所要访问的逻辑地址 D 进行检查:
若 D>n(n 为限长值),则说明地址越界,即所要访问的内存地址超出本作业所占用的存储空间,这将产生保护中断,控制转给 OS 去进行出错处理。
若 D<n,则说明地址合法,做重定位工作。

在这里插入图片描述
3. 保护键法(锁、钥匙)(状态子 PSW)
对每个分区分配一个唯一的保护健,它是一个 N 位的二进制代码,相当于该分区的一把锁,而在程序状态寄存器 PSW 种,设置有保护键字段,它相当于一把钥匙,在执行存储访问指令时,先要检查被访问的单元所在分区的锁和钥匙是否相符。若符合则允许访问,否则不可以。因此,当某一分区分配给作业时,同时分配给他一个唯一的键码,当该作业执行时,PSW 中的保护字段置相应的键码。这样,它在访问本作业的存储区时,由于锁钥匙相配可以顺利地进行。如果该作业在运行中不正确的访问时,则会因为钥匙不匹配而产生保护中断,并把控制转给 OS 进行出错处理。为了保证 OS 能够访问内存的所有单元,可以规定一种”万能钥匙”,如当 PSW 中保护键字段全为 0 时,则不进行钥锁匹配检查。这样,就可以访问所有内存空间。

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

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

相关文章

企业微信小程序通知消息

使用企业微信发送应用消息中的小程序通知消息&#xff08;只允许绑定了小程序的应用发送&#xff09;。 目录 请求方式 请求地址 发送通知 参数说明 请求实例 返回 返回示例 返回参数说明 实现效果 总结 请求方式 POST 请求地址 https://qyapi.weixin.qq.com/cgi-b…

【EasyExcel实践】万能导出,一个接口导出多张表以及任意字段(可指定字段顺序)

文章目录 前言正文一、POM依赖二、核心Java文件2.1 自定义表头注解 ExcelColumnTitle2.2 自定义标题头的映射接口2.3 自定义有序map存储表内数据2.4 表头工厂2.5 表flag和表头映射枚举2.6 测试用的实体2.6.1 NameAndFactoryDemo2.6.2 StudentDemo 2.7 启动类2.8 测试控制器 三、…

关于UART、RS232、RS485的区别与理解

1、UART规定了数据的格式&#xff0c;但没有规定电气的特性&#xff0c;多少伏为高电平&#xff0c;多少伏为低电平。通常我们使用单片机与电脑通信时需要一个USB转TTL模块。 2、UART存在抗干扰能力差、通信距离短&#xff08;一般不超过2~3m&#xff09;,由此产生基于串口的R…

2023 BUCT 计算方法实验报告

前言 Textlive版本&#xff1a;2023 textstudio版本&#xff1a;4.6.3 名字和日期在以下地方修改: 图片下载地址; figures.zip LiangCha_Xyy/Source - Gitee.com 如下图&#xff0c;.tex文件和figures文件夹放在同一路径下即可 .tex代码 \documentclass[UTF8]{ctexart} \usep…

Python数据分析从入门到进阶:模型评估和选择(含代码)

引言 之前我们介绍了机器学习的一些基础性工作&#xff0c;介绍了如何对数据进行预处理&#xff0c;接下来我们可以根据这些数据以及我们的研究目标建立模型。那么如何选择合适的模型呢&#xff1f;首先需要对这些模型的效果进行评估。本文介绍如何使用sklearn代码进行模型评估…

常见算法和Lambda表达式

常见算法和Lambda 常见算法 查找算法 基本查找 从0索引开始逐个查找 代码演示: package Search;import java.util.ArrayList;public class BasicSearch {public static void main(String[] args) {int[] arr {1,2,3,4,5,6,3,4,1,3};ArrayList<Integer> resArr ba…

第二证券:机构争分夺秒抢滩 金融大模型落地为时尚早

本年以来&#xff0c;大模型席卷金融业&#xff0c;一夜之间&#xff0c;简直悉数金融场景都在探索适配大模型接口。但是&#xff0c;志向丰满&#xff0c;实践骨感。有大型金融组织IT部分人士比方&#xff0c;金融大模型从战略规划到安顿落地&#xff0c;有着从“卖家秀”走到…

Docker 下载加速

文章目录 方式1&#xff1a;使用 网易数帆容器镜像仓库进行下载。方式2&#xff1a;配置阿里云加速。方式3&#xff1a;方式4&#xff1a;结尾注意 Docker下载加速的原理是&#xff0c;在拉取镜像时使用一个国内的镜像站点&#xff0c;该站点已经缓存了各个版本的官方 Docker 镜…

两台电脑如何快速传输几百G文件,这款文件传输软件真快

当我们需要传输数百GB的文件时&#xff0c;使用传统工具对于大型文件传输来说往往效率低下。这些方法可能需要数小时&#xff0c;甚至数天才能完成传输。然而&#xff0c;现代生活和工作中&#xff0c;我们经常需要以更快速、更高效的方式传输大文件&#xff0c;无论是因为工作…

连锁零售企业如何提高异地组网的稳定性?

随着数字化时代的到来&#xff0c;连锁零售企业面临着日益复杂和多样化的网络挑战。连锁零售企业是在不同地理位置拥有分支机构和零售店&#xff0c;可能同城或异地&#xff0c;需要确保各个地点之间的网络连接稳定和可靠。但由于不同地区的网络基础设施差异、网络延迟和带宽限…

应用密码学期末复习(3)

目录 第三章 现代密码学应用案例 3.1安全电子邮件方案 3.1.1 PGP产生的背景 3.2 PGP提供了一个安全电子邮件解决方案 3.2.1 PGP加密流程 3.2.2 PGP解密流程 3.2.3 PGP整合了对称加密和公钥加密的方案 3.3 PGP数字签名和Hash函数 3.4 公钥分发与认证——去中心化模型 …

【小布_ORACLE笔记】Part11-5 RMAN Backups

【小布_ORACLE笔记】Part11-5 RMAN Backups 文章目录 【小布_ORACLE笔记】Part11-5 RMAN Backups1. 增量备份&#xff08;Incremental Backups)1.1差异增量备份&#xff08;Differential Incremental Backup&#xff09;1.2累积增量备份&#xff08;Cumulative Incremental Bac…

跨界融合,科技耕耘:MTX基金公司与ICG共塑全球农业科技新景观

在全球经济快速发展的当下&#xff0c;农业科技创新成为了社会进步的重要推动力。MTX基金公司对ICG的投资是在这一背景下的战略决策&#xff0c;不仅寻求经济效益&#xff0c;更承载着改善全球农业生产、实现食品安全与环境保护的使命。 1、战略投资&#xff1a;文化情怀与全球…

Python三十个常见的脚本汇总

1、冒泡排序 2、计算x的n次方的方法 3、计算a*a b*b c*c …… 4、计算阶乘 n! 5、列出当前目录下的所有文件和目录名 6、把一个list中所有的字符串变成小写&#xff1a; 7、输出某个路径下的所有文件和文件夹的路径 8、输出某个路径及其子目录下的所有文件路径 9、输出某个路…

【刷题笔记】长度最小的子数组||二分查找||边界||数组

长度最小的子数组 1 题目描述 https://leetcode.cn/problems/minimum-size-subarray-sum/ 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, …, numsr-1, numsr] &#xff0c;并返回…

如何用管理项目的方式管理个人任务

同样一份工作&#xff0c;有的人做起来得心应手&#xff0c;条理清晰&#xff0c;有的人却是手忙脚乱&#xff0c;苦不堪言。在凡事皆项目的时代&#xff0c;用管理项目的方法管理自己的任务&#xff0c;可能会让你的工作事半功倍。 工欲善其事&#xff0c;必先利其器&#xf…

webshell之API免杀

ScriptEngineManager命令执行免杀 ScriptEngineManager执行js代码 利用ScriptEngineManager可以执行js命令&#xff0c;但是由于一般情况下&#xff0c;即便能运行js代码也不一定能执行系统命令。因为一般情况下js执行系统命令主要是依靠两种方式&#xff0c;IE的ActiveX插件…

「幻醒蓝」可视化主题套件|融合天空的清澈与海洋的深邃

现如今&#xff0c;数据可视化已成为信息传递的重要手段之一。在这样一个信息爆炸的时代&#xff0c;向人们传达正确的信息显得尤为重要。为此&#xff0c;可视化主题套件应运而生&#xff0c;提供了一种多样化的、可视化的方式来展示数据。不同的主题套件能够适应不同的信息传…

Springboot如何快速生成分页展示以及统计条数

这是表结构&#xff1a; 前置知识&#xff1a; 分页查询公式&#xff08;&#xff09;&#xff1a; -- 推导一个公式 -- select * from emp -- order by empno -- limit 每页显示记录数 * (第几页-1)&#xff0c;每页显示记录数 统计条数公式&#xff1a; select count…

力扣5.最长回文子串

题目描述 思路 1.能够反复利用已判断好的回文子串 2.当子串s[i1,j-1]是回文子串时&#xff0c;只要s[i]s[j]&#xff0c;那么s[i,j]也会是回文子串 3.用好动态规划&#xff0c;具体解释在代码注释里 代码 class Solution {public String longestPalindrome(String s) {int…