存储器管理(共35页)_第1页
存储器管理(共35页)_第2页
存储器管理(共35页)_第3页
存储器管理(共35页)_第4页
存储器管理(共35页)_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四章 存储器管理(gunl)第0节 存储管理概述(i sh)一、存储器的层次结构1、在现代(xindi)计算机系统中,存储器是信息处理的来源与归宿,占据重要位置。但是,在现有技术条件下,任何一种存储装置,都无法从速度、容量、是否需要电源维持等等多方面,同时满足用户的需求。实际上它们组成了一个速度由快到慢,容量由小到大的存储装置层次。图4-1 计算机系统存储器层次示意图2、各种存储器寄存器、高速缓存Cache:容量很小、非常快速、昂贵、需要电源维持、CPU可直接访问;内存RAM:容量在若干KB、MB、GB,中等速度、中等价格、需要电源维持、CPU可直接访问;磁盘高速缓存:一般设于主存中;多种类

2、型的磁盘(c pn):容量(rngling)在数MB或数GB,低速(d s)、价廉、不需要电源维持、 CPU不可直接访问;由操作系统协调这些存储器的使用。二、存储管理(主存管理)的目的1、尽可能地方便用户;提高主存储器的使用效率,使主存储器在速度、规模和成本之间获得较好的权衡。(注意CPU和主存储器,这两类资源管理的区别)2、存储管理的主要功能:地址重定位主存空间的分配与回收主存空间的保护和共享主存空间的扩充三、逻辑地址与物理地址1、逻辑地址(相对地址,虚地址):用户源程序经过编译/汇编、链接后,程序内每条指令、每个数据等信息,都会生成自己的地址。一个用户程序的所有逻辑地址组成这个程序的逻辑地

3、址空间(也称地址空间)。这个空间是以0为基址、线性或多维编址的。2、物理地址(绝对地址,实地址):是一个实际内存(字节)单元的编址。计算机内所有内存单元的物理地址组成系统的物理地址空间,它是从0开始的、是一维的;将用户(yngh)程序(chngx)被装进内存,一个程序所占有(zhnyu)的所有内存单元的物理地址组成该程序的物理地址空间(也称存储空间)。四、地址映射(变换、重定位)当程序被装进内存时,通常每个信息的逻辑地址和它的物理地址是不一致的,需要把(程序中的)逻辑地址转换为对应的物理地址-地址映射;例如指令 LOAD L,2500 /*将2500号单元内的数据送入寄存器L*/ -P123图

4、4-3 作业装进内存时的情况地址映射分静态和动态两种方式。1、静态地址重定位是程序装入时集中一次进行的地址变换计算。物理地址 = 重定位的首地址 + 逻辑地址优点:简单,不需要硬件支持;缺点:一个作业必须(bx)占据连续(linx)的存储空间;装入内存(ni cn)的作业一般不再移动;不能实现虚拟存储。2、动态地址重定位:在程序执行的过程中,每当CPU访问一个内存地址之前对要访问的地址进行地址变换计算。图4-12 动态地址重定位示意图优点:一个作业可以使用非连续存储空间;能实现虚拟存储;有利于程序段的共享。缺点:需要硬件支持。五、存储分配与回收在程序运行开始时、运行过程中,OS根据一定的存储管

5、理方法,在内存中为程序及其数据找到合适的位置,将它们装入内存; 程序运行结束后,OS收回程序释放的内存资源,并进行适当的整理,以便再分配给其他的程序使用。六、存储保护为多道并发程序共享内存提供(tgng)保障,使在内存(ni cn)中的各道程序“各行其道( xn q do)”,只能访问属于自己的区域(自己的物理地址空间),避免各道程序间相互干扰。特别是当一道程序发生错误时,不致于影响其他程序的运行。通常由硬件完成保护功能,由软件辅助实现。存储保护可以实现:保护系统程序区不被用户侵犯(有意或无意的);不允许用户程序读写不属于自己地址空间的数据(系统区地址空间、其他用户程序的地址空间),出现地址越

6、界;地址越界存储保护的过程:每个进程都有自己独立的进程空间。如果一个进程在运行时所产生的要访问的地址落在其地址空间之外,称为发生了地址越界。每当程序要访问某个内存单元时,由硬件检查是否允许,如果允许则执行,否则产生地址越界中断,由操作系统进行相应处理。程序只能在自己的访问权限范围内读/写内存。七、存储共享内存共享:多道环境中,两个或多个并发进程共用内存中相同区域。目的:节省内存空间,提高内存利用率,实现进程通信(数据共享)。共享内容:代码共享(要求代码为纯代码);数据共享。八、存储(cn ch)“扩充(kuchng)”为了(wi le)给大作业提供方便,由OS把内存和外存统一管理起来,实现自动

