系统架构设计师教程知识点精讲之存储管理

系统架构设计师 责任编辑:长颈鹿 2016-07-15

添加老师微信

备考咨询

加我微信

摘要:系统架构设计师考试属于软考中的一项高级资格考试,考试分综合知识、案例分析和论文3个科目。系统架构设计师考试作为一项高级资格考试,有一定的考试难度,那么该如何备考才能顺利通过考试呢?面对系统架构设计师教程无从下手的同学,希赛软考学院为您准备了教程知识点精讲,希望助您备考一臂之力。

    >>>>点击进入了解系统架构设计师网络课堂 

>>>>点击进入了解系统架构设计师培训视频

    >>>>点击进入了解系统架构设计师在线辅导

    系统架构设计师考试属于软考中的一项高级资格考试,考试分综合知识、案例分析和论文3个科目。系统架构设计师考试作为一项高级资格考试,有一定的考试难度,那么该如何备考才能顺利通过考试呢?面对系统架构设计师教程无从下手的同学,希赛软考网为您准备了教程知识点精讲,希望助您备考一臂之力。

      存储管理

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

      存储器由内存和外存组成。内存是由系统实际提供的存储单元(常指字节)组成的一个连续地址空间,处理器可直接存取。外存(辅存)是指软盘、硬盘、光盘和磁带等一些外部存储部件,常用来存放暂不执行的程序和数据。处理器不能直接访问外存,需通过启动I/O(Input/Output,输入/输出)设备才能进行内存、外存交换,其访问速度慢,但价格便宜,常用做内存的后援设备。

      内存大小由系统硬件决定,存储容量受到实际存储单元的限制。虚拟存储器(简称虚存)不考虑实际内存的大小和数据存取的实际地址,只考虑相互有关的数据之间的相对位置,其容量由计算机地址的位数决定。

      系统中内存的使用一般分成两部分,一部分为系统空间,存放操作系统本身及相关的系统程序;另一部分为用户空间,存放用户的程序和数据。

      存储管理主要是指对内存储器的管理,负责对内存的分配和回收、内存的保护和内存的扩充。存储管理的目的是尽量提高内存的使用效率。

      1.地址重定位

      在存储管理中,有一个地址重定位的问题。一般来说,用户的目标程序地址是相对地址,指令中的地址是相对首地址而定的,在程序执行之前首地址通常设为零。这个相对地址称为逻辑地址,它不是内存中的物理地址。物理地址是内存中各存储单元的编号,是存储单元的真实地址,可以寻址并且实际存在。为了保证程序指令执行时能够正确地访问到预定的单元,需要将逻辑地址通过一种地址转换机制变换成物理地址,这一过程就称为"地址重定位",也称为地址映射或地址映像。

      重定位方法有两种:静态重定位和动态重定位。

      静态重定位的地址转换是在程序运行之前完成的,一般由连接装入程序在程序装入主存的过程中实现逻辑地址到物理地址的转换。程序被装入主存后,不能再在主存中移动,因而采用这种重定位方式,不能实现虚拟存储器。

      动态重定位是在程序装入主存后,在指令执行阶段完成对该指令中的逻辑地址到物理地址的转换。它的实现由硬件地址变换机构完成,因此系统对硬件要求的支持多,但装入主存中的程序可以根据系统当前的需求在主存中上、下移动或在内、外存中调进、调出,是实现虚拟存储器必须采用的一种重定位方法。目前的计算机系统大部分采用这种重定位方式。

      2.存储管理的功能

      在多道程序系统中,多个程序同时驻留内存。那么,该如何有效地利用内存,如何让需要较大运行空间的作业运行,如何保护与共享内存呢?为了提高存储资源的利用率,存储管理应具有以下功能:

      (1)分配与回收。内存分配方法有两种:静态分配和动态分配。静态分配是指在目标模块装入内存时即取得所需空间,直至完成不再变动:动态分配则允许进程在运行过程中动态申请内存空间。采用动态分配方法的系统中,常配合使用合并自由区的方法,使一个连续的空区尽可能大。

      (2)存储扩充。提供虚拟存储器,使计算机系统似乎有一个比实际内存储器容量大的内存空间。需考虑放置策略、调入策略和淘汰策略。

      (3)共享与保护。共享指共享系统在内存中的程序和数据。由于多道程序共享内存,每个程序都应有它单独的内存区域,各自运行,互不干扰。

      3.单一连续区管理

      在单道程序系统中,内存区域的用户空间全部为一个作业或进程占用。单一连续分配方法主要用于早期单道批处理系统及20世纪80年代的个人计算机系统。单一连续分配方法主要采用静态分配方法。为降低成本和减小复杂度,常不对内存进行保护,因而会引起冲突,使系统瘫痪。

      4.分区存储管理

      分区存储管理包括固定分区和可变分区。其基本思想是把内存划分成若干个连续区域,每个分区装入一个作业运行。要求作业一次性装入内存,且分区内部地址必须连续。

      (1)固定分区管理。固定分区分配方法是把内存空间固定地划分为若干个大小不等的区域,划分的原则由系统决定。系统使用分区表描述分区情况,如图1-6所示。分区一旦划分结束,在整个执行过程中每个分区的长度和内存的总分区个数保持不变。

     

