存储管理(6)

news2025/2/26 15:15:05

存储管理

1 程序的装入与链接

编译:源代码——目标代码
链接:目标代码+所需库函数=装入模块
装入:将装入模块装入内存,该过程也叫做地址重定位,也称地址映射

地址空间: 源程序经编译后得到的目标程序,存在于它所限定的地址范围内,此范围称地址空间。地址空间是逻辑地址的集合。
存储空间: 指主存中一系列存储信息的物理单元的集合,这些单元的编号称为物理地址。存储空间是物理地址的集合。
程序的装入方式:
重定位(地址映射):把用户程序中的相对地址(逻辑地址)转换为主存中的绝对地址(物理地址)过程。

  • 静态重定位:编译时产生相对地址,装入程序确定要装入模块的地址,并在装入时进行重定位,程序运行中不允许在内存移动。
  • 动态重定位:编译时产生相对地址,装入程序在把装入模块装入内存时,不立即把装入模块中的相对地址转换为绝对地址,而是推迟到程序要真正执行时才进行。

在这里插入图片描述
在这里插入图片描述
程序的链接方式:

  • 静态链接:对相对地址进行修改;变换外部调用符号。

  • 装入时动态链接:在装入内存时,边装入边链接
    便于软件版本的修改和更新
    便于实现目标模块共享

  • 运行时动态链接:运行时,用到哪个模块,再链接哪个模块,用不到的模块可不装入内存。

2 连续分配存储管理方式

连续分配:指为一个用户程序分配一个连续的内存空间。

2.1 单一连续分配

将整个内存区域分为系统区域和用户区域两部分:
(1)系统区域:提供给操作系统使用。
(2)用户区域:供应用程序使用的内存区域。
在这里插入图片描述

应用范围:单用户、单任务操作系统。如:CP/M、DOS2.0以下。
操作系统的任务就是将系统程序和用户程序分开。
方法:用基址-限长寄存器。

2.2 固定分区分配

固定分区:在进程装入内存之前,由操作员或操作系统把内存划分成若干个大小不等的分区。一旦划分就保持不变。
在这里插入图片描述

方法:分区在系统启动后划分好,以后不能改变。
应用范围:多道程序设计系统最简单的一种方式。如:60年代的IBM360上的MFT。
划分分区方法:分区大小相等或分区大小不等
缺点:内存利用率低

2.3 可变分区分配

可变分区:在进程装入内存时,把可用的内存空间“切出”一个连续的区域分配给进程,整个内存的分区大小和分区的个数是根据进程的大小动态划分的。
动态分区分配数据结构:空闲分区表和空闲分区链。
在这里插入图片描述

动态分区分配算法
(1)首次适应法
该算法要求空闲分区以地址递增的次序排序,采用链表结果,分配内存时从链表的开始顺序查找,直到找到一个满足进程大小要求的空闲分区为止。
适用: 优先使用内存中低地址部分的空闲空间,高地址部分很少被利用,从而保证高地址部分留有较大的空闲分区。
缺点: 低地址部分不断被“分割”,留下许多难以利用的小空闲分区。每次查找从低地址到高地址,影响查找速度。
(2)下次适应法
为了避免查找时总是从低地址开始,因此下次适应法要求从上次找到的空闲分区的下一个空闲分区查找。为了实现该算法,需要设置起始查询指针,用于指示下一次查询的起始位置。
特点: 可以使内存得到比较均衡的使用,减少查找空闲分区的开销,但会使系统缺乏大的空闲分区,导致比较大的进程无法运行。
(3)最佳适应法
为进程分配内存时,总是把与进程大小最匹配的空闲分区分配出去。首先将空闲分区按照分区大小递增的顺序形成一个空闲分区链。当进程要求分配内存时,第一次找到的满足要求的空闲区必然是最优的。
优点: 可以匹配到与进程大小相等的空闲分区,并可以保留有较大的空闲分区。
缺点: 链表的头部会留下许多难以利用的小空闲区,称为碎片,影响分配速度。
(4)最坏适应法
该算法与最佳适应算法相反,要求空闲区按分区大小递减的顺序排序,每次分配时,从链首找到最大的空闲分区“切出”一块分配。
优点: 基本不会留下小空间分区,不易形成碎片。
缺点: 大的空闲分区被“切割”,当有较大的进程需要运行时,系统往往不能满足要求。
在这里插入图片描述

3 离散分配方式

连续分配方式带来的问题是会在存储空间中产生许多“碎片”。能否将进程分配到许多不相邻的分区中呢?由此产生离散分配方式。

