第11次课教案操作系统课程计本081-4班级年月日章节名称第4章存储器管理教学目的与要求掌握存储管理的功能,理解地址映射的方法。教学内容4.1存储管理的功能4.2程序的装入与链接重点地址映射难点地址映射作业教具与挂图教学过程(组织与方法)讲解与举例第4章存储管理4.1存储管理的功能一、地址映射地址映射指的是将用户程序的逻辑地址转换成内存中物理地址的过程。在一个程序装入到与其地址空间不一致的存储空间时,对有关地址部分的重新调整的过程称为地址的重定位。这个调整过程就是把程序地址空间中使用的逻辑地址变换成主存中物理地址的过程。地址重定位的方式有:静态重定位和动态重定位。⒈静态重定位在装入一个作业时,把作业中的指令地址和数据地址全部转换成物理地址,由于地址转换工作是在作业开始执行前集中完成的,所以在执行过程中就不需要再进行地址转换工作,这种转换方式称为“静态重定位”。静态重定位的优点是实现比较简单,但缺点是需要为用户程序分配连续的内存空间而且程序在内存中不能进行移动。⒉动态重定位程序在执行过程中,当需要进行地址转换时,用逻辑地址加上重定位寄存器中的地址就可以得到相对应的物理地址。这种转换过程是在指令的执行过程中完成的,所以叫动态重定位。动态重定位方式的优点是用户作业不要求分配连续的存储空间,并且用户作业在执行过程中,可以动态申请存储空间和在主存中移动,只需要更改重定位寄存器中的内容即可。这样便于多个进程共享同一个程序的副本。但缺点是代价大,需要附加的硬件地址变换机构来实现,并且实现地址转换的算法比较复杂。二、内存的分配与回收存储分配方式主要有以下两种:⒈静态分配⒉动态分配三、存储信息的保护⒈防止地址越界每个进程都有自己独立的内存空间,如果一个进程在运行时所产生的地址在其地址空间之外,则发生地址越界。一般是通过界限寄存器来实现防止地址越界的存储保护,界限寄存器是被广泛使用的一种存储保护技术,机制比较简单,易于实现。⒉防止操作越权防止操作越权主要是针对多个进程所共享的区域进行保护的一种方式。对于允许多个进程共享的存储区域,每个进程都有自己的访问权限。如果一个进程对共享区域的访问违反了权限规定,则发生操作越权。四、虚拟存储器虚拟存储技术是将内存和外部存储器结合起来,只将进程的一部分放入内存,其余部分保留在辅存里,当执行到要访问的信息不在内存中时,再将这部分内容调到内存中。虚拟存储技术不需要用户去考虑内、外存的问题,一切由操作系统和硬件相配合来完成主机和外围联机存储器之间信息的动态调度。这样计算机系统好像为用户提供了一个其存储容量比实际主存大得多的存储器,这个存储器称为虚拟存储器。虽然虚拟存储器是为了解决主存容量不够用而提出的,但实质上是解决了程序访问地址和主存的可用地址相脱离的问题。实现虚拟存储器,需要有一定的物质基础。其一是需要有相当容量的辅存,以便足以存放多用户的作业地址空间。其二是要有一定容量的内存。其三是要有地址变换机构。然而引进虚存后系统就必须在地址变换上花费开销。所以设计虚拟存储器时应该在可能的情况下力求地址变换能快速地进行。4.2程序的装入与链接(简介)库链接程序装入模块装入程序编译程序产生的目标模块内存图用户程序的处理步骤一、程序的装入⒈绝对装入方式⒉可重定位装入方式⒊动态运行时装入方式二、程序的链接链接程序的功能是将经过编译或汇编后所得到的一组目标模块以及它们所需要的库函数,装配成一个完整的装入模块。实现链接的方法有三种:●静态链接方式(StaticLinking)●装入时动态链接(Load-timeDynamicLinking)●运行时动态链接(Run-timeDynamicLinking)第12次课教案操作系统课程计本081-4班级年月日章节名称第4章存储器管理教学目的与要求理解连续分配方式原理,掌握固定分区和动态分区分配算法。教学内容4.3连续分配方式重点动态分区分配难点动态分区中空闲区的排列方式作业自编4.1、4.2教具与挂图教学过程(组织与方法)讲解与举例4.3连续分配存储管理方式连续存储管理分配方式是指为一个用户程序分配一个连续的内存空间。连续分配方式主要有两种:单一连续分配和分区分配。一、单一连续分配该方式是最简单的一种存储管理方式,但只能用于单用户、单任务的操作系统中。使用这种存储管理方式,内存的用户区被用户程序所独占,即用户区一次只分配给一个作业使用,并且作业一旦进入主存将一直占有主存直到它运行结束才能释放。二、固定分区分配固定分区的基本思想是系统预先将内存的用户区划分成若干个连续的区域,每一个区域称为分区。每个分区中最多只能装入一个作业,且作业也只能在它所驻留的分区中运行。分区一旦分好,每个分区的大小固定不再变化,且分区的个数也不再改变。由于分区大小是事先固定的,因而可容纳作业的大小受到限制,而且当用户作业的地址空间小于分区的存储空间时,造成存储空间浪费。系统将用户区划分成固定大小的分区,一般包含以下两种方法:⒈分区大小相等⒉分区大小不等通过上述分析,无论是分区大小相等和分区大小不等的情况,当我们进行内存分配的时候,将满足条件的分区全部分配给该程序,而往往分区的大小都要大于用户程序的长度,因此,对于很多用户程序实际上只占用了分区的一部分空间,使分区中有一部分空间闲置不用,这实际上影响了主存空间的利用率。那么就会造成内存浪费的情况,这时当给用户程序分配内存时,余下的不能再利用的空间我们称之为碎片,对于固定分区是在分区内产生碎片,所以称为“内部碎片”。【例】假设内存大小为256KB,系统事先划分成5个分区,其中一个分区(0-32KB)为操作系统占有,其余4个分区为用户程序使用。各个分区的容量为16KB、32KB、64KB和112KB。假设有3个做作业A、B、C请求进入主存,其大小分别为6KB、25KB、32KB,内存分配情况如图所示,其中阴影部分表示各个分区中不能再使用的空闲碎片。分区号起始地址长度状态132k16k已分配248k32k已分配380k64k已分配分区说明表操作系统进程B进程A进程C分区410K7K32K0B32KB48KB80KB124KB256KB-1分区1分区2分区3内存分配情况三、动态分区分配动态分区存储管理方式相对于固定分区存储管理方式提高了内存的利用率,更好的适应了用户程序的需要,但是随着用户进程的动态变化,系统经过一系列的内存的分配和回收过程后,在内存中将会出现一些小的空闲区而不能再被使用,这些小的不能再被利用的空闲区将会成为碎片,对于动态分区所产生的碎片是在空闲区外,所以称为“外部碎片”。动态分区是根据用户程序的实际需要,为其分配一个连续的内存空间。在实现动态分区存储管理方式时,需要解决以下几个问题:⑴分区分配所需要的数据结构⑵分区分配算法⑶分区的分配和回收⒈分区分配中的数据结构⑴空闲分区表采用动态分区方式管理主存时,主存储器中已占用分区和空闲分区的数目和大小都是在变化的。为了便于对主存空间的分配和回收,主存分配表可以用两张表格组成,一张“已分配区表”,另一张是“空闲区表”,如表所示。4144k112k未分配动态分区表格(a)已分配表(b)空闲区表⑵空闲分区链352KB大小32KB504KB大小50KB1000KB大小100KBNULL头指针⒉分区分配操作⑴内存分配设用户请求的大小为u.size,空闲区的大小为m.size,分区分配过程如图所示。序号起始地址大小标志1384KB120KB作业12624KB80KB作业23704KB296KB作业34空5空序号起始地址大小标志1352KB32KB未分配2504KB120KB未分配31000KB100KB未分配4空5空开始从头开始查找表检索完?m.sizeu.size?m.size-u.size=size?从该分区中划出u.zie大小的分区将该分区分配给请求者修改并修改有关数据结构返回继续检索下一个表项将该分区从链中移出返回YYNNYN分配内存流程图⑵内存回收可能会出现以下几种情况:①回收区有下邻接空闲区F2②回收区有上邻接空闲区F1③回收区既有上邻接空闲区又有下邻接空闲区④回收区既无上邻接又无下邻接空闲区作业回收区RF2回收区RF1作业回收区RF1F2作业回收区R作业(a)(b)(c)(d)⒊分区分配算法⑴首次适应算法首次适应算法要求空闲分区链按地址递增的顺序排列。首次适应算法优先利用内存低地址部分的空闲区,从而保留了高地址部分的大空闲区。这样当后续到达的一些大的用户作业就可以得到分配,但是该算法对低地址端频繁进行分割,留下许多难以利用的很小空闲分区,每次查找都要从低地址部分开始查找,这样增加查找可用空闲分区开销。⑵最佳适应算法最佳适应算法的基本思想是当用户作业提出申请内存的请求时,每次分配满足条件的最小分区给请求者,这时要求空闲分区链按大小递增的顺序排列。最佳适应算法优先利用了大小与程序要求最接近的空闲区,保留了大空闲区。但是,最佳适应算法看似最佳,其时不然。使用此方法当满足用户请求,进行分配后剩下的空闲区就是最小的,形成难于利用的空间。随着时间的推移,系统中的小空闲区会越来越多,从而造成存储区的大量浪费。⑶最坏适应算法最坏适应算法是要给用户作业分配满足条件的最大分区,这时要求空闲分区链按大小递减的顺序排列。最坏适应算法总是挑选出最大的分区分配给程序。分配给程序后剩下的空闲区较大,还能装下其它作业。但是,使用此算法最大空闲区总是首先被分配并被进行划分,以后如果有大的作业提出请求,很难满足其要求。⒋碎片问题不能供任何用户(或进程)使用的极小的空闲区称为碎片。碎片的出现造成了存储空间的浪费。在分区存储管理方式中,可以采取紧凑技术来解决碎片的问题。即把所有空闲区进行拼接形成大的空闲区,以便为该用户使用。紧凑工作要求大量程序和数据在内存中移动,虽然可以提高主存的利用率,但是将浪费许多系统资源和CPU的时间,增加了系统的开销。利用紧凑技术的内存管理一般采用动态重定位。第14次课教案操作系统课程计本081-4班级年月日章节名称第4章存储管理教学目的与要求掌握分页和分段两种存储管理方式,并能够计算物理地址。教学内容4.4分页存储管理方式4.5分段存储管理方式重点分页和分段管理方式中的地址转换难点分页和分段管理方式中的地址转换作业自编4.3、4.4、4.5教具与挂图教学过程(组织与方法)讲解与举例4.4分页存储管理方式连续分配存储管理方式会形成许多“碎片”,虽然可以通过“紧凑”的方法将碎片拼接成可用的大块空间,但须为此付出很大开销。如果能够允许将一个进程直接分散地分配到许多不相邻接的分区中,就不必再进行“紧凑”,基于这一思想产生了离散分配方式。根据离散分配时所用的基本单位的不同,又可把离散分配方式分为以下三种:●分页存储管理●分段存储管理●段页式存储管理一、基本原理分页存储管理,是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号,从0开始,如第0页、第1页等。相应地,也把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框(frame),也同样为它们加以编号,如0#块、1#块等等。在为进程分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中。⒈页表在分页存储管理下,进程的每个页面可以离散的放到内存的任一个物理块中,但是进程就是一个整体,系统必须要保证该进程的正确运行,那么就必须要知道该进程的每一个逻辑页面具体放入内存中哪个对应的物理块。因此系统为每个进程建立一个数据结构――页表,如图1所示。0页1页2页……N页用户程序页表页号块号内存012……342……0123456图1页表结构⒉页面大小的选择分页存储管理系统中,页面的大小是由硬件地址结构决定的,即是由系统硬件决定的。对于页面的选择会影响到系统的性能。如果页面太小,一方面虽然可以使内存碎片减小,从而减少了内存碎片的总空间,有利于提高内存利用率,但另一方面也会使每个进程占用较多的页面,从而导致进程的页表过长,占用大量内存;此外,还会降低页面换进换出的效率。然而,如果选择的页面较大,虽然可以减少页表的长度,提高页