1.png

      (2)可变分区管理。可变分区分配方法是把内存空间按用户要求动态地划分成若干个分区,如图1-7所示。这样就解决了固定分区分配方法中的小作业占据大分区后产生碎片的浪费问题。可变分区分配方法初始时只有一个分区,随后,分配程序将这个分区依次分给作业或进程。

2.png

      希赛网希赛网提示:每种存储组织方案都包含一定程度的浪费。在可变分区分配系统中,内存中的作业在开始装入和归还自由区之前,内存浪费并不明显,但这些自由区可以被其他作业使用。随着进程的执行,剩余的自由区域会变得更小。因此在可变分区分配系统中,也存在着存储器浪费。

      在可变分区分配系统中,当一个作业完成时,能够检测到被释放的存储区是否与其他自由存储区域(自由区)相邻接。如果与其他自由存储区邻接,可以在自由存储区表记录上新增加一个自由区,或新的自由区与相邻接的现存自由区合并的单一自由区。

      合并相邻接的自由区以形成单个更大的自由区叫做合并。用合并自由区的方法,重新获得最大可能连续的存储块。即使合并了自由区,仍会发现分布在主存各处的破碎的自由区在主存中占据了相当数量的空间。有时,虽然自由区的总和大于新作业所要的存储区,而此时却没有单个的自由区足够装下这个作业。

      存储拼接技术也称碎片收集,包括移动存储器的所有被占用区域到主存的某一端。这样留下单独的大的存储自由区,来代替在可变分区多道程序设计中常见的许多小自由区。

      当所有可利用的自由存储区连续时,一个正等待着的作业能够调入运行,因为它的存储需求能被拼接形成的单个自由区所满足。

      存储分配算法用来决定输入的程序和数据应该放到主存中的什么地方。常使用的3种算法是:

      (1)最佳适应算法。选择最小的足够装入的可利用自由区。对许多人来说,最佳适应看起来是最直观且吸引人的算法。

      (2)首次适应算法。从主存低地址开始选择第一个足够装入的可利用的自由区。首次适应也具有直观吸引力,此算法可以快速做出分配决定。

      (3)最差适应算法。最差适应说的是,把一个程序放入主存中最大的自由区。这种方法吸引人的原因很简单,在大自由区中放入程序后,剩下的自由区经常也很大,于是也能装下一个较大的新程序。

      上述3种方法都把用户作业完全地连续存放在一个存储区域中。为了能在较小的内存空间中运行较大的作业,常采用内存交换技术。所谓内存交换技术,是指将作业不需要或暂时不需要的部分移到辅存,让出内存空间以调入需要的部分,交换到辅存的部分也可以再次被调入。实际上这是用辅存作缓冲,让用户程序在较小的存储空间中,通过不断地换出作业而运行较大的作业。

      5.页式存储管理

      在可变分区分配方案中,内存中放置的程序常采用首次适应、最佳适应、最差适应算法实现,但运行的程序需存放在一个连续的分区中。

      分页的基本思想是把程序的逻辑空间和内存的物理空间按照同样的大小划分成若干页面,以页面为单位进行分配。在页式存储管理中,系统中虚地址是一个有序对(页号,位移)。系统为每一个进程建立一个页表,其内容包括进程的逻辑页号与物理页号的对应关系、状态等。

      页式系统的动态地址转换是这样进行的:当进程运行时,其页表的首地址已在系统的动态地址转换机构中的基本地址寄存器中。执行的指令访问虚存地址(p,d)时,首先根据页号p查页表,由状态可知,这个页是否已经调入内存。若已调入内存,则得到该页的内存位置p',然后,与页内相对位移d组合,得到物理地址r.如果该页尚未调入内存,则产生缺页中断,以装入所需的页。如图1-8所示。

