操作系统之存储管理

上传人:jiups****uk12 文档编号:60146604 上传时间:2018-11-14 格式:PPT 页数:97 大小:450KB
返回 下载 相关 举报
操作系统之存储管理_第1页
第1页 / 共97页
操作系统之存储管理_第2页
第2页 / 共97页
操作系统之存储管理_第3页
第3页 / 共97页
操作系统之存储管理_第4页
第4页 / 共97页
操作系统之存储管理_第5页
第5页 / 共97页
点击查看更多>>
资源描述

《操作系统之存储管理》由会员分享,可在线阅读,更多相关《操作系统之存储管理(97页珍藏版)》请在金锄头文库上搜索。

1、操 作 系 统,第4章 存储管理,4.1 概述 4.2 单一连续分配管理 4.3 固定分区存储管理 4.4 可变分区存储管理 4.5 页式存储管理 4.6 段式存储管理 4.7 段页式存储管理 4.8 虚拟存储管理 4.9 覆盖和交换技术,4.1 存储管理概述,【存储器的分类】 内存储器:CPU能直接访问的存储器 外存储器 :CPU不能直接访问的存储器,【存储管理的主要目的】 尽可能方便用户和提高主存储器的使用效率,使主存储器在成本、速度和规模之间获得较好的权衡。,【存储管理的功能】 内存的分配与回收 地址映射(地址重定位) 存储保护 虚拟存储器(存储扩充),4.1.1 存储分配与回收,内存分

2、配按分配时机的不同,可分为两种方式: 静态存储分配 指内存分配是在作业运行之前各目标模块连接后,把整个作业一次性全部装入内存。 动态存储分配 作业的全部信息不是一次性全部装入内存,而是在作业运行期间根据需要逐步完成。,4.1.2 地址映射(地址重定位),【内存空间(物理空间)】 内存是由若干个存储单元组成的,每个存储单元有一个编号,这种编号可唯一标识一个存储单元,称为内存地址(或物理地址)。,【逻辑空间】 源程序经过汇编或编译后,形成目标程序,每个目标程序都是以0为基址顺序进行编址的,原来用符号名访问的单元用具体的数据单元号取代。这样生成的目标程序占据一定的地址空间,称为作业的逻辑地址空间,简

3、称逻辑空间。在逻辑空间中每条指令的地址和指令中要访问的操作数地址统称为逻辑地址。,地址映射,物理地址空间,goto L1; L1:a=3;,源程序,goto 200 a=3,100,编译连接,逻辑地址空间,BA=1000,0,200,299,1100,1000,1200,1299,源程序、逻辑地址空间、物理地址空间的关系,【地址映射(地址重定位)】 为了保证CPU执行指令时可正确访问存储单元,需将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址,这一过程称为地址映射。,静态地址重定位 在程序执行之前完成 动态地址重定位 在程序执行期间进行的,1000,3456,.,.,.,.,.,.,

4、LOAD A 1200,.,.,.,.,.,.,1100,1200,1300,物理地址空间,静态重定位示意图,0,3456,.,.,.,.,.,.,LOAD A 200,.,.,.,.,.,.,0,100,200,299,.,.,.,.,.,.,.,.,.,LOAD A 200,3456,逻辑地址空间,1100,1200,1300,物理地址空间,200,逻辑地址,+,1000,重定位寄存器,动态重定位示意图,地址转换机制示意图,课程导论,CPU,MMU,内存,磁盘 控制器,总线,虚拟地址,物理地址,MMU:内存管理单元,4.1.3 存储保护,除了被允许共享的部分之外,各进程不能对别的进程的程序

5、和数据段产生干扰和破坏。因此必须对内存中的程序和数据段采取保护措施。,1. 防止地址越界,每个进程都有相对独立的存储空间,如果进程运行时产生的地址超出其地址空间,则发生地址越界。 地址越界可能侵犯其他进程的空间,因此应该防止地址越界。一旦发生越界产生中断,由操作系统进行相应处理。,(1)上、下界存储保护,系统为每个作业设置一对上、下界寄存器,分别存放当前运行作业在内存空间的上、下边界地址,用它们来限制用户程序的活动范围。,下界寄存器,上界寄存器,20k,25k,256k-1,作业,25k,20k,0k,(2)基址-限长存储保护,系统为每个作业设置一个基址寄存器(存放该作业在内存中的首址)和一个

