3-存储器管理.doc

上传人:桔**** 文档编号:544789968 上传时间:2023-01-01 格式:DOC 页数:15 大小:152.51KB
返回 下载 相关 举报
3-存储器管理.doc_第1页
第1页 / 共15页
3-存储器管理.doc_第2页
第2页 / 共15页
3-存储器管理.doc_第3页
第3页 / 共15页
3-存储器管理.doc_第4页
第4页 / 共15页
3-存储器管理.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《3-存储器管理.doc》由会员分享,可在线阅读,更多相关《3-存储器管理.doc(15页珍藏版)》请在金锄头文库上搜索。

1、CH3 存储器管理 存储器是计算机信息的载体, 一般分为外存(辅存)和内存两类, 由于外存主要用来存放文件, 所以放在文件管理一章讲述. 因而本章主要对象是内存.如:RAM, ROM, SRAM, DRAM, SDRAM, DDR, WRAM, FRAM, CACHE(超高速缓冲存储器).内存是仅次于CPU的重要资源, 对系统性能的影响极大. 存储器管理的内容有: A 介绍各种存储分配和管理策略; B 虚拟存储器的概念和技术存储器管理的目标是: 提高内存利用率, 改善系统性能.为简单见,把教材相关章节合并,补充虚拟存储技术。1. 引言 #1 存储管理的目的和功能 #2 存储分配 #3 重定位

2、#4 存储管理的方式2. 分区式管理 #1 单一连续区分配 #2 固定分区分配 #3 可变分区分配 #4 可重定位分区分配 #5 多重分区分配 #6 分区的保护3. 分页式管理 #1 纯分页系统 #2 请求式分页系统 #3 分页系统的优缺点 #4 虚拟存储器技术4. 分段式管理 #1 分段地址空间 #2 纯分段管理 #3 请求式分段管理 #4 分段动态链接 #5 分段的共享 #6 分段管理的优缺点7. 段页式管理 #1 实现原理 #2 管理算法 #3 段页式管理的优缺点 关于虚拟存储器的内容, 分插入各节叙述, 如: 1中的概念; 5的请求式分页也称为单段式虚拟存储器; 6的分段存储也称为多段

3、式虚拟存储器; 而7的段页式存储也属虚拟存储器管理.1. 概 述一: 存储器管理的目的和功能1. 内存的分配, 管理和回收: 包括: 用户申请内存时是否响应? 如何分配?(分配多少, 分配哪部分) 能否多次分配? 要记录哪些分配信息? 用完了是否回收等等. 其中分配策略是本章的重点.2. 提高内存利用率: #1 使多道程序共享内存. (互不干扰, 各占一段) #2 使多道程序共享某一段内存. (代码/数据的共用)3. 内存扩充 这里的扩充不是指硬扩充, 而是指借助覆盖, 交换和虚拟等软件技术来向用户提供比实际内存还要大的存储空间.4. 内存保护 #1 各作业使用各自内存区域, 互不干扰. #2

4、 防止一作业的故意/无意破坏, 保护其他作业的运行. 在286以上CPU都有硬件保护机制(地址保护), 各OS和应用软件都可使用这些机制来保护. 二: 存储分配 所谓存储分配, 主要讲述的是多道作业之间划分内存空间的问题, 由于内存资源的有限, 存储分配要解决如何把多个作业放入内存, 是全部还是部分, 以及放入的时间, 地点, 而这些问题的解决对用户必须是透明的(即用户不用考虑这些问题). 常见的有三种方式:1. 直接指定方式 #1 编程或编译后直接使用实际的存储地址, 目前常用于工业实时控制. #2 直接控制方式有: 早期的独占; 多道作业的分区和覆盖三种. 其中覆盖是指把一个作业切分为几部

5、分, 每次调用一段运行于同一内存区域. #3 显然, 为了直接指定存储地址, 必须知道内存的容量和编址规则, 对用户的要求比较高, 尤其是对稍大点软件. 因此目前几乎无人使用.2. 静态分配(Static Allocation) #1 编程/编译后的地址空间从零开始, 仅当装入内存时才由装配程序缺点其运行空间, 即存储分配在装入前完成. #2 在运行时, 不再进行存储分配, 也不能在内存中移动.3. 动态分配(Dynamic Allocation) #1 存储分配在装入时完成 #2 在运行时可进行再分配, 如增加, 减少, 移动等. 以上三种方式, 其每次进行分配的内存必须是连续的.三: 重定

6、位 (Relocation)1. 地址空间和存储空间 #1 用高级语言编制的程序, 其使用的是名字空间. 如: int x=0; #2 经编译链接后的目标程序, 其使用的是一所限定的地址编号范围, 称为地址空间, 每个地址编号称逻辑地址. 通常该地址编号的下限为零, 然后按字节/字递增, 所以这些地址都是相对于起始地址的, 因而也称为相对地址. #3 内存中物理的记录单元集合称为存储空间, 其单元编号称为物理地址/绝对地址. 总之, 存储空间是实的, 地址空间是虚的, 而名字空间是地址空间的逻辑代号, 更虚.2. 重定位 #1 把作业地址空间中的逻辑地址变换成存储空间中的物理地址的地址变换过程

