1 / 71

第八章 实存管理技术

第八章 实存管理技术. 主存储器管理技术可分为两大类: (1) 实存储器管理 (2) 虚拟存储器管理. 8.1 主存管理的基础. (1) 主存的物理组织和逻辑组织. (a) 存储器分三级:. 为能更多的存放并更快地处理用户信息目前许多计算机把存储器分为三级。. 高速缓存. n+k ~ 几百 k. 主存. nM ~ 几百 M. 外存. n+M~nG(G=1kn). 存储器分三级组织结构:.

dayton
Download Presentation

第八章 实存管理技术

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第八章 实存管理技术

  2. 主存储器管理技术可分为两大类: (1)实存储器管理 (2)虚拟存储器管理

  3. 8.1 主存管理的基础 (1) 主存的物理组织和逻辑组织 (a) 存储器分三级: 为能更多的存放并更快地处理用户信息目前许多计算机把存储器分为三级。

  4. 高速缓存 n+k ~ 几百k 主存 nM ~ 几百M 外存 n+M~nG(G=1kn) 存储器分三级组织结构:

  5. 用户的程序在运行时应存放在主存中,以便处理机访问。但是由于主存容量有限。所以把那些不马上使用的程序、数据放在外部存储器(又称次级存储)中。当用到时再把它们读入主存。图7.1中的三级存储器,从高速缓冲存储器(简称缓存)到外部存储器(以后简称外存),其容量愈来愈大,而访问数据的速度则愈来愈慢,价格也愈来愈便宜,如IBM的缓存的最大传输速度为每双字120~225ns,主存的传输速度每字1us。)用户的程序在运行时应存放在主存中,以便处理机访问。但是由于主存容量有限。所以把那些不马上使用的程序、数据放在外部存储器(又称次级存储)中。当用到时再把它们读入主存。图7.1中的三级存储器,从高速缓冲存储器(简称缓存)到外部存储器(以后简称外存),其容量愈来愈大,而访问数据的速度则愈来愈慢,价格也愈来愈便宜,如IBM的缓存的最大传输速度为每双字120~225ns,主存的传输速度每字1us。)

  6. (b) 程序只能在主存中运行 (c) 物理地址:(需要区分存储体中不同的存储单元,统一编号, 这些编号称为地址) 早期的计算机中,存储器是按字组织,每个字由若干“位”组成(不同计算机字长不同),每个字分配一个地址。目前多字节为单位进行编址,每个字节由8位组成,IBM还规定一个字为四个字节,PDP中两个字节组成一个字。

  7. 与地址有关: 20根 220=1M 32根 232=4G IBM PS/2: 24根 224=16M 物理地址是主存的真实地址 ––– 绝对地址 它是:存储控制部件能够识别的主存单元编号(或字节地址)。

  8. (d)逻辑地址:又称相对地址,是指相对于某个基准量(通常用0)编址时所使用的地址,相对地址常用于程序编写和编译过程中。(d)逻辑地址:又称相对地址,是指相对于某个基准量(通常用0)编址时所使用的地址,相对地址常用于程序编写和编译过程中。 名空间 ––– 由程序员所写符号组成。 地址空间 ––– 一个目标程序所限定的地址集合。 物理地址的集合间 –––存储空间

  9. Address: mov Ax,1 名空间 … 编译 Obj 目标地址 地址空间 EXE文件装入 存储空间 例: 存储空间地址空间

  10. 逻辑地址 物理地址 (2) 地址映射(重定位) 程序执行时,必须将逻辑地址正确地转换为物理地址即地址映射。 (a) 执行指令时,必须将地址变为绝对地址才可访问系统分配的内存。 (b) 使一个作业程序装入到与其地址空间不一致的存储空间,所引起的对有关地址部分的调整过程称为地址重定位。

  11. 例: 0 1000 mov Ax,(500) mov Ax,(500) 1100 出错 100 装入主存 12.3 12.3 1500 500 解决方法:重定位

  12. (c) 地址映射的方式: 编程或编译对确定地址映射关系,不灵活。 静态重定位 • 在装入时实现调整 • 装入后不再变(静态)

  13. 动态重定位 在执行寻址时重定位 ,访问地址时通过地址变换机构改变为内存地址 B 1000 1000 mov Ax (500) 12.3 mov Ax (500) 12.3 100 1100  500 1500 … … 主存 外存 cpu运行 特点:改变系统时不需改程序(程序占用的内存空间、动态可变,主程序从某一个存储区域移动时,只需修改基址寄存器B即可)

  14. 算法+数据结构=程序 研究主存分配算法,以及算法的性能 (3) 主存管理主要功能: (a) 在多个用户间分配主存-主存分配 (b) 映射逻辑地址为存储地址-地址转换和重定位 (c) 对主存中信息提供保护(界地址寄存器)-存储保护 (d)扩充逻辑存区-主存扩充(这里指的扩充并非指硬件设备上的扩充,而是用存储管理软件来实现逻辑上的扩充-即所谓的虚拟存储技术)

  15. 8.2 固定分区 固定分区:把主存分成若干个固定大小的存储区(存储块),每个分区分给某一作业使用,直到该作业完成后才把该存储区归还系统 固定分区管理技术分为: (1)单道作业固定分区 (2)多道作业固定分区

  16. OS区 受保护 越界R 管态 OS存取区特权 用户区 目态 (1)单一连续区分配(单道作业) (a)概要:内--------------存区分为OS连续区和用户连续区

  17. (b) 简单、单一用户(单道、单用户作业) 单用户OS的内存管理十分简单,因为存储器在任何时候都只保存一个用户进程,除OS本身占据的内存外都可分配给用户使用。

  18. 方案:  OS可以占据RAM的底部(a)或顶部(b) 也可以部分在内存顶部的ROM中,另一部分存放RAM底部(c)

  19. 用户 程序 OS ROM设备 驱动程序 用户 程序 用户程序 OS OS (a) (b) (c) 例如: IBM PC在MS/Dos下,其内存分配便用(c) 其装有设备驱动程序的8k. ROM占据IM地址空间的最高区,通常称ROM中的这些设备驱动程序为BIOS

  20. OS 用户区1 用户区2 用户区3 用户区4 (2) 多道作业固定分区 (1)分区个数固定 (2)每个分区大小固定,但不一定大小相同 (3)不允许两个作业同时存放于同一个分区 多道作业固定分区

  21. 0区 OS区 20k 区号 大小 起址 状态 1区 1 8k in using 20k 28k 2区 2 32k 28k NuL 60k 3 68k 60k in using 90k 3区 128k 4 128k 128k NuL 4区 256k (存储分块表MBT)

  22. (b) 特点 • 分区个数固定、大小固定 • 多道程序 • 零头-内存碎片 缺点:不允许两个作业同时放于同一个分区中,剩下的空闲部分称为内存碎片,主存利用率不高。

  23. 0 OS 512k 自 由 分 区 1536k 8.3 可变分区 存储空间的划分在作业装入时进行(事先并未划分成一块块分区),且使分区大小与作业大小一致(按作业大小建立); 分区大小、个数,不固定的(系统启动时,整个主存除OS块外,其余主存区可看成是整个一个分区)。

  24. (a 存储分块表 1、可变分区数据基的组织形式: 区号 大小 起址 状态 已用 1 8k 312K 已用 2 32k 320K 3 32k 352K 空闲 4 120k 384k 已用 5 520k 504k 空闲 (存储分块表MBT)

  25. (b 分开设置两个存储管理表 大小 序号 大小 起址 状态 起址 状态 空闲 8k 312k 已用 32k 352k 1 已用 - 2 32k 320k - 空表目 3 - - 520k 空闲 504k 空表目 4 120k 384k - 已用 - 空表目 5 空表目 - - - - 空表目 已分分区表 UBT 空闲分区表FBT

  26. 指针352K 0 指针504K 520K 大小32K 空闲存储块链 (c 空闲存储块链(链表) 类似于进程控制块PCB在内存的组织形式

  27. 2、存储分区的分配与回收算法 (1) 存储分区的分配与回收过程 (i) 分区的分配过程 寻找一个容纳作业的空白区 分裂该区, (分配区和空白区)修改两个表 返回分配区序号和始址 (ii) 分区的回收过程 检查是否与空白区相邻,是则合并成一个大空白区 修改两个表(返回分配区与空白区序号和始址)

  28. (2)分区管理算法 (可适应于固定分区及可变分区) a、首次适应 b、循环首次适应 c、最佳适应 d、最坏适应 (i) 首次适应算法(First Fit: FF) 将空白区按存储顺序链成一个队列,用一指针指向队首,分配时将找到的第一个满足要求的空白区分配给它。 何为满足? 大于或等于

  29. 指针 10k 60k 90k 20k 例: 有四块空白区(从低地址高地址),来了一个作业需分配19k内存。

  30. 指针 10k 60k 90k 20k 41k 解: FF特点: 1、缩短查找时间 2、每次都从10k开始,低地址部分被不断划分,会留下难以利用的空闲分区-碎片

  31. 1 2 指针移动 (ii) 循环首次适应算法(Next fit: NF) 将空白区组成环状队列,按循环顺序寻找空白区。(与FF区别,头指针从低地址开始向高地址循环移动) NF特点: 使得空闲分区均匀分布,易于与其它空白区合并。

  32. 指针 10k 20k 60k 90k (iii) 最佳适应算法(Best fit: BF) 将空白区按由小到大排成队列,寻找时总是以最小的空白区开始,找到第一个合适的分区 例: 来一个19k的作业

  33. 指针 10k 20k 60k 90k 1k 解: 特点:  孤立的看是最佳地利用分区;  但每次分配后所剩余部分总是非常小,多次分配后碎片较多。

  34. 指针 90k 60k 20k 10k 71k (iv) 最坏适应算法(Worst fit: WF)  将空白区排序(按从大到小)  找最大空白区 特点: 如上例: 未必是最坏的,不会出现小的空白区

  35. 指针 a b c d e f 7k 3k 10k 8k 20k 5k 例:设系统空白链表为 用户先后申请7.5k,4k空间,试用四种算法,求出分配块。

  36. a b c d e f 指针 3k 3k 2.5k 8k 20k 5k a b c d e f 7k 3k 10k 8k 20k 5k FF: c,a a b c d e f 7k 3k 2.5k 4k 20k 5k NF: c,d

  37. b f a d c e 3k 5k 7k 0.5k 10k 20k  d b f a c e 0.5k 3k 1k 7k 10k 20k  d b f a c e 0.5k 3k 5k 7k 10k 20k b f a d c e 3k 5k 7k 8k 10k 20k 首先从小到大排序 BF: 再排序从小到大  分配块为d, f

  38. 指针 a b c d e f 7k 3k 10k 8k 20k 5k e c d a f b 8.5k 10k 8k 7k 5k 3k WF: e,e

  39. 小结: 可变式分区与固定式分区分配方案相比,一般来说其存储空间的利用率高些,但是,由于存在着一些分散的,较小的空白区,仍然不能充分利用-称之为存储器的“零头”。 碎片(零头)问题:存在于已分配的分区之间的一些不能充分利用的空白区 (i)原因:请求释放使存区分割 (ii)碎片总和>nk,但不能装入nk作业p154图8.8

  40. (iii) 解决的方法: ①将程序装入分散区域中––多重分区技术和虚拟存储技术 RR11 RR 12 Job1 Job4部分1 RR21 Job2 Job4部分2 Job3 RR22

  41. Job1 Job2 Job3 Job4 ②将碎片集中(紧缩或拼接) –––重定位分区分配 可重定位分区分配法是利用分区的“拼接”(对空白区而言)或“紧缩”(作业程序而言)技术解决“零头”。

  42. (3) 动态重定位可变分区分配法 (a) 概要 移动内存已分配区的信息,使得所有分配区靠在一起,使空白区连成一片,采用浮动方法。 (b) 浮动(重定位-动态)进行主存的压缩,就要将主存中用户程序移动(浮动),对作业中与地址有关的部分进行调整。

  43. 请求分配一个大小为xk的分区 有大于xk的 空闲区吗? 是 分配分区并 修改诸表 返回一个 分区号数 否 空闲区的总和 xk吗? 否 此刻已经 分配一个 分区 是 紧缩存储并相应地修改诸表 (得到一个完整的空闲区xk) (c) 动态重定位可变分区分配算法:

  44. 作业5 例 80k OS OS 20k 20k OS 作业1(8k) 1 3 2 4 20k 28k 1(8k) (36k) 28k 64k 3(24k) 作业3(24k) 52k 88k 2(20k) (24k) 72k 112k 122k 4(50k) 作业2(20k) 作业5(80k) 122k 132k 202k (134k) 作业4(50k) (54k) 256k 182k 256k (74k) 256k (b)移动之后 (即浮动) (c)分配作业5之后 (a)初始状态

  45. 实现这种重定位,可通过类似于重定位装入程序的软件来达到,但这种方案要在费许多处理机时间,而且限制较大。实现这种重定位,可通过类似于重定位装入程序的软件来达到,但这种方案要在费许多处理机时间,而且限制较大。 较好的办法是采用动态重定位技术(在本章中,当一个作业装入与其地址空间不一致的存储空间时,可在每次访问指令或数据时,通过重定位寄存器来自动修改访问存储器的地址) 因而,一个作业在主存中移动后,只需要改变重定位寄存器的内容即可。

  46. 例: 图(a)是作业拼接之前的执行情况,这时重定位寄存器RR的值为64k,(b)是拼接后作业3执行情况,作业3被移动到28k大字节开始的分区中。为保证在新的位置上仍能正确执行,只需要将重点定位寄存器RR的值改为28k即可。

  47. 定位寄存器 RR 相对 地址 0   64K Load 1,500 253 64 65636 500 LDAD 1,500 100 作业3 的分区  500 66036 253   88K 处理机一侧 存储器一侧 (a) 拼接前

  48. 定位 寄存器 RR 相对 地址 0   28K Load 1,500 253 28k 28772 100 500 Load 1,500  29172 500 253 52k 24k   256k 主存 (b) 拼接后的执行情况

  49. 采取动态重定位后,由于目标程序装入主存后不需修改地址指针及所有与地址有关的项,因而程序可在主存中随意浮动而不影响其正确执行。这样,就可以方便地进行存储器紧缩,较好地解决了碎片问题。采取动态重定位后,由于目标程序装入主存后不需修改地址指针及所有与地址有关的项,因而程序可在主存中随意浮动而不影响其正确执行。这样,就可以方便地进行存储器紧缩,较好地解决了碎片问题。

  50. (d) 紧缩或拼接时机(2种) (i) 出现相邻空白区即拼接 (或某分区被释放后立即紧缩): 紧缩工作大,开销大,但管理简单 (ii) 存储不足(空白分区不够大)时进行拼接: 紧缩次数少,但管理(算法)较复杂。

More Related