热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

【学习笔记之操作系统原理篇】存储管理

存储管理基本概念物理内存(即内存地址)字节编号,从0开始,是“一维”的地址。例题:1.外存上存放的数据(必

存储管理基本概念


物理内存(即内存地址)

字节编号,从0开始,是“一维”的地址。


例题:

1.外存上存放的数据( 必须在访问前先装入内存 )。

存储管理的主要任务

如何将可用内存有效地分配给多个进程?
如何让存储容量大于可用内存的大进程得以运行?
如何保护和共享内存?

①内存的分配与回收


静态分配—次性全部载入内存,运行过程中不再变化。
动态分配先分配必需的基本空间,运行过程中动态载入。
内存分配表已使用的内存记录,未使用的内存记录。

②地址变换


静态地址重定位不需要硬件支持,不能移动,利用率低。
动态地址重定位转入后再计算物理地址,方便多模块。
内存分配表已使用的内存记录,未使用的内存记录。




例题:

1.静态重定位是在作业的( 执行过程 )中进行的。

2.动态重定位是在作业的( 装入过程 )中进行的。

3.存储分配解决多道作业地址空间的划分问题。为了实现静态和动态存储分配,需采用地址重定位,即把逻辑地址转为物理地址,静态重定位由连接装入程序实现,动态重定位由硬件地址变换机构实现。

4.采用动态重定位方式装入的作业,在执行中允许( 操作系统有条件地 )将其移动。

5.把逻辑地址转变为内存的物理地址的过程称作( 重定位 )。

6.将作业地址空间中的逻辑地址转换为内存中的物理地址的过程称为( 重定位 ) 。

7.逻辑地址转变为内存的物理地址的过程称作( 重定位或地址映射 )。

例题:

1.逻辑地址就是( 相对地址 )。

③内存信息的共享和保护


上下界保护法进程程序和数据段的起始地址和终止地
保护键法类似于读者——写者控制的方法。
Linux采用方法界限寄存器与CPU用户态和核心态旧结合的保护方式。

④内存扩充
虚拟存储


例题:

1.存储管理的目的是(方便用户和提高内存利用率。)





分区式存储管理


固定式分区(静态分区)


特点个数、大小不变
优缺点技术简单;但主存利用率不高,存在严重的内碎片
碎片明明空在这里却不能被利用



例题:

1.碎片现象的存在使得内存空间利用率( 降低 ).



可变式分区(动态分区)


特点个分区数、大小变化
数据结构已分配分区表(大小、起址)和空闲分区表(链)(大小,起址,状态)。
外碎片,拼接(内存紧凑)

例题:

1.用可重定位分区分配方式,( 解决碎片问题 )。

2.可重定位内存的分区分配目的为( 解决碎片问题 ) 。

分区分配算法


首次适应算法按空闲区首地址递增排序
循环首次适应算法按空闲区首地址递增排序
最坏适应算法按空间大小递减排序
最佳适应算法按空间大小递曾排序
快速适应算法按容量相同否分类排序
伙伴系统把内存中的所有空闲分区按照2k(1sk≤n)的大小划分。
哈希算法构建—张以空闲区大小为关键字的哈希表,该表的每一个表项记录了—个对应的空闲分区链表头指针。

例题:

1.在可变分区存储管理中,最优适应分配算法要求对空闲区表项按( 尺寸从小到大 )进行排序。

2.在动态分区式内存管理中,倾向于优先使用低地址部分空闲区的算法是(首次适用算法)。

3.在动态分区式内存管理中,能使内存空间中空闲区分布较均匀的算法是(循环首次适用算法)。

4.在动态分区式内存管理中,每次分配时把既能满足要求,又是最小的空闲区分配给进程的算法是(最佳适应算法)。

5.在((循环)首次适应算法)中,要求空闲分区按空闲区地址递增顺序链接成空闲分区链。

6.在( 最佳适应算法 )中,是按空闲区大小递增顺序形成空闲分区链。

7.在( 最坏适应算法 )中,是按空闲区大小递减的顺序形成空闲分区链。

8.分区管理方式中,当内存碎片容量大于某一作业所申请的内存容量时,(拼接后,可以为这一作业分配内存)。

9.在循环首次适应算法中,要求空闲分区按( 空闲区首地址递增 )顺序链接成空闲分区链。

10.在最佳适应算法中是按( 空闲区大小递增 )顺序形成空闲分区链。

分配内存


内存回收


例题:

1.在回收内存时可能出现四种情况,其中若释放区与插入点前一空闲分区F1相邻接,此时应( 在F1分区表项的基础上,修改大小 ) 。

2.在回收内存时可能出现四种情况,其中若释放区与插入点的后一分区F2相邻接,此时应(在F2分区表项的基础上,修改大小和始址 )。

3.在回收内存时可能出现四种情况,其中若释放区不与F1和F2相邻接,此时应( 为回收区建立一新空闲分区表项,并填上 分区的大小和始址) 。

4.在回收内存时可能出现四种情况,其中若释放区与F1和F2都相邻接,此时应( 删除F2分区表项,并在F1分区表项的基础 上修改大小 ) 。

5.在动态分区分配方案中,某一作业完成后,系统收回其主存空间,并与相邻空闲区合并,为此需修改空闲区表,造成空闲区减一的情况是(有上邻空闲区,也有下邻空闲区)。

地址变换与内存保护

动态分区可以采用拼接技术:有碎片就拼接,不够时才拼接。


分区式管理的优缺点


主要优点(1)实现了多个作业或进程对内存的共享,有助于多道程序设计,从而提高了系统的资源利用率。
(2)该方法要求的硬件支持少,管理算法简单,因而实现容易。
主要缺点(1)内存利用率仍然不高。存在着严重的碎小空闲区(碎片)不能利用的问题。解决办法:内存紧凑。
(2)作业或进程的大小受分区大小控制,除非实现内存的扩充。可采用覆盖和交换技术。
(3)难以实现各分区间的信息共享。

例题:

1.通常,采用紧缩法消除内存碎片的存储管理技术是( 可重定位分区法 )。

页式存储管理


静态页式管理

静态方法:一个进程的所有页一次性全部装入内存。


数据结构


页表对每—个进程,系统为它建立—个页表。
在这里插入图片描述
请求表在这里插入图片描述
存储页面表在这里插入图片描述
分配与回收静态分配为一次性分配

地址结构与地址变换


地址结构在这里插入图片描述
地址变换在这里插入图片描述

动态页式管理


例题:

1.在页式存储管理中,若所需页面不在内存中,则会引起( 缺页中断 )。

指令存取速度与页面大小的问题

快表
页面大小的选择:如果页面太大,页式管理就退化为分区管理,同时导致页内“碎片”过大。而页面太小,页表占用内存空间太多。—个系统的页表占用内存的空间大小与主存大小和页大小有关。


例题:

1.在请求分页存储管理方案中,若某用户空间为16个页面, 页长1KB,现有页表如下:
|页号 | 块号|
| 0 | 12 |
| 1 | 13 |
| 2 | 3 |
则逻辑地址0A1F(H)所对应的物理地址为(0E1F(H))。

注:
页长1KB 210=1k 页面长度为10位,
逻辑地址0A1F(H)转化为二进制位 0000 1010 0001 1111
(二进制10)为页号即十进制2,对应表找到块号为3,故物理地址为 0000 1110 0001 1111 (0E1F)
因为是分页存储管理,所以隐藏了页面大小等于页框大小这个条件


页式管理的优缺点


优点(1)有效地解决了内存的碎片问题,进—步可提高了处理机的利用率。
(2)动态页式存储管理只要求每个进程部分装入便可运行,实现了内存的扩充技术。
缺点(1)要求有相应的硬件支持。例如,地址变换机构,缺页中断机构和页面的淘汰等。
(2)增加了系统开销。
(3)淘汰算法选择不当有可能会严重影响系统的使用效率。
(4)虽然消除了碎片,但同时还存在页内碎片问题。

例题:

1.分页式存储管理中,地址转换工作是由( 硬件 )完成的。

淘汰算法与抖动现象

抖动现象与工作集
抖动现象:频发的调入调出,与进程数和进程的实页数有关
防止抖动现象的方法:
①是选择好的淘汰算法:以减少缺页次数。
②是扩大工作集:是指进程在某个时间段里要访问的页的集合。如果能够预知进程在某段时间的工作集,并在此之前把该集合调入内存,至该段时间终了时,再将其在下—时间段时不需要访问的哪些页换出内存,这样就会可以减少页的交换。


淘汰原因内存空闲页不足,调出暂不用页到磁盘交换区。
算法目标应使缺页率尽可能小。

最佳(Optimal)淘汰算法
基本思想不再使用或最远的将来不再使用。不能实现,但可以作为衡量标准。

先进先出淘汰算法(FIFO)
基本思想FIFO算法容易实现,但是它所依据的理由与普遍的进程运行规律不符。它只适用于CPU按线性顺序访问地址空间的进程。

最近最少使用(LRU)淘汰算法最近最久没有被使用的页
基本思想方法:(1)计时器法(2))
栈(解题方法)
(3)寄存器法:高位补一,右移,最小。

