清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 第5章存储管理 51存储管理的功能 52分区存储管理 53覆盖与交换技术 54页式管理 55段式与段页式管理 56局部性原理和抖动问题 本章小结 习题
第5章 存储管理 5.1 存储管理的功能 5.2 分区存储管理 5.3 覆盖与交换技术 5.4 页式管理 5.5 段式与段页式管理 5.6 局部性原理和抖动问题 本章小结 习题
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 5.1存储管理的功能 存储器是计算机系统的重要资源之一。因为任何程 序和数据以及各种控制用的数据结构都必须占用 定的存储空间,因此,存储管理直接影响系统性能。 存储器由内存( primary srotage)和外存 ( secondary storage)组成。内存由顺序编址的块 组成,每块包含相应的物理单元。CPU要通过启 动相应的输入输出设备后才能使外存与内存交换信 息。本章主要讨论内存管理问题。主要包括:几种 常用的内存管理方法、内存的分配和释放算法、虚 拟存储器的概念、控制主存和外存之间的数据流动 方法、地址变换技术和内存数据保护与共享技术等。 下面先介绍存储管理的功能
5.1 存储管理的功能 存储器是计算机系统的重要资源之一。因为任何程 序和数据以及各种控制用的数据结构都必须占用一 定的存储空间,因此,存储管理直接影响系统性能。 存储器由内存(primary srotage)和外存 (secondary storage)组成。内存由顺序编址的块 组成,每块包含相应的物理单元。CPU 要通过启 动相应的输入输出设备后才能使外存与内存交换信 息。本章主要讨论内存管理问题。主要包括:几种 常用的内存管理方法、内存的分配和释放算法、虚 拟存储器的概念、控制主存和外存之间的数据流动 方法、地址变换技术和内存数据保护与共享技术等。 下面先介绍存储管理的功能
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 511虚拟存储器 虚拟存储器是存储管理的核心概念。现代计算机系 统的物理存储器都分为内存和外存,内存价格昂贵, 不可能用大容量的内存存储所有被访问的或不被访 问的程序与数据段。而外存尽管访问速度较慢,但 价格便宜,适合于存放大量信息。这样,存储管理 系统把进程中那些不经常被访问的程序段和数据放 入外存中,待需要访问它们时再将它们调入内存 那么,对于那些一部分数据和程序段在内存而另 部分则在外存的进程,怎样安排它们的地址呢?通 常由用户编写的源程序,首先要由编译程序编译成 CPU可执行的目标代码。然后,链接程序把一个 进程的不同程序段链接起来以完成所要求的功能
5.1.1 虚拟存储器 虚拟存储器是存储管理的核心概念。现代计算机系 统的物理存储器都分为内存和外存,内存价格昂贵, 不可能用大容量的内存存储所有被访问的或不被访 问的程序与数据段。而外存尽管访问速度较慢,但 价格便宜,适合于存放大量信息。这样,存储管理 系统把进程中那些不经常被访问的程序段和数据放 入外存中,待需要访问它们时再将它们调入内存。 那么,对于那些一部分数据和程序段在内存而另一 部分则在外存的进程,怎样安排它们的地址呢?通 常由用户编写的源程序,首先要由编译程序编译成 CPU 可执行的目标代码。然后,链接程序把一个 进程的不同程序段链接起来以完成所要求的功能
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 显然,对于不同的程序段,应具有不同的地址。有 两种方法安排这些编译后的目标代码的地址。一种 方法是按照物理存储器中的位置赋予实际物理地址。 这种方法的好处是CPU执行目标代码时的执行速 度高。但是,由于物理存储器的容量限制,能装入 内存并发执行的进程数将会大大减少,对于某些较 大的进程来说,当其所要求的总内存容量超过内存 容量时将会无法执行。另外,由于编译程序必须知 道内存的当前空闲部分及其地址,并且把一个进程 的不同程序段连续地存放起来,因此编译程序将非 常复杂
显然,对于不同的程序段,应具有不同的地址。有 两种方法安排这些编译后的目标代码的地址。一种 方法是按照物理存储器中的位置赋予实际物理地址。 这种方法的好处是CPU 执行目标代码时的执行速 度高。但是,由于物理存储器的容量限制,能装入 内存并发执行的进程数将会大大减少,对于某些较 大的进程来说,当其所要求的总内存容量超过内存 容量时将会无法执行。另外,由于编译程序必须知 道内存的当前空闲部分及其地址,并且把一个进程 的不同程序段连续地存放起来,因此编译程序将非 常复杂
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 另一种方法是编译链接程序把用户源程序编译后链 接到一个以0地址为始地址的线性或多维虚拟地址 空间。这里,链接既可以是在程序执行以前由链接 程序完成的静态链接,也可以是在程序执行过程中 由于需要而进行的动态链接。而且,每一个进程都 拥有这样一个空间(这个空间是一维的还是多维的 由存储管理方式决定)。每个指令或数据单元都在 这个虚拟空间中拥有确定的地址,把这个地址称为 虚拟地址( virtual address)。显然,进程在该空 间的地址排列可以是非连续的,其实际物理地址由 虚拟地址到实际物理地址的地址变换机构变换得到。 由源程序到实际存放该程序指令或数据的内存物理 位置的变换如图51所示
另一种方法是编译链接程序把用户源程序编译后链 接到一个以0地址为始地址的线性或多维虚拟地址 空间。这里,链接既可以是在程序执行以前由链接 程序完成的静态链接,也可以是在程序执行过程中 由于需要而进行的动态链接。而且,每一个进程都 拥有这样一个空间(这个空间是一维的还是多维的 由存储管理方式决定)。每个指令或数据单元都在 这个虚拟空间中拥有确定的地址,把这个地址称为 虚拟地址(virtual address)。显然,进程在该空 间的地址排列可以是非连续的,其实际物理地址由 虚拟地址到实际物理地址的地址变换机构变换得到。 由源程序到实际存放该程序指令或数据的内存物理 位置的变换如图5.1所示