3.png

      页式虚拟存储管理是在页式存储管理的基础上实现虚拟存储器的。首先把作业信息作为副本存放在磁盘上,作业执行时,把作业信息的部分页面装入内存储器,作业执行时若所访问的页面已在内存中,则按页式存储管理方式进行地址转换,得到欲访问的内存绝对地址,若欲访问的页面不在内存中,则产生一个"缺页中断",由操作系统把当前所需的页面装入内存储器中。

      为此,在装入作业时,就应在该作业的页表中指出哪些页已在内存储器中,哪些页还没有装入内存。可用一个标志位指示对应页是否在内存储器,可假设标志位为1表示该页在内存,而标志位为0表示该页尚未装入内存。为了能方便地从磁盘上找到作业信息的副本,故在页表中还可指出每一页副本在磁盘上的位置。

      当要装入一个当前需要的页面时,如果内存储器中无空闲块,则可选择一个已在内存储器中的页面,把它暂时调出内存。若在执行中该页面被修改过,则把该页信息重新写回到磁盘上,否则不必重新写回磁盘。当一页被暂时调出内存后,让出的内存空间用来存放当前需要使用的页面。以后再要使用被调出的页面时,可用同样的方法调出另一个页面而将其再装入内存。页面被调出或装入之后都要对页表中的相应表目做修改。

      当内存中无空闲块时,为了装入一个页面而必须按某种算法从已在内存的页中选择一页,将它暂时调出内存,让出内存空间来存放所需装入的页面,这个工作称为"页面调度".如何选择调出的页面是很重要的,如果采用了一个不合适的算法,就会出现这样的现象,刚被调出的页面又立即要用,因而又要把它装入,而装入不久又被选中调出,调出不久又被装入,如此反复,使调度非常频繁。这种现象称为"抖动".一个好的调度算法应减少和避免抖动现象。常用的页面调度算法有:

      (1)最优(OPT)算法。选择不再使用或最远的将来才被使用的页,这是理想的算法,但是难以实现,常用于淘汰算法的比较。

      (2)随机(RAND)算法。随机地选择被淘汰的页,开销小,但是可能选中立即就要访问的页。

      (3)先进先出算法。选择在内存驻留时间最长的页,似乎合理,但可能淘汰掉频繁使用的页。另外,使用FIFO算法时,在未给予进程分配足够的页面数时,有时会出现给予进程的页面数增多,缺页次数反而增加的异常现象。FIFO算法简单,易实现。可以把装入内存储器的那些页的页号按进入的先后次序排成队列,每次总是调出队首的页,当装入一个新页后,把新页的页号排到队尾。

      (4)最近最少使用(Least Recently Used,LRU)算法。选择离当前时间最近的一段时间内使用得最少的页。这个算法的主要出发点是,如果某个页被访问了,则它可能马上就要被访问;反之,如果某个页长时间未被访问,则它在最近一段时间也不会被访问。

      6.段式存储管理

      段式存储管理与页式存储管理相似。分段的基本思想是把用户作业按逻辑意义上有完整意义的段来划分,以段为单位作为内、外存交换的空间尺度。

      一个作业是由若干个具有逻辑意义的段(如主程序、子程序、数据段等)组成。分段系统中,容许程序(作业)占据内存中许多分离的分区。每个分区存储一个程序分段。这样,每个作业需要几对界限地址寄存器,判定访问地址是否越界也困难了。在分段存储系统中常常利用存储保护键实现存储保护。分段系统中虚地址是一个有序对(段号,位移)。系统为每个作业建立一个段表,其内容包括段号、段长、内存起始地址和状态等。状态指出这个段是否已调入内存,即内存起始地址指出这个段,状态指出这个段的访问权限。

      分段系统的动态地址转换是这样进行的:进程执行时,其段表的首地址已在基本地址寄存器中,执行的指令访问虚存(s,d)(取指令或取操作数)时,首先根据段号s查段表,若段已经调入内存,则得到该段的内存起始地址,然后与段内相对地址(段内偏移量d)相加,得到实地址。如果该段尚未调入内存,则产生缺段中断,以装入所需要的段。段式存储与页式存储的地址转换方式类似,参看图1-8.

      段式虚似存储管理仍然以段式存储管理为基础,为用户提供比内存实际容量大的虚拟空间。段式虚拟存储管理把作业中的各个分段信息都保留在磁盘上,当作业可以投入执行时,做如下操作:

      (1)首先把当前需要的一段或几段装入内存。

      (2)作业执行时,如果要访问的段已经在内存,则按照"段式存储管理"中的方式进行地址转换;如果要访问的段不在内存中,则产生一个"缺段中断",由操作系统把当前需用的段装入内存。

      因此,在段表中应增设段是否在内存的标志以及各段在磁盘上的位置,已在内存中的段仍要指出该段在内存中的起始地址和占用内存区长度。

      作业执行要访问的段时,由硬件的地址转换机构查段表,若该段在内存中,则立即把逻辑地址转换成绝对地址。若该段不在内存中,则形成"缺段中断",由操作系统处理这个中断。

      处理的办法是,查内存分配表,找出一个足够大的连续区以容纳该分段,如果找不到足够大的连续区则检查空闲区的总和,若空闲区总和能满足该段要求,那么进行适当移动将分散的空闲区集中:若空闲区总和不能满足该段要求,可把内存中的一段或几段调出,然后把当前要访问的段装入内存中。段被移动、调出和装入后都要对段表中的相应表目做修改。新的段被装入后应让作业重新执行被中断的指令,这时就能找到要访问的段,可以继续执行下去。

      7.段页式存储管理

      段页式管理是段式和页式两种管理方法结合的产物,综合了段式组织与页式组织的特点,根据程序模块分段,段内再分页,内存被分划成定长的页。段页式系统中虚地址形式是(段号、页号、位移),如图1-9所示。系统为每个进程建立一个段表,为每个段建立一个页表。段页式管理采用段式分配、页式使用的方法,便于动态连接和存储的动态分配。这种存储管理能提高内存空间的利用率。