3.1 页式存储管理

基本原理:

  • 将进程的逻辑地址空间分成若干个大小相等的片,称为页面或页;
  • 内存空间分成与页大小相等的若干个存储块,称为物理块或页框。、
  • 在为进程分配内存时,以块为单位,将进程中的若干页分别装入多个可以不相邻的块中。
    在这里插入图片描述

页面大小的选择:
页面的大小由机器的地址结构决定的。
页面的大小的权衡:

  • 页面较小----内存碎片小;页表过长,占用较大内存空间。
  • 页面较大----页表短,占用较少内存;内存碎片大。

通常页面的大小要适中,在512B~4MB之间。

页式存储管理逻辑地址结构:
在这里插入图片描述
在这里插入图片描述
快表:
在这里插入图片描述
两级页表:
现代的计算机系统都支持大的逻辑地址空间,当地址空间较大(32位或64位)如32位时,若页面大小为4KB=212B,有页表项目220=1M,又因为每个页表项占4B,故每张页表要占用4MB内存。
对页表所需地址空间采用离散分配方式来解决——两级和多级页表。
将当前需要的部分页表项调入内存,其余的页表项仍驻留在磁盘上,需要时再调入内存。
SUN公司的SPARC支持三级页表,Motorola公司的68032支持四级页表。

在这里插入图片描述

3.2 段式存储管理

在这里插入图片描述
在这里插入图片描述
分页和分段的区别:
分页和分段的目的:

  • 页是信息的物理单位,分页是系统管理的需要,而不是用户的需要。
  • 段是信息的逻辑单位,它含一组意义完整的信息。分段是为了更好地满足用户的要求。

页和段长度:

  • 页的大小固定,由系统确定。
  • 段的长度不固定,决定于用户所编写的程序。

地址空间:

  • 分页的作业地址空间是一维的,即单一的线性地址空间。
  • 分段的作业地址空间是二维的,程序员在标识一个地址时,需给出段名和段内地址。

段的共享与保护:
由于段是信息的逻辑单位,用户易于实现对段的共享,也容易对段进行保护。而页虽也可共享,但不方便。

例如:有一个多用户系统,可同时容纳40个用户,它们都执行一个文本编辑程序,该文本编辑程序含有160KB的代码和40KB的数据。
答:如不共享,共需16040+4040=8MB的内存空间来支持40个用户。
若代码是可重入的,则无论是分页系统还是分段系统都可以共享该代码段,因此内存只需留一个文本编辑程序,所需空间为160+40*40=1760KB。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3 段页式存储管理

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Leetcode 1223. 掷骰子模拟【动态规划】

有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数。 不过我们在使用它时有个约束,就是使得投掷骰子时,连续 掷出数字 i 的次数不能超过 rollMax[i](i 从 1 开始编号)。 现在,给你一个整数数组 rollMax 和一…

WebDAV之葫芦儿·派盘+NMM

NMM 支持WebDAV方式连接葫芦儿派盘。 推荐一款文件管理器,可以对手机中的文件进行多方面的管理,支持语法高亮和ftp等远程的文件的管理。支持从WebDav服务器连接葫芦儿派盘服务下载文件和上传文件。 NMM文本编辑器是一款文件管理器,在功能上面更加的适合于一些编程人员进行使…

2023年应该了解的黑客知识

网络犯罪的艺术处于不断变化和演变的状态。与这些趋势保持同步是网络安全人员工作的重要组成部分。 今天的现代网络安全必须确保他们始终为下一个大趋势做好准备并保持领先于对手。 当我们开始迈向 2023 年时,安全格局与一年前相比已经发生了变化,更不…

Spark on hive Hive on spark

文章目录Spark on hive & Hive on sparkHive 架构与基本原理Spark on hiveHive on sparkSpark on hive & Hive on spark Hive 架构与基本原理 Hive 的核心部件主要是 User Interface(1)和 Driver(3)。而不论是元数据库&a…

webpack(高级)--性能优化-代码分离

webpack webpack性能优化 优化一:打包后的结果 上线时的性能优化 (比如分包处理 减少包体积 CDN服务器) 优化二:优化打包速度 开发或者构建优化打包速度 (比如exclude cache-loader等) 大多数情况下我们侧…

css 安全区域 safe-area-inset-

前言 安全区域与边界是iOS11 新增特性。 安全区域 安全区域的内容不受圆角(corners)、齐刘海(sensor housing)、小黑条(Home Indicator)影响。Webkit 为此增加了相应的CSS 函数,用于获取安全…