最近未使用(NUR)算法LRU近似算法
基本思想R:是否访问,M:是否修改,R=O,M=O的先淘汰。最不经常使用(NotFrequentlyUsed,NFU)算法增设一个访问寄存器,每次访问加1,淘汰值最小的。

例题:

1.在请求分页系统中,LRU算法是指( 丘期最长时间以来没被访问的页先淘汰 ) 。

2.在请求调页中可采用多种置换算法,其中LRU是( 最近最久未使用 )置换算法。

3.在下述存储管理技术中,( 请求分页) 处理不当会产生抖动。.

段式存储管理


静态段式存储管理


结构在这里插入图片描述
数据结构在这里插入图片描述
地址变换在这里插入图片描述
内存分配与释放在这里插入图片描述

动态段式存储管理


基本思想在这里插入图片描述
段表在这里插入图片描述
缺段中断处理能容纳直接调入
不能容纳合并碎片再调入
内存不足换出
也可能产生抖动现象

分段和分页的主要区别


(1)段是面向用户的,页是面向系统的。
(2)页的大小是固定的,由系统决定;段的大小不固定,由用户决定。
(3)从用户的角度看,分页系统的用户程序空间是一维连续的线性空间 ; 段的地址空间是二维的,由段名和段内相对地址组成。
(4)从管理的角度看,分页系统的二维地址是在地址变换过程中由系统的硬件机构实现的,对用户是透明的。分段系统的在地址变换过程中的二维地址是由用户提供的。因而, 页内没有地址越界问题,而段内的相对地址则存在地址越界(段长受内存实际空间大小限制)问题。

