320 likes | 479 Views
第 3 章 存储管理. 1 、了解存储管理的目的和功能;了解虚拟存储器、地址重定位等概念; 2 、分区存储管理:了解分区存储的各种方式(固定、可变、浮动、多重分区);存储 “ 扩充 ” 技术:覆盖与交换; 3 、页式存储管理:掌握分页管理的原理,利用 PMT 实现地址变换;掌握请求式分页机制、页面淘汰算法; 4 、了解段式存储管理的特点;了解段页式存储管理的优点。. 第 3 章 存储管理. 3.1 存储管理的功能 3.1.1 分级存储结构 高速缓存 ( 一级缓存 二级缓存 cache) ^ || Bus V 主存 RAM ROM ^
E N D
第3章 存储管理 1、了解存储管理的目的和功能;了解虚拟存储器、地址重定位等概念; 2、分区存储管理:了解分区存储的各种方式(固定、可变、浮动、多重分区);存储“扩充”技术:覆盖与交换; 3、页式存储管理:掌握分页管理的原理,利用PMT实现地址变换;掌握请求式分页机制、页面淘汰算法; 4、了解段式存储管理的特点;了解段页式存储管理的优点。
第3章 存储管理 3.1 存储管理的功能 3.1.1 分级存储结构 高速缓存 (一级缓存 二级缓存 cache) ^ || Bus V 主存 RAM ROM ^ || Bus V 外存 光磁盘等 } CPU直接访问
3.1.2 存储管理的功能 • 存储分配与管理 多进程, 包括OS, 动态 • 地址重定位 静态, 动态 逻辑地址物理地址 • 存储保护 互不干预 软硬结合, 空指针 • 存储扩充 硬盘内存 时间换取空间 内存有限, 小内存运行多作业,大作业
3.2 地址重定位 系统区 OS 用户区 1 名空间 地址空间 存储空间 符号 逻辑地址 物理地址 源程序 目标模块 绝对地址 相对地址 重定位 map
2 静态重定位 绝对地址 = 相对地址 + 起始地址 程序执行之前 地址重定位 DOS程序
3 动态重定位 运行期间 硬件支持 进程的代码数据在内存外存中移动, 动态装入
3.3 分区存储管理 3.3.1 单一连续区管理 DOS 单任务 OS 将所有空闲内存分配给程序
3.3.2 分区存储管理 多任务 多道 内存分区, 每一任务占一个分区 1 静态(固定)分区 • 内存分成大小不同的区域, 可运行不同大小的作业 • 简单, 浪费 • 内碎片
2 动态(可变)分区 • 利用表格记录已分配区和空闲分区 查空闲分区表->分配内存->运行->结束->释放内存, 放入空闲分区表, 相邻空闲分区合并 • 空闲分区分配算法 i) 最佳适应算法 空闲分区从小到大排序, 保留大空闲区 ii) 最差适应算法 分割最大空闲区, 比较一次, 剩余空间任可运行作业 iii) 首次适应算法 地址由低到高找, 保留高地址空间 三种算法都会产生不能运行任何程序的小空闲区, 不连续, 即碎片 fragmentation,外碎片。 最小粒度G:内存分配单位
动态重定位式分区分配 进程地址空间可移动, 使空闲区可合并从而消除外碎片 进程结束时合并或分区不够大时合并
多重分区 作业分段, 代码段 数据段 堆栈段 动态加载, 物理地址空间可不连续, 消除碎片, 便于共享 进一步发展成虚拟存储管理技术
3.4 覆盖和交换 3.4.1 覆盖 Overlay 小内存运行大作业 • 将作业分成模块(程序段), 按功能引用关系形成一种树型结构, 同层为覆盖段. • 同层取最大设置分区大小 DOS COMMAND.COM即采用了覆盖技术 低端常驻, 高端暂驻,可覆盖
同层可互相覆盖 则此作业需20+40+60+40=160K
3.4.2 交换 swapping • 不运行的作业( 如时间片用完或其他原因), 映象调至硬盘的交换文件区, 文件, 让出内存供其他作业使用. • 当OS再次调度该进程运行时, 再从交换区调入内存, 换进换出 (Roll-in, Roll-out) 现代OS • Win9x - win386.swp • WinNT, 2k, XP - pagefile.sys • UNIX - 交换区 • DOS + BC.EXE - TC0001.SWP 信息交换量大, 开销大
动态地址映象, 交换技术 软件+硬件 虚地址实地址 虚地址大小限制: 1 CPU寻址机构 80386 232=4GB, 地址变换分段246=64TB 2 外存大小 虚拟存储管理
3.5 分页存储管理 请求式页面存储管理 1 原理 a 分配方式 内存分块, 作业分页, 块页大小相同 b 建立页面映象表(PMT) 页号 块号 状态 页是否在内存及在哪一块 c 地址转换 虚地址重定位(动态), 可不连续 页号和偏移量 块号和偏移量 缺页处理
内存有限, 存放作业的活动页. 当发生一条不在活动页的指令时, 则需硬件机构及服务程序实现物理页的调入调出操作. 无空闲块时, 淘汰某页, 采用算法. 算法不合理时, 某些页会在内外存间频繁调入调出, 即抖动(Thrashing). 进程越多, 抖动越严重 2 页面淘汰算法
最佳淘汰算法 永远不再使用的页 实现困难 • 先进先出FIFO算法 顺序访问地址效率高, 若有循环效率低 • 最近最少使用LRU(Least Recently Used) 程序局部性原理 • 最少使用LFU(Least Frequently Used)
假定系统为某进程分配了三个物理块, 并考虑有以下的页面号引用串: 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1 进程运行时, 先将7,0,1三个页面装入内存。 以后, 当进程要访问页面2时, 将会产生缺页中断。此时OS根据最佳置换算法, 将选择页面7予以淘汰。 利用最佳页面置换算法时的置换图
利用FIFO置换算法时的置换图 最近最久未使用LRU(Least Recently Used)置换算法
3.6 分段存储管理 1 原理 • 分配方式: 作业按模块分段, 段长不同 代码段, 数据段, 堆栈段 按段分配内存, 段间可不连续 • 建立段表 段号, 段长, 基址, 状态, 权限等 • 地址转换 作业段号s, 偏移d 物理地址 硬件支持
2 共享和保护 例:两个作业进程共享一个sort过程,内存中只有一个付本
2 共享和保护 a. 段表限制, 越界保护 长度 b. 访问权限控制 共享 c. 特权级 root用户任务权力大, 可访问低权力段, 缓冲区溢出攻击 3 优点: 长度可变, 便于共享, 虚拟内存 缺点: 碎片, 段长度受内存大小限制, 缺段处理
3.7 段页式存储管理 页式-内存利用率,无外部碎片 段式-用户需要,易共享与保护,动态链接 1 原理 a. 分配方式 作业分段, 再分页, 内存分页(帧) 页长相等 b. 段表和页表 每一段有一页表, 页表数与段数相等 2 地址转换 虚地址 段号 段中的页表 页(块)号 实地址 运行多进程, 产生大量缺页中断, 任务切换慢