B树系列与MySQL数据库

前篇提到B树及其实现:一文看懂---B树及其简单实现_b树实现_且随疾风前行->的博客-CSDN博客 本篇继续谈B树系列的B树,B*树和它们与MySQL数据库的关系。 目录 B树系列 B树 B树的特性: B*树 B树系列总结 MySQL索引简介 MyISAM Inno…

Sphinx文档生成工具(二)

rst语法 官方的语法手册 行内的样式: #斜体 *message* #粗体 **message** #等宽 不能有换行 message标题 一级标题 ^^^^^^^^ 二级标题 --------- 三级标题 >>>>>>>>> 四级标题 ::::::::: 五级标题六级标题 """"…

Vue+node.js医院预约挂号信息管理系统vscode

网上预约挂号系统将会是今后医院发展的主要趋势。 前端技术:nodejsvueelementui,视图层其实质就是vue页面,通过编写vue页面从而展示在浏览器中,编写完成的vue页面要能够和控制器类进行交互,从而使得用户在点击网页进行操作时能够正…

关于 mysql数据库插入中文变空白 的解决方法

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/129048030 红胖子网络科技的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…

Session详解,学习 Session对象一篇文章就够了

目录 1 Session概述 2 Session原理 3 Session使用 3.1 获取Session 3.2 Session保存数据 3.3 Session获取数据 3.4 Session移除数据 4 Session与Request应用区别 4.1 Session和request存储数据 4.2 获取session和request中的值 4.3 session和request区别效果 5 Sess…

Transformer:开启CV研究新时代

来源:投稿 作者:魔峥 编辑:学姐 起源回顾 有关Attention的论文早在上世纪九十年代就提出了。 在2012年后的深度学习时代,Attention再次被翻了出来,被用在自然语言处理任务,提高RNN模型的训练速度。但是由…

数据库(4)--视图的定义和使用

一、学习目的 加深对视图的理解,熟练视图的定义、查看、修改等操作 二、实验环境 Windows 11 Sql server2019 三、实验内容 学生(学号,年龄,性别,系名) 课程(课号,课名,…

收藏|一文掌握数据分析在企业的实际流程

一、数据分析概念 1.1 数据分析 是指用适当的统计分析方法对收集来的大量数据进行分析,将他们加以汇总和理解并消化,以求最大化地开发数据的功能,发挥数据的作用。 1.2 数据分析包括 描述性数据分析(初级数据分析)…

兼职平台小程序【源码好优多】

简介 微信小程序兼职平台以及问答悬赏平台的整合项目,兼职平台以及问答社区,是一个可以用于学生项目开发或者毕设的小型项目。 功能介绍 微信授权登录 用户兼职选择 优质学长/学姐推荐 兼职推荐 问答板块 评论/回复板块 用户个人中心 页面截图 …

深度学习Week15-common.py文件解读(YOLOv5)

目录 简介 一.基本组件 1.1autopad 1.2Conv 1.3 Focus 1.4Bottleneck 1.5BottleneckCSP 1.6 C3 1.7 SPP 1.8Concat 1.9Contract、Expand 二、重要类 2.1非极大值抑制(NMS) 2.2AutoShape 2.3 Detections 2.4 Classify 三、实验 &#x1f…

WGCNA | 值得你深入学习的生信分析方法!~(网状分析-第三步-模块与特征分析)

1写在前面 之前我们完成了WGCNA输入数据的清洗,网络构建和模块识别。😘 而且还介绍了如何对大型数据分级处理,有效地减少了内存的负担。😷 接着就是最重要的环节了,将不同module与表型或者临床特征相联系,进…

共享模型之工具(一)

1.线程池 1.1.线程池产生背景 1>.线程是一种系统资源,每创建一个新的线程都需要占用一定的内存(分配栈内存),在高并发场景下,某一时刻有大量请求访问系统,如果针对每个请求(任务)都创建一个新的线程,那么对内存的占用是相当大的,有可能还出现OOM(内存溢出),甚至会导致整个…

配置中心Config

引入依赖<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.6.RELEASE</version></parent><properties><spring-cloud.version>Finchley.SR…

设计模式:桥接模式让抽象和实现解耦,各自独立变化

一、问题场景 现在对”不同手机类型“的 “不同品牌”实现操作编程(比如: 开机、关机、上网&#xff0c;打电话等) 二、传统解决方案 传统方案解决手机使用问题类图&#xff1a; 三、传统方案分析 传统方案解决手机操作问题分析 1、扩展性问题(类爆炸)&#xff0c;如果我们…