6、限长寄存器(存放该作业的长度)。,基址寄存器,限长寄存器,20k,5k,256k-1,作业,25k,20k,0k,2. 防止操作越界,对自身区域的信息,可读可写; 对允许共享公共区域的信息,可读不可写; 对不允许共享的信息,不可读不可写。,对于允许多个进程共享的公共区域,每个进程都有自己的访问权限。例如,有些进程可以执行写操作,而其他进程只能执行读操作等等。,4.1.4 内存扩充,为了提高系统运行多道程序的能力,为了使用户在编制程序时不受内存实际容量的限制,可以将外存作为主存的扩充部分供用户程序使用,即内存扩充。 内存扩充现在普遍采用虚拟存储技术。 虚拟存储技术的基本思想是:由操作系统把有限的

7、内存空间与大容量的外存统一管理起来,构成一个远大于实际内存的、虚拟的存储器。此时,用户并不会感觉到内、外存的区别。,4.2 单一连续分配管理,【基本原理】 内存除操作系统占用部分之外,全部为一个用户作业所独占。,【局限】 仅能用于单道系统中。,【存储空间的回收】 作业一旦进入主存,就要等到它结束后才能释放主存,再装入第二个作业即可。,【存储空间的分配】 作业大小用户区大小? 成立,把作业装入用户区。 不成立,无法装入。,【优点】 管理简单,只需要很少的软硬件支持,便于用户了解和使用。,【缺点】 存储资源严重浪费。不支持虚拟存储器的实现。,4.3 固定分区存储管理,【基本思想】 系统将内存的用户

8、区预先划分成若干个固定大小不等的区域,每一个区域称为“分区”。一个作业只能装入一个分区;一个分区只能装入一个作业。 分区划分的原则一般由系统操作员或操作系统决定。分区一旦划分结束,在整个执行过程中,分区大小、数目都保持不变。,【数据结构】,分区分配表:,状态栏的值: “0”表示分区空闲 作业名表示这个分区被该作业占有。,【存储空间的回收】 作业运行结束时,根据作业名到分区分配表中把该作业所占分区的状态置成“0”。,【存储空间的分配】 当作业申请内存时,系统顺序检查分区分配表,为其选择一个空闲适当的分区,并修改状态栏信息。,【固定分区的特点】 地址重定位:采取静态地址重定位方法 存储保护:采用上

9、、下界寄存器保护方式 内存扩充:采用覆盖和交换技术,【优点】 简单,实现只需很少的软、硬件支持。,【缺点】 分区总数固定,限制了并发执行的作业数目。 容易产生内部碎片(当分区较大作业较小时,主存空间浪费严重),碎片问题,【碎片】 内存中出现的一些零散的小空闲区域称为碎片。由于碎片都很小,因此无法再利用。,【解决“碎片”的方法】 移动所有的占用区域,使所有的空闲区合并成一片连续区域。这一过程称为紧凑(拼接)。,4.4 可变分区存储管理,【基本思想】 为有效解决固定分区的内部碎片问题,在作业装入内存时建立分区,使分区的大小正好与作业要求的存储空间相等。 因此,内存中分区的数目和大小都是不确定的。,

10、数据结构,(1)已分分区表 记录主存中已分配作业分区的情况,作业名,(2)空闲分区表 记录主存中空闲分区的情况,OS 10K,A(20k),B(15k),C(10k),D(20k),0K,10K,38K,48K,68K,80K,110K,127K,空闲区表,已分配区表,作业A、B、C、D、E依次进入内存,A进入(20k) B进入(15k) C进入(10k) D进入(20k) A回收(20k) C回收(10k) E进入(8k),存储空间的分配与回收,已分分区表(0个记录) 空闲分区表(1个记录) 初始时整个用户区为空闲区,(1)初始化,(2)作业j提出内存申请,采取某种策略从空闲分区表中找一个不

