第六章 存储管理.ppt
《第六章 存储管理.ppt》由会员分享,可在线阅读,更多相关《第六章 存储管理.ppt(135页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、西安理工大学高科学院李杨Emai:第六章第六章 存储管理存储管理6.1 6.1 存储管理的基本概念存储管理的基本概念6.2 6.2 单道程序下的存储管理单道程序下的存储管理 6.3 6.3 分区存储管理分区存储管理6.4 6.4 分页存储管理分页存储管理6.5 6.5 分段存储管理分段存储管理6.6 6.6 段页式存储管理段页式存储管理6.7 6.7 虚拟存储器的实现虚拟存储器的实现6.1 存储管理的基本概念 存储器是计算机系统的重要资源之一。因为任何程序和数据以及各种控制用的数据结构都必须占用一定的存储空间,因此,存储管理直接影响系统性能。存储器由内存(primary storage)和外存
2、(secondary storage)组成。本章讨论的主要是内存管理问题。6.1.1 存储管理的对象和目标 存储管理主要针对主存储器中存储管理主要针对主存储器中用户区域用户区域进行管理,同时,进行管理,同时,也包括对辅存储器的管理。也包括对辅存储器的管理。操作系统核心用户区域w快速缓存Data CacheTLB(Translation Lookaside Buffer,变换索引缓冲区)w内存:DRAM,SDRAM等w外存:软盘、硬盘、光盘、磁带等存储层次结构存储层次结构存取速度成本增加容量减少存储管理的目的w充分利用内存,为多道程序并发执行提供存储基础w尽可能方便用户使用自动装入用户程序用户程
3、序中不必考虑硬件细节w系统能够解决程序空间比实际内存空间大的问题6.1.2 存储管理的基本功能 存储分配和回收:按按照照一一定定的的算算法法把把某某一一空空闲闲的的主主存存区区分分配配给给作作业业或或进进程程以及回收系统或用户释放的空间。以及回收系统或用户释放的空间。地址变换:将程序地址空间中使用的逻辑地址变换成主存中的地址的过程将程序地址空间中使用的逻辑地址变换成主存中的地址的过程程序加载程序加载(装入装入)时的重定位技术时的重定位技术可执行文件生成中的链接技术可执行文件生成中的链接技术进程运行时硬件和软件的地址变换技术和机构进程运行时硬件和软件的地址变换技术和机构 存储共享和保护:保保证证
4、用用户户程程序序(或或进进程程映映象象)共共享享主主存存中中的的数数据据,并并且且在在各自的存储区域内操作,互不干扰。各自的存储区域内操作,互不干扰。代码和数据共享代码和数据共享地址空间访问权限(读、写、执行)地址空间访问权限(读、写、执行)存储器扩充:使用户程序的大小和结构不受主存容量和结构的限制。使用户程序的大小和结构不受主存容量和结构的限制。由应用程序控制:由应用程序控制:覆盖;由由OS控制:控制:交换(整个进程空间),(整个进程空间),虚拟存储的请求调入和预调入(部分进程的请求调入和预调入(部分进程空间)空间)6.1.3 存储分配方式 直接分配方式:程程序序员员在在编编写写程程序序时时
5、,或或编编译译程程序序对对源源程程序序进进行行编编译译时时,所所用的就是实际的存储地址。用的就是实际的存储地址。前提:事先确定一个作业在主存中的位置;前提:事先确定一个作业在主存中的位置;缺点:存储空间的利用率不高,对用户使用不方便。缺点:存储空间的利用率不高,对用户使用不方便。静态分配:在在作作业业装装入入内内存存时时才才确确定定它它们们在在内内存存中中的的位位置置,并并在在其其整整个个运运行行期间不能在内存中移动,也不能再申请内存空间。期间不能在内存中移动,也不能再申请内存空间。前提:一个作业装入内存时必须分配其要求的全部存储量,并且退出前不释放;前提:一个作业装入内存时必须分配其要求的全
6、部存储量,并且退出前不释放;缺点:在多道程序系统中不能有效地共享存储器资源。缺点:在多道程序系统中不能有效地共享存储器资源。动态分配:在在作作业业装装入入内内存存时时才才确确定定它它们们在在内内存存中中的的位位置置,但但在在其其整整个个运运行行期期间间可可以以再再申申请请内内存存空空间间,也也可可在在内内存存中中移移动动。一一个个作作业业已已占占有有的的存存储储区区不不再再需需要要时时,可以归还给系统。可以归还给系统。所谓存储分配,主要是讨论和解决多道作业之间共享主存的存储空间的问题。需要解决的问题:When,How,或是把一个作业的全部或是部分信息分配在主存中。解决存储分配的问题,有三种方式
7、:w目前绝大多数系统都采用的是静态或动态存储分配方式w分析用户程序的主要处理阶段:编辑:形成源文件编译:形成目标模块链接:由多个目标模块或程序库生成可执行文件装入:构造PCB,形成进程(使用物理地址)运行:建立的进程在CPU在执行w装入阶段:程序必须装到内存才能运行,这需要装入程序根据内存的使用情况和分配策略,将上述装入模块放入分到的内存中。这时,可能要进行地址映射(重定位)6.1.4 地址重定位 直接分配方式:程程序序员员在在编编写写程程序序时时,或或编编译译程程序序对对源源程程序序进进行行编编译译时时,所所用的就是实际的存储地址。用的就是实际的存储地址。前提:事先确定一个作业在主存中的位置
8、;前提:事先确定一个作业在主存中的位置;缺点:存储空间的利用率不高,对用户使用不方便。缺点:存储空间的利用率不高,对用户使用不方便。静态分配:在在作作业业装装入入内内存存时时才才确确定定它它们们在在内内存存中中的的位位置置,并并在在其其整整个个运运行行期间不能在内存中移动,也不能再申请内存空间。期间不能在内存中移动,也不能再申请内存空间。前提:一个作业装入内存时必须分配其要求的全部存储量,并且退出前不释放;前提:一个作业装入内存时必须分配其要求的全部存储量,并且退出前不释放;缺点:在多道程序系统中不能有效地共享存储器资源。缺点:在多道程序系统中不能有效地共享存储器资源。动态分配:在在作作业业装
9、装入入内内存存时时才才确确定定它它们们在在内内存存中中的的位位置置,但但在在其其整整个个运运行行期期间间可可以以再再申申请请内内存存空空间间,也也可可在在内内存存中中移移动动。一一个个作作业业已已占占有有的的存存储储区区不不再再需需要要时时,可以归还给系统。可以归还给系统。所谓存储分配,主要是讨论和解决多道作业之间共享主存的存储空间的问题。需要解决的问题:When,How,或是把一个作业的全部或是部分信息分配在主存中。解决存储分配的问题,有三种方式:6.1.4 地址重定位w逻辑地址(相对地址,虚地址):用户的程序经过汇编或编译后形成目标代码,目标代码通常采用相对地址的形式。其首地址为0,其余指
10、令中的地址都相对于首地址来编址。不能用逻辑地址在内存中读取信息。w物理地址(绝对地址,实地址):内存中存储单元的地址。物理地址可直接寻址。w地址映射:将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址。当程序装入内存时,操作系统要为该程序分配一个合适的内存空间,由于程序的逻辑地址与分配到内存物理地址不一致,而CPU执行指令时,是按物理地址进行的,所以要进行地址转换。内存的物理组织w物理地址:把内存分成若干个大小相等的存储单元,每个单元给一个编号,这个编号称为内存地址(物理地址、绝对地址、实地址),存储单元占8位,称作字节(byte)。w物理地址空间:物理地址的集合称为物理地址空间(主存
11、地址空间),它是一个一维的线性空间。程序的逻辑结构w 程序地址:用户编程序时所用的地址(或称逻辑地址、虚地址),基本单位可与内存的基本单位相同,也可以不相同。w 程序地址空间(逻辑地址空间、虚地址空间):用户的程序地址的集合称为逻辑地址空间,它的编址总是从0开始的,可以是一维线性空间,也可以是多维空间。重定位(地址映射):在可执行文件装入时需要解决可执行文件中地址(指令和数据)和内存地址的对应。由操作系统中的装入程序loader来完成。重定位的概念作业地址空间内存空间装入365LOAD 1,2500500025001000365LOAD 1,25001500012500100001100036
12、5LOAD 1,1250015000125001000011000w重定位方法:地址映射的功能就是要建立虚实地址的对应关系,实现地址映射有三种方式:绝对装入:编程或编译时确定地址映射关系可重定位装入(静态地址映射):程序执行前,装入内存时一次性链接装入程序。动态装入(动态地址映射):处理机每次访问主存时,有动态地址变换机构(硬件)自动执行。绝对装入w绝对装入:编程或编译时确定地址映射关系 编程时确定虚实地址的关系是指在用机器指令编程时,程序员直接按物理内存地址编程,这种程序在系统中是不能做任何移动的,否则就会出错。w优点:装入过程简单。w缺点:过于依赖于硬件结构,不适于多道程序系统。静态装入w
13、 静态地址映射:在程序装入内存时完成从逻辑地址到物理地址的转换的。在一些早期的系统中都有一个装入程序(加载程序),它负责将用户程序装入系统,并将用户程序中使用的访问内存的逻辑地址转换成物理地址。如下图所示。w 优点:实现简单,不要硬件的支持。w 缺点:一个程序通常需要占用连续的内存空间,程序装入内存后不能移动。不易实现共享。动态装入w动态地址映射:动态地址映射是在程序执行时由系统硬件完成从逻辑地址到物理地址的转换的。w系统中设置了重定位寄存器:由操作系统用特权指令来设置,比较灵活。w动态地址映射是在执行时完成的,程序中不执行的程序就不做地址映射的工作,这样节省了CPU的时间。w实现动态地址映射
14、必须有硬件的支持。现代计算机系统中都采用动态地址映射技术。覆盖(overlay)w引入:其目标是在较小的可用内存中运行较大的程序。常用于多道程序系统,与分区存储管理配合使用。w原理:一个程序的几个代码段或数据段,按照时间先后来占用公共的内存空间。将程序的必要部分必要部分(常用功能)的代码和数据常驻内存常驻内存;可选部分可选部分(不常用功能)在其他程序模块中实现,平时存存放在外存放在外存中(覆盖文件),在需要用到时才装入需要用到时才装入到内存;不存在调用关系的模块不必同时装入到内存,从而可以相互覆盖。(即不同时用的模块可共用一个分区不同时用的模块可共用一个分区)6.1.5 覆盖与交换技术注:另一
15、种覆盖方法:(100K)A(20K)占一个分区:20K;B(50K)、D(20K)和E(40K)共用一个分区:50K;F(30K)和C(30K)共用一个分区:30K;交换(swapping)w引入:多个程序并发执行,可以将暂时不能执行的暂时不能执行的程序程序或就绪状态的进程就绪状态的进程送到外存中,从而获得空闲获得空闲内存空间内存空间来装入新程序。交换单位为整个进程的地交换单位为整个进程的地址空间址空间。常用于多道程序系统或小型分时系统中,与分区存储管理配合使用。又称作对换对换或或滚进滚进/滚出滚出(roll-in/roll-out);程序暂时不能执行的可能原因程序暂时不能执行的可能原因:处于
16、阻塞状态,低优先级(确保高优先级程序执行);w原理:暂停暂停执行内存中的进程,将整个进程的地址空间保存到外存保存到外存的交换区中(换出swap out),而将外存中由阻塞变为就绪的进程的地址空间读入读入到内存中,并将该进程送到就绪队列(换入swap in)。交换与覆盖区别:交换不需要程序员给出程序段之间的覆盖结构,而 覆盖要求明确给出程序段之间的覆盖结构。交换是进程之间或作业之间进行,而覆盖主要在同 一作业内来进程内进行内。同时覆盖程序段与被覆 盖程序段之间是无关的。6.2 单道程序环境下的存储管理w单用户连续存储管理又称单分区模式,适用于单用户情况,任何时刻主存储器中最多只有一道程序主存空间
17、划分为系统区和用户区地址转换与存储保护:w地址转换:物理地址=界限地址+逻辑地址多采用静态重定位,采用栅栏寄存器进行存储保护动态重定位,采用定位寄存器进行存储保护单用户连续存储管理的缺点:w同单道程序的缺点,系统利用率低6.3 分区存储管理 分区存储管理是满足多道程序设计的最简单的一种存储管理方法,它允许多个用户程序同时存在系统内存中,即共享内存空间。w原理:把内存分为一些大小相等或不等的分区(partition),除操作系统占用一个分区外,其余分区用来存放每个进程的程序和数据。w特点:适用于多道程序系统和分时系统支持多个程序并发执行难以进行内存分区的共享。w问题:可能存在内碎片和外碎片。内碎
18、片:占用分区之内未被利用的空间外碎片:占用分区之间难以利用的空闲分区(通常是小空闲分区)。w按分区的时机,分区管理可以分为:固定分区法:作业执行前把内存固定地划分区域;动态分区法:在作业的处理过程中划分区域。6.3.1 固定分区法w原理:分区大小可以不相等 分区大小相等:适合于多个相同程序的并发执行。分区大小不等:多个小分区、适量的中等分区、少量的大分区。根据程序的大小,分配当前空闲的、适当大小的分区。分区个数不变,大小不变w内存分配管理数据结构:分区说明表(分区号、分区大小、起始地址、分区状态)由内存分配程序检索分区说明表,找到符合要求的分区。固定分区(大小相同)固定分区(多种大小)固定式分
19、区内存分配示意图(固定式分区内存分配示意图(a)固定式分区说明表(固定式分区说明表(b)w固定分区分配操作(分配算法流程)查找分区说明表第一项表结束否?该分区空闲吗?X分区长度?修改状态位为正在使用返回分区号继续检索下一个表项YYNNNY请求X大小分区无法分配w存储保护与重定位(地址转换)每个分区(一道程序)对应一对界地址寄存器:上/下限寄存器。采用静态重定位方式,即由链接/装入程序完成。w优缺点优点:简单,要求的硬件支持少;缺点:存在大的碎片,主存利用率低。w存储保护类型界限保护(上界寄存器/下界寄存器或基址寄存器/限长寄存器):所有访问地址必须在上下界之间;每个进程都有自己独立的进程空间,
20、如果一个进程在运行时所产生的地址在其地址空间之外,则发生地址越界。当程序要访问某个内存单元时,由硬件检查是否允许,如果允许则执行,否则产生地址越界中断,由操作系统进行相应处理。上下界保护w 下界寄存器:存放程序装入内存后的开始地址(首址)w 上界寄存器:存放程序装入内存后的末地址w 判别式:下界寄存器 物理地址 上界寄存器w例:有一程序装入内存的首地址是500,末地址是1500,访问内存的逻辑地址是500、345、1200。下界寄存器:下界寄存器:500 上界寄存器:上界寄存器:1500 逻辑地址装入内存的首地 物理地址 1、500500 1000 500 1000 1500 2、345500
21、 845 500 845 1500 3、1200500 1700 500 1700 1500基址、限长寄存器保护w 例:有一程序装入内存的首地址是500,末地址是1500,访问内存的逻辑地址是500、345、1200。基址寄存器:500 限长寄存器:1000 判别式:逻辑地址限长寄存器 1、500 1000 2、345 1000 3、1200 1000 6.3.2 动态分区法w 系统生成后,操作系统占用内存的一部分,一般在物理内存的开始处,比如,一个操作系统占20KB,装入系统后占用020KB的内存空间,剩下的部分作为一个空闲区,当一个用户程序(作业、进程)调入内存时,把这个空闲区的低地址部分
22、的区域分配给它,如图所示。w动态分区的分配算法:从可用表或自由链中找到一个足以容纳该作业的可用空白区;若这个空白区比所需求大,则将它分成2个部分:一部分成为已分配区,剩下部分仍为空白区。修改可用表或自由链,并回送一个所分配区的序号或该分区的始址。w从空白区中寻找空闲空间是关键。从空白区中寻找空闲空间是关键。w寻找空白区方法的不同:分区分配是对可用表(或寻找空白区方法的不同:分区分配是对可用表(或自由链)数据结构进行操作,空闲区表的组织有两自由链)数据结构进行操作,空闲区表的组织有两种方法:种方法:w按空闲区大小空闲区大小的升序(降序)组织;w按空闲区首址空闲区首址升序(降序)组织。w通常有3种
23、寻找空白区的方法:最先适应法最先适应法最佳适应法最佳适应法最坏适应法最坏适应法w最先匹配法最先匹配法(first-fit):按分区起始地址的递增起始地址的递增次序,从头查找,找到符合要求的第一个分区。该算法的分配和释放的时间性能较好时间性能较好,一旦找到大于或等于所要求内存长度的分区,则结束探索。w最佳匹配法最佳匹配法(best-fit):按分区大小的递增次序分区大小的递增次序,查找,找到符合要求的第一个分区。当申请空闲区时,存储管理程序从表头开始查找,当找到一个满足要求的空闲区时,停止查找,此时的空白区必定是最合适的,因为它是最接近于要求的大小最接近于要求的大小。w最坏匹配法最坏匹配法(wo
24、rst-fit):按分区大小的递减次序分区大小的递减次序,从头查找,找到符合要求的第一个分区。找到最大的空闲分区最大的空闲分区查找空闲分区链表第一项检索完否?分区大小=size?分区大小=size?划出size大小的分区修改有关的数据结构返回将该分区从链表中移出继续检索下一个表项YYYNNN最先适应算法流程最先适应算法流程分配策略最先适应法最最先先适适应应法法(首首次次适适应应算算法法):首次适应算法的表是按空闲区首址升序的(即空闲区表是按空闲区首址从小到大)方法组织的。w 分配时从表首开始,以请求内存区的大小逐个与空闲区进行比较,找到第一个满足要求的空闲后,若空闲区大小与请求区的大小相等,则
25、将该空闲区分配给请求者,并撤消该空闲区所在表目;若大于请求区,就将该空闲区的一部分分配给请求者,然后,修改空闲区的大小和首址。w 切 割 空 闲 区 有 两 种 方 法:从 空 闲 区 头 开 始 或从空闲区尾开始w空闲区大小50KB,首址156KB,申请34KB。分配策略最佳适应法w最最佳佳适适应应算算法法:空闲区表按空闲区大小升序方法组织。分配时,按申请的大小逐个与空闲区大小进行比较,找到一个满足要求的空闲区,就说明它是最适合的(即最佳的)。分配策略最坏适应法w 最最坏坏适适应应算算法法的空闲区表是按空闲区大小降序的方法组织的(从大到小的顺序)。w 分配时总是取表中的第一个表目,若不能满足
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六章 存储管理 第六 存储 管理
限制150内