热门标签 | 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存储管理


推荐阅读
  • 使用Numpy实现无外部库依赖的双线性插值图像缩放
    本文介绍如何仅使用Numpy库,通过双线性插值方法实现图像的高效缩放,避免了对OpenCV等图像处理库的依赖。文中详细解释了算法原理,并提供了完整的代码示例。 ... [详细]
  • 非公版RTX 3080显卡的革新与亮点
    本文深入探讨了图形显卡的进化历程,重点介绍了非公版RTX 3080显卡的技术特点和创新设计。 ... [详细]
  • CentOS 7 磁盘与文件系统管理指南
    本文详细介绍了磁盘的基本结构、接口类型、分区管理以及文件系统格式化等内容,并提供了实际操作步骤,帮助读者更好地理解和掌握 CentOS 7 中的磁盘与文件系统管理。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文详细介绍了如何在Ubuntu系统中下载适用于Intel处理器的64位版本,涵盖了不同Linux发行版对64位架构的不同命名方式,并提供了具体的下载链接和步骤。 ... [详细]
  • Linux设备驱动程序:异步时间操作与调度机制
    本文介绍了Linux内核中的几种异步延迟操作方法,包括内核定时器、tasklet机制和工作队列。这些机制允许在未来的某个时间点执行任务,而无需阻塞当前线程,从而提高系统的响应性和效率。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本文将详细介绍如何在Linux操作系统中执行PHP脚本,包括环境配置、命令使用及验证方法。对于需要在Linux环境下开发或部署PHP应用的用户来说,这是一篇非常实用的文章。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 本文详细探讨了KMP算法中next数组的构建及其应用,重点分析了未改良和改良后的next数组在字符串匹配中的作用。通过具体实例和代码实现,帮助读者更好地理解KMP算法的核心原理。 ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
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社区 版权所有