7、覆盖。当一个大作业在执行时,有一部分逻辑地址空间的内容在内存,另一部分在外存。当要访问的信息不在内存时,由OS(而不是程序员安排的I/O指令)自动把它们从外存调入内存。从效果上看,这样的OS好象为这个用户作业提供了一个容量比实际内存大的存储器,从而实现了存储“扩充”。扩充后的存储器称为虚拟存储器。九、存储管理方法1、连续分配方式 (1) 单一连续存储区管理(单道环境下) (2) 分区式存储管理2、离散分配方式 (1) 分页式存储管理 (2) 分段式存储管理 (3) 段页式存储管理3、实现虚拟存储的分配方式 主要是一些请求式的分配方式,如请求分页式存储管理、请求分段式存储管理等。对于以上每一种存

8、储管理方法我们应该掌握: 基本原理(思想方法) 存储管理使用(shyng)的数据结构 逻辑地址(dzh)的格式 地址变换的方式(fngsh) 存储的分配和回收过程 特点(优、缺点)第1节 程序的装入(和链接)一、程序的装入就是OS的装入程序(Loader)将用户程序的装入模块装入内存。1、绝对装入方式编译时产生绝对地址的目标代码。程序被装入内存后,逻辑地址与实际装入的内存地址完全相同,故执行过程中,不需对指令和数据进行地址变换。程序中所使用的绝对地址,可在编译或汇编时给出,也可由程序员直接赋予。 但在由程序员直接给出绝对地址时,不仅要求程序员熟悉内存的使用情况,而且一旦程序或数据被修改后,可能

9、要改变程序中的所有地址。因此,通常是宁可在程序中采用符号地址,然后在编译或汇编时,再将这些符号地址转换为绝对地址。2、可重定位(dngwi)装入方式编译时产生相对地址的目标代码(di m)。程序被装入内存(ni cn)时,进行地址变换,然后在访问时直接取指令和数据。3、动态运行时装入方式 编译时产生相对地址的目标代码。程序被装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。当要对一条指令或一个数据进行访问时,才对它的地址进行转换。因此,装入内存后的所有地址都仍是相对地址。第2节 连续分配存储管理方式一、单一连续分配1、基本原理把内存分为系

10、统区和用户区两部分,系统区提供给OS使用(通常是内存的低址部分);用户区(指除系统区以外的全部内存空间)提供给用户使用。用户区是一个连续的存储区,每次装入一道用户作业,整个系统的用户空间被一道用户作业独占。2、存储(cn ch)分配和回收过程(guchng) 如下图所示的主存分配与回收法。并且由装入程序进行静态地址重定位,检查其绝对地址是否超越,即可达到保护系统(xtng)的目的。工作流程:3、特点:存储管理简单,只适用于单道环境内存(ni cn)利用率很低程序的运行(ynxng)受主存容量限制基本不需要管理(gunl)的数据结构二、固定分区分配固定分区式存储管理是满足多道程序的最简单的存储管

11、理方案。它的基本思想是:将内存的用户区划分成若干个固定的空间,称为分区。当程序到达时,由系统给它分配一个适当大小的分区,将程序和数据连续存入,使进程得以并发执行。每个分区只能存储一个程序,而且程序也只能在它所驻留的分区中运行;作业的逻辑地址空间是线性的,物理地址空间是连续的;主要采用静态地址重定位方式进行地址变换。1、基本原理系统生成时,把可分配的主存储器空间分割成若干个区域,每个区域称为一个分区(每个分区的内部是连续的)。每个分区的大小可以相同也可以不同,但分区大小、地址固定不变,每个分区能装一个且只能装一个作业。2、管理使用的数据结构分区说明表:记录系统中的现有内存分区及其使用状态。3、存

12、储(cn ch)分配与回收过程当有一个(y )用户作业请求装入时,由OS检索分区说明表,从中找一个大小能满足要求的、空闲(kngxin)的分区,将用户作业装入,并在分区说明表中将该分区的状态置为“已分配”;若没有找到大小足够的分区,则拒绝为该程序分配内存。当一个用户作业完成后,由OS将其占有的分区收回,将该分区的状态改为“未分配”。4、特点可以支持多道程序运行程序的运行受主存容量和分区大小限制内存利用率仍很低三、动态分区分配1、基本思想系统在启动时,除了OS常驻内存部分占用的内存空间外,系统中只有一个空闲分区;当有作业要装入内存时,检索空闲分区表,找一个能满足作业要求的空闲分区,从中划出一个大

