1. 为什么要配置层次式存储器?
    答:设置多个存储器可以使存储器两端的硬件能并行工作;采用多级存储系统,特别是 Cache 技术,是减轻存储器带宽对系统性能影响的最佳结构方案;在微处理机内部设置各种 缓冲存储器,减轻对存储器存取的压力。增加 CPU 中寄存器数量大大缓解对存储器压力。
  2. 可采用哪几种方式将程序装入内存?它们分别适用于何种场合?
    答:(1)绝对装入方式,只适用于单道程序环境。
    (2)可重定位装入方式,适用于多道程序环境。
    (3)动态运行时装入方式,用于多道程序环境;不允许程序运行时在内存中移位置。
  3. 何谓静态链接?静态链接时需要解决两个什么问题?
    答:静态链接:在程序运行之前先将各目标模块以及他们的库函数链接成一个完整的装配模块,以后不再拆开。
    静态链接需解决的两个问题:
    (1)对相对地址进行修改:在由编译产生的目标模块中,使用的都是相对地址,起始地址为0,每个模块中的地址都是相对于起始地址计算的。在链接成一个装入模块后,起始地址变为L而其他地址也要做处相应的改变(L+M)
    (2)变换外部调用符号:将每个模块中用的外部调用符号也都变换为相对地址。
  4. 何谓装入时动态链接?装入时动态链接方式有何优点?
    答:装入时动态链接:用户源程序编译后,得到一组目标模块,在装入内存时,采用边装入,边链接的方式。
    优点:
    (1)便于修改和更新:对于静态链接,如果需要修改获更新某个目标模块,需要重新打开装入模块,这不仅仅是效率问题,而在很多时候甚至是不可能的。而采用动态链接方式,由于个目标模块是分开存放的,所以要修改或更新各目标模块是件非常容易地事情。
    (2)便于实现对目标模块的共享:在静态链接中,每个模块必含有目标模块的拷贝,无法实现共享,但采用装入时链接的方式,很容易将一个目标模块链接到几个应用模块上。
  5. 何谓运行时动态链接?运行时动态链接方式有何优点?
    答:运行时动态链接是将对某些模块的链接推迟到程序执行时才执行。优点:加快程序的装入过程,同时节省大量的内存空间。在执行过程中,将其链接到调用者模块上,凡在执行过程中未被用到的目标模块,都不会被调入内存和被链接到装入模块上。
  6. 在动态分区分配方式中,应如何将各空闲分区链接成空闲分区链?
    答:在每个分区的起始部分,设置一些控制分区分配的信息,以及用于链接各分区所用 的前向指针;在分区尾部设置一个后向指针,通过前后向链接指针,将所有空闲分区链成一 个双向链。当分区分配出去后,把状态位由“0”改为“1”。
  7. 为什么要引入动态重定位?如何实现?
    答:在程序执行过程中,每当访问指令或数据时,为了将要访问的程序或数据的逻辑地址转换成物理地址,引入了动态重定位;
    实现方法:在系统中增加一个重定位寄存器,用来装入程序在内存中的起始地址,程序执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加之和,从而实现动态重定位。
  8. 什么是基于顺序搜索的动态分区分配算法?它可分为哪几种?
    答:基于顺序搜索的动态分区分配算法:依次搜索空闲分区链上的空闲分区,去寻找一个其大小能满足要求的分区。
    分类:(1)首次适应算法(FF)(2)循环首次适应算法(NF)。(3)最佳适应算法(BF)(4)最坏适应算法(WF)
  9. 在采用首次适应算法回收内存时,可能出现哪几种情况?应怎样处理这些情况?
    答:(1)回收区前邻空闲区。将回收区与前邻空闲区合并,将前邻空闲区大小修改为两者之和。
    (2)回收区后邻空闲区。将两区合并,改后邻空闲区始址为回收区始址,大小为两者之和。
    (3)回收区前后均邻空闲区。将三个分区合并,修改前邻空闲区大小为三者之和。
    (4)回收区前后均不邻空闲区。为回收区设置空闲区表项,填入回收区始址和大小并插入空闲区队列。