您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 金融资料 > 第九讲 内存管理概述
第九讲存储(内存)管理基础处理器:摩尔定律:每18个月翻一番(集成度-速度)?内存:帕金森定律:内存有多大,程序就有多长内容一、概述二、分区存储管理一、概述1.存储体系2.内存/主存3.存储管理的目的4.存储管理的任务5.单一用户(连续区)存储管理方案1.存储体系主要问题:CPU自身的运算速度很快,内存、外存的访问速度受到限制操作系统协调各存储器的使用使CPU的运算速度得到发挥Cache主存/内存磁盘/外存寄存器速度更快成本更低容量更大CPU2.内存/主存由存储单元(字节或字)组成的一维连续的地址空间•用来存放当前正在运行程序的代码及数据•是程序中指令本身地址所指的、亦即程序计数器所指的存储器(可以由处理器直接访问!)分为系统区与用户区•系统区:用于存放操作系统•用户区:用于装入并存放用户程序和数据3.存储管理的目的•充分利用内存,为多道程序并发执行提供存储基础•尽可能方便用户使用自动装入用户程序用户程序中不必考虑硬件细节•系统能够解决程序空间比实际内存空间大的问题•程序在执行时可以动态伸缩•内存存取速度快•存储保护与安全•共享与通信•了解有关资源的使用状况•实现的性能和代价4.存储管理的任务(1)内存空间的管理、分配与回收(2)存储共享(3)存储保护(4)内存扩充(5)地址转换(1)内存空间的管理、分配与回收–记录内存的使用情况——设置相应的内存分配表(内存分配、回收的依据)–内存空间划分问题?静态或动态,等长或不等长•记录分配状态(内存分配表)的方法–位示图:用一位代表一个页面(0:空闲,1:占用)0…...11…...第0页第1页第i页第n-1页–空闲页面表:包括首页面号和页面个数,连续若干的页面作为一组登记在表中–空闲块表:空闲块首址和空闲块长度,没有记录的区域即为进程所占用•程序与内存的对应关系连续性离散性(存放方式)一次性多次性(装入方式)驻留性交换性(退出方式)•内存分配静态方式:程序要求的内存空间在运行前确定动态方式:程序要求的内存空间在运行前及运行过程中确定•内存回收(2)存储共享两个或多个进程共用内存中相同区域目的:节省内存空间,提高内存利用率实现进程通信(数据共享)共享内容:代码共享,要求代码为纯代码数据共享(3)存储保护为多个程序共享内存提供保障,使在内存中的各道程序,只能访问它自己的区域,避免各道程序间相互干扰,特别是当一道程序发生错误时,不致于影响其他程序的运行通常由硬件完成保护功能,由软件辅助实现•防止地址越界每个进程都有自己独立的进程空间,如果一个进程在运行时所产生的地址在其地址空间之外,则发生地址越界当程序要访问某个内存单元时,由硬件检查是否允许,如果允许则执行,否则产生地址越界中断,由操作系统进行相应处理一般由硬件提供一对寄存器:基址寄存器:存放起始地址限长寄存器:存放长度(或上界寄存器/下界寄存器)•防止操作越权对于允许多个进程共享的存储区域,每个进程都有自己的访问权限。如果一个进程对共享区域的访问违反了权限规定,则发生操作越权,即读写保护(4)内存扩充通过虚拟存储技术实现用户在编制程序时,不应该受内存容量限制,所以要采用一定技术来“扩充”内存的容量,使用户得到比实际内存容量大的多的内存空间具体实现是在硬件支持下,软硬件相互协作,将内存和外存结合起来统一使用(5)地址转换(地址重定位、地址映射)–逻辑地址(相对地址,虚地址)–物理地址(绝对地址,实地址)–地址映射地址映射LoadA2003456。。1200物理地址空间LoadAdata1data13456源程序LoadA20034560100200编译连接逻辑地址空间BA=10001100•逻辑地址(相对地址,虚地址)用户的程序经过汇编或编译后形成目标代码,目标代码通常采用相对地址的形式,其首地址为0,其余指令中的地址都相对于首地址而编址不能用逻辑地址在内存中读取信息•物理地址(绝对地址,实地址)内存中存储单元的地址,可直接寻址•地址转换为了保证CPU执行指令时可正确访问存储单元,需将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址,这一过程称为地址映射原因:当程序装入内存时,操作系统要为该程序分配一个合适的内存空间,由于程序的逻辑地址与分配到内存物理地址不一致,而CPU执行指令时,是按物理地址进行的,所以要进行地址转换03456......LOADA200......0100200300.........LOADA2003456逻辑地址空间110012001300物理地址空间200VR+1000BR•静态地址转换当用户程序被装入内存时,一次性实现逻辑地址到物理地址的转换,以后不再转换一般在装入内存时由软件完成•动态地址转换在程序运行过程中要访问数据时再进行地址变换即在逐条指令执行时完成地址映射一般为了提高效率,此工作由硬件地址映射机制来完成。硬件上需要一对寄存器的支持5.单一用户(连续区)存储管理方案单用户系统在一段时间内,只有一个进程在内存,故内存分配管理十分简单,内存利用率低。内存分为两个区域,一个供操作系统使用,一个供用户使用用户程序位于RAM中的操作系统0xFFF...0位于RAM中的操作系统用户程序0ROM中的设备驱动程序用户程序位于RAM中的操作系统0二、分区存储管理满足多道程序运行的、最简单的存储管理方案系统把内存用户区划分为若干分区分区大小可以相等,也可以不等一个进程占据一个分区•固定分区•可变分区1.固定分区预先把可分配的内存空间分割成若干个连续区域每一区域称为分区每个分区的大小可以相同也可以不同分区大小固定不变每个分区装一个且只能装一个作业内存管理:设置内存分配表108k占用P128k16k空闲324k32k占用P2456k64k空闲5120k128k占用P3分区号起始地址长度状态进程根据分配表查找合适的分区执行完毕时释放内存分区4分区3分区2分区1操作系统多个等待队列单个等待队列分区4分区3分区2分区1操作系统2.可变分区•基本思想内存不是预先划分好的作业装入时,根据作业的需求和内存空间的使用情况来决定是否分配若有足够的空间,则按需要分割一部分分区给该进程;否则令其等待内存空间•内存管理未分配(空闲)区表记录了空闲区的起始地址和长度已分配区表记录了已分配区的起始地址、长度和程序0K15K38K48K68K80K110K120K空闲区表已分配区表始址长度标志15K23K未分配48K20K未分配80K30K未分配空空始址长度标志0K15KP138K10KP268K12KP3110K10KP4空空0K15K38K48K68K80K110K120K空闲区表已分配区表始址长度标志15K23K未分配48K20K未分配98K12K未分配空空始址长度标志0K15KP138K10KP268K12KP3110K10KP480K5KP585K13KP685K98K内存分配策略(1)首先适应算法将最先找到的第一个满足长度的空闲区分配给进程(2)最佳适应算法将满足长度的、最小空闲区分配给进程(3)最坏适应算法将满足长度的、最大空闲区分配给进程可变分区管理的分配算法1)最先适应分配算法2)下次适应分配算法3)最优适应分配算法4)最坏适应分配算法5)快速适应分配算法查找和分配算法比较(1)•从搜索空闲区速度及主存利用率来看,最先适用分配、下次适应分配和最佳适应算法比最坏适应算法性能好。•如果空闲区按从小到大排列,则最先适用分配算法等于最优适应分配算法。•如果空闲区按从大到小排列,则最先适用分配算法等于最坏适应分配算法。查找和分配算法比较(2)•空闲区按从小到大排列时,最先适用分配算法能尽可能使用低地址区,从而高地址空间有较大的空闲区容纳大的作业。•下次适应分配算法会使存储器空间得到均衡使用。•最优适应分配算法的主存利用率最好,但可能会导致空闲区分割下来的部分很小。查找和分配算法比较(3)•处理某种作业序列时,最坏适应分配算法可能性能最佳,它选择最大空闲区,使得分配后剩余下来的空闲区不会太小,仍能用于再分配。•最先适应算法简单、快速,在实际的操作系统中用得较多;其次是最佳适应算法和下次适应算法。可变分区地址转换与存储保护基址基址寄存器逻辑地址CPU绝对地址操作系统区空闲分区1用户作业1空闲分区2限长限长寄存器限长越界中断•内存回收当某一块归还后,前后空间合并,修改内存空闲块表考虑:上邻、下邻、上下相邻、上下不相邻•“碎片”问题经过一段时间的分配回收后,内存中存在很多很小的空闲块它们每一个都很小,不足以满足分配要求;但其总和满足分配要求这些空闲块被称为碎片造成存储资源的浪费•“碎片”问题解决紧凑技术:通过在内存移动程序,将所有小的空闲区域合并为大的空闲区域问题:开销大移动时机?操作系统作业1空闲区作业2空闲区作业3空闲区操作系统作业1作业2作业3空闲区操作系统作业1作业2作业3空闲区作业4•分区的保护设置界地址寄存器保护键•优点便于动态申请内存便于共享内存•缺点碎片问题(外碎片),内存利用率不高受实际内存容量限制
本文标题:第九讲 内存管理概述
链接地址:https://www.777doc.com/doc-3922119 .html