第6章存储器管理.pptx
《第6章存储器管理.pptx》由会员分享,可在线阅读,更多相关《第6章存储器管理.pptx(90页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第6章存储器管理计算机作为信息处理的工具,其重要的特点之一是具有存储能力。计算机的存储系统主要包括内存储器和外存储器。内存储器为执行内存,存放处理器执行时所需要的所有代码和数据。外存储器是辅助存储器,存放需要长期保存的信息。外存储器保存的信息必须进入内存储器后才能被处理器运行。存储器管理是操作系统的主要功能之一,本章所述的存储器管理是指对内存储器的管理。虽然计算机系统的内存容量不断增大,但仍然难以满足软件发展的需求。对内存资源管理是否有效,不仅关系到内存本身的利用率,还关系到整个系统性能和效率。内存管理分为连续管理方式和离散管理方式。连续管理方式将用户程序连续放置在内存,适合单道程序环境。离散
2、管理方式将用户程序以分页或分段方式放置在内存,适合多道程序环境。离散分配方式也是实现虚拟存储器管理的基础。本章针对传统存储器管理进行讲解,虚拟存储器管理在下一章中讲述。第1页/共90页本章的主要内容如下:l存储器管理概述l连续存储管理l分页式存储管理l分段式存储管理第2页/共90页6.1存储器管理概述6.1.1存储器的层次对计算机存储系统的基本要求是存储容量大、存取速度快、成本价格低。按照计算机的体系结构,计算机存储系统可以划分为3个层次,分别是:处理器寄存器和高速缓存、内存储器、外存储器,如图6.1所示。图图6.1 计算机存储系统层次划分计算机存储系统层次划分第3页/共90页6.1.2存储管
3、理目的和功能1 1、主存储器的分配和回收 内存分配的主要任务是为每一道程序分配内存空间,使它们“各得其所”。2 2、提高主存储器的利用率,减少不可用的存储空间(称为“零头),允许多道程序动态共享主存。3 3、存储保护 内存保护的任务是确保每道程序都在自己的内存空间运行,互不干扰。4、内存扩充 内存扩充的任务是从逻辑上来扩充内存容量,使用户认为系统所拥有的内存空间远比其实际的内存空间(硬件RAMRAM)大的多。5 5、地址重定位第4页/共90页6.1.3程序准备执行用户用高级语言编写的源用户用高级语言编写的源程序,需要经过编译、链程序,需要经过编译、链接和装入之后,才能被处接和装入之后,才能被处
4、理器运行。理器运行。编译将用户用高级语言编译将用户用高级语言编写的源程序转换为目标编写的源程序转换为目标模块;链接将用户程序需模块;链接将用户程序需要的所有目标模块链接在要的所有目标模块链接在一起,形成一个可执行模一起,形成一个可执行模块,即装入模块;装入将块,即装入模块;装入将装入模块放入内存。装入模块放入内存。用户程序的编译、链接用户程序的编译、链接和装入过程之间的关系如和装入过程之间的关系如图图6.2所示所示图图6.2 程序的编译、链接、加载程序的编译、链接、加载第5页/共90页6.1.3程序准备执行(续)1链接链接是将用户程序所需要的所有目标模块链接在一起的过程。链接的方式有静态链接、
5、装入时动态链接和运行时动态链接。(1)静态链接静态链接指链接过程在程序装入内存前完成并形成整个程序的逻辑地址空间。通常,由编译产生的所有目标模块的起始地址可能都是从0开始,每个模块中的程序代码地址都是相对于模块的起始地址。经过静态链接后,模块的地址重新编排,改写相关的地址。第6页/共90页6.1.3程序准备执行(续)图图6.3 程序链接程序链接模块ACALL Breturn模块BCALL Creturn模块Creturn0L-10M-10N-1模块AJSR Lreturn模块BJSR L+Mreturn模块Creturn链接后链接前第7页/共90页6.1.3程序准备执行(续)(2)装入时动态链
6、接经编译后的模块在装入内存准备运行前进行链接优点:便于修改和更新程序便于共享,节省外存空间缺点:共享模块并没有减少内存占用量(3)运行时动态链接在执行过程中若发现需要的某目标模块没有装入内存链接,则将它装入内存并链接。优点:模块共享提高内存利用率第8页/共90页6.1.3程序准备执行(续)2装入目标模块放入内存的过程为装入过程。装入过程实现了程序的逻辑地址和物理地址之间的变换。装入过程有三种方式,分别为:绝对装入方式、静态重定位装入方式和动态重定位装入方式。绝对装入:程序使用绝对地址编写,装入内存时装入到程序规定的地方,不需要进行地址变换。静态重定位装入:程序使用逻辑地址编写,装入内存后在执行
7、之前进行地址变换。动态重定位装入:程序使用逻辑地址编写,装入内存后在执行每条指令存取内存前进行地址变换。第9页/共90页6 6.1 1.4 地址重定位1.名字空间、地址空间和存储空间 符号地址:在源程序中,是通过符号名来访问子程序和数据的,这些符号名实际代表了地址,称为符号地址。例如,变量,子程序名,函数名,标号等。名字空间:我们把程序中符号名的集合称为“名字空间”。逻辑地址/程序地址/虚地址:程序中使用的从0开始进行编址的地址,可以是一维或二维地址。(逻辑)地址空间/程序空间:程序中逻辑地址的集合。内存地址/物理地址/绝对地址:内存单元的地址物理空间/存储空间/内存空间:内存地址的集合,是一
8、维线性空间。第10页/共90页6 6.1 1.4 地址重定位-1-1地址重定位:要把它装入内存执行,就要确定装入内存的实际物理地址,并修改程序中与地址有关的代码,把逻辑地址变换为物理地址,这个过程称为地址重定位。程序的名字空间、地址空间和存储空间之间的关系如图所示 汇编/编译 地址重定位 连 接 装 入 名字空间 地址空间 存储空间 (相对地址/逻辑地址空间)(绝对地址/物理地址空间)符 号源 程 序相对目标程序(装配模块)绝对目标程序第11页/共90页6 6.1 1.4 4 地址重定位-2-2 地址重定位完成把相对地址转换成内存中的绝对地址,这个过程称为地址映射(map)。按照重定位的时机,
9、可分为静态重定位和动态重定位。静态重定位 静态重定位是在程序执行之前进行重定位。它根据装配模块将要装入的内存起始地址,直接修改装配模块中的有关使用地址的指令。在图中以“0”作为参考地址的装配模块,要装入以1000为起始地址的存储空间。显然在装入程序之前,程序必须做一些修改才能正确运行。第12页/共90页6 6.1 1.4 地址重定位-3-3 0 0:10000 10000:100:LOAD 1,(2500)10100:LOAD 1,(12500)2500:365 12500:365 2600:12600:程序的地址空间 内存的地址空间例如:LOAD 1,2500 这条指令是把相对地址为2500
10、的存储单元的内容365装入1号累加器。而这时内容为365的存储单元的实际物理地址为12500(起始地址10000+相对地址2500),所以LOAD 1,2500 这条指令中的直接地址码要作相应的修改,即改为LOAD 1,12500。第13页/共90页6 6.1 1.4 地址重定位-4-4 在程序中需要修改的位置称为重定位项。程序装入内存中的起始地址称为重定位因子。为了支持静态重定位,连接程序在生成统一地址空间和装配模块时,还应产生一个重定位项表。所以操作系统的装入程序要把装入模块和重定位项表一起装入内存。由装配模块的实际装入起始地址得到重定位因子,然后取重定位项,加上重定位因子得到欲修改位置的
11、实际地址,最后对实际地址中的内容再加上重定位因子,从而完成指令代码的修改。当完成重定位后,就可以启动程序执行。优点:无须硬件支持的优点 缺点:一是程序重定位以后就不能在内存中移动;二是要求程序的存储空间是连续的,不能把程序存储到若干个不连续的区域中。第14页/共90页6 6.1 1.4 地址重定位-5-5动态重定位 动态重定位是指在程序执行过程中进行地址重定位,即在每次访问内存单元前才进行地址变换。动态重定位可使装配模块不加任何修改就装入内存,但是它需要硬件重定位寄存器的支持。下图给出了动态重定位的示意图。程序的目标模块在装入内存时,与地址有关的指令都无须进行修改,如在图中LOAD 1,250
12、0这条指令中仍保持相对地址2500。当该模块被操作系统调度到处理机上执行时,操作系统首先把该模块装入的实际起始地址减去目标模块的相对基地址(图中该模块的基地址为0),然后将其差值装入重定位寄存器。当CPU取一条访问内存的指令时,地址变换硬件逻辑自动将指令中的相对地址与重定位寄存器中的值相加,再根据和值作为内存的绝对地址去访问该单元的数据。第15页/共90页 100006.1.4 6.1.4 地址重定位-6-6 重定位寄存器 0:10000:100:LOAD 1,(2500)10100:LOAD 1,(2500)+2500:365 12500:365 2600:12600:程序的地址空间 内存的
13、地址空间 第16页/共90页6 6.1 1.4 地址重定位-7-7 优点:(1)目标程序装入内存时无需任何修改,所以装入之后再移动也不会影响其正确运行,这便于存储器用紧缩来解决存储器的碎片问题。(2)一个程序由若干个相对独立的目标模块组成时,每个目标模块各装入一个存储区域,这些存储区域可以不相领接,只要各个模块有自己对应的重定位寄存器就可以了。(3)可以部分装入内存,程序就可以运行 (4)便于多个进程共享同一程序副本。缺点:(1)需要硬件支持 (2)实现存储管理的算法较复杂。第17页/共90页6.2连续分配存储方式6.2.1单一连续分配 思想:这是一种最简单的存储管理方式,但只能用于单用户、单
14、任务的操作系统,如在8位和16位微机上CP/M和MS-DOS操作系统。它将内存分为两个区:系统区:仅供操作系统使用,通常设置在内存的低段;用户区:指除系统区以外的全部内存空间,提供给用户使用。存储保护:设置基址界限寄存器对。缺点:只支持单道程序运行不能充分利用内存空间不能实现虚拟存储第18页/共90页6.2.2固定分区(FixedPartitioning)分配思想:固定式分区是在作业装入之前,内存就被划分成若干个分区。划分工作可以由系统管理员完成,也可以由操作系统实现。然而一旦划分完成,在系统运行期间不再重新划分,即分区的个数不可变,分区的大小不可变,所以,固定式分区又称为静态分区。这种分区方
15、式一般将内存的用户区域划分成大小不等的分区,以适应不同大小的作业的需要。管理机构:系统有一张分区说明表,每个表目说明一个分区的大小、起始地址和是否已分配的使用标志。分区说明表和内存分配图如下所示。第19页/共90页0k:20k:第1分区(16kb)36k:第2分区(32kb)(已分配)68k:第3分区(64kb)(已分配)132k:第4分区(124kb)(未分配)256k:(b)内存分配图6.2.2固定分区分配-1-1区号 大小 起址标志 1 16KB 20K已分配 2 32KB36K已分配 3 64KB 68K已分配 4 124KB 132K 未分配 (a)分区说明表 操作系统作业A(16k
16、)作业B(26k)作业C(56k)第20页/共90页内存管理:分配算法和回收算法存储保护:设置基址界限寄存器对评价优点:支持多道程序缺点:易产生碎片 不支持虚拟存储 不能充分利用内存,当空闲分区之和能满足某程序而单个不能满足时,程序不能运行。?PCBPCB中与该管理配套的参数第21页/共90页6.2.3动态/可变式(DynamicPartitioning)分区分配思想:可变式分区是指在作业装入内存时,从可用的内存中划出一块连续的区域分配给它,且分区大小正好等于该作业的大小。可变式分区中分区的大小和分区的个数都是可变的,而且是根据作业的大小和多少动态地划分,因此又称为动态式分区。这种存储管理技术
17、是固定式分区的改进,既可以获得较大的灵活性,又能提高内存的利用率。可变式分区的分配和释放的基本思想是:在分配时,首先找到一个足够大的空闲分区,即这个空闲区的大小比作业要求的要大,系统则将这个空闲分区分成两部分:一部分成为已分配的分区,剩余的部分仍作为空闲区。在回收撤除作业所占领的分区时,要检查回收的分区是否与前后空闲的分区相领接,若是,则加以合并,使之成为一个连续的大空间。第22页/共90页ExampleDynamicPartitioningOperating SystemProcess 1320 KProcess 2Process 3224 K288 K64 KOperating Syste
18、mProcess 1320 KProcess 3224 K288 K64 KOperating SystemProcess 1320 KProcess 3288 K64 KProcess 4128 K96 K第23页/共90页ExampleDynamicPartitioningOperating System320 KProcess 3288 K64 KProcess 4128 K96 KOperating SystemProcess 3288 K64 KProcess 4128 K96 KProcess 2224 k96 K第24页/共90页6.2.3动态/可变式分区分配-2管理机构空闲区表
19、形式 空闲分区表为每个尚未分配的分区设置一个表项,包括分区的序号、大小、始址和状态。空闲区链形式 为了实现对空闲分区的分配和链接,在每个分区的起始部分,设置一些用于控制分区分配的信息(如分区的大小和状态位),以及用于链接其它分区的前向指针;在分区尾部,则设置了一个后向指针,为了检索方便也设置了控制分区分配的信息。然后,通过前、后向指针将所有的分区链接成一个双向链表。第25页/共90页0k:20k:52k:116k:164k:260k:512k:(c)内存分配图可变式分区数据结构图表 序号P P大小起址状态 1 14848k k116k116k空闲 2 2252252k k260k260k空闲
20、3 3空表目 4 4空表目 5 5空表目 (a)空闲分区表 操作系统作业1(32k)作业2(64k)空闲区(48k)作业4(96k)空闲区(252k)前向指针 N+2 00后向指针 N+2 00N个字节可用第26页/共90页0k:20k:52k:116k:164k:260k:512k:(c)内存分配图可变式分区数据结构图表 序号P P大小起址状态 1 13232k k20k20k已分配 2 26464k k52k52k已分配 3 39696K K164k 164k 已分配 4 4空表目 5 5空表目 (a)已分配分区表 操作系统作业1(32k)作业2(64k)空闲区(48k)作业4(96k)空
21、闲区(252k)前向指针 N+2 00后向指针 N+2 00N个字节可用(b)已分配分区链结构第27页/共90页分区分配算法(PartitioningPlacementAlgorithm)最佳适应算法(Best Best FitFit):它从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小。为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按大小从小到大进行排序,自表头开始查找到第一个满足要求的自由分区分配。首次适应算法(First First FitFit):从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法目的在于减少查找时间
22、。为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到高进行排序。循环首次适应算法:该算法是首次适应算法的变种。在分配内存空间时,不再每次从表头(链首)开始查找,而是从上次找到的空闲区的下一个空闲区开始查找,直到找到第一个能满足要求的的空闲区为止,并从中划出一块与请求大小相等的内存空间分配给作业。该算法能使内存中的空闲区分布得比较均匀。最坏适应法:从所有未分配的分区中挑选最大的且大于和等于作业大小的分区分给要求的作业;空闲分区按大小由大到小排序。第28页/共90页DynamicPartitioningPlacementAlgorithmLastallocatedblock(14K)
23、BeforeAfter8K8K12K12K22K18K6K6K8K8K14K14K6K2K36K20KNext FitFree blockAllocated blockBest FitFirst Fit例:分配一个16KB分区第29页/共90页3。UNIX分配回收算法(采用空闲分区表结构和首次适应算法)UNIX空闲分区表数据结构 Coremap m_addrm_size.m_addrm_size=0.m_addrm_sizem_addrm_sizem_addrm_sizem_addrm_size空闲分区表中的空闲分区要按地址从低到高连续排序,最后一个空闲分区中 m_size为0表示以上表目空白
24、。空闲分区表起始地址为coremap分配和释放的基本思想是:在分配时,首先找到一个足够大的空闲分区,即这个空闲区的大小比作业要求的要大,系统则将这个空闲分区分成两部分:一部分成为已分配的分区,剩余的部分仍作为空闲区。在回收撤除作业所占领的分区时,要检查回收的分区是否与前后空闲的分区相领接,若是,则加以合并,使之成为一个连续的大空间。第30页/共90页UNIX分配算法框图申请分配一个u.size大小的分区从头开始查表是否检索完毕?本次无法分配m.size=u.size m.size-u.sizeaa或m.size=0不是第一个表目与前一可用区相 邻?与后一可用分区相邻且不为空表 目?把所释放的可
25、用区 与前一分区合并所释放的可用区与一可用区合并所 释 放 可用 区 的size=0?与后一可用 区 相邻?与后一可用区合并将该表目以上的所有表目下移一格 返 回mfree是否第34页/共90页存储保护:评价:优点:支持多道程序相对于固定分区,在一定程度上减少了碎片。缺点:仍然存在碎片不支持虚拟存储 不能充分利用内存,当空闲分区之和能满足某程序而单个不能满足时,程序不能运行。第35页/共90页6.2.4动态重定位分区分配思想:与动态分区一样,但分区可以移动以便把较小的空闲分区合并成一个较大的空闲分区,因而需要动态重定位的支持。1、拼接/紧凑 可变式分区也有零头问题。在系统不断地分配和回收中,必
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 存储器 管理
限制150内