操作系统(Windows与Linux)5——存储管理
存储管理 第5章 存储管理 存储管理是对主存(又称内存)的管理。 内存: 处理机可以直接存取指令和数据的存储器,是进程得 以运行的重要物质基础,是计算机中的一种宝贵而 紧俏的资源。 近年,随着硬件技术和生产水平的迅 速发展,内存的成本迅速下降,容量一直不断扩大,仍不能满足各种软件对存储空间急剧增长的需求。 对内存的有效管理和有效使用,是现代 操作系统十分重要的问题。 第5章 存储管理 本章要点: 5.1 存储管理的基本概念 5.2 连续分配方式 5.3 离散分配方式 5.4 虚拟存储器 5.5 案例:Linux存储管理 5.6 例题分析 5.7 本章小结 5.1 存储管理的基本概念 知识点: § 5.1.1 存储管理的功能 § 5.1.2 存储器管理方式 § 5.1.3 地址重定位 5.1.1 存储管理的功能 内存资源不足: 单道程序阶段,已经意识到存储资源不足,开始研究如何从逻辑上扩充内存空间。 多道程序出现后,这个问题更为突出,且提出如何使每道程序都能在不受干扰的环境中运行,并能尽量提高存储器的利用率。 为对主存进行有效的管理,存储管理应具有以下功能: 内存的分配和回收:为每道程序分配内存空间,由操作系统完成主存储器空间的分配和管理,使程序员摆脱程序设计的麻烦,提高编程效率;回收系统或用户释放的存储区。 提高存储器的利用率:分配内存空间时,尽量减少不可用的存储空间(“零头”),允许正在运行程序申请附加内存空间,使多道程序能动态地共享主存。 5.1.1 存储管理的功能 地址映射: 把进程地址空间中使用的逻辑地址变换成存储空间中的物理地址的过程。 目标程序限定的地址范围称该程序的地址空间,是程序访问信息时用到的一系列地址单元的集合,地址空间中的地址是逻辑地址。 内存空间是内存中物理地址的集合。 两者不一致。地址映射一般需要硬件或软件的配合。 存储保护: 确保进入主存的每道程序都在自己的内存空间运行,互不干扰。 既要防止一道程序由于错误破坏其他程序,也要防止破坏系统程序。保护一般由硬件和软件配合完成。 扩充主存容量: 借助虚拟存储技术或其他自动覆盖技术,为用户提供比主存空间大的地址空间,实现扩充主存容量的目的。 “提高存储器的利用率”和“更好地满足用户需求”,是存储管理方式不断发展的推动力。 5.1.2 存储器管理方式 一般有以下几种分配方式: 1. 连续分配方式 为一个系统或用户程序分配一个连续的空间。有以下两种方式: ⑴单一连续分配方式 单道程序的一种存储管理方式,内存中仅驻留一道程序,整个用户区为一个用户独占。不适用于多道程序。 ⑵分区分配方式 可用于多道程序设计的较简单的存储管理方式。 把内存划分为若干分区,操作系统占用一个分区,其余每个分区容纳一个进程。 分区分配方式可以进一步分为两种: ①固定分区分配:将内存用户区划分为若干个固定大小的区域,每个区域中驻留一道程序; ②动态分区分配:根据用户程序大小,动态地对内存进行划分,各分区大小不定,内存划分为多个分区,数目可变。 5.1.2 存储器管理方式 2. 离散分配方式 为减少连续分配产生的碎片,提高存储器的利用率,引入离散分配方式。 可将一个用户程序离散地分配到内存中多个不相邻接的区域中。 5.1.2 存储器管理方式 离散分配方式有三种: ⑴分页存储管理:用户程序的地址空间划分成若干个固定大小的称为“页”的区域,相应将内存空间分成若干个物理块,页和块大小相等。 可将用户程序的任一页放入内存的任一块中,实现离散分配,且内存中的碎片大小不会超过一页。 ⑵分段存储管理:用户程序的地址空间分成若干个大小不等的段,每段可以定义一组相对完整的逻辑信息。存储分配时,以段为单位,这些段在内存中可以不相邻。 ⑶段页式存储管理:分页和分段两种存储管理方式结合的产物,发挥两者优点,既提高存储器利用率,又能满足用户要求。 5.1.3 地址重定位 1. 重定位及相关概念 用汇编语言或高级语言编写程序时,通过符号名访问某单元。 程序中由符号名组成的空间称为名空间。 一个应用程序编译后,形成若干个目标程序,目标程序再经过链接形成可装入程序,即转换为相对地址编址形式。这些程序中地址都是以“0”为基址顺序编址。由这些地址形成的地址范围称为地址空间,其中的地址称为逻辑地址或相对地址。 存储空间是主存中一系列存储信息的物理单元的集合,其中的地址称为物理地址或绝对地址。 即地址空间是逻辑地址的集合;存储空间是物理地址的集合。 一个是虚的概念,一个是实的物体。 一个编译好的程序保存在自己的地址空间中,需要在计算机上运行时才装入存储空间。 5.1.3 地址重定位 一个程序在装入时分配到的存储空间与其地址空间不一致。 程序运行时要访问的指令、数据的实际地址和地址空间中的地址不