段的信息共享

页式、段式都可以共享。但段式方便。
共享:页表、段表记录相同空间。


段的静态链接与动态链接

静态链接
在这里插入图片描述

动态链接
在这里插入图片描述


段的存储管理的内存保护

①地址越界保护法
②存取控制保护法


段的存储管理的优缺点


优点(1)便于信息的共享和保护。
(2)实现了内存的扩充。
(3)便于信息的变化处理。
(4)便于实现动态链接。
缺点(1)增加了计算机成本。
(2)存在碎片问题。
(3)段的长度受内存可用空间大小的限制。
(4)与页式存储管理类似,淘汰算法选择不当,可能产生抖动现象。

例题:

1.分段管理提供(二 )维的地址结构。

2.在段式存储管理中,一个段是一个( 不定长的连续 )区域。

3.支持程序浮动的地址转换机制是( 动态重定位) 。.

其他

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


例题:

1.(固定分区)存储管理支持多道程序设计,算法简单,但存储碎片多。

2.(段页式管理)实现了段式、页式两种存储方式的优势互补。

3.(段页式管理)存储管理方式能使存储碎片尽可能少,而且使内存利用率较高。

4.段页式存储管理汲取了页式管理和段式管理的长处,其实现原理结合了页式和段式管理的基本思想,即(用分段的方法分配和管理用户地址空间,用分页方法来管理物理存储空间)。

5.虚拟存储技术是(补充相对地址空间的技术)。

6.虚拟存储器的最大容量是由(计算机系统的地址结构和外存空间)决定的。

7.实现虚拟存储最关键的技术是( 请求调页(段))。 8.以下支持虚拟存储器的存储管理技术是( 请求分页技术 )。 9.若一个系统内存有64MB,处理器是32位地址,则它的虚拟地址空间为( 4GB )字节。

Linux存储管理


