资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,5,章 存储管理,本章要点,连续分配存储管理方式,段式存储管理,页式存储管理,虚拟存储管理,存储器管理,1,存储器管理的主要功能,存储分配的方法,为多道程序分配大小相同的存储区还是大小不同的存储区;,内存的分配在程序执行前分配还是在执行过程中动态分配。,地址变换,程序执行的内存区域是连续的还是分散的。,地址保护,如何保证程序之间既不冲突又可共享资源。,内存扩充,如何将内存和外存结合起来,为用户提供更大的存储空间。,5,存储器管理,2,逻辑地址和物理地址,逻辑地址,(,相对地址,),用户程序经编译后生成的目标模块是以,0,为开始地址顺序编址。目标模块中的地址称为相对地址或逻辑地址。,物理地址,(,绝对地址,),内存的地址以字节为单位,每个存储单元都有唯一的地址。,3,程序的链接和装入,一个源程序要变为可以在内存中运行的程序,通常要经过编译、链接和装入三个步骤:,1,),编译,:用户程序经编译后生成的目标模块是以,0,为开始地址顺序编址。目标模块中的地址称为相对地址或逻辑地址。,2,),链接,:将编译后形成的多个目标模块以及它们运行所需要的库函数,链接在一起形成装入模块。装入模块仍以,0,作为起始地址。,3,),装入,:将装入模块装入内存实际物理地址空间。,5,存储器管理,(,1,)链接,静态链接:,程序装入内存之前将整个目标模块链接,形成可执行文件。,装入时动态链接:,在各目标模块装入内存时链接,边装入边链接。,运行时动态链接:,在执行过程中将需要的模块调入内存,并链接到调用模块上。,动态链接有利于实现目标模块的共享,。,通常被链接的共享代码称为,动态链接库,(DLL),或共享库,(shared library),。,(,2,)程序装入,程序的逻辑地址与分配的内存绝对地址不一致。,每个逻辑地址也没有一个固定的绝对地址与其对应。,例如:,程序被装入到内存,A,单元开始的内存区域,则该程序访,问逻辑地址的,K,单元的数据时,实际应访问,A+K,单元。,为保证程序对数据的正确访问,必须把逻辑地址转换为,绝对地址,把这个地址转换过程称为,重定位,。,5,存储器管理,程序的装入方式,重定位(地址映射),把用户程序中的相对地址(逻辑地址)转换为主存中的绝对地址(物理地址)过程。,静态重定位,在程序装入内存时,装入程序把程序的逻辑地 址改成物理地址。物理地址固定,且必须连续。,动态,重定位,在程序执行期间,通过重定位寄存器把程序的,逻辑地址改成物理地址。指令执行之前无须修改地址,因此运行之前可以变换存储位置,且各目标模块不需要连续存放。,静态重定位示意图,动态重定位示意图,动态重定位示意图,连续分配,指为一个用户程序分配一个连续的内存空间。,单一连续分配,固定分区分配,可变分区分配,5.3,连续分配存储管理方式,(,P113,),单一连续分配,基本思想,是将系统程序和用户程序分开。,单用户单任务操作系统,示意图,固定分区,方法,分区在系统启动后划分好,以后不能改变。,划分分区方法,分区大小相等,分区大小不等,缺点,内存利用率低,分区可变,方法,分区的大小和个数随系统的运行而不断改变,动态分区分配数据结构,空闲分区表(,P116,),空闲分区链(,P117,),动态分区分配算法,首次适应法,下次适应法,最佳适应法,最坏适应法,动态分区的分配和回收操作,可变分区,可变分区内存的回收,回收分区与前面一个(低地址)空闲分区,F,1,相邻接,图(,a),回收分区与后面一个(高地址)空闲分区,F,2,相邻接,图(,b,),回收分区与前、后两个空闲分区,F,1,和,F,2,均相邻,图(,c),回收分区不与其它空闲分区相邻接,条件,空闲分区链以存储空间地址递增的次序链接。,优点,释放时,因不改变该区在队列中的位置,因此速度快。,保证高地址有空闲空间,可留给大作业。,缺点,常用大空闲区适应小作业,从而留下小空闲区,且这些小空闲区在链表的前面,影响分配速度。,可变分区分配算法,最佳适应法,首次适应法,下次适应法,最坏适应法,条件,空闲分区链以存储空间地址递增的次序连接成循环链,为进程分配存储空间时,不是从队首开始找,而是从上次找到的空闲空间的下一个空闲分区开始找。,优点,存储空间利用均衡。,缺点,没有了较大空闲空间,使大作业无法运行。,条件,空闲分区链以存储空间大小递增的次序拉链。,优点,若存储空间中存在与申请大小相等的空闲区,则必然被选中,否则选一个稍大的空闲区,而避免毁掉更大的空闲区。,缺点,小碎片增加碎片问题严重。,回收时,将空闲区插入适当的位置费时。,条件,空闲分区链以存储空间大小递减的次序拉链。,优点,分配后,剩下的空闲区还好用。,申请时,查找容易,因此速度快。,缺点,当有大作业时,可能就没有空间可用了。,练习,1.,在可变分区分配方案中,最佳适应法是将空闲块按,_ _,次序排序,.,A.,地址递增,B.,地址递减,C.,大小递增,D.,大小递减,2.,在分区存储管理方式中,如果在按地址升序排列的未分配分区表中顺序登记了下列未分配分区:,1-,起始地址,17K,,分区长度为,9KB,;,2-,起始地址,54KB,分区长度,13KB,现有一个分区被释放,其起始地址为,39KB,,分区长度为,15KB,,则系统要,_,。,A.,合并第一个未分配分区,B.,合并第一个及第二个未分配分区,C.,合并第二个为分配分区,D.,不合并任何分区,1.C,2.C,练习,3.,在固定分区存储管理中,每个分区的大小是,_,。,A.,相同,B.,随进程的大小变化,C.,可以不同,需预先设定,D.,可以不同,根据进程的大小设定,4.,在可变分区存储管理中,合并分区的目的是,_,。,A.,合并空闲区,B.,合并分区,C.,增加内存容量,D.,便于地址交换,3.C,4.A,练习,5.,把程序地址空间中的逻辑地址转换为内存的物理地址称,_,。,A.,加载,B.,重定位,C.,物理化,D.,链接,6.,在以下存储管理方案中,不适用于多道程序设计系统的是,_,。,A.,单一连续分区,B.,固定分区,C.,可变分区,D.,页式存储管理,5.B,6.A,练习,7.,在可变分区系统中,当一个进程撤销后,系统回收其占用的内存空间,回收后造成空闲分区的个数减,1,的情况是,_,。,A.,回收区与空闲区无邻接,B.,回收区与上面的空闲区邻接,C.,回收区与下面的空闲区邻接,D.,回收区与上下两个空闲区邻接,8.,在可变分区分配方案中,首次适应法是将空闲块按,_,次序排序,.,A.,地址递增,B.,地址递减,C.,大小递增,D.,大小递减,7.,D,8.A,练习,9.,在可变分区的分配算法中,倾向于优先使用低地址部分空闲区的是,_,,能使内存空间的空闲区分布得较均匀的是,_,每次分配时,若内存中有和进程需要的分区的大小相等的空闲区,一定能分配给进程的是,_,。,首次适应算法,下次适应算法,最佳适应算法,练习,10.,在系统中采用可变分区存储管理,操作系统占用低地址部分的,126KB,,用户区的大小是,386KB,,若采用空闲分区表管理空闲分区。,若分配时均从高地址开始,,对于下述的作业申请序列:作业,1,申请,80KB,;作业,2,申请,56KB,;作业,3,申请,120KB,;作业,1,完成;作业,3,完成;作业,4,申请,156KB,;作业,5,申请,80KB,。(,1,)画出作业,1,、,2,、,3,进入内存后。内存分布情况。(,2,)画出作业,1,、,3,完成后。内存的分布情况。(,3,)画出作业,4,、,5,进入内存后。内存分布的情况。,练习,(,1,)作业,1,、,2,、,3,进入内存后,内存分布如下图,0KB,126KB,256KB,376KB,432KB,操作系统,126KB,作业,3:120KB,作业,2:56KB,作业,1:80KB,练习,(,2,)作业,1,、,3,完成后,内存的分布情况如下图,0KB,126KB,256KB,376KB,432KB,操作系统,126KB,作业,2:56KB,512-1KB,练习,(,3,)作业,4,、,5,进入内存后,内存的分布情况如下图,0KB,126KB,256KB,376KB,432KB,操作系统,126KB,作业,4:156KB,作业,2:56KB,作业,5:80KB,512-1KB,离散分配方式的引入,连续分配方式带来的问题是会在存储空间中产生许多“碎片”。能否将进程分配到许多不相邻的分区中呢?由此产生离散分配方式。,分页存储管理方式,存储管理的需要,分段存储管理方式,用户编程的需要,基本原理,内存空间分成大小相等的若干个存储块,称为物理块或页框。,将进程的逻辑地址空间分成与块大小相等的若干页,称为页面或页;,在为进程分配内存时,以块为单位,将进程中的若干页分别装入多个可以不相邻的块中。,5.3,页式存储管理,页面的大小由机器的地址结构决定的。,页面的大小的权衡,页面较小-内存碎片小;页表过长,占用较大内存空间。,页面较大-页表短,占用较少内存;内存碎片大。,通常页面的大小要适中,在512,B4MB,之间。,页面大小的选择,地址转换方法,CPU,生成的逻辑地址分成以下两部分,:,页号,(p),:页号作为页表中的索引。页表中包含每页所在物理内存的基地址。,页偏移,(d),:与页的物理基地址组合就形成了物理地址。,地址转换示意图,逻辑地址被分为两部分:,页号,页内位移,例如逻辑地址,1500,的二进制形式为,0000 0101 1101 1100,如果页的大小为,1024,B,,,故页内位移占,10,位,剩下,6,位为页号,逻辑地址,1500,对应的页号为,1,(二进制为,0000 01,),页内位移为,476,(二进制为,01 1101 1100,),页式存储管理逻辑地址结构,页式存储管理地址变换机构,LOAD 1,1500,12345,0,500,1500,3000,进程逻辑地址空间,LOAD 1,1500,2 7,0 4,1 6,页号 块号,页表,000001 0111011100,逻辑地址,1500,000110 0111011100,物理地址,6620,6620,1K,2K,3K,4K,5K,6K,7K,8K,内存物理地址空间,页表的组织,现代的计算机系统都支持大的逻辑地址空间,当地址空间较大(32位或64位)如32位时,若页面大小为4,KB=2,12,B,,有页表项目2,20,=1,M,,若每个页表项占4,B,,故每张页表要占用4,MB,内存。,对页表所需地址空间采用离散分配方式来解决,将当前需要的部分页表项调入内存,其余的页表项仍驻留在磁盘上,需要时再调入内存。,习题,1.,某系统采用页式存储管理方法,主存储器容量为,256MB,,分成,64K,个块。某用户作业有,4,页,其页号依次为,0,,,1,,,2,,,3,被分别放在主存块号为,2,,,4,,,l,,,6,的块中。要求:,(1),写出该作业的页表;,(2),指出该作业总长度的字节,(Byte),数;,(3),分别计算相对地址,0,,,100,和,2,,,0,对应的绝对地址,(,方括号内的第一元素为页号,第二元素为页内地址,),。,习题,习题,2.,某页式存储管理系统,内存的大小为,64KB,,被分成,16,块,块号为,0,、,1,、,2,、,、,15,。设某进程有,4,页,其页号为,0,、,1,、,2,、,3,,被分别装入内存的,2,、,4,、,7,、,5,块,问:(,1,)该进程的大小是多少字节?(,2,)写出该进程每一页在内存的起始地址。(,3,)逻辑地址,4146,对应的物理地址是多少?,例题,(,1,)内存的大小为,64KB,,被分成,16,块,所以块的大小是,64KB/16=4KB,。因为块的大小与页面的大小相等,所以页的大小是,4KB,。该进程的大小是,4*4=16KB,。,(,2,)因为进程页号为,0,、,1,、,2,、,3,,被分别装入内存的,2,、,4,、,7,、,5,。,第,0,页在内存的起始地址是:,2*4KB=8KB,;,第,1,页在内存的起始地址是:,4*4KB=16KB,;,第,2,页在内存的起始地址是:,7*4KB=28KB,;,第,3,页在内存的起始地址是:,5*4KB=20KB,。,例题,(,3,)逻辑地址,4146,对应的物理地址:,4146/4096=1,,,,,50,。逻辑地址,4146,对应的页号为,1,,页内位移为,50,。查找页表,得知页号为,1,的存储块号为,4,,所以逻辑地址,4146,对应的物理地址是:,4*4096+50=16434,。,习题,3.,某系统采用页式存储管理策略,某进程的逻辑地址空间为,32,页,页的大小为,2KB,,物理地址空间的大小是,4MB,。(,1,)写出逻辑地址的格式。(,2,)该进程的页表有多少项?每项至少占多少位?(,3,)如果物理地址空间减少一半,页表的结构有何变化?,习题,(,1,)进程的逻辑地址空间为,32,页,故逻辑地址中的页号需要,5,位(二进制),由于每页的大小为,2KB,,因此页内位移须用,11,位(二进制)表示,这样逻辑地址格式如下图。,页号 页内位移,15,11 10,0,习题,(,2,)因为进程的逻辑地址空间为,32,页,因此该进程的页表项有,32,项。页表中应存储每页的块号。因为物理地址空间的大小是,4MB,,,4MB,的物理地址空间内分成,4MB/2KB=2K,个块,因此块号部分需要,11,位(二进制),所以页表中每项占,16,位。,(,3,)如果物理地址空间减少一半,页表的页表项数不变,但每一项的长度从,16,位(二进制)减少到,15,位(二进制)。,方便编程,分段共享,分段保护,动态链接,动态增长,引入原因,5.4,段式存储管理,段式存储管理的基本原理,整个作业的地址空间被分成若干个段,每个段采用一段连续的地址空间,段的长度由相应的逻辑信息的长度决定。,段式存储管理地址变换机构,例题(,P127,),段号,内存起始地址,段长,0,210,500,1,2350,20,2,100,90,在一个分段式存储管理系统中,其段表如表,5.2,所示。求表,5.3,中逻辑地址对应的物理地址。,表,5.2,段表 表,5.3,逻辑地址,段号,段内位移,0,430,1,10,2,500,分页和分段的区别,分页和分段的目的,页是信息的物理单位,分页是系统管理的需要,而不是用户的需要。,段是信息的逻辑单位,它含一组意义完整的信息。分段是为了更好地满足用户的要求。,页和段长度,页的大小固定,由系统确定。,段的长度不固定,决定于用户所编写的程序。,地址空间,分页的作业地址空间是一维的,即单一的线性地址空间。,分段的作业地址空间是二维的,程序员在标识一个地址时,需给出段名和段内地址。,段的共享与保护,页共享与段共享的比较,由于段是信息的逻辑单位,用户易于实现对段的共享,也容易对段进行保护。,而页虽也可共享,但不方便。,举例,例如有一个多用户系统,可同时容纳40个用户,它们都执行一个文本编辑程序,该文本编辑程序含有160,KB,的代码和40,KB,的数据,,如不共享,共需160*40+40*40=8,MB,的内存空间来支持40个用户。,若代码是可重入的,则无论是分页系统还是分段系统都可以,共享,该代码段,因此内存只需留一个文本编辑程序,所需空间为160+40*40=1760,KB,。,页的共享,注意:,页的共享要求作业地址空间的共享页必须具有,相同的页号,。,使用分页系统,每个页面的大小是4,KB,,则代码段占160/4=40个页面,数据段占40/4=10个页面,段的共享,使用分段系统,不要求段号相同。,实现段的共享数据结构,共享进程计数,:,记录了共享某段的进程个数,设置整型变量,count,。,存取控制:,对于一个共享,不同的进程可以有不同的存取控制权限。,段号:,对于同一共享段,不同的进程可以使用不同的段号去共享该段。,分段的分配与回收,分配,回收,对第一个请求使用该共享段的进程,由系统为该共享段分配一物理区,再把共享段调入该区,同时将该区的始址填入该进程的,段表,的相应项中。,在,共享段表,中增加一表项,填写有关数据,置,count=1;当其他进程要调用该共享段时,无需再分配内存,只需在调用进程的,段表,中增加一表项,在,共享段表,中,填加进程的名字等项目,令count加1。,当进程不使用某共享段时,删除,共享段表,中有关该进程的项目,令count减1,当count=0时,回收该共享段的物理内存,删除,共享段表,中对应项。,段的保护,存取控制:,在段表中增加存取保护位,用于设置对本段的存取方式,如可读。可写或可执行。,段表保护:,每个进程都有自己的段表,段表本身对段可起到保护作用。,保护环:,系统把所有信息按照其作用和相互调用关系分成不同的层次(即环),低编号的环具有较高的权限,编号越高,其权限越低,如图所示。它支持,4,个保护级别:,0,级权限最高,,3,级最低。,段的保护措施,虚拟存储管理,第,5,章 存储管理,本章要点,连续分配存储管理方式,段式存储管理,页式存储管理,虚拟存储管理,
展开阅读全文