《操作系统 第五章.ppt》由会员分享,可在线阅读,更多相关《操作系统 第五章.ppt(90页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五章存储器管理5.1 5.1 存储器的层次结构存储器的层次结构5.2 5.2 程序的装入和链接程序的装入和链接 5.3 5.3 连续分配存储管理方式连续分配存储管理方式5.4 5.4 对换对换 5.5 5.5 分页存储管理分页存储管理 5.6 5.6 分段存储管理分段存储管理 5.15.1 存储器的层次结构存储器的层次结构5.1.1 存储器的层次结构1.1.存储器的层次结构存储器的层次结构 在现代计算机系统中,存储器是信息处理的来源与归宿,占据重要位置。但是,在现有技术条件下,任何一种存储装置,都无法同时从速度与容量两方面,满足用户的需求。实际上它们组成了一个速度由快到慢,容量由小到大的存储
2、装置层次。2.各种存储器高速缓存Cache:少量的、非常快速、昂贵、易变的内存RAM:若干兆字节、中等速度、中等价格、易变的 磁盘:数百兆或数千兆字节、低速、价廉、不易变的 由操作系统协调这些存储器的使用5.1.2 存储管理的目的1)主存的分配和管理:当用户需要内存时,系统为之分配相应的存储空间;不需要时,及时回收,以供其它用户使用。2)提高主存储器的利用率:不仅能使多道程序动态地共享主存,提高主存利用率,最好还能共享主存中某个区域的信息。存储管理的目的(续)3)“扩充”主存容量:为用户提供比主存物理空间大得多的地址空间,以至使用户感觉他的作业是在这样一个大的存储器中运行。4)存储保护:确保多
3、道程序都在各自分配到存储区域内操作,互不干扰,防止一道程序破坏其它作业或系统文件的信息。5.1.3.逻辑地址与物理地址逻辑地址(相对地址,虚地址):用户的程序经过汇编或编译后形成目标代码,目标代码通常采用相对地址的形式,其首地址为0,其余指令中的地址都相对于首地址而编址。不能用逻辑地址在内存中读取信息物理地址(绝对地址,实地址)内存中存储单元的地址,可直接寻址地址映射地址映射Load A 200 3456 。1200物理地址空间物理地址空间Load A data1data1 3456源程序源程序Load A 200 34560100200编译编译连接连接逻辑地址空间逻辑地址空间BA=1000图
4、51 逻辑地址和物理地址5.2 程序的装入和链接图 5-2-1 对用户程序的处理步骤5.2.1 程序的装入1.绝对装入方式绝对装入方式程序中所使用的绝对地址,可在编译或汇编时给出,也可由程序员直接赋予。但在由程序员直接给出绝对地址时,不仅要求程序员熟悉内存的使用情况,而且一旦程序或数据被修改后,可能要改变程序中的所有地址。因此,通常是宁可在程序中采用符号地址,然后在编译或汇编时,再将这些符号地址转换为绝对地址。2.可重定位装入方式 把作业地址空间中使用的逻辑地址变换成内存空间中的物理地址的过程。又称地址映射。如下图,作业i经过重定位,把地址集合映射到以10000为始址的内存中,作为作业i的存储
5、空间。可重定位装入方式(续)图 5-2-2 作业装入内存时的情况重定位的类型1)1)静静态态重重定定位位:当用户程序被装入内存时,一次性实现逻辑地址到物理地址的转换,以后不再转换(一般在装入内存时由软件完成)作业i在执行前一次变址,直到该作业完成退出内存为止。2)动态重定位 在程序运行过程中要访问数据时再进行地址变换。由地址变换机构进行的地址变换,硬件上需要重定位寄存器的支持。动态重定位的实现方式重重定定位位寄寄存存器器:在执行一条指令取操作数时,要将指令给出的有效地址(500)与 重 定 位 寄 存 器 中 的 内 容(1000)相加,得访问地址(1500),从而实现了地址动态修改。映映象象
6、方方式式:采用页表来描述虚、实页面的对应关系。3.动态运行时装入方式 动态运行时的装入程序,在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此,装入内存后的所有地址都仍是相对地址。5.2.2 程序的链接图 5-2-3 程序链接示意图1.静态链接方式2.装入时动态链接装入时动态链接方式有以下优点:(1)便于修改和更新。(2)便于实现对目标模块的共享 3.运行时动态链接 这种链接方式是将对某些模块的链接推迟到执行时才执行,即,在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并将之装入内存,把它链接到调用
7、者模块上。凡在执行过程中未被用到的目标模块,都不会被调入内存和被链接到装入模块上,这样不仅可加快程序的装入过程,而且可节省大量的内存空间。5.3 连续分配存储管理5.3.1 单一连续分配在单道环境下,不管是单用户系统还是单道批处理系统,进程(作业)执行时除了系统占用一部分主存外,剩下的主存区域全部归它占用。主存可以划分为三部分:系统区、用户区、空闲区。用户占用区是一个连续的存储区所以称单一连续区存储管理。单用户系统在一段时间内,只有一个进程在内存,故内存分配管理十分简单,内存利用率低。内存分为两个区域,一个供操作系统使用,一个供用户使用用户程序用户程序位于位于RAM中的中的操作系统操作系统0
8、xFFF.0位于位于RAM中的中的操作系统操作系统用户程序用户程序0ROM中的中的设备驱动程序设备驱动程序用户程序用户程序位于位于RAM中的中的操作系统操作系统0图图 5-3-1 5-3-1 单一连续区存储分配示意图单一连续区存储分配示意图工作流程 单一连续区分配采用静态分配和静态重定位方式,亦即作业或进程一旦进入主存,就一直等到它运行结束后才能释放主存。如下图所示的主存分配与回收法。并且由装入程序检查其绝对地址是否超越,即可达到保护系统的目的。工作流程(续)单一连续分配缺点不支持多道。主存利用率不高。程序的运行受主存容量限制。存储保护自动地址修改例如,存储器的地址空间为,而操作系统位于低址端
9、的内。对于这样的系统,我们给用户一个位的地址空间,并对其每个存储器访问自动加上。如果操作系统占用高址端的,则我们取每一个存储访问,而实际上,其地址为()。从而实现了对操作系统的保护。存储保护(续)页、页寻址通过对每个用户生成的地址左端拼接上一位来实现区与用户区。把操作系统确定在页,而把用户作业放在页。界限寄存器通过增加界限寄存器,划分区与用户区。5.3.2 固定分区分配 分区式管理是满足多道程序的最简单的存储管理方案。它的基本思想是将内存划分成若干个连续区域,称为分区。每个分区只能存储一个程序,而且程序也只能在它所驻留的分区中运行。预先把可分配的主存储器空间分割成若干个连续区域,称为一个分区。
10、每个分区的大小可以相同也可以不同,如图所示。但分区大小固定不变,每个分区装一个且只能装一个作业存储分配:如果有一个空闲区,则分配给进程 1.固定分区分区分区4分区分区3分区分区2分区分区1操作系统操作系统多个等待队列多个等待队列单个等待队列单个等待队列分区分区4分区分区3分区分区2分区分区1操作系统操作系统图 5-3-2 固定分区示意图 图 5-3-3 固定分区使用表2.内存分配管理通过设置内存分配表,内存分配简单缺点:内存利用率不高 5.3.3 动态分区分配 基本思想:内存不是预先划分好的,而是当作业装入时,根据作业的需求和内存空间的使用情况来决定是否分配。若有足够的空间,则按需要分割一部分
11、分区给该进程;否则令其等待主存空间内存管理:设置内存空闲块表记录了空闲区起始地址和长度内存分配:动态分配内存回收:当某一块归还后,前后空间合并,修改内存空闲块表1.分区分配中的数据结构图 5-3-4 空闲链结构(1)分区分配表(见图 5-3-5)(2)空闲分区链0K15K38K48K68K80K110K120K空闲区表空闲区表已分配区表已分配区表始址长度标志15K23K未分配48K20K未分配80K30K未分配空空始址长度标志0K15KJ138K10KJ268K12KJ3110K10KJ4空空分区分配表分区分配表:图 5-3-5分区分配表分区分配表0K15K38K48K68K80K110K12
12、0K空闲区表空闲区表已分配区表已分配区表始址长度标志15K23K未分配48K20K未分配98K12K未分配空空始址长度标志0K15KJ138K10KJ268K12KJ3110K10KJ480K5KJ585K13KJ685K98K 2.分区分配操作 1)分配内存分配内存 图 5-3-6 内存分配流程 2)回收内存 图 5-3-7 内存回收时的情况3.分配算法 按空闲块链接的方式不同,可以有以下四种算法:最佳适应法最坏适应法首次适应法下次适应法(循环首次适应法)1)最佳适应算法接到内存申请时,在空闲块表中找到一个不小于请求的最小空块进行分配为作业选择分区时总是寻找其大小最接近于作业所要求的存储区域
13、。特点:用最小空间满足要求2)最坏适应算法接到内存申请时,在空闲块表中找到一个不小于请求的最大空块进行分配,与最佳适应法相反,它在作业选择存储块时,总是寻找最大的空白区。特点:当分割后空闲块仍为较大空块分配算法(续)3)首次适应法:为作业选择分区时总是按地址从高到低搜索,只要找到可以容纳该作业的空白块,就把该空白块分配给该作业。4)下次适应法 类似首次适应法每次分区时,总是从上次查找结束的地方开始,找到一个足够大的空白区分配。4.碎片问题经过一段时间的分配回收后,内存中存在很多很小的空闲块。它们每一个都很小,不足以满足分配要求;但其总和满足分配要求。这些空闲块被称为碎片造成存储资源的浪费碎片问
14、题的解决碎片问题的解决紧凑技术:通过在内存移动程序,将所有小的空闲区域合并为大的空闲区域 (紧缩技术,紧致技术,浮动技术,搬家技术)问题:开销大;移动时机 优点:便于动态申请内存 便于共享内存 便于动态链接缺点:碎片问题,内存利用率不高,受实际内存容量限制6.分区式存储管理的优缺点5.3.4 动态重定位分区分配1.动态重定位的引入动态重定位的引入图 4-3-1 紧凑的示意2.动态重定位的实现图 5-4-2 动态重定位示意图3.动态重定位分区分配算法图 5-4-3 动态分区分配算法流程图4.可重定位分区的优缺点优点:解决了可变分区分配所引入的“外零头”问题。消除内存碎片,提高内存利用率。缺点:提
15、高硬件成本,紧凑时花费时间。5.多重分区 以上讨论都是基于一个作业在主存中占据的是一个连续分区的假定。为了支持结构化程序设计,操作系统往往把一道作业分成若干片段如子程序、主程序、数据组等)。这样,片段之间就不需要连续了。只要增加一些重定位寄存器,就可以有效地控制一道作业片段之间的调用。如下图所示,作业、分别被分成两个片段放进互不相连的存储区域中。由两个变址寄存器实现控制。多重分区分配6.分区的保护 为了防止一首作业有意或无意地破坏操作系统或其它作业。一般说来,没有硬件支持,实现有效的存储保护是困难的。通常采取:界限寄存器方式保护键方式两种措施,或二者兼而有之。保护过程-防止地址越界一般由硬件提
16、供一对寄存器:基址寄存器:存放起始地址 限长寄存器:存放长度(上界寄存器/下界寄存器)1)界限寄存器保护60K 访问地址 =124K 则产生访问地址界中断2)基址、限长寄存器保护相对地址 限长寄存器的值则产生访问地址界中断防止操作越权 对于允许多个进程共享的存储区域,每个进程都有自己的访问权限。如果一个进程对共享区域的访问违反了权限规定,则发生操作越权 即读写保护3)保护键方式5.4 5.4 对换对换1.交换在多道环境下扩充内存的方法,用以解决在较小的存储空间中运行较大程序时遇到的矛盾所谓对换是把内存中暂不能运行的进程或暂时不用的程序和数据,换到外存上,以腾出足够的内存空间,把具备运行条件的进
17、程,或进程所需的程序和数据,换入内存。交换技术被广泛用于小型分时系统中,交换技术的发展导致了虚存技术的出现 2.对换空间的管理外存分为文件区和对换区。前者是存放文件,管理目标是提高文件存储空间的利用率,故采用离散分配方式。后者用于存放从内存中换出的进程,这些进程停留短暂,对换频繁,管理目标是提高进程换出/换入的速度,故采用连续分配方式。内存的分配和回收与动态分区方式的内存的分配和回收方法相同。一、进程的换出:1、选出被换出的进程状态+优先级+驻留时间、非共享2、换出过程申请对换区成功,传输中未出现错误,释放内存空间、修改进程控制块和内存分配表。3.进程的换出与换入二、进程的换入:1、选出换入的
18、进程就绪且换出+换出时间最久2、换入过程申请成功,直接将进程换入。申请失败,须先将内存中的某些进程换出,腾出足够的空间,再将进程换入。进程的换出与换入(续)5.5 5.5 分页存储管理分页存储管理5.5.1 5.5.1 页式存储管理的引入在动态分区的存储空间中,存在“零头”问题。尽管采用“紧凑”技术可以解决这个问题,但要为移动大量信息花去不少的处理机时间,代价较高。分页:把用户程序按逻辑页划分成大小相等的部分,称为页或虚页。从0开始编制页号,页内地址是相对于0编址。内存块块:内存按页的大小划分为大小相等的区域,称为内存块(物理页面,页框)内存按页的大小划分为大小相等的区域,称为内存块(物理页面
19、,页框)。内存分配:以页为单位进行分配,并按作业的页数多少来分配。逻辑上相邻的页,物理上不一定相邻,通过页表把作业的各个页面与页框对应起来。5.5.2 页面与页表页面与页表1.1.页面和物理块页面和物理块 分页存储管理,是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号。相应地,也把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框(frame),在为进程分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中。由于进程的最后一页经常装不满一块而形成了不可利用的碎片,称之为“页内碎片”。2.页表列出了作业的逻辑地址与其在主存中的物理
20、地址间的对应关系。页面大小:页面的大小应选择得适中,且页面大小应是2的幂,通常为512 B8 KB一个页表中包含若干个表目,表目的自然序号对应于用户程序中的页号,表目中的块号是该页对应的物理块号。页表的每一个表目除了包含指向页框的指针外,还包括一个存取控制字段。表目也称为页描述子。分页管理中页与页框的对应关系示意图分页地址中的地址结构如下:页号P位移量W3112110 对某特定机器,其地址结构是一定的。若给定一个逻辑地址空间中的地址为A,页面的大小为L,则页号P和页内地址d可按下式求得:3.地址结构1.基本的地址变换机构基本的地址变换机构 图 5-5-2分页系统的地址变换机构 5.5.3 5.
21、5.3 地址变换机构地址变换机构2.地址变换过程例如指令 LOAD 1,2500 的地址变换过程如下:把虚拟地址2500转换成页号P=2,位移量W=452;如果页号2大于页表大小,则中断;否则继续;页号2与页表起址1000运算(1000+2*20,设页描述子大小为20)得到页描述子地址为1040;从页描述子中读取块号8;根据页描述子的“存取控制”判断该指令是否被允许访问内存,如果不允许,则中断;否则继续;块号8与位移量452运算(8*1024+452=9644,1024为页面大小)得到物理地址9644;把数字1写进内存地址9644单元中。3.管 理1)页表:系统为每个进程建立一个页表,页表给出
22、逻辑页号和具体内存块号相应的关系。页表放在内存,属于进程的现场信息2)空块管理位示图 位图法使用一个向量描述整个磁盘,向量的每一位表示一个物理块的状态,如0表示空闲块,而1表示该块已使用。位图法易于找到一个或连续几个空闲块,此法适合每一种文件分配方法,另外,位图法本身很小,易于全部放入主存。3)内存的分配与回收0310/10/10/10/10/1017空闲块数空闲块数空块管理位示图内存的分配计算一个作业所需要的总块数N查位示图,看看是否还有N个空闲块如果有足够的空闲块,则页表长度设为N,可填入PCB中;申请页表区,把页表始址填入PCB依次分配N个空闲块,将块号和页号填入页表修改位示图 4.快表
23、 如果把页表放在主存中,无疑会影响系统的性能。这是因为每次访问主存,首先必须访问页表,读出页描述子,之后根据形成的实际地址再访问主存,这样使访问主存的次数加倍,因而使总的处理速度明显下降。为了解决这个问题人们采用一组硬件寄存器,存放当前访问过的页的页描述子,每次访问主存时,首先查找快表,若找到所需的页描述子,则快速形成物理地址。否则从页表中查找后形成物理地址,同时把页描述子写入快表。如果设计得当,快表的命中率可以很高。具有快表的地址变换机构图 5-5-3 具有快表的地址变换机构5.6 5.6 分分段存储管理段存储管理 5.6.1 分段式存储管理的引入在分页存储系统中,作业的地址空间是一维线性的
24、,这破坏了程序内部天然的逻辑结构,造成共享、保护的困难。引入分段存储管理方式,主要是为了满足用户和程序员的下述需要:1)方便编程 2)信息共享 3)信息保护 4)动态增长 5)动态链接.0S工作区段工作区段B主程序段主程序段M.0EP子程序段子程序段X0K.CALL X E.CALL Y FCALL A 116.0FL子程序段子程序段Y0116N数组数组A12345.5.6.2 分段系统的基本原理 1.分段分段 分段地址中的地址具有如下结构:段号段内地址31 16 15 02.2.段表 它记录了段号,段的首(地)址和长度之间的关系 每一个程序设置一个段表,放在内存,属于进程的现场信息段号段号0
25、12段首址段首址段长度段长度58K20K100K110K260K140K操作系统操作系统.B0SA0NY0LX0PM0K逻辑段号逻辑段号01234作业作业1的地址空间的地址空间10003200500060008000PKSLN主存主存K 3200P 1500L 6000N 8000S 5000长度长度 段地址段地址01234操作系统操作系统分段管理中作业分段管理中作业i i与段表、存储空间的关系与段表、存储空间的关系 3.硬件支持系统设置一对寄存器段表始址寄存器:用于保存正在运行进程的段表的始址段表长度寄存器:用于保存正在运行进程的段表的长度(例如上图的段表长度为3)3.地址变换机构 图 5-
26、6-2 分段系统的地址变换过程4.分页和分段的主要区别(1)页是信息的物理单位,段则是信息的逻辑单位(2)页的大小固定且由系统决定,而段的长度却不固定 (3)分页的作业地址空间是一维的,即单一的线性地址空间,分段的作业地址空间则是二维的 5.6.3 信息共享 图 5-6-3 分页系统中共享editor的示意图图 5-6-4 分段系统中共享editor的示意图 分段管理的优缺点优点:便于动态申请内存 管理和使用统一化 便于共享 便于动态链接缺点:产生碎片思考:与可变分区存储管理方案的相同点与不同点?5.6.4 段页式存储管理 1.1.产生背景:产生背景:结合了段式与页式二者优点 克服了二者的缺点
27、2.基本思想 用户程序划分:按段式划分(对用户来讲,按段的逻辑关系进行划分;对系统讲,按页划分每一段)逻辑地址:内存划分:按页式存储管理方案 内存分配:以页为单位进行分配段号段号段内地址段内地址页号页号页内地址页内地址 3.管 理1.段表:记录了每一段的页表始址和页表长度2.页表:记录了逻辑页号与内存块号的对应关系(每一段有一个,一个程序可能有多个页表)3.空块管理:同页式管理4.分配:同页式管理4.地址空间 一个程序首先被划分成若干程序段,每一段给予不同的分段标识符然后,对每一分段又分成若干个固定大小的页面。如下图(a)所示,系统中的一个作业的地址空间结构页面尺寸为字节,该作业有三个分段,第一段为15K字节,占4页,最后一页只有1K未用;其它段同理。未足一页大小的补为一页。作业的地址空间和地址结构 1.作业地址空间:如图(a)所示2.地址结构如图(b)所示5.地址映射6.地址变换 地址变换(续)从控制寄存器读取段表始址,找到段表;段号段表始址 得到段描述子地址;从段描述子读取页表始址,找到页表;页号页表始址 得到页描述子地址;从页描述子读取物理块号;物理块号页内位移量 得到物理地址。上述的地址变换至少要访问主存三次,这将使执行程序的速度大大降低。为了解决上述问题,可以采取前边讲过的“快表”技术。
限制150内