第3章存储管理 本章讲述内容: 3.1存储管理综述: 3.2固定分区存储管理; 3.3可变分区存储管理; 3.4分页式存储管理, 3.5分段式存储管理; 3.6虚拟存储与请求页式存储管理
第3章 存储管理 3.1 3.2 3.3 本章讲述内容: 3.4 存储管理综述; 固定分区存储管理; 可变分区存储管理; 分页式存储管理; 3.5 分段式存储管理; 3.6 虚拟存储与请求页式存储管理
3.1存储管理综述 ·3.1.1存储器的层次结构 。目前,计算机采用的都是以存储器为中心的体系结构。存储器负责存放整个系统 的程序与数据,是重要的系统资源。 存取速度容量价格 。在考虑计算机存储器的设计时,必须顾及 存器 “价格”、“容量”、“访问时间”这三个重 快 小 高速缓存 贵 要特性。各种实现技术间往往有以下的关系: 存取时间越快,每“位”的价格就越高;容量 越大,每“位”的价格就越低:容量越大,存 主存储器 取速顶麓整慢价格”、“容量”、“访 磁盘 慢 大 问时间”三者间寻求折中,采用存储器的 层次结构。这时,从上往下就有:每“位” 磁带 的价格递减:存储容量递增;存取时间递 增。。这种层次结构中,CPU可直接到寄存器、高速缓冲存储器、内存储器这三层上访 问数据,不能直接到磁盘和磁带上访问数据,那里的数据只有转移到内存储器后,才能 接受CPU的处理 。这种层次结构中,容量较大、价格便宜的慢速存储器(如磁盘),可作为容量较 小、价格较贵的快速存储器的后备。这正是存储管理中虚拟存储技术的实现基础
3.1 存储管理综述 • 3.1.1 存储器的层次结构 目前,计算机采用的都是以存储器为中心的体系结构。存储器负责存放整个系统 的程序与数据,是重要的系统资源。 . 磁带 磁盘 主存储器 高速缓存 寄 存器 快 慢 存取速度 小 大 容量 昂 贵 便 宜 价格 . 在考虑计算机存储器的设计时,必须顾及 “价格”、“容量”、“访问时间”这三个重 要特性。各种实现技术间往往有以下的关系: 存取时间越快,每“位”的价格就越高;容量 越大,每“位”的价格就越低;容量越大,存 取速度就越慢。 . 只能在“价格”、“容量”、“访 问时间”三者间寻求折中,采用存储器的 层次结构 。这时,从上往下就有:每“位” 的价格递减;存储容量递增;存取时间递 增。. 这种层次结构中,容量较大、价格便宜的慢速存储器(如磁盘),可作为容量较 小、价格较贵的快速存储器的后备。这正是存储管理中虚拟存储技术的实现基础。 这种层次结构中,CPU可直接到寄存器、高速缓冲存储器、内存储器这三层上访 问数据,不能直接到磁盘和磁带上访问数据,那里的数据只有转移到内存储器后,才能 接受CPU的处理。
·3.1.2高速缓冲存储器的工作原理 .在CPU与内存间,可安排“高速 缓冲存储器”,简称为“高速缓存”。 字传送 块传送 。 相对于内存,高速缓存容量小、 高速 存取速度快。在它里面只存放内存中的 CPU 缓冲存储器 主存储器 一小部分数据内容。 ·当CPU试图访问内存中的某一个字时,就总是先检查该 字是否在高速缓存中。如果在,就直接将它从高速缓存传送给 地址主存储器 CPU:如果不在,则先把内存中包含此字在内的一块数据读入 0 高速缓存,然后再把所需的字从高速缓存传送给CPU。 。内存和高速缓存间是 2 块 (K个字) 以“块”为单位传递数据的, 高速缓存与CPU之间则是以槽号 标签 高速缓冲存储器 “字”为单位传递数据的。 。当CPU需存取内存中某 2 块里的某字,而那块不在存储 槽中,就把那块传到一槽里。 高速缓存中的槽都有标签,用© 块(K个字) 块 来标识这个存储槽在当前存放 的是内存中的哪一块。 2n
• 3.1.2 高速缓冲存储器的工作原理 高速 CPU 缓冲存储器 主存储器 字传送 块传送 相对于内存,高速缓存容量小、 存取速度快。在它里面只存放内存中的 一小部分数据内容。 . 在CPU与内存间,可安排“高速 缓冲存储器”,简称为“高速缓存”。 . . 当CPU试图访问内存中的某一个字时,就总是先检查该 字是否在高速缓存中。如果在,就直接将它从高速缓存传送给 CPU;如果不在,则先把内存中包含此字在内的一块数据读入 高速缓存,然后再把所需的字从高速缓存传送给CPU。 槽号 标签 0 1 2 C-1 0 1 2 3 块 块 (K个字) 2 n -1 块(K个字) 地址 高速缓冲存储器 主存储器 内存和高速缓存间是 以“块”为单位传递数据的, 高速缓存与CPU之间则是以 “字”为单位传递数据的。 . . 当CPU需存取内存中某 块里的某字,而那块不在存储 槽中,就把那块传到一槽里。 高速缓存中的槽都有标签,用 来标识这个存储槽在当前存放 的是内存中的哪一块
。3.1.3 存储管理的功能 1.内存的分配与回收 这是存储管理必须承担的任务,它应该随时记录内存的使用情况:根据用户程序的 需要分配存储区;在用户程序运行完后,及时收回存储区,以提高内存的使用效率。 2.存储保护和共享 ·存储保护涉及两个问题,一是确保用户进程的程序不侵犯操作系统:二是确保两 个用户程序之间不相互干扰。 存储共享是指允许多个进程访问内存中的同一部分,这是提高存储利用率的一种 措施。 3.地址定位 为适应多道程序设计环境,为使内存中的程序能够移动,存储管理必须对用户程序 逻辑地址空间中的地址实施重新定位,以保证进程程序的正确运行。 4.存储扩充 存储扩充的含义是通过技术手段,给用户造成有一个非常大的内存的虚幻感觉,但 其实并没有扩大实际内存的容量。存储管理若能做到这种意义下的存储扩充,那么就能 使用户程序的规模不受内存实际容量的限制。存储扩充无疑是一件非常好的事情。这是 虚拟存储要讨论的话题
• 3.1.3 存储管理的功能 存储扩充的含义是通过技术手段,给用户造成有一个非常大的内存的虚幻感觉,但 其实并没有扩大实际内存的容量。存储管理若能做到这种意义下的存储扩充,那么就能 使用户程序的规模不受内存实际容量的限制。存储扩充无疑是一件非常好的事情。这是 虚拟存储要讨论的话题。 1. 这是存储管理必须承担的任务,它应该随时记录内存的使用情况;根据用户程序的 需要分配存储区;在用户程序运行完后,及时收回存储区,以提高内存的使用效率。 内存的分配与回收 2. 存储保护和共享 存储共享是指允许多个进程访问内存中的同一部分,这是提高存储利用率的一种 措施。 . 存储保护涉及两个问题,一是确保用户进程的程序不侵犯操作系统;二是确保两 个用户程序之间不相互干扰。 . 3. 地址定位 为适应多道程序设计环境,为使内存中的程序能够移动,存储管理必须对用户程序 逻辑地址空间中的地址实施重新定位,以保证进程程序的正确运行。 4. 存储扩充
3.2固定分区存储管理 .2.1地址重定位 1. 几个概念 。绝对地址(或物理地址) ·绝对地址空间(或物理地址空间) 。相对地址(或逻辑地址) 。相对地址空间(或逻辑地址空间) 2.地址重定位的定义 把用户程序指令中的相对地址变换成为所在绝对地址空间中的绝对地址的过程,称 为“地址重定位” 内存储器 0 内存储器 内存储器 0 操作系统 用户程序A的 操作系统 操作系统 20KB 相对地址空间 20KB 20KB 22KB 0 20KB+100 XXEXXXX 20KB+100 XXXXXX 22KB+100 XXXXXX 100 21KB 21KB 23KB IKB 22KB 22KB 24KB 2KB 20KB+3000 cal100· 20KB+3000 cal20580- 22KB+3000 cal22628- 3000 call 100 23KB 23KB 25KB 3KBL
把用户程序指令中的相对地址变换成为所在绝对地址空间中的绝对地址的过程,称 为“地址重定位”。 3.2 固定分区存储管理 • 3.2.1 地址重定位 1. 几个概念 2. 地址重定位的定义 0 100 1KB 2KB 3000 3KB XXXXXX call 100 用户程序A的 相对地址空间 XXXXXX call 100 内存储器 0 20KB 20KB+100 21KB 22KB 20KB+3000 23KB 操作系统 X XXXXXX call 20580 内存储器 0 20KB 20KB+100 21KB 22KB 20KB+3000 23KB 操作系统 XXXXXX call 22628 内存储器 0 22KB 22KB+100 23KB 24KB 22KB+3000 25KB 操作系统 20KB . 绝对地址(或物理地址) . 绝对地址空间(或物理地址空间) . 相对地址(或逻辑地址) . 相对地址空间(或逻辑地址空间)
3.2.2 地址定位方式和静态重定位 1.绝对定位方式 即在程序装入内存之前,程序指令中的地址就已经是绝对地址,已经正确地反映 了它将要进入的存储区位置。 。优点:程序中的逻辑地址与实际内存中的物理地址完全相同。因此在程序执行前 不需对程序指令中的地址再进行任何调整和修改,装入到指定内存位置就可运行。 ·缺点: (1)要求编程人员熟悉内存使用情况,程序设计时要极小心地对待指令中的地址, 不能够出现任何差错,否则后果不堪设想: (2)程序进入内存后,不能做任何移动,只能固定在这个存储区内: (3)对程序做任何微小修改,都可能会牵扯到程序整体的变动,费工耗时: (4)不适用于多道程序设计环境。 2.静态重定位方式 。在多道程序设计环境下,用户事先无法、也不愿意知道自己的程序会被装入到内 存的什么位置,他们只是向系统提供相对于“0”编址的程序。 。操作系统要有一个“重定位装入程序”,功能是:一根据当前内存使用情况,为 欲装入的二进制目标程序分配所需的存储区;二根据所分配的存储区,对程序中的指令 地址进行重新计算和修改:三将重定位后的二进制目标程序装入到指定的存储区中
要求编程人员熟悉内存使用情况,程序设计时要极小心地对待指令中的地址, 不能够出现任何差错,否则后果不堪设想; • 3.2.2 地址定位方式和静态重定位 1. 绝对定位方式 即在程序装入内存之前,程序指令中的地址就已经是绝对地址,已经正确地反映 了它将要进入的存储区位置。 . . 优点:程序中的逻辑地址与实际内存中的物理地址完全相同。因此在程序执行前 不需对程序指令中的地址再进行任何调整和修改,装入到指定内存位置就可运行。 . 不适用于多道程序设计环境。 缺点: (1) (2) (3) (4) 程序进入内存后,不能做任何移动,只能固定在这个存储区内; 对程序做任何微小修改,都可能会牵扯到程序整体的变动,费工耗时; 2. 静态重定位方式 . 在多道程序设计环境下,用户事先无法、也不愿意知道自己的程序会被装入到内 存的什么位置,他们只是向系统提供相对于“0”编址的程序。 . 操作系统要有一个“重定位装入程序”,功能是:一根据当前内存使用情况,为 欲装入的二进制目标程序分配所需的存储区;二根据所分配的存储区,对程序中的指令 地址进行重新计算和修改;三将重定位后的二进制目标程序装入到指定的存储区中
。采用这种重定位方式,用户向装入程序提供相对于“0”编址的二进制目标程序, 无需关注程序具体的装入位置。通过重定位装入程序的加工,目标程序进入分配给它的 物理地址空间,程序指令中的地址也都被修改为正确反映该空间的情形。因为这种地址 重定位是在程序执行前完成的,因此称为地址的“静态重定位” 。静态重定位的特点 ()静态重定位由软件(重定位装入程序)实现,无须硬件提供支持: (②)静态重定位是在程序运行之前完成地址重定位工作的: (③)地址重定位的工作是在程序装入时被一次集中完成的: (④物理地址空间里的目标程序与原逻辑地址空间里的目标程序面目已不相同,前 者是后者进行地址调整后的结果: (⑤)实施静态重定位后,位于物理地址空间里的用户程序不能在内存中移动,除非 再重新进行地址定位: (6适用于多道程序设计环境。 3.动态重定位方式 ·对用户程序实行地址的静态重定位后,定位后的程序就被“钉死”在了它的物理 地址空间里,不能做任何移动。 ,将地址定位的时间推迟到程序执行时再进行,这就是地址“动态重定位”方式。 在对程序实行动态重定位时需要硬件的支持
静态重定位由软件(重定位装入程序)实现,无须硬件提供支持; 静态重定位的特点 静态重定位是在程序运行之前完成地址重定位工作的; 地址重定位的工作是在程序装入时被一次集中完成的; 物理地址空间里的目标程序与原逻辑地址空间里的目标程序面目已不相同,前 者是后者进行地址调整后的结果 ; 实施静态重定位后,位于物理地址空间里的用户程序不能在内存中移动,除非 再重新进行地址定位 ; . 采用这种重定位方式,用户向装入程序提供相对于“0”编址的二进制目标程序, 无需关注程序具体的装入位置。通过重定位装入程序的加工,目标程序进入分配给它的 物理地址空间,程序指令中的地址也都被修改为正确反映该空间的情形。因为这种地址 重定位是在程序执行前完成的,因此称为地址的“静态重定位” 。 . (1) (2) (3) (4) (5) (6) 适用于多道程序设计环境。 3. 动态重定位方式 对用户程序实行地址的静态重定位后,定位后的程序就被“钉死”在了它的物理 地址空间里,不能做任何移动。 . . 将地址定位的时间推迟到程序执行时再进行,这就是地址“动态重定位”方式。 在对程序实行动态重定位时需要硬件的支持
。3.2.3单一连续分区存储管理 1. 单一连续分区存储管理的基本思想 总体上把内存储器分为两个分区:一个分区固定分配给操作系统使用:另一个分配 给用户使用,称为“用户区” 2.单一连续区存储管理的特点 ·系统总是把整个用户区分配给一个用户使用。 ·内存用户区又被分为“使用区”和“空闲区”两部分,分配给了用户、但又未使 用的区域称为“内部碎片”。内部碎片的存在是对内存资源的一种浪费。 ·这种系统只适用于单用户(或单道)的情况。 ·进入内存作业独享系统中的所有资源,包括内存的整个用户区。 。采用这种存储分配策略时,将对用户程序实行静态重定位。 ·为阻止用户程序指令中的地址 内存 内存 内存 0 0 闯入操作系统所占用的区域,在CPU 操作系统 操作系统 操作系统 界限寄存器 里设置一个用 9 a 于存储保护的 专用寄存器: 作业3 作业2 作业1 使用区 使用区 户 “界限寄存器” 用户区 空闲区 空闲区
为阻止用户程序指令中的地址 闯入操作系统所占用的区域,在CPU 里设置一个用 于存储保护的 专用寄存器: “界限寄存器”。 . 内存用户区又被分为“使用区”和“空闲区”两部分,分配给了用户、但又未使 用的区域称为“内部碎片”。内部碎片的存在是对内存资源的一种浪费。 • 3.2.3 单一连续分区存储管理 1. 2. 单一连续分区存储管理的基本思想 单一连续区存储管理的特点 总体上把内存储器分为两个分区:一个分区固定分配给操作系统使用;另一个分配 给用户使用,称为“用户区” 。 . . . . . 作业3 作业2 作业1 操作系统 用户区 内存 0 a b 操作系统 使用区 内存 0 a b 空闲区 用 户 区 c 操作系统 使用区 内存 0 a b 空闲区 c a 界限寄存器 系统总是把整个用户区分配给一个用户使用 。 这种系统只适用于单用户(或单道)的情况。 进入内存作业独享系统中的所有资源,包括内存的整个用户区。 采用这种存储分配策略时,将对用户程序实行静态重定位
3.单一连续分区管理的缺点 每次只能一个作业进入内存,故不适宜多道程序设计,系统的工作效率不高,资 源利用率低下。 。作业比用户区小时,就会形成碎片,造成内存储器资源的浪费。 ·若用户作业的相对地址空间比用户区大,该作业就无法运行 内存 4.覆盖技术 0 “覆盖”是早期为 MAIN(10KB) MAIN(10KB) A(50KB) 10KB -MAIN 程序设计人员提供的扩 连接装配 充内存的技术,中心思 A(50KB) B(30KB) B(30KB) 50KB A或B 想是允许作业的若干个 C(30KB) 程序段使用同一个存储 D(20KB) C(30KB) D(20KB) E(40KB) 区域,共用的存储区被 E(40KB) 40KB C或D或E 180KB 称为“覆盖区” 内存储器 5.对换技术 基本思想:将作业都存放在辅存。每次只让 操作系统 辅助存储器 其中的一个进入内存投入运行。当运行中提出输 换出 入输出请求或分配给的时间片用完时,就把这个 用户区 作业 程序从内存“换出”到辅存,把辅存里的另一个 作业2 换入 作业“换入”运行,产生出“多道”的效果。 作业3
. 作业比用户区小时,就会形成碎片,造成内存储器资源的浪费。 3. 单一连续分区管理的缺点 . . 4. 覆盖技术 每次只能一个作业进入内存,故不适宜多道程序设计,系统的工作效率不高,资 源利用率低下。 若用户作业的相对地址空间比用户区大,该作业就无法运行。 “覆盖”是早期为 程序设计人员提供的扩 充内存的技术,中心思 想是允许作业的若干个 程序段使用同一个存储 区域,共用的存储区被 称为“覆盖区”。 MAIN(10KB) A(50KB) B(30KB) C(30KB) D(20KB) E(40KB) MAIN(10KB) A(50KB) B(30KB) C(30KB) D(20KB) E(40KB) 0 180KB 连接装配 10KB 50KB 40KB 内存 MAIN A或B C或D或E 5. 对换技术 作业1 作业2 作业3 辅助存储器 内存储器 操作系统 用户区 换出 换入 基本思想:将作业都存放在辅存。每次只让 其中的一个进入内存投入运行。当运行中提出输 入输出请求或分配给的时间片用完时,就把这个 程序从内存“换出”到辅存,把辅存里的另一个 作业“换入”运行 ,产生出“多道”的效果
。3.2.4 固定分区存储管理 1. 基本思想 所谓“固定分区”存储管理,是指预先把内存的用户区划分成若干个连续的分区, 它们的尺寸可以相同,也可以不同。划分后,内存中分区的个数以及每个分区的尺寸保 持不变。每个分区里只允许装入一个作业运行。 2.对作业的组织 ·每个分区设置一个后备作业队列 ,多个分区只设置一个后备作业队列 个作业到达时,总是进入到“能 当某个分区空闲时,统一都到这一个 容纳该作业的最小分区”的那个后备作 队列里去挑选作业,装入运行。 业队列里去排队。 0 0 操作系统 操作系统 20KB 20KB 第I分区8KB) 第1分区(8KB) 第2分区32KB) 第2分区32KB) FHEHDCHBHA 第3分区(64KB) 第3分区64KB) E→第4分区(I32KB) 第4分区132KB) 256KB 256KB
• 3.2.4 固定分区存储管理 1. 基本思想 所谓“固定分区”存储管理,是指预先把内存的用户区划分成若干个连续的分区, 它们的尺寸可以相同,也可以不同。划分后,内存中分区的个数以及每个分区的尺寸保 持不变。每个分区里只允许装入一个作业运行。 2. 对作业的组织 操作系统 第1分区(8KB) 第2分区(32KB) 第3分区(64KB) 第4分区(132KB) 0 256KB 20KB C B A D F E 操作系统 第1分区(8KB) 第2分区(32KB) 第3分区(64KB) 第4分区(132KB) 0 256KB 20KB F E D C B A . 每个分区设置一个后备作业队列 . 多个分区只设置一个后备作业队列 一个作业到达时,总是进入到“能 容纳该作业的最小分区”的那个后备作 业队列里去排队。 当某个分区空闲时,统一都到这一个 队列里去挑选作业,装入运行