《存储器管理》PPT课件.ppt

上传人:tian****1990 文档编号:7905718 上传时间:2020-03-25 格式:PPT 页数:94 大小:7.19MB
返回 下载 相关 举报
《存储器管理》PPT课件.ppt_第1页
第1页 / 共94页
《存储器管理》PPT课件.ppt_第2页
第2页 / 共94页
《存储器管理》PPT课件.ppt_第3页
第3页 / 共94页
点击查看更多>>
资源描述
第3章存储器管理 主讲 周文强课程 操作系统 本章内容 3 1存储器管理概述3 2单一连续分配管理方式3 3分区存储管理方式3 4覆盖技术与对换技术 3 1存储管理概论 存储器是计算机系统的重要资源之一 存储管理直接影响系统性能 因为任何程序和数据以及各种控制用的数据结构都必须占用一定的存储空间 存储器由内存和外存组成 内存 也称主存 是CPU能直接存取指令和数据的存储器 存储器分类 内存 硬盘 缓存的引入 用于解决主存访问速度与CPU处理速度不相匹配的一种部件 由集成于CPU芯片中的专门的高速存取电路实现 或用于解决辅存访问速度与CPU处理速度不相匹配的一种部件 由主存的一部分实现 需要解决缓存内容与原内容不一致的问题 内存的在系统中的地位 高速缓存器 内存 外存 存储器容量减少 每位存储器成本增加 存储器存取速度加快 存储器存取时间减少 程序和数据可以被CPU直接存取 程序和数据必须先移到内存 才能被CPU访问 三级存储器结构 3 1 1存储体系 存储器管理 存储管理是操作系统的重要组成部分 负责管理计算机系统的重要资源 主存储器主要内容包括 主存储空间的分配和去配地址转换和存储保护主存储空间共享主存储空间扩充存储管理主要针对主存储器中用户区域进行管理 同时 也包括对辅存储器的管理 操作系统核心 用户区域 3 1 2存储器管理的主要功能 内存的分配和回收 静态 动态 地址变换逻辑地址 物理地址转换方式 静态重定位 程序 作业 装入时实现地址转换的一次完成动态重定位 必须借助硬件实现 CPU访问程序指令和数据之前实现地址转换 内存的共享主存储器资源的共享某一主存区域的共享内存的保护防止操作系统和各用户程序在主存储器中各存储区域访问时相互干扰保护操作系统占有的主存区保护各程序的私有主存区保护可供多个程序访问的主存共享区内存的扩充 3 1 3地址变换 为使程序正确执行 一个程序装入内存 要进行逻辑地址到物理地址的重定位 实现从逻辑地址到物理地址的变换 重定位可分为静态重定位和动态重定位 1 逻辑地址 逻辑地址 相对地址 虚地址 用户的程序经过汇编或编译后形成目标代码 目标代码通常采用相对地址的形式 其首地址为0 其余指令中的地址都相对于首地址来编址 不能用逻辑地址在内存中读取信息 2 物理地址 物理地址 绝对地址 实地址 内存中存储单元的地址 物理地址可直接寻址 3 地址变换 地址变换 将虚拟空间中已链接和划分好的内容装入内存 并将虚拟地址映射为内存地址的问题 称之为地址重定位或地址映射 实现地址映射的方式 对可执行程序 静态重定位动态重定位 静态重定位 在可执行文件中 列出各个需要重定位的地址单元和相对地址值 当用户程序被装入内存时 一次性实现逻辑地址到物理地址的转换 以后不再转换 一般在装入内存时由软件完成 即 装入时根据所定位的内存地址去修改每个重定位地址项 添加相应偏移量 评价 优点 不需硬件支持 可以装入有限多道程序缺点 一个程序通常需要占用连续的内存空间 程序装入内存后不能移动 不易实现共享 说明 重定位表中列出所有修改的位置 如 重定位表的150表示相对地址150处的内容为相对地址 即100为从0起头的相对位置 在装入时 要依据重定位后的起头位置 2000 修改相对地址 重定位修改 重定位表中的150 绝对地址2150 2000 150 内容修改 内容100变成2100 100 2000 动态重定位 动态重定位是在程序执行时由系统硬件完成从逻辑地址到物理地址的转换的 动态重定位是由硬件地执行时完成的 程序中不执行的程序就不做地址映射的工作 这样节省了CPU的时间 重定位寄存器的内容由操作系统用特权指令来设置 比较灵活 实现动态地址映射必须有硬件的支持 并有一定的执行时间延迟 现代计算机系统中都采用动态地址映射技术 动态重定位优缺点 优点 OS可以将一个程序分散存放于不连续的内存空间 可以移动程序 有利用实现共享 能够支持程序执行中产生的地址引用 如指针变量 而不仅是生成可执行文件时的地址引用 缺点需要硬件支持 通常是CPU OS实现较复杂 它是虚拟存储的基础 3 1 4各种存储管理方式 对内存的存储管理方式 根据是否把作业全部装入 全部装入后是否分配到一个连续的存储区域 可以分为如下几种管理方式 最早出现的一种存储管理方式 在主存中仅驻留一道程序 整个用户区为一用户独占 当用户作业空间大于用户区时 该作业不能装入 这种分配方式仅能用于单用户 单任务的操作系统中 不能用于多用户系统和单用户多任务系统中 3 2单一连续分配管理方式 3 2 1基本原理 在单用户连续存储管理方式下 内存中仅驻留一道程序 整个用户区被一用户独占 1 1 当用户作业空间大于用户区时 该作业不能装入 2 当用户作业空间小于用户区时 剩余的一部分空间实际上被浪费掉了 在这种管理方式下 存储器利用率极低 仅能用于单用户单任务的操作系统 不能用于多用户系统和单用户多任务系统中 单一连续分配 浪费 单一连续分配仅适用于单道程序设计环境 处理机 主存都不能得到充分的利用 特点 1 管理简单 它把主存分为两个区 用户区一次只能装入一个完整的作业 且占用一个连续的存储空间 它需要很少的软硬件支持 且便于用户了解和使用 2 在主存中的作业不必考虑移动的问题 并且主存的回收不需要任何操作 3 资源利用率低 不管用户区有多大 它一次只能装入一个作业 这样造成了存储空间的浪费 使系统整体资源利用率不高 4 这种分配方式不支持虚拟存储器的实现 3 2 2内存空间的分配 在单一连续分配存储管理方式下 任何时刻内存中最多只有一个作业 适合于单道运行的计算机系统 采用这种存储管理方式时 内存分为两个分区 如图3 5所示 1 系统区 系统区是仅提供给操作系统使用的内存区 通常驻留在内存的低地址部分 2 用户区 用户区是指除系统区以外的内存空间 提供给用户使用 单一连续分配过程 等待装入内存的作业排成一个作业队列 当内存中无作业或一个作业执行结束 允许作业队列中的一个作业装人内存 分配过程是 首先 从作业队列中取出队首作业 判断作业的大小是否大于用户区的大小 若大于则作业不能装入 否则 可以把作业装入用户区 它一次只能装人一个作业 3 2 3地址变换与存储保护 1 地址变换单一连续分配存储管理方式下 内存空间采用静态分配方式 作业一旦进入内存 就要等到它执行结束后才能释放内存 因此 在作业被装入内存时 一次性完成地址转换 界限寄存器和基地址寄存器 1 界限寄存器用来存放内存用户区的长度 2 基地址寄存器用来存放用户区的起始地址 一般情况下这两个寄存器的内容是不变的 只有当操作系统占有的存储区域改变时才会改变 其转换过程如图3 6所示 地址转换过程 1 处理器在执行用户程序指令时 检查不等式 逻辑地址 界限地址 2 如果成立 产生一个 地址越界 中断事件 暂停程序执行 由操作系统处理 以达存储保护目的 3 否则 就与基地址寄存器中的基址相加 得到物理地址 对应于内存中的一个存储单元 2 存储保护 单用户连续存储管理方式下 处理器在执行指令时 通过比较逻辑地址和界限寄存器的值 来控制产生 地址越界 中断信号 以达到存储保护的目的 主要原因在于 1 内存由用户独占 不可能存在受其他用户程序干扰的问题 2 可能出现的破坏行为也只是由用户程序自己去破坏操作系统 其后果并不严重 只是影响该用户程序的运行 3 用户程序也很容易通过系统的再启动而重新装入内存 3 3分区存储管理方式 单用户存储管理方式每次只能允许一个作业在内存运行 当内存较大且作业较小时 单用户存储管理方式对内存空间的浪费太大 让内存同时装入多个作业 可以把内存划分成若干个连续区域 称为分区 每个用户占有一个 分区存储管理是为了适应多道程序设计技术而产生的最简单的存储管理方式 分区的方式可以归纳成固定分区和可变分区两类 3 3 1固定分区存储管理方式 固定分区是指系统预先把内存中的用户区划分成若干个固定大小的连续区域 每一个区域称为一个分区 每个分区可以装入一个作业 一个作业也只能装入一个分区中 这样就可以装入多个作业 使它们并发执行 分区的划分方式有以下两种 1 分区大小相等缺点 当程序太小时 会造成内存空间的浪费 当程序太大时 可能因为分区的大小不足以装入该程序而使之无法运行 2 分区大小不等 在内存中划分出多个较小的分区 适量的中等分区及少量的大分区 1 对于小程序 可分配小分区2 大 中程序到来时 可分配大分区 如图3 7所示 2 分区分配表 在固定分区存储管理方式下 为了记录各个分区的使用情况 方便内存空间的分配与回收操作 为分区建立一张分配表 分区分配表一般采用顺序存储方式 即用数组存储 其中各表项包括分区序号 分区大小 起始地址和使用状态 如图3 8所示 区号大小起址标志116KB20K已分配232KB36K已分配364KB68K已分配4124KB132K未分配 a 固定分区分配表 0k 20k 第1分区 16kb 36k 第2分区 32kb 已分配 68k 第3分区 64kb 已分配 132k 第4分区 124kb 未分配 256k b 内存分配图 3 地址变换 由于固定分区方式是预先把内存划分成若干个区 每个分区只能放一个作业 因此作业在执行过程中不会改变分区的个数和大小 所以 地址转换采用静态重定位方式 即在作业被装人内存时 一次性地完成地址变换 下限寄存器和上限寄存器 在固定分区存储管理方式下 处理器设置两个寄存器 下限寄存器和上限寄存器 1 下限寄存器用来存放分区的低地址 即起始地址 2 上限寄存器用来存放分区的高地址 即末地址 一般情况下这两个寄存器的内容是随着处理作业的不同而改变的 它们从分区分配表中获取该分区的起始地址和末地址 起始地址 分区大小 1 地址变换过程如图3 9所示 地址转换过程是 CPU获得的逻辑地址首先与下限寄存器的值相加 产生物理地址 然后与上限寄存器的值比较 1 若大于上限寄存器的值 产生 地址越界 中断信号 由相应的中断处理程序处理 2 若不大于上限寄存器的值 则该物理地址就是合法地址 它对应于内存中的一个存储单元 案例分析 例3 1 在某系统中采用固定分区分配管理方式 内存分区 单位字节 情况如图3 10a所示 现有大小为1KB 9KB 33KB 121KB的多个作业要求进人内存 试画出它们进入内存后的空间分配情况 并说明内存浪费有多大 解 采用固定分区存储管理方式 作业进人系统后的分配情况如图3 10b所示 内存浪费512KB 20KB 1KB 9KB 33KB 121KB 328KB 3 3 2可变分区存储管理方式 在固定分区存储管理方式中 对于内存的分区大小是固定的 这样很容易造成小作业空间分配对内存空间的浪费 为了让分区的大小与作业的大小相一致 可以采取可变分区存储管理方式 1 基本原理 可变分区是指系统不预先划分固定区域 而是在作业装入时根据作业的实际需要动态地划分内存空间 克服固定分区方式中的内存空间的浪费 有利于多道程序设计 实现了多个作业对内存的共享 进一步提高了内存资源利用率 系统在作业装人内存执行之前并不建立分区 当要装入一个作业时 根据作业需要的内存量查看内存中是否有足够的空间 1 若有 则按需要量分割一个分区分配给该作业 2 若无 则令该作业等待内存空间 存在的问题 随着作业的装入 撤离 内存空间被分成许多个分区 有的分区被作业占用 而有的分区是空闲的 当一个新的作业要求装入时 必须找一个足够大的空闲区 把作业装入该区 如果找到的空闲区大于作业需要量 则作业装入后又把原来的空闲区分成两部分 一部分被作业占用了 而另一部分又分成为一个较小的空闲区 当一个作业运行结束撤离时 它归还的区域如果与其他空闲区相邻 则可合成一个较大的空闲区 如图3 11 2 采用的数据结构 在可变分区存储管理方式中 内存中分区的数目和大小随作业的执行而不断改变 为了实现分区分配 系统中必须配置相应的数据结构 用来记录内存的使用情况 包括空闲分区的情况和使用分区的情况 为作业分配内存空间提供依据 为此 设置了两个表 即已分分区表和空闲分区表 如表3 1和表3 2所示 1 已分分区表 记录当前已经分配给用户作业的内存分区 包括分区序号 分区大小 起始地址和状态 2 空闲分区表 记录当前内存中空闲分区的情况 包括空闲分区序号 分区大小 起始地址和状态 空闲分区表也可以组织成链表的形式 叫空闲分区链 3 分区分配算法 首次适应算法 循环首次适应算法 最佳适应算法 最差适应算法 首次适应算法 首次适应算法的空闲链是对空闲分区按照地址从低到高的顺序排列起来 为进程选择分区时总是按地址从低到高搜索 只要找到可以容纳该进程的空闲区 就把该空闲区切割出进程大小 分配给该进程 余下的空闲分区仍留在空闲链中 若从链首直至链尾都不能找到一个能满足要求的分区 则此次内存分配失败返回 其缺点是低址部分不断被划分 会留下许多难以利用的 很小的空闲分区 即碎片 而每次查找又都是从低址部分开始 这无疑会增加查找可用空闲分区链时的开销 首次适应算法 循环首次适应算法 循环首次适应算法的空闲链是对空闲分区按照地址从低到高的顺序排列起来 同上 每次分区时 总是从上次查找结束的地方开始 只要找到一个足够大的空闲区 就把该空闲区切割出进程大小 分配给该进程 余下的空闲分区仍留在空闲链中 该算法能使内存中的空闲分区分布得更均匀 从而减少了查找空闲分区时的开销 但这样会缺乏大的空闲分区 循环首次适应算法 最佳适应算法 最佳适应算法的空闲链是按空闲区从小到大顺序排列 为进程选择分区时总是寻找其大小最接近进程所要求的存储区域 所谓 最佳 是指每次为进程分配内存时 总是把能满足要求 又是最小的空闲分区分配给进程 避免 大材小用 因为每次分配后所切割下来的剩余部分总是最小的 这样将加速碎片的形成 最佳适应算法 最差适应算法 最差适应算法的空闲链是按空闲区从大到小顺序排列 与最佳适应法相反 它为进程选择存储区时 总是寻找最大的空白区 最差适应算法可以延缓小空闲区的形成 但是无法保留大空闲区 这给以后到大的进程分配内存空间带来了困难 内存紧缩 compaction 技术 最差适应算法 4 分区的回收 当一个作业运行结束后 在已分分区表中找到该作业 根据该作业所占内存的始址和大小 去修改空闲分区表相应的记录 其修改情况分为四种 如图3 12所示 斜线部分为被作业占有的内存区域 1 回收的分区前后没有相邻的空闲分区在空闲分区表中要增加一条记录 该记录的始址和大小 即为回收分区的始址和大小 如图3 12a所示 2 回收分区的前面有相邻的空闲区在空闲分区表中找到这个空闲分区 查找的方法是比较空闲分区的始址 空闲分区的大小与回收分区的始址是否相等 修改这个空闲分区的大小 即加上回收分区的大小 始址不变 如图3 12b所示 3 回收分区的后面有相邻的空闲分区在空闲分区表中找到这个空闲分区 查找的方法是回收分区的始址 回收分区的大小与空闲分区的始址比较是否相等 修改这个空闲分区的始址和大小 始址为回收分区的始址 大小为回收分区的大小与空闲分区的大小之和 如图3 12c所示 4 回收分区的前后都有相邻的空闲分区在空闲分区表中找到这两个空闲分区 修改前面相邻的空闲区的大小 其始址不变 大小改为相邻两个空闲分区和回收分区的大小之和 然后从空闲分区表中删除后一个相邻空闲分区的记录 如图3 12d所示 5 地址变换与存储保护 1 地址变换因为空闲分区的个数和大小 以及作业的个数和大小都不能预先确定 所以 可变分区存储管理方式一般采用动态重定位方式装入作业 它需要设置硬件地址转变机构 两个专用寄存器 即基址寄存器和限长寄存器 以及一些加法 比较电路 地址转换过程如下 1 当作业占用处理器时 进程调度把该作业所占分区的起始地址送入基址寄存器 把作业所占分区的最大地址送入限长寄存器 2 作业执行过程中 处理器每执行一条指令 都要由硬件的地址转换机构把逻辑地址转换成物理地址 3 当取出一条指令后 把该指令中的逻辑地址与基址寄存器内容相加得到物理地址 该物理地址必须满足物理地址 限长寄存器的值 此时允许指令访问内存单元的地址 否则产生 地址越界 中断 不允许访问 基址寄存器和限长寄存器总是存放占用处理器的作业所占分区的始址和末址 一个作业让出处理器时 应先把这两个寄存器的内容保存到该作业所对应进程的PCB中 然后再把新作业所占分区的始址和末址存入这两个专用寄存器中 如图3 14所示 2 存储保护 系统设置了一对寄存器 称为 基址寄存 和 限长寄存器 用它记录当前在CPU中运行作业在内存中所占分区的始址和末址 当处理器执行该作业的指令时必须核对表达式 始址 绝对地址 末址 是否成立 若成立 就执行该指令 否则就产生 地址越界 中断信号 停止执行该指令 运行的作业在让出处理器时 调度程序选择另一个可运行的作业 同时修改当前运行作业的分区号和基址寄存器 限长寄存器的内容 以保证处理器能控制作业在所在的分区内正常运行 3 3 3紧凑技术 随着作业的装入 撤离 内存空间被分成许多个分区 也造成较多的内存 碎片 而在连续分配内存的方式中 必须把一个系统程序或用户程序装入到一个连续的内存空间 如果在系统中有若干个小的分区 其总容量大于要装入的程序 但由于它们不邻接 该程序也不能装入内存 碎片问题解决 将内存中的所有作业进行移动 使它们相邻接 这样 原来分散的多个内存碎片便拼接成了一个大的空闲分区 从而可以把作业装入运行 这种通过移动 把多个分散的小分区拼接成大分区的方法称为 紧凑 或 拼接 也称为 合并 移动 如图3 15所示 案例分析 例3 4 某系统内存的分配情况如图3 16a所示 系统采用可变式分区存储管理策略 现有大小为100KB的作业请求加载运行 若用首次适应算法来处理这个作业 能否满足该作业的请求 假设作业1 作业2 作业3没有和外围设备交换信息 可以采用什么方法解决 解 用首次适应算法给100KB的作业分配空间 内存的空闲区大小分别为20KB 50KB 40KB 作业不能分配 由于作业1 作业2 作业3没有和外围设备交换信息 可以采用紧凑技术 如图3 16b所示 移动之后 空闲区大小为110KB 可以分配作业 如图3 16c所示 3 4覆盖技术与对换技术 单用户连续存储方式和分区存储方式对作业大小都有严格的限制 当作业要求运行时 系统将作业的全部信息一次装入内存并一直驻留内存直至运行结束 当作业的大小大于内存可用空间时 该作业就无法运行 覆盖与交换是解决大作业与小内存矛盾的两种存储管理技术 它们实质上对内存进行了逻辑扩充 3 4 1覆盖技术 通常一个作业由若干个功能上相互独立的程序段组成 作业在一次运行时 只用到其中的几段 可以让那些不会同时执行的程序段共用同一个内存区 因此 把可以相互覆盖的程序段叫做覆盖 而把可共享的主存区叫做覆盖区 为此 程序执行时并不要求同时装入内存的覆盖组成一组 叫覆盖段 并分配同一个内存区 这样 覆盖段与覆盖区对应 覆盖的基本原理 作业J由6段组成 图a中给出了各段之间的逻辑关系 主程序A是一个独立的段 它调用子程序B和C 且子程序B与C是互斥被调用的两个段 在子程序B执行过程中 它调用子程序D 而子程序C执行过程中它又调用子程序E和F 显然子程序E和F也是互斥被调用的 作业J建立的覆盖结构 主程序段是作业J的常驻主存段 而其余部分组成覆盖段 根据上述分析 1 子程序B和C组成覆盖段O 2 子程序D E和F组成覆盖段1 3 为了实现真正覆盖 相应的覆盖区应为每个覆盖段中最大覆盖的大小 4 该作业所要求的内存空间是A 20K B 50K 十C 30K 十D 30K E 20K 十F 40K 190K 5 采用了覆盖技术 只需110K的内存空间 3 4 2对换技术 在多道程序环境下 一方面是内存中的某些进程由于某事件尚未发生而被阻塞 无法正常运行 却仍然占据着大量的内存空间 有时至会使在内存中的所有进程都被阻塞 而迫使CPU停下来等待 另一方面是在外存上尚有许多进程 因无内存空间而不能进入内存运行 显然 这对系统资源是一种严重的浪费 且使系统吞吐量下降 为了解决这一问题 在系统中又增设了对换 也称交换 技术 所谓 对换 是指把内存中暂时不能运行的进程 或暂时不用的程序和数据 换出到外存上 把已具备运行条件的进程 或进程所需要的程序或数据 换入到内存的技术 它是提高内存利用率的有效措施 对换技术现在已被广泛应用于操作系统中 对换有两种方式 如果对换是以整个进程为单位 便称之为 整体对换 或 进程对换 这种对换被广泛应用于分时系统中 其目的是用以解决内存紧张问题 并可进一步提高内存的利用率 如果对换是以 页 或 段 为单位进行的 则分别称之为 页面对换 或 分段对换 又统称为 部分对换 这种对换方法是实现请求分页或请求分段式存储管理的基础 其目的是为了支持虚拟存储系统 同覆盖技术一样 对换技术也是利用外存来逻辑地扩充内存 它的主要特点是打破了一个程序一旦进入内存便一直运行到结束的限制
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!