13、小正好满足要装入作业要求的存储区,分配给这一作业,剩下的部分被作为一个新的空闲分区记录在空闲分区表中。2、存储管理的数据结构(sh j ji u)(二选一)(1) 空闲区表-记录目前系统中每个空闲区的起始地址(dzh)和长度;(2) 空闲分区链-将目前系统中的空闲分区按一定的顺序链接起来。在每个分区的头、尾设置指向前后分区的指针(zhzhn),并记录本分区的一些分配控制信息。系统设立一个链首指针,指向第一个空闲块。图4-7 空闲(kngxin)分区链3、存储分配与回收(hushu)过程(1) 分配(fnpi)-每当有一个作业申请内存空间时:图4-8 内存分配流程(2) 回收-会出现四种情况图4

14、-9 内存回收(hushu)时的情况回收区与它前面的一个(y )空闲区相邻(a)回收区与它后面(hu mian)的一个空闲区相邻(b)回收区与它前、后的两个空闲区相邻(c)回收区前后都没有相邻的空闲区当某一块归还后,要根据不同的情况,前后空间合并,再分别处理存储管理的数据结构。4、存储分配的算法-当满足条件的空闲分区多于一个时,选哪一个?取决于空闲分区表或空闲分区链中分区排列顺序的组织方法(1) 首次适应算法:按空闲区首地址从低到高来组织空闲分区表或空闲分区链;每次分区时,总是从表头或链首开始扫描,找到第一个足够大的空白区分配。(2) 循环首次适应算法(下次适应算法):类似首次适应法的数据组织

15、。每次分区时,总是从上次查找结束的地方开始扫描,找到一个足够大的空白区分配,并循环查找。(3) 最佳适应(shyng)算法:按空闲区容量(rngling)大小从小到大来组织组织空闲分区表或空闲分区链。每次分区时,总是从表头或链首开始扫描。所以,接到内存(ni cn)申请时,会在空闲区中找到一个满足要求的最小空闲区进行分配。(4) 最坏适应算法:与最佳适应法相反,它在作业选择存储块时,总是寻找一个满足要求的最大的空闲分区。讨论以上算法的优缺点.6、动态分区方式中的“碎片”问题经过一段时间的分配回收后,内存中会出现很多很小的空闲块。它们每一块都较小,不足以满足一般作业的分配要求;但其容量总和却有着

16、相当的规模。这些空闲块被称为碎片。碎片的存在造成了存储资源的浪费。解决办法:碎片整理-紧凑,通过在内存移动程序,将所有小的空闲区域合并为大的空闲区域。问题:系统开销大(?)。图4-11 碎片(su pin)整理四、动态(dngti)可重定位(dngwi)分区分配1、动态重定位引入的原因在动态分区分配中,“碎片”整理,是定时进行或在存储回收时进行的,所有用户程序的存储分区都要进行改动,并重新进行静态地址重定位。这样的“碎片”整理工作将花费较多的系统开销。2、动态重定位分区分配处理流程可重定位分区分配,与动态分区方法基本相同,但它的碎片整理是在存储分配时进行的,以满足新作业需求为目的,并采用动态地

17、址重定位。图4-13 动态(dngti)可重定位分区(fn q)分配示意图五、对换(du hun)(交换)技术“对换”引入的原因: -P135所谓“对换”,是指系统允许在一个作业已经进入内存执行的过程中,仍能把它调出内存、再调入内存。把内存中暂时不能运行的进程或者暂时不用的程序和数据,调出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程或进程所需要的程序和数据,调入内存。对换是提高内存利用率的有效措施。可以将整个进程换入、换出,也可以将进程的一部分(页、段)换入、换出。前者主要用于缓解目前系统中内存的不足,后者主要用于实现虚拟存储。 -P136对换空间的管理:在具有对换功能的OS中,

