计算机操作系统-第四章 存储器管理

205 阅读7分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

第四章 存储器管理

存储器的层次结构

在这里插入图片描述

程序的装入和链接

如何从源程序变为在内存中可执行的程序

  1. 编译
  2. 链接
  3. 装入 在这里插入图片描述

程序的装入方式

  1. 绝对装入方式
  2. 可重定位1装入方式
  1. 动态运行时装入方式

程序的链接方式

  1. 静态链接
  2. 装入时动态链接
  3. 运行时动态链接

存储管理技术-分区(连续)

固定分区

  1. 定义 系统初始启动时将内存划分为数目固定、尺寸固定的多个分区。这些分区的尺寸可以相等也可以不等。
  2. 条件 系统需建立一张分区说明表或使用表,以记录分区号、分区大小、分区的起始地址及状态(已分配或未分配)。
  3. 流程 当某个用户程序要装入内存时,通常将分区按大小进行排队,由内存分配程序检索分区说明表,从表中找出一个满足要求的尚未分配的分区分配该程序,同时修改说明表中相应分区的状态;若找不到大小足够的分区,则拒绝为该程序分配内存。程序执行完毕,释放占用的分区,管理程序修改说明表中相应分区的状态为未分配,实现内存资源的回收。
  4. 缺点 作业的大小并不一定与某个分区大小相等,从而使一部分存储空间被浪费,产生内零头2,所以主存的利用率不高。分区尺寸固定,系统无法运行大程序;分区数目固定,使活动进程的数目受限。

动态分区

  1. 定义 动态分区分配是一种动态划分存储器的分区方法。内存不是预先划分好的,作业装入时,根据作业的需求和内存空间的使用情况来决定是否分配。
  2. 条件 系统需要建立空闲分区表(和空闲分区链),用来登记系统中的空闲分区(分区号、分区起始地址、分区大小及状态)。以及需要特定的分区分配算法;
  3. 流程 在这里插入图片描述 在这里插入图片描述
  4. 缺点 容易产生外零头3,需要较好的匹配算法支持。
  1. 分配算法 a.基于顺序搜索的动态分区分配算法
  • 首次适应算法
  • 循环首次适应算法
  • 最佳适应算法
  • 最坏适应算法 b.基于索引搜索的动态分区分配算法
  • 快速适应算法
  • 伙伴系统
  • 哈希算法
  1. 涉及到的寄存器(存储保护)
  • 基址寄存器
  • 界限寄存器
  1. 覆盖与对换 覆盖可减少一个进程运行所需的空间。对换可让整个进程暂存于外存中,让出内存空间。 覆盖是由程序员实现的,操作系统根据程序员提供的覆盖结构来完成程序段之间的覆盖。对换技术不要求程序员给出程序段之间的覆盖结构。 覆盖技术主要在同一个作业或进程中进行。对换主要在作业或进程之间进行。

存储管理技术-分页(离散)

简单分页

  1. 定义 将一个用户进程的地址空间(逻辑空间)划分成若干个大小相等的区域,称为页或页面,各页从 0 开始编号。内存空间也分成若干个与页大小相等的区域,称为块(物理块)或页框(frame),同样从 0 开始编号。在为进程分配内存时以块为单位,将进程中若干页装入到多个不相邻的块中,最后一页常装不满一块而出现页内碎片。在分页存储管理方式中,如果不具备页面对换功能,不支持虚拟存储器功能,这种存储管理方式称为纯分页或基本分页存储管理方式。
  2. 条件 需要建立页表、以及需要寄存器的配合(硬件地址转换)。 逻辑地址:页号+页内偏移 物理地址:块号+块内偏移
  3. 页表 a.为了便于在内存找到进程的每个页面所对应块,分页系统中为每个进程配置一张页表,进程逻辑地址空间中的每一页,在页表中都对应一个页表项。页表项的长度一般是由操作系统决定的。(具体页表项中都包含什么不再讨论) c.页表存放在内存中,属于进程的现场信息。用途:①记录进程的内存分配情况 ②实现进程运行时的动态重定位。 d.访问一个数据需访问内存 2 次 (页表一次,内存一次)。页表的基址及长度由页表寄存器给出。
  4. 页面的大小 在这里插入图片描述
  5. 多级页表 为了解决大页表问题。 在这里插入图片描述
  6. 反置页表 是为每一个物理块设置一个页表项并按物理块号排序,其中的内容是页号 P 及隶属进程标志符 pid。

地址变换机构

作用:将用户地址空间中的逻辑地址变换为内存空间中的物理地址。实现逻辑地址向物理地址的转换(页号 ⇒ 块号)。地址变换借助页表来完成。

  1. 基本地址变换机构 在这里插入图片描述
  2. 具有快表的地址变换机构 基本地址变换存在的问题:地址变换速度低(两次访问内存) 目的:为提高地址变换速度。 定义:又称为联想寄存器、联想存储器 (Associative Memory) 、IBM-TLB(Translation Lookaside Buffer)。快表是一种特殊的高速缓冲存储器(Cache),内容是页表中的一部分或全部内容。 流程:CPU 产生逻辑地址的页号,首先在快表中寻找,若命中就找出其对应的物理块;若未命中,再到页表中找其对应的物理块,并将之复制到快表。若快表中内容满,则按某种算法淘汰某些页。 在这里插入图片描述

访问内存的有效时间

在这里插入图片描述

虚拟存储分页

存储管理技术-分段(离散)

引入的必要性:方便编程、信息共享、信息保护、动态增长、动态链接

简单分段

  1. 定义 将用户作业的逻辑地址空间划分成若干个大小不等的段(由用户根据逻辑信息的相对完整来划分)。各段有段名(常用段号代替),首地址为 0。
  2. 条件 需要段表(内存中)。
  3. 维度 整个作业的地址空间由于是分成多个段,,因而是二维的,逻辑地址由段号和段内地址所组成。

段页式

  1. 引入: 分页活动源于系统管理物理内存的需要,在系统内部进行,由系统实施,用户看不见。 分段活动源于用户进行模块化程序设计的需要,在系统外部进行,由用户实施,用户是知道的。 在这里插入图片描述
  2. 地址结构 在这里插入图片描述
  3. 段表和页表 系统中设段表和页表,均存放于内存中。读一字节的指令或数据须访问内存三次。为提高执行速度可增设高速缓冲寄存器。 每个进程一张段表,每个段一张页表。 段表含段号、页表始址和页表长度。页表含页号和块号。
  4. 流程 在这里插入图片描述

虚拟存储分段

Footnotes

  1. 重定位:由于一个作业装入到与其地址空间不一致的存储空间所引起的,需对其有关地址部分进行调整的过程就称为重定位(实质是一个地址变换过程/地址映射过程)。分为静态、动态两种方式;静:软件实现,动:软硬(寄存器支持)结合。

  2. 内零头是指分配给作业的存储空间中未被利用的部分。

  3. 外零头是指系统中无法利用的小存储块。