4.png

      段式虚拟管理还是以段为单位分配内存空间,整段的调出、装入,有时还要移动,这些都增加了系统的开销。如果按段页式存储管理的方式,把每一段再分成若干页面,那么,每一段不必占用连续的存储空间,甚至,当内存块不够时,可只将一段中的部分页面装入内存,这种管理方式称为"段页式虚拟存储管理".

      段页式虚拟存储管理为每一个装入内存的作业建立一张段表,还要为每一段建立页表。段表中指出该段的页表存放位置及长度,页表中应指出该段的各页在磁盘上的位置以及页是否在内存,若在内存则填上占用的内存块号。作业执行时按段号查段表,找到相应的页表再根据页号查页表,由标志位判定该页是否已在内存,若是,则进行地址转换;否则进行页面调度。地址转换过程如图1-10所示。

5.png

      段页式虚拟存储管理结合了段式和页式的优点,但增加了设置表格(段表、页表)和查表等开销,段页式虚拟存储器一般只在大型计算机系统中使用。

      8.存储保护

      存储保护的基本思想是规定各道程序只能访问属于它的区域,以及存取公共区域中的信息,当然,对公共区域的访问是有限制的。

      存储保护通常是由计算机软件和硬件的相互配合来实现的。存储保护包括两方面的内容,分别是上下界保护和控制权保护。

      (1)上下界保护。上下界保护通常由硬件提供保护机制,软件配合实现。当要访问内存某一单元时,硬件首先进行访址合法性检查,检查经过重定位后的内存地址是否在上下界寄存器所规定的范围之内。若在规定的范围之内,则允许访问,否则产生中断。

      在分页和分段环境下,利用给出作业的最大页号(页表长度)和段号(段表长度)来实现。程序运行时,页表长度或段表长度被放入页表或段表地址寄存器的左边部分,当中央处理器访问某虚拟地址时,硬件自动把页号(段号)与页表(段表)长度进行比较;在分段环境下还要将段内地址与段表中的段长度进行比较,如果合法,才进行地址转换,否则产生越界中断信号。

      (2)控制权保护。控制权保护是对授权可使用的信息可读可写权限进行控制。常用的存取控制包括读、写、执行和增加(只允许添加不允许修正)4类。各类用户的访问权限是这4类存取控制类型的组合。此外,对共享段的访问还要注意读和写操作之间的互斥。


       返回总目录:系统架构设计师教程知识点精讲之操作系统汇总


    希赛软考网,拥有十四年软考培训经验,希赛网一直坚持自主研发,将丰富的软考培训经验有效融入教程研发过程,自成体系的软考在线题库软考历年真题)、软考培训教材软考视频教程,多样的培训方式包括在线辅导面授、和,使考生的学习更具系统性,辅导更具针对性。采用全程督学机制,,软考平均通过率在全国。

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

软考备考资料免费领取

去领取