推荐阅读
  • 本文详细探讨了 HAProxy 的基本概念及其与 LVS(Linux Virtual Server)的比较,特别是在内核空间与用户空间的工作差异。文章还深入介绍了 HAProxy 独有的数据结构——弹性二叉树,以及其在高并发场景下的表现。 ... [详细]
  • 尤洋:夸父AI系统——大规模并行训练的深度学习解决方案
    自从AlexNet等模型在计算机视觉领域取得突破以来,深度学习技术迅速发展。近年来,随着BERT等大型模型的广泛应用,AI模型的规模持续扩大,对硬件提出了更高的要求。本文介绍了新加坡国立大学尤洋教授团队开发的夸父AI系统,旨在解决大规模模型训练中的并行计算挑战。 ... [详细]
  • 本文介绍了进程的基本概念及其在操作系统中的重要性,探讨了进程与程序的区别,以及如何通过多进程实现并发和并行。文章还详细讲解了Python中的multiprocessing模块,包括Process类的使用方法、进程间的同步与异步调用、阻塞与非阻塞操作,并通过实例演示了进程池的应用。 ... [详细]
  • 本文介绍了Linux内核中TCP的三种接收队列:Prequeue、sk_receive_queue和Backlog。这些队列在数据包处理过程中扮演着重要角色,帮助提高系统性能和效率。 ... [详细]
  • 分布式计算助力链力实现毫秒级安全响应,确保100%数据准确性
    随着分布式计算技术的发展,其在数据存储、文件传输、在线视频、社交平台及去中心化金融等多个领域的应用日益广泛。国际知名企业如Firefox、Google、Opera、Netflix、OpenBazaar等均已采用该技术,推动了技术创新和服务升级。 ... [详细]
  • 本文详细探讨了 Android Service 组件中 onStartCommand 方法的四种不同返回值及其应用场景。Service 可以在后台执行长时间的操作,无需提供用户界面,支持通过启动和绑定两种方式创建。 ... [详细]
  • SSE图像算法优化系列三:超高速导向滤波实现过程纪要(欢迎挑战)
    自从何凯明提出导向滤波后,因为其算法的简单性和有效性,该算法得到了广泛的应用,以至于新版的matlab都将其作为标准自带的函数之一了&#x ... [详细]
  • 本文详细介绍了如何在 Ubuntu 14.04 系统上搭建仅使用 CPU 的 Caffe 深度学习框架,包括环境准备、依赖安装及编译过程。 ... [详细]
  • 本文深入探讨了Linux内核中进程地址空间的设计与实现,包括虚拟地址空间的概念、内存描述符`mm_struct`的作用、内核线程与用户进程的区别、进程地址空间的分配方法、虚拟内存区域(VMA)的结构以及地址空间与页表之间的映射机制。 ... [详细]
  • 吴石访谈:腾讯安全科恩实验室如何引领物联网安全研究
    腾讯安全科恩实验室曾两次成功破解特斯拉自动驾驶系统,并远程控制汽车,展示了其在汽车安全领域的强大实力。近日,该实验室负责人吴石接受了InfoQ的专访,详细介绍了团队未来的重点方向——物联网安全。 ... [详细]
  • 时序数据是指按时间顺序排列的数据集。通过时间轴上的数据点连接,可以构建多维度报表,揭示数据的趋势、规律及异常情况。 ... [详细]
  • 有向无环图(DAG)的两种拓扑排序方法详解
    本文介绍了有向无环图(DAG)的两种拓扑排序方法。第一种方法通过不断移除没有前驱的顶点来实现排序;第二种方法则利用深度优先搜索(DFS),记录每个节点的首次和最后访问时间,最终根据这些时间的逆序得到拓扑排序结果。 ... [详细]
  • [编程题] LeetCode上的Dynamic Programming(动态规划)类型的题目
    继上次把backTracking的题目做了一下之后:backTracking,我把LeetCode的动态规划的题目又做了一下,还有几道比较难的Medium的题和Hard的题没做出来,后面会继续 ... [详细]
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • 探索Java 11中的ZGC垃圾收集器
    Java 11引入了一种新的垃圾收集器——ZGC,由Oracle公司研发,旨在支持TB级别的内存容量,并保证极低的暂停时间。本文将探讨ZGC的开发背景、技术特点及其潜在的应用前景。 ... [详细]
author-avatar
刘旭
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有