18、通常把外存分为文件区和对换区。前者用于存放文件,后者用于存放从内存换出的进程。P136-137进程(jnchng)(整体(zhngt)的换出:系统(xtng)首先选择处于阻塞状态且优先级最低的进程作为换出进程,然后启动磁盘,将该进程的程序和数据传送到磁盘的对换区上。若传送过程未出现错误,便可回收该进程所占用的内存空间,并对该进程的PCB做相应的修改。当目前没有阻塞进程时,也可将优先级低的就绪进程换出。进程(整体)的换入: 系统定时查看所有进程的状态,从中找出“就绪”状态但已换出的进程,将其中换出时间(换出到磁盘上)最久的进程作为换入进程,将之换入,直至已无可换入的进程或无可换出的进程为止。以上

19、谈到的是整体交换,部分交换在虚拟存储中介绍。六、动态分区式存储管理特点的讨论1、作业连续存放(作业的逻辑地址空间和物理地址空间都是一维的)2、有限的虚拟存储分区式管理不能实现那种用户进程所需空间只受内外存容量之和限制的虚拟存储,只能使用覆盖和交换等存储扩充技术,实现进程挂起,这是一种有限的虚拟存储-并发进程的总容量可以大于内存容量,但每一个进程的容量小于内存。3、存储保护:使用界限寄存器。一般由硬件提供一对寄存器:基址(j zh)寄存器:存放起始地址,限长寄存器:存放长度(或上界寄存器/下界寄存器)4、主要(zhyo)优缺点:实现了多进程对内存(ni cn)的共享,支持多道程序设计;要求较少的

20、硬件支持,管理方法简单,容易实现。内存利用率仍不高(碎片问题);用户作业的大小受分区大小的限制;不能实现信息的共享。第3节 基本分页存储管理方式基本原理将系统的物理地址空间划分成大小相同的片,称为块;将作业的逻辑地址空间划分成和块大小一样的片,称为页(最后不足一页的也算一页);给作业进行存储分配时,将作业的一页存入存储器的一块中。逻辑上相邻的页,物理上可以不相邻。块的大小与页的大小一致,与系统内存的大小以及内、外存间数据的传输速度相关,通常是2nB。二、逻辑(lu j)地址的格式作业的逻辑地址(dzh)空间是从0开始(kish)、一维的,每个逻辑地址由页号和页内地址组成,见下图左;对某特定机器

21、,其地址结构是一定的,页的大小固定为L(应该是2的幂,通常为1KB8KB)。若给定一个逻辑地址A,则页号P和页内地址d可按下式解析而求得,见下图右。三、存储管理的数据结构1、页表:每个进程(jnchng)一张,在初次为进程分配内存时建立进程的页表。一个进程分为(fn wi)多少页,它的页表就有多少行(表目)。每一行中记录(jl)着进程的一页对应存放的块。另外,页表的每一个表目还包括一个存取控制字段。页表用于进行地址变换。2、存储分块表:整个系统一张,每一项对应一个内存存储块,记录该存储块的使用状态:已分配或空闲。通常用位示图来表示存储分块表。四、地址变换进程的页表一般(ybn)是常驻内存、连续

22、存放的,页表的首地址和长度存在进程的PCB中。系统(xtng)为执行(zhxng)态的用户进程提供了一个页表寄存器,用来存放这个进程的页表首地址和长度。采用动态地址重定位。1、基本的地址变换过程:例: 0100:LOAD 2452,A(1) 指令的逻辑地址0100,它存在0页,第100号单元中;查页表:0页 10块 算出指令的物理地址:10100 到内存单元10100中取指令 LOAD 2452,A;(2) 目的操作数的逻辑地址2452,它排在2页第452号单元中;查页表: 2页 8块 算出操作数的物理地址:08452 将A送入08452号内存单元。2、引入快表:由于(yuy)页表也存放在主存

23、中,这样,每读写一个内存单元,首先必须读内存一次,访问页表,之后根据形成的实际地址再访问内存,这样使访问主存的次数加倍,因而(yn r)使总的处理速度明显下降。为了(wi le)解决这个问题人们采用一组寄存器,存放最近访问过的页的页表表项-引入“快表”每次地址变换时,首先查找快表,若找到所需页的表项,则快速形成物理地址。否则,再去页表中查找后形成物理地址,同时把该页的表项写入快表。如果设计得当,快表的命中率可以很高。五、存储的分配和回收1、存储分配计算一个作业所需要的总块数N查位示图,看看是否还有N+1个空闲块,如果不够,就拒绝分配如果有足够的空闲块,则首先申请一块(y kui),为作业建立(

24、jinl)页表,将页表的首地址(dzh)和长度N存入进程的PCB中分配N个空闲块给该作业,依次装入作业的N个页,将页号和对应的块号填入页表修改位示图2、存储回收进程执行结束,系统对照页表,依次收回分给它的N个块,修改位示图;撤消它的页表,收回页表所占块,修改位示图。六、两级和多级页表现代的大多数计算机系统,都支持非常大的逻辑地址空间(232264)。页表就变得非常大,超过了1页可以容纳的范围。可采用两个方法来解决这一问题: 采用离散分配方式来解决难以找到一块连续的大内存空间的问题; 只将当前需要的部分页表项调入内存,其余的页表项仍驻留在磁盘上,需要时再调入。1、两级页表逻辑(lu j)地址的格

25、式为:2、多级页表字长(z chn)32位的计算机,进程页表多大?用户(yngh)逻辑地址空间最大 232=4GB设:页面(y min)大小为 212=4KB则:一个(y )进程最多 220 页设:页表的每个表项占4B则:进程(jnchng)页表最长为4B220=210212B = 1024 页外页表最长 10244B=4KB,正好一页。当计算机的字长增加到64位时,如果仍以4KB为一页,一个作业可以有252页。页表与外页表的长度将是。此时,必须采用多级页表,将外层页表再进行分页,再将各分页离散地装入到不相邻接的物理块中,再利用第2级的外层页表来映射它们之间的关系。 此即多级页表。七、反智页表

26、简述 -P144八、基本(静态)页式存储管理的特点1、作业的逻辑地址空间是一维的;2、是一种离散式分配的存储管理方法,用户作业不要求连续的存储空间,碎片的规模小于1页,而且数量很少,存储利用率高;3、要求进程在执行前全部装入内存,所以进程的大小仍受内存空间的限制;4、“页”是存储的单位,在逻辑上没有意义,很难实现有效的信息共享、存储保护、动态增长、动态链接等。第4节 基本分段存储管理方式一、分段式存储管理的引入在分页式存储管理中:进程(jnchng)的逻辑地址空间是连续的。一个进程(程序(chngx)与数据)是一个(y )整体;“页”是一个存储的单位,在逻辑上没有意义,不便进行程序段或数据段的

27、共享;进程所需的存储块是一次性、静态分配的,程序和数据都不能动态增长。引入分段存储管理方式,主要是为了满足用户和程序员的下述一系列需要: -P145-146(1) 方便编程 (2) 信息共享(3) 信息保护 (4) 动态增长 (5) 动态链接二、基本原理一个用户作业的程序和数据按其逻辑结构可以分为若干段,每一段在逻辑上都是完整的,每段内有从0开始的、连续的逻辑地址空间。在存储分配时,系统为每一段分配一个连续的存储区,而不同段之间的存放的空间可以是不连续的。三、逻辑(lu j)地址格式分段式存储管理中,用户作业的逻辑地址(dzh)空间是二维的(可能(knng)不连续),一个单元的逻辑地址格式为:

28、每一个段号和一个逻辑段的名称对应。四、存储管理的数据结构段表:每个进程设置一个,属于进程的现场信息。段表的格式:段表中的每一行对应一个逻辑段。作业有几逻辑段,段表的长度就有几行。段表中最重要(zhngyo)的信息是它的前三项,依靠它进行地址重定位。五、地址变换进程的段表一般是常驻内存、连续存放的,段表的首地址和长度(chngd)存在进程的PCB中。系统(xtng)为执行(zhxng)态的用户进程提供了段表寄存器,用来存放这个进程的段表首地址和长度。六、存储分配与回收在段式存储管理中,内存的空闲空间,采用类似动态分区式存储管理的方式组织、分配和回收。只是在这里,存放在分区中的对象是进程的一个逻辑

29、段,而不是整个进程。1、存储分配首先,程序开始的若干逻辑段,按照类似动态分区分配的方法被逐一放入内存。伴随着存储访问(地址变换),存储分配逐步完成。2、存储(cn ch)回收当作业执行完毕时,系统将段表中各行记录(jl)的分区,采用类似(li s)动态分区分配的回收方法进行逐一回收,然后撤消段表,回收段表占用的分区。七、分页和分段的主要区别1、页是信息的物理(存储)单位,分页是为实现离散分配方式,以消减内存的零头,提高内存的利用率。或者说,分页仅仅是由于系统管理的需要而不是用户的需要。段则是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好地满足用户的需要。2、页的大小固定且由系统决定,由系统把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而在系统中只能有一种大小的页面;而段的长度却不固定,决定于用户所编写的程序的逻辑,通常由编译程序在对源程序进行编译时,根据信息的性质来划分。3、分页的作业地址空间是一维的,即单一的线性的逻辑地址空间,程序员只需利用一个记忆符,即可表示一个地址;而分段的作业地址空间则是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址。八、信息(xnx)共享的实现当多个进程都要执行某

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论