11、小于作业的空闲区,装入作业。 已分分区表中增加一个记录 修改空闲分区表相应记录的始址和大小; 若找不到一个空闲区,则显示主存不足的信息。,常用的可变分区管理的分配算法有:,最先适用分配算法,原理 按地址递增顺序寻找第一个能满足存储要求的空闲区。 特点 算法简单 空闲分区按地址递增的顺序连接在一起。 低地址空间频繁进行分配、回收工作,容易在低地址空间产生过多的小碎片;而下一次分配又从第地址开始遍历,查找时间长。 碎片造成存储空间浪费。 改进 采用循环首次适应算法。,最优适应分配算法,原理 寻找一个能满足作业存储要求的最小空闲区 特点 空闲分区按分区长度由小到大顺序连接在一起。(分配和回收时系统开

12、销比最先适应算法大) 尽量不分割大的空闲区,不易产生较大的外碎片,节约空间; 空闲区分割下来的外碎片很小;容易产生外碎片,降低主存空间的利用率;,最坏适应分配算法,原理 寻找最大的空闲区分割给作业使用 特点 空闲分区按分区长度递减的顺序连接在一起。(分配和回收时系统开销大) 优点:避免产生碎片 缺点:影响大作业的分配;,上述三种算法各有特长,针对不同的请求队列,它们的效率和功能是不一样的。,(3)存储空间的回收,当一个作业运行结束后,在已分分区表中找到该作业,根据该作业所占主存的始址和大小,去修改空闲分区表相应的记录。其修改情况分4种,如图所示(斜线部分为已被作业占有的主存区域)。 最后,在已

13、分分区表中删除该分区的记录。,(1)回收的分区前后没有相邻的空闲分区。 空闲分区表增加一条记录 (2)回收分区的前面有相邻的空闲区。 空闲分区表中找到这个空闲区(空闲分区的始址空闲分区的大小=回收分区的始址) 修改上空闲区(大小=原大小+回收分区的大小) (3)回收分区的后面有相邻的空闲分区 空闲分区表中找到这个空闲区(回收分区的始址+回收分区的大小=空闲分区的始址) 修改下空闲区(始址=回收分区的始址,大小=回收分区的大小+空闲区的大小) (4)回收分区的前后都有相邻的空闲分区 空闲分区表中找到这两个空闲区 修改上空闲区(大小=上空闲区大小+回收分区的大小+下空闲区大小) 删除下空闲区的记录

14、。,地址转换,静态重定位 动态重定位,存储保护,基址-限长存储保护方式。,管理特点,分区的长度不是预先固定的,而是按作业的实际需求来划分的。 分区的个数也不是预先确定的,而是由装入的作业数决定的。 分区的大小由作业的大小来定,提高了主存的使用效率。 在主存分配过程中,会产生许多主存“碎片”。主存“碎片”是指小的无法使用的主存空间。使主存空间仍有一定的浪费。,分区管理的缺点,存在严重的碎片问题导致内存的利用率不高。 由于各作业或进程对应于不同的分区以及在分区内各作业或进程连续存放,进程的大小仍受分区大小或内存可用空间的限制。 不利于程序段和数据的共享,4.5 页式存储管理,【物理块】 将内存空间

15、划分成大小相等的若干区域,每个区称为物理块(块)。,【块号】 内存的所有块从0开始编号,称为块号。,【块内地址】 每个块内从0开始依次编址。称为块内地址。,4.5.1 基本思想,(1)内存空间的划分,【页号】 程序的各个逻辑页从0开始依次编号,称作页号。,【页】 将用户程序的逻辑空间按照同样大小也划分成若干区域,每个区域称为页。,【页内地址】 每个逻辑页内单元从0开始编址,称为页内地址。,(2)逻辑空间的划分,程序的逻辑地址=页号+页内地址 页号的长度决定了分页的多少 页内地址的长度决定了页面的大小。,【页面大小的选择】 页面太大转变为可变分区 (页面大小和作业逻辑空间相差无几) 页面太小增加

16、系统开销,【页的划分】 用户程序的划分是由系统自动完成的,对用户是透明的。,以块为单位,按程序的页面分配 逻辑空间对应的逻辑地址是连续的 逻辑上相邻的页面在内存中的物理块不一定相邻,(3)分配原则,4.5.2 数据结构,(1)页表 记录用户程序逻辑页面与内存物理块之间的对应关系。 系统为每个进程在内存建立一个页表, 用户程序的逻辑空间有多少页,该页表就有多少条记录,且按逻辑页的顺序排列。 页表存放在内存系统区内。,【页表】,(2)请求表 整个系统设置一个请求表。,作业名,页表始址,页表长度,页表中的最大序号,【请求表】,(3)空闲物理块的管理位示图 记录内存中各物理块是否已被分配出去 整个系统设置一张 包括标志位和空闲块数,【位示图】,4.5.3 存储空间的分配与回收,(1)初始化 页表:(无) 请求表:无记录 位示图:标志位全部置为“0”;空闲块数置为内存用户区的总块数。,计算作业i的页数n,n空闲块数,F,T,创建页表; 填制请求表;,(2)作业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号