操作系统课件-第3章存储管理.ppt
《操作系统课件-第3章存储管理.ppt》由会员分享,可在线阅读,更多相关《操作系统课件-第3章存储管理.ppt(112页珍藏版)》请在三一办公上搜索。
1、第三章 存储管理,什么是存储管理?存储器介绍连续存储空间管理固定分区存储管理可变分区存储管理分页式存储管理分段式存储管理虚拟存储管理,存储空间的分类与性质,讲在前面存储管理目的,操作系统的“方便性”便于用户装入程序,无须了解底层细节可实现动态的存储空间伸缩,适应不同程序的需要操作系统的“合理性”合理分配内存空间,保证多道程序的顺利运行合理保护内存空间,防止各种可能的破坏泄漏操作系统的“有效性”有效保持内存空间的可用性,防止对资源的浪费有效实现“小空间大容量”,提高计算机的适应性有效配合CPU的调度过程,实现系统运行的稳定,讲在前面存储管理功能,内存的管理、分配与回收内存空间的使用情况记录位图、
2、分配表、分区表内存空间的分配与回收定长与不定长、静态与动态地址重定位(地址映射)物理地址与逻辑地址的差别实模式与保护模式共享与保护内存共享:进程与线程、中间件应用内存保护:如何防止地址越界或操作越权?内存的扩充虚拟存储:如何使用小内存空间来运行大的程序?,讲在前面地址空间,程序的名空间用户编程所用的地址称为逻辑地址(或程序地址,或虚地址)。由逻辑地址组成的空间称为逻辑地址空间(或程序地址空间)。内存的每个存储单元都有一个编号,这种编号称为内存地址(或称为物理地址,绝对地址)。内存地址的集合称为内存空间(或物理地址空间)。,源程序经过汇编或编译后,形成目标程序,每个目标程序都是以0为基址顺序进行
3、编址的,原来用符号名访问的单元用具体的数据单元号取代.这样生成的目标程序占据一定的地址空间,称为作业的逻辑地址空间,简称逻辑空间。在逻辑空间中每条指令的地址和指令中要访问的操作数地址统称为逻辑地址。,讲在前面地址空间,把内存分成若干个大小相等的存储单元,每个单元给一个编号,这个编号称为内存地址(物理地址、绝对地址、实地址),存储单元占8位,称作字节(byte)。物理地址的集合称为物理地址空间(主存地址空间),它是一个一维的线性空间。逻辑地址物理地址基址,3.1 程序的装入与链接,程序的执行过程编译:源代码形成(多个)目标模块链接:链接相关库函数,形成装入模块装入:装入内存运行,3.1.1 程序
4、的装入,绝对装入方式可重定位装入方式动态运行时装入方式,逻辑地址与实际内存地址一致适用于单道程序环境,3.1.1 程序的装入,绝对装入方式可重定位装入方式动态运行时装入方式,把用户程序装入内存时对有关指令的地址部分的修改定义为从程序地址到内存地址的地址映射,或称为地址重定位。,静态地址映射,动态地址映射,3.1.1 程序的装入,静态地址映射(静态重定位)程序被装入内存时,由操作系统的连接装入程序完成程序的逻辑地址到内存地址的转换。假定程序装入内存的首地址为BR,程序地址为VR,内存地址为MR,则地址映射按下式进行:MR=BR+VR。例如,程序装入内存的首地址为1000,则装配程序就按MR=10
5、00+VR对程序中所有地址部分进行修改,修改后指令Load A,200就变为Load A,1200,优点:不需要硬件的支持。缺点:程序必须占用连续的内存空间,一旦程序装入后不能移动。,3.1.1 程序的装入,动态地址映射(动态重定位)动态地址重定位是在程序执行的过程中,每次访问内存之前,将要访问的程序地址转换为内存地址。一般来说这种转换是由专门的硬件机构来完成的。最简单的硬件机构是重定位寄存器。在地址重定位机构中,有一个基地址寄存器BR和一个程序地址寄存器VR,一个内存地址寄存器MR。,3.1.1 程序的装入,动态地址映射(动态重定位)过程描述:程序装入内存后,它所占用的内存区的首地址由系统送
6、入基地址寄存器BR中。在程序执行的过程中,若要访问内存,将访问的逻辑地址送入VR中。地址转换机构把VR和BR中的内容相加,并将结果送入MR中,作为实际访问的地址。,3.1.1 程序的装入,动态地址映射(动态重定位)优点:程序占用的内存空间是动态可变的,当程序从某个存储区移到另一个区域时,只需要修改相应的寄存器BR的内容即可。一个程序不一定要求占用一个连续的内存空间。可以部分地装入程序运行。便于多个进程共享同一个程序的代码。,3.1.1 程序的装入,动态地址映射(动态重定位)缺点:需要硬件的支持。实现存储管理的软件算法较为复杂。,存储保护,上、下界存储保护:上、下界保护是一种简单的存储保护技术。
7、系统可为每个作业设置一对上、下界寄存器,分别用来存放当前运行作业在内存空间的上、下边界地址,用它们来限制用户程序的活动范围。基址限长存储保护:上、下界保护的一个变种是采用基址-限长存储保护。,上下界保护,基址限长保护,连续存储空间管理,每个程序(作业)占据主存中连续的空间,按管理方式的不同分为:单用户连续存储管理固定分区存储管理可变分区存储管理,3.2.1 单用户连续存储管理,又称单分区模式,适用于单用户情况,任何时刻主存储器中最多只有一道程序主存空间划分为系统区和用户区地址转换与存储保护:地址转换:物理地址=界限地址+逻辑地址多采用静态重定位,采用栅栏寄存器进行存储保护动态重定位,采用定位寄
8、存器进行存储保护单用户连续存储管理的缺点:同单道程序的缺点,系统利用率低,3.2.2 固定分区存储管理,单用户存储方式每次只能装一个作业,浪费大把整个内存划分为若干大小不等的区域,操作系统占用一个区域,其它区域供系统中的多个进程共享,这种方法称为分区存储管理,可满足多道程序设计。这是最简单的一种存储管理,按分区划分的时机可分为:固定分区分配动态分区分配,3.2.2 固定分区分配,早期支持多道程序的管理方式将用户可使用内存区划分为固定大小,根据作业长度分配内存(分区大小可相等也可不等)支持多道程序的大型机使用,目前几乎不再使用,3.2.2 固定分区分配,有n个分区,则可同时装入n个作业/任务。分
9、区大小:相等不相等,利用率较高(为什么?)内存分配:数据结构 将分区按大小排序,并将其地址、分配标识作记录特点:简单有碎片(内零头),3.2.2 固定分区分配,100K,180K,300K,350K,分配情况,500K,分区说明表,0,课本 P106,性能分析 在作业大小和出现频率均已知的情况下,固定分区是合适的。在这种情况下分区的大小选择与作业大小相当,这样内存的使用效率较高。但是若作业的大小和出现的频率不知道时,势必造成分区的大小和作业的大小相差甚远,这样就会造成存储空间的浪费,从而影响整个系统的效率。,3.2.2 固定分区分配,内存分配与回收多队列最优适配、最小适配、合理适配(种种变化)
10、内存回收机制非常简单,只需要进行分区表操作内存地址的重定位与保护最简单的策略:在调入内存时直接修改指令最严格的办法:密码校验,PSW的使用最普遍的做法:引入硬件基址和界限存储器,3.2.2 固定分区分配,比较适合已知程序(作业)大小和出现频率的情形缺点:实际系统运行时,往往无法预知分区大小(太大,等同于“单用户分区模式”)主存空间利用率仍然较低无法适应动态扩充主存分区数目预先确定,限制了多道运行程序的数量,3.2.3 动态分区分配(可变分区),在系统运行的过程中建立分区,并使分区的大小刚好与作业的大小相等。系统在作业装入主存执行之前并不建立分区。可解决固定分区严重浪费内存的问题。是一种较为实用
11、的存储管理方法。要解决的问题数据结构分区分配算法分区分配操作,3.2.3 动态分区分配,可变分区存储管理示例,OS(8K),Job1(15K),Job2(40K),Job3(10K),Job4(30K),Job1到达内存,Job2到达内存,Job3到达内存,Job2完成,Job4到达内存,8k,23k,53k,63k,73k,3.2.3 动态分区分配,数据结构在动态分区存储管理中,要有相应的数据结构来登记空闲区的说明信息,它包括空闲区的大小和位置。不同系统根据设计要求采用不同的结构。常用的有表结构和队列结构。系统还要设置了等待分区队列,当系统中无空闲区或无满足要求的空闲区时,则把申请者送入等待
12、队列中,等待别的进程释放内存之后再唤醒队列中的进程。,3.2.3 动态分区分配,采用的数据结构分配表用于记录主存的动态分配信息,由“已分配区表”和“未分配区表”组成。,已分配区表,未分配区表,3.2.3 动态分区分配,分配算法在采用分区存储管理的系统中,系统初启后。除操作系统占用一个分区外,其余存储区为一个大的空闲区。分区的分配是指系统根据用户的请求,在空闲区表或空闲区队列中寻找一个满足用户要求的空闲区,把这个空闲区分配给用户。以空闲区表为例,当用户要求一个大小为SIZE的存储空间时,系统查询空闲区表,找一个大于或等于SIZE的空闲区。,3.2.3 动态分区分配,分配算法空闲区表或队列的排序按
13、空闲区首址递增的次序按空闲区大小的递增或递减次序,3.2.3 动态分区分配,分区分配的三种情况,系统中无满足要求的空闲区,则分配失败。,空闲区大小与SIZE相等,则修改空闲区表相应表目,向用户返回该空闲区首址,表示此空闲区已分给了要求的用户。,空闲区大于SIZE,这时将空闲区一分为二。,策略一:从空闲区的上部开始划出SIZE大小的空闲区给用户;策略二:从空闲区的底部开始向上划出SIZE大小的空闲区给用户。一般常采用第二种办法,因为这样划分时,余下的部分在空闲区表中的首地址不变,只需要修改一下大小就行了。,3.2.3 动态分区分配,分区分配的算法,首次适应算法FF:原理、优点、缺点要求空闲区按首
14、址递增的次序组织空闲区表(队列),循环首次适应算法:原理、优点、缺点,最佳适应算法:原理、优点、缺点要求按空闲区大小从小到大的次序组成空闲区表(队列)。,最坏适应算法:原理、优点、缺点要求空闲区按大小递减的顺序组织空闲区表(或队列)。,3.2.3 动态分区分配,分区分配的算法:首次适应法(地址递增顺序)分配:当进程申请大小为SIZE的内存时,系统从空闲区表的第一个表目开始查询,直到首次找到等于或大于SIZE的空闲区。从该区中划出大小为SIZE的分区分配给进程,余下的部分仍作为一个空闲区留在空闲区表中,但要修改其首址和大小。回收:按释放区的首址,查询空闲区表,若有与释放区相邻的空闲区,则合并到相
15、邻的空闲区中,并修改该区的大小和首址,否则,把释放区作为一个空闲区,将其大小和首址按照首地址大小递增的顺序插入到空闲区表的适当位置。,3.2.3 动态分区分配,分区分配的算法:首次适应法(地址递增顺序)注意:每次分配和回收后空闲区表或空闲区队列都要按首址递增的次序排序。首次适应法的优点:释放某一存储区时,若与空闲区相邻则合并到相邻空闲分区中去,这种情况并不改变该区在表中的位置,只要修改其大小或首址。尽可能地利用低地址空间,保证高地址空间有较大的空闲区。,3.2.3 动态分区分配,分区分配的算法:首次适应法(地址递增顺序)首次适应法的缺点:造成较多的主存“碎片”循环首次适应算法:每次分配时,是从
16、上次分配的空闲区的下一条记录开始顺序查找空闲分区表,3.2.3 动态分区分配,分区分配的算法:最佳适应法(长度递增顺序)分配:当进程申请一个存储区时,系统从表头开始查找,当找到第一个满足要求的空闲区时,停止查找,并且这个空闲区是最佳的空闲区。所谓最佳即选中的空闲区是满足要求的最小空闲区。回收:按释放区的首址,查询空闲区表(队列),若有与释放区相邻的空闲区,则合并到相邻的空闲区中,并修改该区的大小和首址,否则,把释放区作为一个空闲区插入空闲区表(队列)。分配和回收后要对空闲区表(队列)重新排序。,3.2.3 动态分区分配,分区分配的算法:最佳适应法(长度递增顺序)优点:在系统中若存在一个与申请分
17、区大小相等的空闲区,必定会被选中,而首次适应法则不一定。若系统中不存在与申请分区大小相等的空闲区,则选中的空闲区是满足要求的最小空闲区,而不致于毁掉较大的空闲区。缺点:空闲区的大小一般与申请分区大小不相等,因此将其一分为二,留下来的空闲区一般情况下是很小的,以致无法使用。随着时间的推移,系统中的小空闲区会越来越多,从而造成存储区的大量浪费。,3.2.3 动态分区分配,分区分配的算法:最坏适应法(长度递减顺序)分配:把空闲区按长度递减的次序登记在空闲表中,每次分配时挑选一个最大的空闲区给作业使用。回收:按释放区的首址,查询空闲区表(队列),若有与释放区相邻的空闲区,则合并到相邻的空闲区中,并修改
18、该区的大小和首址,否则,把释放区作为一个空闲区插入空闲区表(队列)。分配和回收后要对空闲区表(队列)重新排序。,3.2.3 动态分区分配,分区分配的算法:最坏适应法(长度递减顺序)最坏适应法看起来公似乎有些荒唐,但在更加严密地考察后,还是有它的优点:当程序装入内存中最大的空闲区后,剩下的空闲区还可能相当大,还能装下较大的程序。另一方面每次仅作一次查询工作。,3.2.3 动态分区分配,分配算法的分析分配算法各有利弊,到底哪种最好不能一概而论,而应针对具体作业序列来分析。对于某一作业序列来说,某种算法能将该作业序列中所有作业安置完毕,那么我们说该算法对这一作业序列是合适的。对于某一算法而言,如它不
19、能立即满足某一要求,而其它算法却可以满足此要求,则这一算法对该作业序列是不合适的。,3.2.3 动态分区分配,例1:有作业序列:作业A要求18K;作业B要求25K,作业C要求30K。系统中空闲区按不同算法组成的空闲区队列经分析可知:最佳适应法对这个作业序列是合适的,而其它算法对该作业序列是不合适的。,3.2.3 动态分区分配练习,有作业序列:作业A要求21K;作业B要求30K,作业C要求25K。,3.2.3 动态分区分配,碎片问题由于空闲区的大小与申请内存的大小相等的情况是很少的,绝大多数情况是从一个空闲区中切去一块,剩下的部分作为一个空闲区仍留在空闲区表中,随着时间的推移,空闲区的发展趋势是
20、越来越小,直至不能满足任何用户要求。这种不能被任何用户使用的极小的空闲区称为碎片。碎片的出现造成了存储空间的浪费。,解决方案 规定门限值(由操作系统规定,如1K),分割空闲区时,若剩余部分小于门限值,则不再分割此空闲区。定期压缩存储空间,将所有空闲区集中到内存的一端,但这种方法的系统开销太大。,3.2.3 分区回收,当一个作业运行结束后,在已分分区表中找到该作业,根据该作业所占主存的始址和大小,修改空闲分区表中相应的记录。其修改情况分为4种:(1)上邻空闲区:合并,改大小(2)下邻空闲区:合并,改大小,首址。(3)上、下邻空闲区:合并,改大小。(4)不邻接,则建立一新表项。课本P112 图3-
21、14,3.2.4 动态分区存储管理实现,地址转换和存储保护设置两个专门的寄存器基址寄存器,存放分区的起始地址限长寄存器,存放分区的长度移动技术将分散的空闲区“拼接”成一个较大的空闲区,以利于大作业的执行移动技术实现复杂,不可避免地导致管理开销增大对换技术把暂时不用的某个程序及数据的一部分或全部从内存移到外存中去,或把指定的程序或数据从外存读到相应的内存中整体对换、页面对换,习题,1、下表给出了某系统的空闲分区表,系统采用可变分区存储管理策略,现有作业序列:96k,20k,200k。若用首次适应算法和最佳适应算法处理该作业序列,那种可以满足该序列的请求?,2、存储分配解决多道作业()的划分问题。
22、为了解决静态和动态存储分配,需采用地址重定位,即把()变换成(),静态重定位由()实现,动态重定位由()实现。:地址空间 符号名空间 主存空间 虚拟空间、:页面地址 段地址 逻辑地址 物理地址 外存地址 设备地址:硬件地址变换机构 执行程序 汇编程序 连接装入程序 调试程序 编译程序 解释程序,3、提高主存利用率主要是通过()功能实现的。()的基本任务是为每道程序做();使每道程序能在不受干扰的环境下运行,主要是通过()功能实现的。、:主存分配 主存保护 地址映射 对换 主存扩充:逻辑地址到物理地址的变换;内存与外存间的交换;允许用户程序的地址空间大于内存空间;分配内存,4、静态重定位是在作业
23、的()中进行的,动态重定位是在作业的()中进行的。、:编译过程;装入过程;修改过程;执行过程5、由固定分区方式发展为分页存储管理方式的主要推动力是();由分页系统发展为分段系统,进而以发展为段页式系统的主要动力分别是()和()。:提高主存的利用率;提高系统的吞吐量;满足用户需要;更好地满足多道程序运行的需要;既满足用户要求,又提高主存利用率。,3.3 分页存储管理,连续存储分配方式,每道程序要求占用连续的空间,会形成很多碎片离散分配方式允许将作业分配到不相邻的分区中,既可免去移动内存信息而产生的工作量,又可充分利用主存空间,尽量减少主存碎片。离散分配方式分为:分页式存储分段式存储段页式存储,3
24、.3.1 分页存储管理基本原理,基本原理:页框:主存空间按物理地址分成多个大小相等区,每个区称为块(又称页框page frame)页面:程序(作业)按逻辑地址分成多个大小相等的区,每个区称为一个页面(page),大小与页框大小相等。页面的典型大小为1k,从0开始编号逻辑地址格式:页号和页内地址,页号,页内地址,地址结构确定了主存储器的分页大小,也决定了页面大小,思考为什么?,3.3.1 分页存储管理基本原理,5,10,2,5,32(页),2,10,1024(每页1024字节),在分配存储空间时,是以页面为单位来分配.例如,一个作业的地址空间有M页,那么只需要分配给他M个页面的存储空间,每一页分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课件 存储 管理
链接地址:https://www.31ppt.com/p-6438026.html