1.为什么要配置层次存储器?
(1)设置多个存储器可以使存储器两端的硬件能并行工作。
(2)采用多级存储系统,特别是Cache技术,这是一种减轻存储器带宽对系统性能影响的最佳结构方案。
(3)在微处理机内部设置各种缓冲存储器,以减轻对存储器存取的压力。增加CPU中寄存器的数量,也可大大缓解对存储器的压力。
2.可采用哪几种方式将程序装入内存?它们分别适用于何种场合?
(1)首先由编译程序将用户源代码编译成若干目标模块,再由链接程序将编译后形成的目标模块和所需的库函数链接在一起,组成一个装入模块,再由装入程序将装入模块装入内存;
(2)装入模块的方式有:绝对装入方式,可重定位方式和动态运行时装入方式;
(3)绝对装入方式适用于单道程序环境下;
(4)可重定位方式适用于多道程序环境下;
(5)动态运行时装入方式也适用于到多道程序环境下。
3.何谓静态链接?静态链接时需要解决两个什么问题?
静态链接是指在程序运行之前,先将各自目标模块及它们所需的库函数,链接成一个完整的装入模块,以后不再拆开的链接方式。
将几个目标链接装配成一个装入模块时,需解决以下两个问题:
将相对地址进行修改。即将除第一个模块外的相对地址修改成装入模块中的相应的相对地址。
变换外部调用符号。即将每个模块中所用的外部调用符号,都变换为相对地址。
4.何谓装入时动态链接?装入时动态链接方式有何优点?
这是指将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的链接方式。
优点:便于修改和更新;便于实现对目标模块的共享。
5.何谓运行时动态链接?运行时动态链接方式有何优点?
运行时动态链接是将对某些模块的链接推迟到程序执行时才进行链接,也就是,在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并将之装入内存,把它链接到调用者模块上。
优点:凡是在执行过程中未被用过的目标模块,都不会被调入内存和被链接到装入模块上,这样不仅能加快程序的装入过程,而且可节省大量的内存空间。
6.在动态分配方式中,应如何将各空闲分区链接成空闲分区链?
在每个分区的起始部分,设置一些控制分区分配的信息,以及用于链接各分区所用的前向指针; 在分区尾部设置一个后向指针,通过前后向链接指针,将所有空闲分区链成一个双向链。当分区分配出去后,把状态位由“0 改” 为 “1 。”
7.为什么要引入动态重定位?如何实现?
在动态运行时转入的方式中,作业装入内存后的所有地址仍然都是相对逻辑地址。而将相对地址转换为绝对(物理)地址的工作被推迟到程序指令要真正执行时进行。为使地址的转换不会影响到指令的执行速度,必须有硬件地址变换机构的支持,程序在执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加而形成的。
地址变换过程是在程序执行期间,随着对每条指令或数据的访问自动进行的,故称为动态重定位。当系统对内存进行了“紧凑”,而使若干程序从内存的某处移至另一处时,不需对程序做任何修改,只要用该程序在内存的新起始地址去置换原来的起始地址即可。
8.什么是基于顺序搜索的动态分区分配算法?它可分为哪几种?
依次搜索空闲分配分区链上的空闲分区,去寻找一个其大小能满足要求的分区,就是基于顺序搜索的动态分区分配算法。
分为四种:首次适应算法、循环首次适应算法、最佳适应算法、最坏适应算法。
9.在采用首次适应算法回收内存中,可能出现哪几种情况?应怎样处理这些情况?
1、回收区与插入点的前一个空闲分区F1相邻接,此时应将回收区与插入点的前一分区合并,不必为回收分区分配新表项,而只须修改其前一分区F1的大小。
2、回收区与插入点的后一个空闲分区F2相邻接,此时应将两分区合并,形成新的空闲分区,但用回收区的首址作为新空闲分区的首址,大小为两者之和。
3、回收区同时与插入点的前、后两个分区邻接,此时将三个分区合并,使用F1的表项和F1的首址,取消F2的表项,大小为三者之和。
4、回收区既不与F1邻接,又不与F2邻接。这时应为回收区单独建立一新表项,添写回收区的首址和大小,并根据其首址插入到空闲链中的适当位置。
10.什么是基于索引搜索的动态分区分配算法?它可分为哪几种?
我们把空闲分区按照某种属性(通常是大小)分类,把每一类都链接起来形成一个链表,建立一个表把每类链表的相关信息写进去以供索引,按照这个数据分配空闲分区的算法叫做基于索引搜索的动态分区分配算法。
它分为快速适应算法、伙伴系统、哈希算法。
11.令buddyk(x)为大小2k、地址为x的块的伙伴系统地址,试写出buddyk(x)的通用表达式。
12.分区存储管理中常用哪些分配策略?比较它们的优缺点。
分区存储管理中的常用分配策略:首次适应算法、循环首次适应算法、最佳适应算法、最坏适应算法。
首次适应算法优缺点:保留了高址部分的大空闲区,有利于后来的大型作业分配;低址部分不断被划分,留下许多难以利用的小空闲区,每次查找都从低址开始增加了系统开销。
循环首次适应算法优缺点:内存空闲分区分布均匀,减少了查找系统开销; 缺乏大空闲分区,导致不能装入大型作业。
最佳适应算法优缺点:每次分配给文件的都是最适合该文件大小的分区,内存中留下许多难
以利用的小空闲区。
最坏适应算法优缺点:剩下空闲区不太小,产生碎片几率小,对中小型文件分配分区操作有利;存储器中缺乏大空闲区,对大型文件分区分配不利。
13.为什么要引入对换?对换可分为哪几种类型?
一方面,在内存中的某些进程由于事情尚未发生而被阻塞运行,但它却占用了大量的内存空间,甚至有可能出现内存中所有进程都被阻塞,而无可运行之进程,迫使CPU停止下来等待的情况;另一方面,却又有着许多作业,因内存空间不足,一直驻留在外存上,而不能进入内存运行。为此引入对换。
整体对换和页面(分段)对换。
14.对文件管理区的目标和对对换空间管理的目标有何不同?
对文件管理区的主要目标是提高文件存储空间的利用率,然后才是提高对文件的访问速度。
对对换空间管理的主要目标,是提高进程换入和换出的速度,然后才是提高文件存储空间的利用率。
15.为实现对换,系统应具备哪几方面的功能?
对对换空间的管理、进程的换入、进程的换出
16.在以进程为单位进行对换时,每次是否都将整个进程换出?为什么?
在选择换出进程后,在对进程换出时,只能换出非共享的程序和数据段,而对于那些共享的程序和数据段,只要还有进程需要它,就不能被换出。
17.基于离散分配时所用的基本单位不同,可将离散分配分为哪几种?
分页存储管理方式、分段存储管理方式、段页式存储管理方式。
18.什么是页面?什么是物理块?页面的大小应如何确定?
将进程的逻辑地址空间分成若干等分,同时相应的把内存也分成若干等分,前者产生的分组叫做页面,后者产生的分组称为物理块或页框。页面的大小应选择适中,应该是2的幂,通常为1K~8K,根据分配算法灵活变化。
19.什么是页表?页表的作用是什么?
在分页系统中,允许将进程的各个页离散地存储在内存的任一物理块中,为保证进程仍然能够正确地运行,即能在内存中找到每个页面所对应的物理块,系统又为每个进程建立了一张页面映像表,简称页表。
页表的作用是实现从页号到物理块号的地址映射。
20.为实现分页存储管理,需要哪些硬件支持?
动态重定位技术、虚拟存储技术、多道程序设计技术。
21.在分页系统中是如何实现地址变换的?
利用地址变换机构实现从逻辑地址到物理地址的转变换,通过页表来实现从页号到物理块号的变换,将逻辑地址中的页号转换为内存中的物理块号。
22.具有快表时是如何实现地址变换的?
首先,以前转换过程中查找过的页表项会被记录在快表之中。在每次需要访问逻辑地址中的数据的时候,都会根据页号先到快表中查看有没有对应的匹配项,如果有就直接得到相应的物理块号而不需要进过利用始址、页号和页表项长度计算后去内存中查表。得到物理块号后依然是送到物理地址寄存器中和页内地址结合形成最后的物理地址。
23.较详细地说明引入分段存储管理是为了满足用户哪几方面的需要?
方便编程、信息共享、信息保护、动态增长、动态链接。
24.在具有快表的段页式存储管理中,如何实现地址变换?
在 CPU 给出有效地址后,由地址变换机构自动将页号P 送入高速缓冲寄存器,并将此页号与高速缓存中的所有页号比较,若找到匹配页号,表示要访问的页表项在快表中。可直接从快表读出该页对应物理块号,送到物理地址寄存器中。如快表中没有对应页表项,则再访问内存页表, 找到后, 把从页表项中读出物理块号送地址寄存器;同时修改快表,将此页表项存入快表。但若寄存器已满,则OS 必须找到合适的页表项换出。
25.为什么说分段系统比分页系统更易于实现信息的共享和保护?
分页系统的每个页面是分散存储的,为了实现信息共享和保护,页面之间需要一一对应,为此需要建立大量的页表项;而分段系统的每个段都从0编址,并采用一段连续的地址空间,在实现共享和保护时,只需为要共享和保护的程序设置一个段表项,将其中的基址与内存地址一一对应就能够实现。
26.分页和分段存储管理有何区别?
(1)页是信息的物理单位,分页是为了实现离散分配方式,以削减内存的外部零头,提高内存的利用率。段则是信息的逻辑单位,它含有一组相对完整的信息。
(2)页的大小固定且由系统决定,由系统把逻辑地址划分为页号和页内地址两部分,是由机械硬件实现的,因而在系统中只能有一种大小的页面;而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对原程序进行编译时,根据信息的性质来划分。
(3)分页的作业地址空间是一维的,而分段作业地址空间则是二维的。
27.试全面比较连续分配和离散分配方式。
(1)连续分配是指为一个用户程序分配一个连续的地址空间,包括单一和分区两种分配方式。单一方式将内存分为系统区和用户区,最简单,只用于单用户单任务操作系统;分区方式分固定和动态分区。
(2)离散分配方式分为分页、分段和段页式存储管理。分页式存储管理旨在提高内存利用率,分段式存储管理旨在满足用户(程序员)的需要,段页式存储管理则将两者结合起来,具有分段系统便于实现、可共享、易于保护和动态链接等优点,又能像分页系统很好解决外部碎片及为各段可离散分配内存等问题,是比较有效的存储管理方式。