您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 操作系统第5章__2016分析
1计算机操作系统25.1概述5.2地址重定位5.3分区存储管理5.4页式存储管理5.5段式与段页式存储管理5.6内存扩充技术5.7虚拟存储管理35.1.1存储层次结构对于通用计算机,其存储设备通常分为三级:最高层为CPU寄存器,中间为主存,最底层是辅存。在较高档的计算机中,还可以根据存储层次的具体功能细分为寄存器、高速缓冲存储器、内存、磁盘缓存、外存、可移动磁盘介质等6层。(P94图5.1)在存储层次中,越往上层其对应的存储介质访问速度越快、价格也越高,相对的存储容量则越小。其中,寄存器、高速缓存、内存和磁盘缓存属于OS存储管理的范畴,存储的信息在掉电后丢失;外存磁盘和可移动磁盘介质属于设备管理的范畴,存储的信息可以被长期保存。41.内存内存(主存储器)用于保存进程运行时的程序和数据。其容量大小对于微机系统也可达到数GB,而嵌入式计算机系统一般仅有几十KB~几MB。CPU的控制部件只能从内存中取得指令和数据;数据能够从内存中读取并被装入到寄存器中,或者从寄存器存入到内存。CPU与外围设备交换的信息一般也依托于内存地址空间。由于内存的访问速度远低于CPU执行指令的速度,为缓和这一矛盾,引入了寄存器和高速缓存。52.寄存器寄存器在存储介质中访问速度最快,完全可以与CPU协调工作;但价格昂贵,故容量不可能很大。寄存器主要存放处理机运行时的数据,以加速存储器的访问速度。寄存器的数目,对于当前的微机系统和大中型机,可能有几十个甚至上百个、字长一般是32位或64位;小型的嵌入式计算机中一般仅有几个到十几个寄存器,字长一般为8位。63.高速缓存高速缓存是现代计算机结构中的一个重要部分,其容量大于或远大于寄存器,而比内存小几十个数量级,最高可达数百兆字节,访问速度快于内存。根据程序执行的局部性原理(即:程序在执行时将呈现出局部性规律,在一较短的时间内,程序的执行仅局限于某个部分),将内存中一些经常访问的信息存放在高速缓存中,以此减少访问主存储器的次数,可大幅度提高程序执行速度。当CPU访问一组特定信息时,优先访问高速缓存再访问内存,以避免空等内存读取指令。74.磁盘缓存由于磁盘的I/O速度远低于对内存的访问速度,因此将频繁使用的一部分磁盘数据和信息,暂时存放在磁盘缓存中,可减少访问磁盘的次数。磁盘缓存本身并不是一种实际存在的存储介质,它依托于固定磁盘,提供对内存空间的扩充,即利用内存中的存储空间,来暂存从磁盘中读出(或写入)的信息。内存也可以看做是辅存的高速缓存,因为辅存中的数据必须复制到内存方能使用;反之,数据也必须先存在内存中,才能输出到辅存。85.1.2存储管理的目的和任务计算机技术的发展尤其是多道程序和分时技术的出现,要求OS的存储管理机构必须尽可能方便用户和提高内存的使用效率,使内存在成本、速度和规模之间获得较好的平衡。操作系统必须要能完成:内存分配,地址映射,内存共享与保护,内存扩充。91.内存分配各作业装入内存时,按照规定的方式向OS提出申请,由存储管理子系统借助一张记录了存储空间分配情况的表格完成统一分配;当某作业撤离或归还内存资源时,仍由该子系统收回对应存储空间。分配是否合理将决定内存是否得到充分利用。2.地址映射引入了复杂的多道程序技术之后,程序在内存中的存储位置无法事先预知,用户在其编程时所使用的逻辑地址与实际进入内存后的物理地址难免产生不一致,完成两者的正确转换非常重要。103.内存共享与保护为提高内存利用率,一方面OS应使并发的对象能共同使用内存空间;另一方面,还应该避免多道程序相互干扰,对内存中的数据和程序提供保护。最基本的保护措施,是规定各道程序能访问属于自己的那些存储区,对公共区域的访问则加以限制。4.内存扩充为方便用户、使其编程时不受内存实际容量的限制,应采用虚拟技术为程序的运行提供一个比实际内存更大的逻辑存储空间。115.2.1基本概念一个逻辑地址空间的程序装入到物理地址空间时,由于两个空间不一致,需要进行地址变换,称为地址重定位。地址空间是逻辑地址的集合,存储空间是物理地址的集合。地址空间可通过地址重定位机构转换为存储空间。5.2地址重定位相对地址:装配模块中使用的地址(逻辑地址)•绝对地址:内存空间中分配的地址(物理地址)125.2.1基本概念符号指令数据说明I/O说明相对目标程序绝对目标程序地址空间存储空间汇编/编译链接地址重定位装入名字空间地址重定位有静态与动态两种方式。135.2.2常用重定位技术1.静态重定位静态重定位,是指程序执行之前由操作系统的重定位装入程序一次性地将该程序中的指令地址和数据地址全部转换成物理地址。由于地址转换工作在程序执行前集中完成,所以在程序执行过程中就不需要再进行地址转换工作了。这种定位方式称静态重定位。14Load1,200逻辑地址空间物理地址空间010020030014001500160017003100Load1,20031005.2.2常用重定位技术特点:程序地址在装入内存后不再改变,因此无需硬件支持、易于实现;但不能支持程序在内存中移动,且无法将程序装入不连续的存储区域。15OS用户程序1用户程序3用户程序6用户程序9紧凑前10KB30KB14KB26KBOS用户程序1用户程序3用户程序6用户程序980KB紧凑后165.2.2常用重定位技术2.动态重定位动态地址重定位,是指在程序执行的过程中进行地址重定位,准确地说:是在每次访问内存单元之前,才将要访问的程序地址转换为内存地址。系统设置一个定位寄存器,用于存放程序装入时的物理内存起始地址。由于编译后的目标模块起始地址为0、且其余地址相对其位置不变,所以程序中的每个逻辑地址加上定位寄存器中的内容,就形成其物理地址。175.2.2常用重定位技术特点:地址变换伴随着指令或数据的访问自动进行,从而允许程序在装入后于内存中按需移动,只要保证适时更新定位寄存器中的内容即可。为不同的目标模块分别设置好其定位寄存器,还可以进一步允许它们离散地装入内存。18连续分配:为一个用户程序分配一个连续的内存空间离散分配:将一个用户程序拆分后,分别存入多个相互不邻接的内存空间“连续分配”的主要实现方式有:(1)单一连续分区存储管理(2)固定分区管理(3)可变分区管理5.3分区存储管理195.3.1单一连续分区存储管理这是最简单的一种存储管理方式,但只能用于单用户、单任务的操作系统中。采用这种存储管理方式时,内存被分成两个区域:系统区,仅供OS使用,可以驻留在内存的低地址部分,也可以驻留在高地址部分;而用户区,是除系统区以外的全部内存区域,可提供给用户使用,任何时刻内存中最多只允许一个作业存在。通过配置存储器保护机构实现。205.3.2固定分区管理这是一种最简单的可运行多道程序的存储管理方式。它将内存用户空间划分为若干个固定大小的区域,在每个分区中只装入一道作业。因此把用户空间划分为几个分区,便允许有几道作业并发运行。当某一分区空闲时,便可以从外存的后备作业队列中选择一个适当大小的作业装入该分区。215.3.2固定分区管理1.划分分区的方法(1)分区大小相等;(2)分区大小不等2.内存分配分区分配表:分区号,起始地址,大小,分配状态3.优缺点简单,容易实现;但资源浪费严重,产生“内零头”22内存零头(内存碎片)内存空间中那些在分配过程中、因切割而产生的不可再被利用的内存单元。内零头外零头外零头235.3.3可变分区管理可变分区分配,是指在系统运行过程中根据作业对内存的实际需要,动态地为之分配与其等额的内存空间。可变分区是在作业装入和处理过程中建立的分区,它与作业的大小相等;分区的个数和大小根据装入的作业动态地划分。这是对固定分区分配的改进,解决了严重浪费内存的问题,提高了内存利用率,是一种较为灵活、实用的存储管理方法。245.3.4分区分配算法为了把一个新作业装入内存,除了要配备分区分配表以了解内存的分配、回收情况,还应提供一定的分配算法,以便从未分配分区中选出一个合适的对象分配给作业。为便于处理,一般应使未分配的分区记录按某种原则在分区分配表中排序。251.首次适应算法(FirstFit)分配时顺序查找分区分配表,直至找到一个足够大小的空闲分区、对其进行等额划分然后分配。改进思想:把空闲分区以地址递增的次序进行链接,保留了高地址区域的大空闲分区。特点:易留下碎片,需要较大的查找开销。2.循环首次适应算法(NextFit)设置起始查寻指针,指向上一次找到的空闲分区的下一个空闲分区;每次从指针位置开始循环查找,直至找到第一个满足要求的空闲分区为止。特点:使空闲分区分布更均匀,但可能使内存缺乏大空闲区。263.最优适应算法(BestFit)把空闲分区按分区大小以递增的顺序链接;分配时总是分配那个既能满足要求、又最小的空闲分区。特点:切割产生的碎片总相对最小,难以再被利用。4.最差适应算法(WorstFit)把空闲分区按分区大小以递减的顺序链接;查找时只要看第一个分区能否满足作业要求,如果能就立即分配。优点:保证切割产生的空闲区不至于太小,从而产生碎片的几率也小,查找效率很高。缺点:易造成内存中缺乏大的空闲分区。275.快速适应算法(QuickFit)又称分类搜索法,将空闲分区根据其容量大小进行分类,对于每一类具有相同容量的所有空闲分区,单独设立一个空闲分区链表。这样,系统中存在多个空闲分区链表,同时在内存中设立一张管理索引表,该表的每一个表项对应了一种空闲分区类型,并记录了该种类型空闲分区链表表头的指针。空闲分区的分类根据进程常用的空间大小进行划分,如2KB、4KB、8KB等;对于其它大小的分区,如7KB这样的空闲区,既可以放在8KB的链表中,也可以放在一个特殊的空闲区链表中。28算法优点:查找效率高,仅需要根据进程的长度,寻找到能容纳它的最小空闲区链表,并取下第一块进行分配即可。由于进行分区分配时不会对任何分区进行分割,因此不会产生内存碎片,还能保留大的分区。算法缺点:分区归还时算法复杂,系统开销较大。此外,该算法在分配分区时以进程为单位,而一个分区只属于一个进程,因此在为进程所分配的该分区中或多或少存在一定的浪费。空闲分区划分越细,浪费则越严重,整体上会造成可观的存储空间浪费,这是典型的以空间换时间的作法。29内存的连续分配方式缺点:⑴不利于对大作业进行内存分配⑵内存分区与用户程序之间的大小不匹配,导致分配过程中易产生“碎片”⑶不同作业对应不同分区,不利于共享的实现离散分配:将一个用户程序拆分成若干个部分,分别装入到多个相互不邻接的内存单元。30通常,根据离散分配时所采用的地址空间基本单位的不同,将其划分为三种实现形式:(1)分页存储管理方式:将用户程序的地址空间拆分为若干大小固定且相等的区域(2)分段存储管理方式:将用户程序的地址空间拆分为若干大小不同的区域(3)段页式存储管理方式:将分页与分段两种方式相结合、取长补短315.4页式存储管理分页存储管理取消了存储分配连续性的要求,从而使一个作业的地址空间在内存中可以是若干个不连续的区域。这是典型的离散分配方式。如果分配的基本单位是“页”,则称为页式存储管理方式;如果分配的基本单位是“段”,则称为分段存储管理方式。325.4.1页面变换基本思想将一个用户进程的地址空间划分成若干个大小相等的片,称为页面或页,页编号从0开始。(页大小由机器的地址结构决定,在29~213B之间)相应地,把内存空间划分成与页面相同大小的若干个存储块,称为物理块或页,同样从0开始编号。内存分配思想:把进程中的若干个页分别装入到内存中多个允许不相邻接的物理块中用户程序0页1页2页3页4页…n页0页1页2页3页4页012345678910……内存…页表页号块号0213263849……页式存储管理341.逻辑地址页内地址w页号P3112110若已知一个逻辑地址空间中的地址为A、页面的大小为L,则页号P和页内地址w可按下式求得:P=INT[]ALd=[A]MODL220=1M212=4K352.页表为实现进程的每一页到离散存储于内存的每一个物理块之间的关联,系统为每一个进程建立一张页面映射表,即“页表
本文标题:操作系统第5章__2016分析
链接地址:https://www.777doc.com/doc-4012949 .html