7、称地址重定位, 或地址映射. 0 . 100 xxxx . 0. 1000 . 10Load AX, 100 1010Load AX, 1100. 100xxxx 1100 xxxx . . 物理空间地址空间. ( 图4-1 ) #2 如图, 某作业装入物理空间后, 取地址100的值要变换成现在的1100, 而不能再取现在的100.3. 重定位的类型 #1 静态重定位: 通过重定位装配程序在作业装入时就完成的地址变换过程.如: 上例 Load AX, 100 变成 Load AX, 1100.优点: 由于地址变换在作业执行前一次集中完成, 无需硬件机构参与, 简单.缺点: A 作业运行期不能移

8、动, 内存利用率不高. B 用户必须事先知道所需内存是否超过存储空间, 若超过, 则需用户考虑覆盖. C 作业间不能共享内存中的同一程序/数据区. #2 动态重定位: 作业执行时, 当访问指令和数据时, 由硬件地址变换机制实现地址变换的方式. 算法是: 实际地址=有效地址+重定位寄存器值RR如: 上例 Load AX, 100不变, 但重定位寄存器值=1000.优点: A 由于指令/数据的实际地址在运行时确定, 所以在运行时再进行存储分配是允许的. -可进行动态存储分配 B 作业间可共享内存中的某一公用段. C 可向用户提供比物理存储空间大很多的地址空间.缺点: A 需硬件机构参与 B 事先分

9、配策略的软件比较复杂.四:存储管理的方式 1 常见的有分区式(静态/动态),分页式(纯/请求式),分段式(纯/请求式),段页式几种。2 他们基本过程包括:设计数据结构记录内存状况确定分配算法实现内存的分配与回收逻辑地址与物理地址的转换内存的共享与保护3 以下各节描述也包括这些内容:思想、数据结构、算法、操作、地址转换、内存保护。2. 分区式分配一、单一连续区分配1. 这是早期的面向单用户, 单任务OS的存储分配策略, 如DOS, 其把整个物理空间分成两部分: #1 系统区: 存放OS的驻留部分和其所需的内部数据结构, (如中断向量表) 一般置于内存的低址部分. #2 用户区: 系统区以外的所有

10、内存都可供用户使用.2. 早期的单用户, 单任务OS有些配置了存储器保护机制, 但常见的如CP/M,DOS都无保护机制, 因为用户独占内存, 不存在其他用户干扰问题, 出问题是自己的责任, 而OS被破坏则可重新启动来恢复.3分区式分配是早期的多用户OS的存储分配技术, 包括: 固定式分配, 可变分区分配, 可重定位分区分配和多重分区分配四种.二: 固定式分区1. 把内存划分为若干个固定大小的区域, 每区的边界固定不变. 有两种形式: #1 分区大小相同: 对不同大小程序适应性差. #2 分区大小不同.2. 为实现分区, 要建立一张分区说明表. struct int number; 分区号 大小

11、 起址 状态 long StartAddr, size;112K20K 已分配 int status;232K32K 已分配 AREA; 364K50K 未分配 . ( 图2-2 )3. 由于分区是固定不变的, 因此不能保证程序所需的内存恰好等于某一分区而必然有一部分的内存浪费-称为内零头(Internal Fragmention). 典型的OS例子是IBM/360机的MFT操作系统.4. 固定式分区不灵活, 但是简单, 因此在一台主机控制多台同种设备的控制领域仍有一定的使用.三: 可变式分区1. 指根据作用的实际需要, 动态为之分配所需的内存空间, 即分区边界可移动.有两种: 分区数固定,

12、分区大小可变; 分区数和分区大小都可变. 显然, 方案一的分区说明表可用数组表示, 简单; 方案二灵活,但是分区数不定, 需用链表组织分区说明表. 下面以方案二为例说明数据结构, 算法和操作.2. 数据结构两个链表: 已分配分区表和未分配分区表; 每记录包括始址, 大小, 状态和指针四项; 其链接的顺序与算法有关, 可按大小有序/按始址有序/任意. struct area int number; long StartAddr, size; int status; struct area *next; AREA; AREA *AllocTable, *FreeTable; 设立两个表: 已分配分

13、区表AllocTable和空闲分区表FreeTable.3. 算法 设S是空闲分区的大小, R是要求分配的分区大小. #1 最佳适应算法 A 从空闲分区链表(最好能按分区大小有序)选择(S=R)&(S-R最小)的分区, 分配R内存给作业, 剩余的S-R仍留在空闲链中以供下次分配; 若无满足条件的空闲分区, 则不分配. B 显然经多次S-R划分后, 空闲链中的分区会越来越小而无法再用, 形成分区碎片叫外零头. 解决办法有 拼接边界邻接的碎片; 修正条件, 设置一个阀值G, 若S-R=R)&(S-R最大)的分区划分. 显然其划分后的剩余部分被再次切分的可能性更大, 这是其优点; 但缺点是大作业找不到能满足的分区. #3 首次适应算法 A 这是对最佳和最坏适应算法的折中, 空闲分区链接按起始地址有序, 每次分配时, 从链始查找, 第一个满足的分区则分配之, 且用碎片替换原位置. B 本法的最大优点是简单, 速度快. (如碎片不插入而是替换) 而且链尾(即内存高端)有大的空闲分区. C 缺点是经多次使用, 碎片集中在链首, 平均查找次数增大. #4 下次适应算法(循环适应算法)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号