习题答案
第第 5 5 章章存存 储储 管管 理理 (1) 存储管理的任务和功能是什么? 解: 存储管理的主要任务是: 1.支持多道程序的并发执行, 使多道程序能共享存储资源, 在互不干扰的环境中并发 执行。 2.方便用户,使用户减少甚至摆脱对存储器的管理, 使用户从存储器的分配、 保护和 共享等繁琐事物中解脱出来。 3.提高存储器的利用率和系统吞吐量。 4.从逻辑上扩充内存空间, 支持大程序能在小的内存空间运行或允许更多的进程并发 执行。 为了完成上述任务,现代操作系统的存储管理应具有以下功能: 1. 存储空间的分配和回收。 2. 地址转换,实现逻辑地址到物理地址的映射。 3. 主存空间的共享。 4. 主存空间的保护。 5. 主存储空间的扩充。 6. 对换,对换的主要任务是实现在内存和外存之间的全部或部分进程的对换,即将内 存中处于阻塞状态的进程调换到外存上, 而将外存上处于就绪状态的进程换入内存。 对换的 目的主要是为了提高内存利用率,提高系统的吞吐量。 (2) 为什么要配置层次式存储器? 解: 为了解决 CPU 和存储器之间速度上的不匹配,在现代计算机系统中,存储系统通常采 用层次结构,存储层次可粗略分为三级:最高层为CPU 寄存器,中间为主存,最底层是辅 存。根据具体功能还可以细分为寄存器、高速缓存、主存储器、磁盘缓存、辅存储设备(固 定磁盘、可移动存储介质)5 层。一个文件的数据可能出现在存储系统的不同层次中,例如, 一个文件数据通常被存储在辅存中(如硬盘),当其需要运行或被访问时,就必须调入主存, 也可以暂时存放在主存的磁盘高速缓存中。 大容量的辅存常常使用磁盘, 磁盘数据经常备份 在可移动磁盘或者光盘上,以防止硬盘故障时丢失数据。 (3) 什么是逻辑地址?什么是物理地址?为什么要进行二者的转换工作? 解: 逻辑地址是应用程序中使用的访存地址, 有时也称为相对地址, 由逻辑地址构成的地址 空间称为逻辑空间。每个应用程序的逻辑地址空间都是从零号地址码开始的。 物理地址是内存储器的实际存储单元地址, 有时也称为绝对地址, 由物理地址构成的地 址空间称为物理空间。物理地址空间也是从零号地址码开始的。 在多道程序环境下, 程序逻辑地址空间和内存物理地址空间是不一致的。 用户程序的逻 辑地址可以是一维线性或多维线性,而内存中的每一个存储单元都有相应的内存地址相对 应,属于一维线性地址。 在将用户程序部分或全部地装入内存空间时, 要实现逻辑地址到物 理地址的映射。 (4) 地址重定位,静态地址重定位和动态地址重定位有什么区别? 解: 地址重定位指从逻辑地址到物理地址的映射过程,也称为地址映射。 静态地址重定位是指在用户程序执行之前完成地址映射工作, 即把程序的逻辑地址都转 换为实际的内存物理地址。 静态地址重定位的地址变换只是在装入时一次完成, 而在程序运 行期间不再变化。 动态地址重定位是指在程序执行过程中,CPU 在访问内存之前,将要访问的程序或数 据地址转换为内存地址。 (5) 什么是内部碎片和外部碎片?。 解: 在一个分区内部出现的碎片(即被浪费的空间)称作内部碎片, 如固定分区法就会产生内 部碎片; 在所有分区之外新增的碎片称作外部碎片, 如在动态分区法实施过程中出现的越来越多 的小空闲块就是外部碎片,由于它们太小,无法装入一个进程,因而被浪费掉。 (6) 什么是分页和分段存储技术,两者有何区别? 解: 在分页系统中,系统会把用户程序的地址空间划分成若干个大小相等的区域,每个区 域称作一个页面或页。 每个页都有一个编号, 叫做页号。 页号一般从 0 开始, 如 0, 1, 2, …, 等。类似地,也把内存空间划分成若干和页大小相同的物理块,这些物理块叫“帧” (frame) 或内存块。同样,每个物理块也有一个编号, 块号也是从 0 开始依次顺序排列。系统为进程 分配内存时,以块为单位将进程中的若干页分别装入多个可以不相邻接的块中。 在分段存储管理方式中,程序按内容或过程(函数)关系划分为若干个段,每个段定义一 组逻辑信息,都有自己的名字。一个用户作业所包含的段对应于一个二维线性虚拟空间, 也 就是一个二维虚拟存储器。 段式管理程序以段为单位进行内存分配, 然后通过地址映射机构 把段式虚拟地址转换为实际的内存物理地址。 分段和分页有许多相似之处, 比如,二者在内存中都采用离散分配方式, 而不是整体连 续分配方式,而且都要通过地址映射机构来实现地址转换。 但二者在概念上却完全不同, 具 体表现在下述三个方面: 1.页是信息的物理单位,而段是信息的逻辑单位。 分页是为了实现离散分配, 减少内 存碎片,提高内存利用率。或者说, 分页是由于系统管理的需要,而不是用户的需 要。段则是信息的逻辑单位, 它含有一组意义相对完整的信息。 段的长度不是固定 的,取决于用户所编写的程序。 分段的目的是为了能更好地满足用户的需要, 更方 便用户编程,更好地实现信息共享和保护。 2.页的大小由系统确定, 由系统把逻辑地址划分为页号和页内地址两部分, 整个系统 只能有一种大小的页面; 而段的长度却不固定,它取决于用户的程序。 通常由编译 程序在对源码进行编译时,根据程序的性质来划分。 3.分页的进程地址空间是一维的, 即单一的线性空间; 而分段的进程地址空间是二维 的,由段号和段内地址两部分组成。 (7) 什么是虚拟存储器?列举采用虚拟存储器的必要性和可能性。 解: 虚拟存储器是指在具有层次结构存储器的计算机系统中,具有请求调入和交换功能, 为用户提供一个比实际物理内存容量大得多的可寻址的一种存储器系统, 它能从逻辑上对内 存容量进行扩充。 采用虚拟存储器的必要性:传统存储管理方式要求将作业全部装入内存之后才能运行, 这一特征导致大作业和多个作业要求运行时系统无法满足; 另外, 传统存储管理方式具有驻 留性,即作业装入内存直到运行结束,便一直驻留在内存中。尽管进程在运行中会因 I/O 等 原因而长期处于阻塞状态, 或有的程序模块在运行过一次后就不再需要, 但它们都仍将继续 占用宝贵的内存资源。 采用虚拟存储器的可能性: 根据程序的局部性定理, 应用程序在执行之前, 没有必要全 部装入内存, 而只需要将那些当前要运行的部分页或段先装入内存即可运行, 其余部分可以 仍然留在外存。程序在执行时,如果它所访问的页(段)已经调入内存,便可继续执行下去。 但如果程序所要访问的页(段)不在内存中(称为缺页或缺段),此时程序可以利用操作系统提 供的请求调页(段)功能,将它们调入内存,以便程序能够继续执行下去。如果内存已满,无 法装入新调入的页(段), 则必须利用一定的页(段)置换功能, 将内存中暂时不用的页(段)换到 外存中,以腾出足够的空间来存放新调入的页(段),从而保证程序的顺利执行。这样,一个 大的程序就可以在较小的内存空间中执行。 从用户的角度来看, 该系统所具有的内存容量比 实际内存容量大了很多。但实际上,用户所看到的大容量存储器是不存在的,只是虚拟的, 故把这样的存储器称为虚拟存储器。 (8) 一个计算机系统的虚拟存储器,其最大容量和实际容量分别由什么决定? 解: 虚拟存储器的最大容量由主存和辅存的容量之和确定。 虚拟