精华内容
下载资源
问答
  • 存储管理-存储管理功能

    千次阅读 2019-11-20 15:32:00
    存储管理-存储管理功能 存储器为什么比较重要? 存储器是计算机系统的重要资源之一。任何程序和数据以及各种控制用的数据结构都必须占用一定的存储空间,因此,存储管理直接影响系统性能。 存储器的组成 内存:存由...

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

    存储器为什么比较重要?

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

    存储器的组成

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

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

    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的用户态或核心态工作方式相结合的保护方式

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

    展开全文
  • 存储管理功能

    万次阅读 2017-05-29 08:57:02
    虚拟存储管理功能 ,那么进程运行过程中一部分存在于内存,另一部分存在于外存。如果外存部分进入内存,则撤销外存空间,分配内存空间,反之,操作相反。 仅仅知道要这样分配还不够,操作系统得记录这些情况...

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

    存储管理的功能


    存储管理可不仅是对外部存储资源(如磁盘文件)进行的管理,也包括了对内存的管理。内外存的资源管理技术可以相同,也可以不同,但一般情况下,都采用相同的管理技术。

    存储管理主要是完成如下功能:存储分配存储共享存储保护存储扩充地址映射

    存储分配

    我们知道,当一个作业进入内存时,操作系统会将其转变为进程,同时为其分配存储空间以供运行,而进程运行结束时,操作系统将进程所占有的存储空间回收。

    一般的存储分配

    如果操作系统带有虚拟存储管理功能,那么进程运行过程中一部分存在于内存,另一部分存在于外存。如果外存部分进入内存,则撤销外存空间,分配内存空间,反之,操作相反。

    带虚拟存储管理的内存分配

    仅仅知道要这样分配还不够,操作系统得记录这些情况——内存与外存资源的使用情况,为此,操作系统设置了两个表用于记录这些信息:
    1. 分配表:记录已经分配的区域。
    2. 空闲表:记录未分配区域。

    存储共享

    多个进程共用内存中的相同区域。

    经常去吃烧烤的小摊儿上就一个老板在忙活,不管谁的串都是老板烤的,但如果老板雇佣很多人,然后不同客人的串分给不同的人去烤,那老板多轻松啊(但这赚的估计还不够老板发工资)。
    据说高档餐厅会为每个桌配一名侍者,不过我没去过就是了……

    我们之所以要进行存储共享,其一便是为了节约内存空间,不然多个进程同时需要使用一个程序资源时,还要为每个进程创建一个程序资源的副本,那内存就算再大也不够用啊(就像那个烧烤摊儿老板,赚的还不够给工人发的工资)。
    另一方面,使用存储共享也是为了方便进程通信,我们知道PV操作就需要公共的内存空间才能够实现。

    一般情况下我们需要共享的是代码和数据,共享代码是为了节约内存空间,而数据则是对应的方便进程通信(也能节约内存空间)。

    存储保护

    存储共享中我们提到了PV操作,那PV操作是为了限制多个进程出现同时进入临界区的情况所提出来的,也算是一种对共享变量的一种保护,不过在存储保护中这种保护则更甚一筹,即对于多个进程共享的存储区域的保护。
    存储保护主要包括以下两个方面:
    1. 防止地址越界
    这个比较容易理解,因为在我们写程序的时候也要注意的,一旦地址越界编译就会出错,无法通过,不过此时还能在编译失败时纠正。
    而在操作系统中,每个进程具有相对独立的进程空间,一旦其中一个进程运行时产生的地址出现在其自身的进程空间之外,此时发生了地址越界,如果侵犯了其他进程空间,就会影响其他进程的正常执行,假如侵犯的进程空间属于操作系统,就可能导致系统崩溃。
    2. 防止操作越权
    对于多个进程共享的存储空间,每个进程有自己的访问权限,如读,写,执行。如果该进程访问共享区域时违反了权限规定,就说这个进程发生了操作越权。
    一般我们选用硬件来提供存储保护,软件作为辅助。

    我们用Windows的时候,如果在系统盘里删一些东西,会有提示说需要提供权限,这就是说当前登录用户权限不够,不能做这种操作。

    存储扩充

    我们知道,cache是高速缓冲,读写速度仅次于寄存器,但是耐不住人家尊贵,如果直接使用cache作为存储器的话,我只能说:“土豪,交个朋友吧!”。
    当然了,这只是玩笑话,cache很贵,其次是内存很贵,再然后咱么所说的机械硬盘就是大街货了,便宜,容量都是以TB做单位的。
    所以为了省钱,也为了性价比,我们就提出了三级缓存,将cache,内存,还有外存有机的结合,形成一个容量大速度快的虚拟存储系统。

    三级缓存都是比较新的技术了,很多年前,还没有cache这个东西,只有内存和外存之说。

    三级缓存

    地址映射

    逻辑地址转换成物理地址的过程。
    完成地址映射的硬件机构称为存储管理部件(MMU)

    地址映射

    逻辑地址是相对的,因此可以被映射到物理地址的不同的位置,物理地址则是绝对的,一旦产生,便固定了,这对于程序的结构化和分层设计带来不便。
    之所以会使用逻辑地址,也是为了程序移植方便。

    内存资源管理


    内存分区

    对内存分区,可以是静态,可以是动态的,分区的大小可以是等长,也可以是异常的。
    所谓静态分区,则是在系统运行之前就将内存划分为若干区域,后期可以直接分配。

    但是,由于分配时只能对已划分好的分区进行选择,故很难出现正好合适的区域。

    动态分区与之对应,是在系统运行的过程中划分内存空间

    通常,按照进程所需存储空间的大小为其分配一个或多个区域。

    等长和异长听名字就知道了,就不废话了。
    一般情况下,我们都是使用静态等长动态异长的组合方式。

    内存分配

    静态等长分区的分配

    通常用于页式和段页式的存储管理方式,被静态的划分为等长区域,每个区域大小为2^iB,称之为页面
    分配与去配的表示方法:

    1. 位示图
      用1位(1bit)来表示一个页面状态,1表示被占用,0表示空闲。假设某个存储空间内忧n个页面:
      位示图

    2. 空闲页面表
      若干个连续的空闲页面作为一组登记在空闲页面表中,该表包含首页面号页面个数。这种分配方法能使一个进程的若干页面连续。
      空闲页面表

      页面首号是指一块连续空闲区的第一块空闲页面号,页面个数则是这块连续空闲区的页面总数。

    3. 空闲页面链
      所有的空闲页面连接成一个链表,分配时取链表头页面,去配(撤销)时将释放的页面连接到链表头。
      空闲页面链

      这种方法适用于内存页面的分配,对于外存,由于需要数据的传输,故而速度慢,不采用。

    动态异长分区的去配

    此种分区常用语界地址和段式存储管理方式。
    存储空间被划分为若干不等长区域,对此的管理采用空闲区域表,该表中记录所有当前未被进程占用的空闲区域。
    空闲区域表

    与空闲区域表相关的算法:

    1. 最先适应算法(First Fit)
      核心思想:对于存储申请命令,选取空闲区域表中满足申请长度,且起始地址最小的空闲区域。
      实现:空闲区域表中的首址按从大到小的次序依次被记录了,当进程申请存储空间时,系统从该表的头部开始查找,取满足要求的第一个表目项,对比长度,若空闲区域大于进程申请空间,进行分割,然后将与申请空间大小相同的空闲区分配给进程,将剩余部分保留在空闲区域表中(需要改变首址)。

      该算法尽可能的使用低地址,造成高地址空间形成较大空闲区,算是一个优点,但是对空闲区的分割又是一个缺点(假设某个空闲区本来刚好可以满足P1的空间申请,但是P2先提出了空间申请,致使空闲区被分割,如此P1的申请将无法被满足)。

    2. 下次适应算法(Next Fit)
      核心思想:从上一次分配空闲区域的下一个位置开始,选取第一个可满足的空闲区域。
      实现:用一个指针记录每次分配结束后的下一个位置。

      此算法不需要像FF算法一样,每次分配都要进行一次查询,减小了时间开销,使空闲区域分布的较为均匀,但依旧没有解决FF算法的缺点。

    3. 最佳适应算法(Best Fit)
      核心思想:分配时寻找满足空间申请并且长度是最小的空闲区域,这样就克服了FF算法的缺点。
      实现:空闲区域按地址由小到大的记录,然后从表头开始查找,过程与FF算法类似,只是多出了一项长度的比较。

      可以预见,BF算法克服了FF算法的缺点,不去分割大的空闲区,但是又可能会形成很小的无法使用的空闲区——碎片。

    4. 最坏适应算法(Worst Fit)
      核心思想:分配时取满足空间申请,并且长度最大的空闲区域。
      实现:按照空闲区域长度由大到小依次记录于空闲区域表中,进程申请空间时,取第一个满足要求的表目项。

      克服了BF的缺点,却保留了FF算法的缺点。

    一说到算法,马上就感觉高大上起来,但实际上…….
    FF算法,NF算法以及WF算法就是图个简单,实现起来省时省力又省心。只有BF算法比较麻烦些。

    我们研究算法的时候,是为了解决一个个的实际问题,总是需要先提出一个最简单的算法,然后发现算法的缺点,针对这个缺点进行算法的进一步改进,不断的重复这一个过程。
    要知道,没有一个粗胚,怎么能够雕刻出一件完美的作品呢?

    紧凑

    这是为了解决碎片问题而提出来的。
    这个方法就是想移动所有的已占有区域,然后将所有的空闲区域连成一块完整的空闲区。

    虽然只有简简单单的一句话,但是我们可以发现,想要实现这个方法,系统的开销非常大,所以尽量避免使用紧凑技术。
    那么,什么时候使用呢?
    只有在一个新的进程申请空间时,所有分散的的空闲区域都不能满足,但是其总和可以满足这个申请时使用杂凑技术。

    小结


    一个适合的存储管理方式,会大大增强系统的易用性。

    所以……我该怎么收尾呢?

    展开全文
  • 存储管理

    2020-04-06 00:01:12
    存储管理主要模式、功能、虚存、硬件支持。 单连续/可变分区存储管理 页式/段式/段页式存储管理

    课件
    mindMaster

    3.1 存储管理的主要模式

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4bKLG3k9-1586102213137)(3_存储管理.assets/模式3.1.png)]

    3.1.1 用户编程的逻辑地址

    用户编程所使用的地址空间,从0开始编号

    段号:段内地址

    3.1.2 段式程序设计

    把一个程序设计成多个段

    用户可自用段覆盖技术扩充内存空间使用量

    3.1.3 进程执行的物理地址

    物理地址,又称绝对地址,即程序执行使用的地址空间。CPU执行指令时按照物理地址进行。

    3.1.4 主存的划分方式

    3.1.5 存储管理的主要模式

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0u3awVcJ-1586102213141)(3_存储管理.assets/存储管理模式简单示意.png)]

    创建进程首先将程序和数据装入内存。将源程序转换为可在内存执行的程序,通常需要以下步骤:

    • 编译:编译程序将用户源代码编译成若干个目标模块

    • 链接:链接程序将编译后的目标模块及所需库函数链接一起,形成一个完整的装入模块

      链接有以下三种方式

      1. 静态链接:程序运行前,将各目标模块及它们所需的库函数链接成一个完整的可执行程序,以后不再拆开
      2. 装入时动态链接:将用户源程序编译后所得的一组目标模块,在装入内存时,采用边装入边链接的链接方式
      3. 运行时动态链接:对于某些目标模块的链接,是在程序执行中需要时链接。优点是便于修改和更新,便于实现对目标模块的共享
    • 装入:由装入程序将装入模块装入内存

      1. 绝对装入:编译程序,事先知道程序未来驻留在内存的地址,产生绝对地址的目标代码。程序逻辑地址和绝对地址一致,绝对装入程序按装入模块中的地址直接将程序和数据装入内存。只适合单道程序环境。地址可编译或汇编给出,也可程序员赋予。通常在程序中采用的是符号地址,编译或汇编时转换为绝对地址。
      2. 静态重定位。可重定位装入:多道程序中,多个目标模块的起始地址通常为0,此时采用重定位装入方式。==装入时==对目标模块地址修改称为重定位,装入时一次完成称为静态重定位。特点是必须有足够的空间。进入内存后,运行期间不能在内存中移动,也不能申请内存地址。
      3. 动态重定位。动态运行时装入:程序在内存中移动,就需要动态装入方式。装入程序把装入模块装入内存后,并不立刻进行地址转换,而是在执行时进行。因此装入内存后的所有地址为相对地址,这种方式需要一个重定位寄存器。特点:可将程序分配到不连续的存储区,运行前装入部分代码既可,运行期间,按需动态申请分配内存,便于程序段的共享,可以向用户提供一个比主存大得多的地址空间。

    在这里插入图片描述

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-egGe6M25-1586102213143)(3_存储管理.assets/功能3.2.png)]

    3.2 存储管理的功能

    3.2.1 地址转换

    又称重定位,逻辑地址->绝对地址

    存储保护

    3.2.2 主存分配

    分配:进程装入主存时,存储管理软件进行具体的主存分配操作,并设置一个表格记录主存空间的分配情况

    去配:当某个进程撤离或主动归还主存资源时,存储管理软件要收回它所占用的全部或者部分存储空间,调整主存分配表信息

    3.2.3 主存共享

    多个进程共享主存储器资源:多道程序设计技术使若干个程序同时进入主存储器,各自占用一定数量的存储空间,共同使用一个主存储器
    多个进程共享主存储器的某些区域:若干个协作进程共同的主存程序块或者主存数据块

    3.2.4 存储扩充

    存储扩充:把磁盘作为主存扩充,只把部分进程或进程的部分内容装入内存 1.对换技术:把部分不运行的进程调出 2.虚拟技术:只调入进程的部分内容

    3.3 虚存

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VWLjOfdO-1586102213145)(3_存储管理.assets/虚存3.3.png)]


    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pAqenJYT-1586102213149)(3_存储管理.assets/硬件支持3.4.png)]

    3.4 存储管理的硬件支撑

    3.4.1 存储器的组织层次

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YPnJmOEO-1586102213149)(存储管理.assets/image-20200402132123976.png)]

    3.4.2 存储管理涉及的存储对象

    3.4.3 cache及其组织

    Cache是介于CPU和主存储器间的高速小容量存储器,由静态存储芯片SRAM组成。

    CPU往往需要重复读取同样的数据块,Cache的引入与缓存容量的增大,可以大幅提升CPU内部读取数据的命中率,从而提高系统性能

    3.4.4 地址转换/储存保护的硬件支撑

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V0eRPNGs-1586102213150)(存储管理.assets/image-20200402162930573.png)]

    比较操作即存储保护

    虚存存储器的硬件支撑

    3.5 单连续分区存储管理

    每个进程占用一个物理上完全连续的存储空间

    3.5.1 单用户连续分区存储管理

    适用于单用户单任务操作系统

    实现:主存通过栅栏寄存器分两个区域:用户区和系统区,硬件用它在执行时进行存储保护

    一般采用静态重定位进行地址转换

    硬件实现代价低

    3.5.2 固定分区方式的地址转换

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ORwh8qcq-1586167946674)(3_存储管理.assets/固定分区方式的地址转换.png)]

    3.6 可变分区存储管理

    3.6.1 理想

    按进程的内存需求来动态划分分区

    主存分配表

    3.6.2 内存的分配与去配

    3.6.2.1 首次适应法

    在空闲分区表的第一个目录查起,最先满足的空闲区分配给作业。空闲分区要按地址由低到高排序,优先使用地址部分,在低址造成许多空闲区,高址保留大的空闲区。每次收回一个分区必须搜索未分配区表确定它的位置且要移动表格中的登记

    优点:减少查找时间

    3.6.2.2 最佳适应法

    找出满足作业要求且大小最小的空闲区,使碎片尽量小。

    3.6.2.3 最坏适应法

    挑选最大空闲分区,算法要求按从大到小形成一个空闲分区链

    3.6.2.4 循环首次适应法

    与首次适应法不同的使,每次从上次找到空闲开始查找。使得空闲区分布均匀

    3.6.3 可变分区的地址转换/存储保护

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qqsnDa5u-1586167946676)(3_存储管理.assets/硬件实现机制与动态重定位.png)]

    3.6.4 分区移动技术

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nmuoaJDX-1586167946678)(存储管理.assets/image-20200402175622618.png)]


    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j0EmqQBb-1586167946679)(3_存储管理.assets/页式存储管理3.7.png)]

    3.7 页式存储管理

    3.7.1 页式存储管理的基本思想

    将主存划分为多个大小相等的页架,类似书的页

    程序的逻辑地址分为

    不同的页放在不同的页架,不需要连续

    页表维系进程的主存(逻辑和物理)完整性

    3.7.2 页式存储管理的地址转换思路

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-duUSDZ4U-1586167946680)(3_存储管理.assets/页式存储管理的地址转换思路.png)]

    页式存储管理的空间分配

    页式存储管理的页共享

    多个进程共享程序和数据

    数据共享:不同进程可以使用不同页号共享数据页

    程序共享:使用相同页号是做不到的。

    3.8 页式存储管理的地址转换

    3.8.1 进程表

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dIqq1CQk-1586167946683)(存储管理.assets/image-20200403122431492.png)]

    3.8.2 多道程序环境下的地址转换

    Mooc

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bs3APQx0-1586167946684)(存储管理.assets/image-20200403124745151.png)]

    3.9 页式虚拟存储管理-主流

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s6WZf9jf-1586167946685)(3_存储管理.assets/页式虚拟存储管理3.9.png)]

    3.9.1 页式虚拟存储管理的基本思想

    进程全部页面装入虚拟存储器,执行时先把部分页面装入实际内存,然后根据执行行为,动态调入不在主存的页,同时进行必要的页面调出。

    请求页式存储管理:第一次只把进程第一页信息装入主存

    3.9.2 地址转换和缺页中断

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UqMNXOzW-1586167946686)(存储管理.assets/image-20200403134535613.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-unOSj5PH-1586167946687)(存储管理.assets/image-20200403135516931.png)]

    3.10 页面调度

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QnaQnoib-1586167946690)(3_存储管理.assets/调度算法3.10.png)]

    3.10.1 概念

    主存满又需装入新页时,页式虚存管理器按照一定算法把已在主存的页调出

    页面调度:选择淘汰页的工作

    页面调度算法:选择淘汰页的算法

    设计不当,会出现刚被淘汰立刻又被调入,称为抖动和颠簸

    3.10.2 缺页中断率

    假定进程P共n页,系统分配页架数m个
    P运行中成功访问次数为S,不成功访问次数为F,总访问次数:A=S+F
    缺页中断率定义为:f=F/A
    缺页中断率是衡量存储管理性能和用户编程水平的重要依据,与n、m有关。

    3.10.3 页面调度算法

    OPT:最佳算法,只可模拟不可实现

    LRU:最近最少用

    LFU:最不常用

    3.10.4 模拟实现

    LRU算法的模拟实现

    每页建一个引用标志,供硬件使用
    设置一个时间间隔中断中断时页引用标志置0
    地址转换时,页引用标志置1
    淘汰页面时,从页引用标志为0的页中间随机选择
    时间间隔多长是个难点

    LFU

    基于时间间隔中断,并给每一页设置一个计数器
    时间间隔中断发生后,所有计数器清0
    每访问页1次就给计数器加1
    选择计数值最小的页面淘汰

    CLOCK

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UZbRhccw-1586167946692)(存储管理.assets/CLOCK.png)]

    3.11 反置页表

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NkUhXtbd-1586167946693)(3_存储管理.assets/反置页表IPT3.11.png)]

    MMU:内存管理单元

    3.11.1 反置页表的基本设计思想

    内存中的每个页架建立一个页表按照块号排序

    表项包含:正在访问该页框的进程标识、页号及特征位,和哈希链指针等

    用来完成内存页架到访问进程页号的对应,即物理地址到逻辑地址的转换。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7YRMOS79-1586167946693)(存储管理.assets/image-20200403183709071.png)]

    页号:虚拟地址号

    进程标识符:使用该页的进程号

    MMU通过哈希表把进程标识和虚页号转 换成一个哈希值,指向IPT的一个表目
    MMU遍历哈希链找到所需进程的虚页号, 该项的索引就是页架号,通过拼接位移便 可生成物理地址
    若遍历整个反置页表中未能找到匹配页表 项,说明该页不在内存,产生缺页中断, 请求操作系统调入


    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nE9CiqBN-1586167946696)(3_存储管理.assets/段式存储管理3.12.png)]

    3.12 段式存储管理

    3.12.1 段式程序设计

    每个程序可由若干段组成,每一段都可以从“0” 开始编址,段内的地址是连续的。程序空间是二维的

    分段存储器的逻辑地址由两部分组成 段号+单元号 [用户可控的]

    3.12.2 段式存储管理的基本思想

    3.12.3 段表

    存储管理需要增加设置一个段表,每个段占用一个段表项,包括:段始址、段 限长,以及存储保护、可移动、可扩充等标志位

    3.12.4 地址转换流程

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WDTiB6i0-1586167946697)(存储管理.assets/image-20200403191225353.png)]

    3.13 段式虚拟存储管理

    3.13.1 基本思想

    把进程的所有分段都存放在辅存中,进程运行时先把当前需要的一段或几段装 入主存,在执行过程中访问到不在主存的段时再把它们动态装入

    3.13.2 段表扩充

    3.13.3 地址转换

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-glEULqjv-1586167946698)(存储管理.assets/image-20200403195441820.png)]

    3.14 段页式存储管理

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zyub0ez0-1586167946699)(3_存储管理.assets/段页式存储管理3.14.png)]

    3.14.1基本思想

    3.14.2 段表与页表

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u3CfvuYR-1586167946700)(存储管理.assets/image-20200403200340144.png)]

    3.14.3 地址转换

    在这里插入图片描述

    3.14.4 段页式虚存管理的地址转换

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1pnPTOSJ-1586167946703)(存储管理.assets/image-20200403201023149.png)]

    展开全文
  • 操作系统储存管理功能

    千次阅读 2019-05-12 11:32:59
    Windows虚拟内存 Windows虚拟地址空间分配 在32位的机器上,地址空间从0x00000000~ 0xFFFFFFFF,总大小为4GB。...功能 0x00000000 ~ 0x0000FFFF 这段内存为空指针区,不可以同时访问 0x00010000 ~...

    操作系统的存储管理功能分为四个部分

    • 地址映射
    • 虚拟储存
    • 内存分配
    • 储存保护

    一:地址映射

    1. 固定地址映射

    在编程或编译确定逻辑地址和物理地址的映射关系
    特点:程序加载时必须放在指定的内存区域
    容易产生地址冲突,运行失败

    2. 静态地址映射

    程序装入时由操作系统完成逻辑地址到物理地址的映射
    MA = VA + BA
    特点:程序运行之前确定映射关系,装入后不能移动,占用连续的内存空间

    3. 动态地址映射

    在程序执行过程中把逻辑地址转换为物理地址
    MA = VA + BA
    特点:程序占用的内存空间可动态变化,不要求连续的内存空间,便于多个进程共享代码,缺点是硬件支持(MMU),软件复杂

    二:虚拟存储

    借助辅存在逻辑上扩充内存,解决内存不足的问题
    过程:

    • 迁入:将要运行的部分装入内存
    • 迁出:把不运行的部分暂时放在辅存
      前提
      短时间内进程不运行的部分往往占大部分

    程序局部性原理
    时间局部性
    空间局部性

    实现虚拟存储的前提:
    足够的辅存
    适当容量的内存
    地址变换机构

    三:内存分配

    为程序分配足够的内存空间

    Windows虚拟地址空间分配

    在32位的机器上,地址空间从0x00000000~ 0xFFFFFFFF,总大小为4GB。一般而言,低地址空间,从0x00000000~ 0x7FFFFFFF使用户空间,高地址空间被分配给系统。

    总体:

    虚拟内存范围 功能
    0x00000000 ~ 0x0000FFFF 这段内存为空指针区,不可以同时访问
    0x00010000 ~ 0x7FFEFFFF 这段供进程使用,包括所有的数据,静态或动态加载的exe和dll模块,以及内存映射文件
    0x7FFF0000 ~ 0x7FFFFFFF 此64KB是禁止访问的,因为它挨着内核区域,防止内核区域被覆盖,以破坏内核的正确性和完整性,试图改写此区域,会产生异常,以阻拦进一步改写内存区域
    0x80000000 ~ 0xFFFFFFFFF 内核区域,用于线程调度,内存管理,文件系统支持,网络支持和所有设备驱动的代码全部在次分区加载,驻留在这个分区中的一切均可被所有进程共享

    用户低2GB空间分配:

    虚拟内存地址范围 功能
    0x0 ~ 0xFFFF 拒绝访问区域,用于帮助程序员避免引用错误的指针
    0x00010000 ~ 0x7FFEFFFF 专用进程地址空间
    0x7EFDE000 ~ 0x7EFDEFFF 用于第一个线程的线程环境块(TEB),系统会在这一页的前面创建附加的TEB(从0x7FFDD000开始向上)
    0x7FFDF000 ~ 0x7FFDFFFF 进程环境块(PEB)
    0x7FFE0000 ~ 0x7FFE0FFF 共享的用户数据页,这个只读方式的页面被映射到系统空间中包含系统时间,时钟计数和版本号信息的一个页面,这个页面的存在使数据在用户态下可以直接读取而不必请求核心态的转换
    0x7FFE1000 ~ 0x7FFEFFFF 拒绝访问区域
    0x7FFF0000 ~ 0x7FFFFFFF 拒绝访问区域,用于防止线程跨越用户/系统空间边界传送缓存区,在变量MmUserProbeAddress中包含此页的起始地址

    核心高2GB空间分配:

    虚拟内存地址范围 功能
    0x80000000 ~ 0xc0000000 内核执行体,HAL和硬件驱动程序
    0xc0000000 ~ 0xc0800000 进程页和超空间
    0xc0800000 ~ 0xFFBE000 系统高速缓存,分页缓冲池,非分页缓冲池
    0xFFBE000 ~ 0xFFC0000 崩溃储存驱动程序区域
    0xFFC0000 ~ 0xFFFFFFF 留给HAL使用

    内存管理

    每个进程都拥有自己的4G(32位机)虚拟内存地址,各个进程之间是相互独立的,每个进程的数据可由其中线程共享。虚拟内存地址本身不对应任何物理地址,直接引用会引发错误,虚拟内存地址必须映射物理地址后才能储存数据。内存分配其实指的是虚拟内存地址映射物理内存,内存回收就是指解除映射关系。

    四:储存保护

    保证在内存中的多道程序只能在给定的储存区域内活动并互不干扰

    1. 防止访问越界
    2. 防止访问越权

    方法:界址寄存器
    在CPU中设置一对下限寄存器和上限寄存器存放程序在内存中的下限地址和上限地址
    程序访问内存时硬件自动将目的地址与下限寄存器和上限寄存器中存放的地址界限进行比较,判断是否越界

    关于计算机硬件存储系统详细见计算机存储系统

    展开全文
  • 存储系统有什么好处,云储存主要用途有哪些?本文详细介绍云存储系统功能优势,及对企业管理的解决方案。
  • 存储管理

    2018-11-28 19:40:46
    存储管理方案的主要目的是解决多个用户使用主存的问题,其存储管理方案主要包括分区存储管理、分页存储管理、分段存储管理、段页式存储管理以及虚拟存储管理。 分区存储 分区存储管理又有三种不同的方式:静态...
  • 存储管理方案

    2019-01-23 16:43:19
    存储管理方案的主要目的是解决多个用户使用主存的问题,其存储管理方案主要包括分区存储管理、分页存储管理、分段存储管理、段页式存储管理以及虚拟存储管理。 分区存储 可变分区 可变分区方式是按作业的大小来...
  • 页式存储管理 ** 一、页式存储管理的基本原理 【页式存储管理的基本原理】 分页存储器将主存划分成多个大小相同的页架 受页架尺寸限制,程序的逻辑地址也自然分页 不同的页可以放在不同页架中,不需要连续 页表用于...
  • C语言模拟实现虚拟存储管理(请求分页存储管理

    千次阅读 多人点赞 2020-06-25 23:19:08
    存储管理主要功能之一是合理的分配空间。请求分页存储管理是一种常用的虚拟存储管理技术。本实验的目的是:通过编程模拟实现请求分页存储管理中硬件地址转换过程、缺页中断处理过程,以及先进先出页面置换算法,...
  • (1)页式存储管理 1)基本原理。将程序的逻辑地址空间划分为固定大小的页(page),而物理内存划分为同样大小的页框(pageframe)。程序加载时,可将任意一页放人内存中任意一个页框,这些页框不必连续,从而实现了离散...
  • 存储管理一....段页式存储管理2.1 页式存储管理2.2 段式存储管理2.3 页/段式存储管理同异2.4 段页式存储管理 第一节是从物理内存的角度来说;第二节是从进程角度理解进程的存储空间管理。 一.内存分配与回...
  • 连续存储管理

    千次阅读 2018-06-23 13:54:54
    连续存储管理⎧⎩⎨单一连续存储管理固定分区存储管理可变分区存储管理连续存储管理{单一连续存储管理固定分区存储管理可变分区存储管理连续存储管理 \begin {cases} 单一连续存储管理\\ 固定分区存储管理\\ 可变...
  • 存储管理技术

    千次阅读 多人点赞 2017-07-02 22:09:15
    虚拟存储管理技术:现代操作系统大都支持虚拟存储功能,允许进程装入部分程序即可开始执行,其余部分保留在外存。当执行所需要的部分不在内存时,中断进程执行,使之阻塞等待,直到相应部分装入内存,进程进入就绪...
  • 操作系统 存储管理实验报告

    千次阅读 多人点赞 2020-06-19 10:05:40
    存储管理主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。 本实验的目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。 二...
  • 数据库管理系统是对数据进行管理的大型系统软件,它是数据库系统的核心组成部分,用户在数据库系统中的一切操作,包括数据定义、查洵、更新...DBMS的主要功能 数据定义功能 DBMS提供数据定义语言(Data Define L...
  • 数据库定义功能 数据组织、存储管理 数据操纵功能 数据库的事物管理和运行管理 数据库的建立和维护功能
  • ODBC数据源管理器的主要功能

    千次阅读 2019-05-09 18:19:23
    ODBC数据源管理器的主要功能 1、用户DSN:ODBC用户数据源存储了如何与指定数据提供者连接的信息。用户数据源只对当前的用户可见,而且只能应用在本机上。 2、系统DSN:ODBC系统数据源存储了如何与指定数据提供者...
  • 操作系统之存储管理

    千人学习 2018-05-24 09:23:03
    “取指令,执行指令”,这是冯诺依曼式计算机的基本原则,进程... 本课程首先介绍存储管理的研究对象和目的,明确存储管理的基本功能和相关的基本概念;然后从实存和虚存两个角度,分别介绍常用的几种存储管理方案。
  • 分页存储存储管理方式详解

    千次阅读 多人点赞 2020-04-22 21:38:18
    分页存储存储管理方式详解离散分配方式分页储存管理方式页面与页表页面物理块逻辑地址结构页表快表(TLB,Translation Look aside Buffer)一级页表的缺陷两级多级页表反置页表反置页表的提出基于反置页表的地址转换...
  • Windows存储管理

    千次阅读 2018-10-18 09:50:20
    1.Windows存储管理之磁盘类型简介   各种操作系统连接到存储系统之后,并且操作系统识别物理磁盘之后,需要对磁盘进行进一步配置。如果用户连接存储是的Windows Server,存储管理员势必需要了解Windows中的磁盘...
  • 存储管理方式

    2014-04-03 17:41:07
     若离散分配的基本单位是页,则成为分页存储管理方式 若离散分配的基本单位是段,则成为分段存储管理方式 页表的作用是实现从页号到物理块号的地址映射。它是承接地址变换任务的 页表的功能可以由一组专门的...
  • 段式存储管理、段页式存储管理

    千次阅读 多人点赞 2018-06-24 10:33:36
    分页与分段的区别 1.页是信息的物理单位,是系统管理的需要而不是用户的需要;而段是信息的逻辑单位,分段是为了更好地满足用户的需要 2.页的大小固定且由系统决定,一个...段式存储管理 段:用户编制的程序可以...
  • eHR人力资源系统主要功能有,eHR管理系统品牌排名 eHR人事管理系统主要功能是什么?在电脑和企业信息化还没有普及的时候,公司都还是纸质文档的年代,一切的存档,工作都是手动存储,如果想要查找一些文档信息不仅...
  • 存储层: 存储管理模块需要把数据存储到硬盘或者内存黄总,必要时还需要复制到远端,这些操作由存储层来实现和提供相应的接口从功能上看存储管理模块又分为俩个主要部分:RDD缓存:整个存储管理模块主要的工作是RDD...
  • 分页存储管理

    万次阅读 2018-05-19 16:58:06
    所以产生了离散的分配方式,根据离散时分配地址空间的基本单位不同,可分为三种,这里我们只讲解分页存储管理。 1. 页面和物理块 (1)页面。分页存储管理将进程的逻辑地址空间分成若干个页,并为各页加以编号,...
  • 具体要求:模拟分页存储管理主要功能包括:主存的分配和回收,地址交换。 输入:1.输入进城名称及使用的内存大小 2.结束某个指定的进程 3.逻辑地址 输出:显示内存使用状况,每个进程占据的内存(页表),物理...
  • 分页存储管理方式

    千次阅读 2018-12-05 18:28:54
    存储管理的离散分配方式 基本分页存储管理 基本分段存储管理 段页式存储管理 二.基本分页存储管理 离散分配内存: 作业规定大小划分成小份;内存也按同样大小划分成小份 作业的任一小份可分散放入内存任意未...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,307,305
精华内容 522,922
关键字:

存储管理的主要功能是