200 likes | 394 Views
第四部分:主存储器管理技术. Ch8 实存储器 管理技术 固定分区存储管理 可变分区的多道存储管理 多重分区存储管理 覆盖技术,交换技术 Ch9 虚拟存储器 管理技术 分页存储管理 分段存储管理 段页式存储管理. Ch8 实存储器管理技术. 多级存储器管理: 容量 速度 高速缓冲存储器 主存 外存 大 慢 主存管理的研究课题: 主存分配 地址映象和重定位 存储保护 存储器扩充. 7.1 固定分区.
E N D
第四部分:主存储器管理技术 • Ch8 实存储器管理技术 • 固定分区存储管理 • 可变分区的多道存储管理 • 多重分区存储管理 • 覆盖技术,交换技术 • Ch9 虚拟存储器管理技术 • 分页存储管理 • 分段存储管理 • 段页式存储管理
Ch8实存储器管理技术 • 多级存储器管理: 容量 速度 • 高速缓冲存储器 • 主存 • 外存 大 慢 • 主存管理的研究课题: • 主存分配 • 地址映象和重定位 • 存储保护 • 存储器扩充
7.1 固定分区 • 基本概念:主存分成若干个固定大小的存储区(存储块),每个存储区分给某一个作业使用,直到该作业完成后才把该存储区归还系统。 • 单用户固定分区:高地址CP/M-80 CP/M-86 BIOS(1.5k) 引导监控程序(8k) 操作系统BDOS(3.5k) TPA2(128k) 用户区CCP(2k) TPA1(20.5k) 用户区TPA(56k) BIOS(1.2k) 系统参数缓冲 CCP,BDOS(9.2k) 系统系统区256bytes 系统参数区(1k) 常驻 BIOS:基本输入输出系统; BDOS:基本磁盘操作系统; CCP: 控制台命令处理程序; TPA: 临时程序区
多用户固定分区: 分区数固定; 操作系统 各分区大小固定,但可不等; 分区1 主存分配: 分区2 给每个作业分配一个足够 分区3 大的主存分区,不允许两个作业放于同一个分区。多用户固定分区: 分区数固定; 操作系统 各分区大小固定,但可不等; 分区1 主存分配: 分区2 给每个作业分配一个足够 分区3 大的主存分区,不允许两个作业放于同一个分区。 • 数据库:存储分块表MBT(记录存储分区情况及存储区使用状况的信息)。 Ex: 区号(存储键)大小size 位置location状态 • status 1 8K 512K 正使用 2 32K 520K 正使用 3 32K 552K 未使用 4 128K 584K 未使用 5 512K 712K 正使用 *放在操作系统区!
存储分配算法 • 存储分配算法(固定分区,可变分区均适用): 最佳适应法,最先适应法,最坏适应法。 • 固定分区存储分配最佳方案: 最佳适应法和最先适应法的结合(MBT中各分区按照分区大小排列,最小分区放在表头)。 • 存储保护和重定位: • 存储保护:用一对界地址寄存器存储作业大小和其在主存 的起始地址作为判界的条件。 • 重定位:静态重定位。 • 固定分区的优点:简单(硬件只一对界地址寄存器, 软件算法也简单)。 缺点:主存利用率不高。
7.2 可变分区的多道管理技术 • 策略:主存事先并未划分成一块块分区,而是在作业进入主存时按作业大小建立分区,分给作业使用。 • 特点:分区个数,分区大小均可变; 主存中分布着个数,大小均是变化的自由分区或碎片。 • 课题:如何管理已分配的和自由分区? 如何实现可变分区存储分配算法? 如何消除过小的碎片?
(1)数据库 • 组织方法 • 存储分块表:表长难定,查表速度慢。 • 双表:已使用分区表(UBT), 自由分区表(FBT)=>减少存储分配和释放时查找表格的长度,提高查找速度。 • 自由存储块链:用链指针把所有自由分区链接在一起,构成一条自由存储块链=>管理维护简单。
①双表组织的可变分区数据库 • UBT FBT • 区号 大小 位置 状态 区号 大小 位置 状态 1 8K 512K 已分 1 32K 552K 自由 2 32K 520K 已分 2 - - 空表目 3 - - 空表目 3 520K 704K 自由 4 120K 584K 已分 4 - - 空表目 5 - - 空表目 5 - - 空表目 • 状态:空表目,已分,自由 • FBT 需要表格维护(排序:分区位置,分区大小); UBT不需表格维护(区号为存储保护键,不能随意变动)。 • UNIX系统FBT:即主存可用资源表,50个表目,按地址排序,采用最先适应法分配。
②自由存储块链 • 每个自由存储块起始的若干字节分成两部分:链指针next——指向下一个自由存储块的起始地址;最后一 块的链指针为0(链尾标志); 大小size——指出本自由块的大小。 0 操作系统 4K 0 6K 6K自由区 自由存储块 10K 作业1 链头指针 18K 18K 28K 2K 2K自由区20K 作业2 28K 4K 4K 4K自由区 32K
(2)分配和释放算法 • 分配:size>=作业大小的自由分区,分两部分 ——>前面部分作业用,后面部分自由块。 • 释放:与前后自由块合并。 • 数据库:分配和释放模块对表格访问应互斥进行。 • 数据库(临界资源)——互斥信号量Mut; 初值为1; • 主存资源——进程等待信号量Memory, 初值为0. • 举例说明
Ex1: 分配3K给新作业 • 0 操作系统 4K 0 6K • 10K 作业1 • 18K 18K 31K 2K 20K 作业2 28K 新作业用3K 31K 4K 1K 32K
Ex2: 释放作业1 • 0 操作系统 4K 0 16K • 10K 作业1 • 18K 31K 2K 20K 作业2 28K 作业3 31K 31K 4K 1K 32K
(3)碎片问题和存储器的紧缩 • 碎片问题:小的自由分区,不方便再利用。 作业6 0 操作系统 (60K) 512K 作业3(8K) 520K 自由区(20K) 540K 作业4(36K) 576K 自由区(8K) 584K 作业1(120K) 704K 自由区(4K) 708K 作业5(478K) 1186K 自由区(50K) • 解决: • 把程序分成几部分装入不同的分区中:复杂管理; • 把小碎片集中起来成为一个大分区:存储器的紧缩或澄清。
程序的浮动 • 程序浮动:为紧缩主存,用户程序在主存中移动。 • OS完成:一般机器无法识别主存中程序哪些项与地址有关,无重定位词典;某些机器用硬件设施自动为每个字加上两位来指示值的类型才可以! • 连接装入程序完成:重新装入。但无法再记录断点,必须重新执行。问题!! • 动态重定位:在程序执行过程中才进行程序重定位。
7.3 动态重定位的可变分区多道管理 • 动态重定位: • 将用户按相对地址编址的目标程序原封不动地装入主存分给它的分区。 • 当分配处理机时,OS自动将该作业所在分区起址由作业表中取出,减去用户目标程序的相对基地址,得值装入定位寄存器RR 。 • 当处理机访问主存时,地址转换器自动将程序中相对地址与RR中的内容相加,以此作为主存绝对地址去访问。 • 动态重定位在指令执行过程中,每次访问内存前动态地进行。从而程序可在主存中随意移动而不影响其正确执行,可方便地进行存储器紧缩,较好地解决碎片问题。
硬件支持:定位寄存器RR(可用一对界地址寄存器的基址寄存器),加法器。硬件支持:定位寄存器RR(可用一对界地址寄存器的基址寄存器),加法器。 • 软件算法: 算法图7.12 • 何时进行存储器紧缩: • 在某个 分区被释放后立即进行紧缩。 • 当“请求分配模块”找不到足够大的自由分区分给用户时再进行紧缩。 • 优点:可以消除碎片(有效利用主存空间,提高多 道程度,提高处理机和外设的利用率) • 缺点:需要动态重定位硬件机构支持;紧缩工作花 费机时。
7.4多重分区(多对界地址)管理 • 单分区存储管理技术:一对界地址寄存器 —> 每个作业只占用一个分区。缺点: • 为解决碎片问题—存储器紧缩,需硬件支持; • 不便于在进程间共享数据。 • 多重分区存储管理技术:多(3~4)对界地址寄存器,并且为每个作业(或进程)分配主存时,可按界地址寄存器对的个数为其分配多个不相邻的自由区。 优点:改善碎片情况;便于共享信息。
7.5 覆盖技术 • 问题:当用户作业大于主存可用空间时,该作业无法运行; 在多道程序环境中,为提高并行性和多道程度,每个 作业所用空间往往有限。 • 扩充内存:把进程地址空间中的信息(指令和数据)主要放在外存上,把当前需执行的程序段和数据段放在内存中。 • 内存与外存信息交换方法: • 用户程序自己附加的控制:覆盖技术(overlay)(早期); • OS控制方式:交换技术(swapping),映象方式(mapping) • 覆盖技术及交换技术与单用户连续分配,固定分区,可变分区多道管理技术配合使用。 • 覆盖技术:指一个作业的若干程序段(或数据段)间,或几个作业的某些部分间共享某主存空间。 • 用于OS:OS常用部分常驻内存,不常用部分存于外存; • 用于用户作业:用户指定各程序段调入内存的先后次序,以及内存中可以覆盖的程序段位置。
main 20K • main • A0 B0 覆盖段0 A0 B0 30K 40K 40K • A1 A2 B1 覆盖段1 A1 A2 B1 30K 30K 60K A3 A4 60K 20K 40K 覆盖段2 A3 A4 40K *用户负担很重,且程序不宜过长!用于早期的OS
7.6 交换技术 • 用于小型分时系统,协调多用户多作业。 • 方法: • 调度程序从进程就绪队列中挑选到某一个进程运行时,就把该进程调入主存运行一个时间片。 • 一旦时间片到或进程因等待事件而不能运行时,它不但让出CPU,而且也要释放出其所占有的主存空间,并且把该进程的程序和数据以文件的形式保存在外存中。 • 直到调度程序再次调度到它时,才重新进入主存运行。这时又把它的程序和所需之数据送入主存。 • 这种技术称为交换技术或“滚进滚出”。 • 应用: • MIT的兼容分时系统CTSS:与单用户连续分配技术配合。 • 批处理系统OS/360中:与固定分区和可变分区技术配合。 • 核心问题:减少交换的信息量。