计算机操作系统第四版第四章课后习题答案

来源:互联网 发布:结构优化算法 编辑:程序博客网 时间:2024/05/11 00:03

限于笔者水平,如有不对请指教。


1. 为什么要配置层次式存储器?

答:对于存储器,速度快的不便宜,便宜的速度慢。为了让CPU的处理速度和存储器的速度之间存在的矛盾有所缓和,配置了层次式存储器。


2. 可采用哪几种方式将程序装入内存?他们分别适用于何种场合?
答:将程序装入内存的方式有绝对装入,可重定位装入,动态运行时装入。绝对装入方式物理地址是人为指定的,所以只能用于单道程序环境中。可重定位装入和动态运行时装入都可以在多道程序环境,但是动态运行时装入运行程序在运行时移动位置。


3. 何谓静态链接?静态链接时需要解决两个什么问题?
答:静态链接就是在装入内存之前把进程相关的所有目标程序都链接起来,产生装入模块。需要地址和数据两个问题,分别是对相对地址进行修改,变换外部调用符号。


4. 何谓装入时动态链接?装入时动态连接方式有何优点?
答:对比静态链接,装入时动态链接是在装入内存时,边链接边装入。装入时动态链接可以让目标模块可共享,易于修改。因为,动态链接在每次装入内存时都需要重新链接,所以,对单个的目标模块很容易修改和更新,而且目标模块的共享也很容易。


5. 何谓运行时动态链接?运行时动态链接方式有何优点?
答:对比装入时动态链接,运行时动态链接是在程序运行时才链接所需的目标模块。运行时动态链接可以让程序运行所必须得模块之外的模块不链接,加快程序的装入过程,节省大量的内存空间。


6. 在动态分区分配方式中,应如何将各空闲分区链接成空闲分区链?
答:在动态分区分配中,介绍了七种算法,其中首次适应、循环首次适应算法需要按照地址递增的顺序链接分区,最佳适应、最坏适应算法需要按照分区的大小来链接分区,快速适应、伙伴系统、哈希算法需要按照分区的大小分类链接成不同种类的空闲分区链。


7. 为什么要引入动态重定位?如何实现?
答:在内存分配过程中,不免出现许多不可利用的小的空闲空间以至于造成了内存的利用率不高。如果让已经存在的程序紧凑起来,那么,那些不可利用的小的空闲空间也就连成了更大的空闲空间以供利用,移动已经在内存中的程序就是动态重定位。关于如何实现,在从系统中增设一个重定位寄存器,用它来存放程序(数据)在内存中的起始地址,程序运行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加而成的。绝对地址是在程序运行时产生,那么对内存中的程序也就可以移动位置而可以用相对地址。


8. 什么是基于顺序搜索的动态分区分配算法?它可分为哪几种?
答:我们通常将系统中的空闲分区链接成一个链,然后在分配分区的时候依次搜索空闲分区链上的空闲分区,去寻找一个其大小能满足要求的分区,定义如何搜索的算法就是基于顺序搜索的动态分区分配算法。它分为首次适应算法、循环首次适应算法、最佳适应算法、最坏适应算法。


9. 在采用首次适应算法回收内存时,可能出现哪几种情况?应怎样处理这些情况?
答:回收内存的时候,我们把将要回收的内存区的首址拿到空闲分区链表中比对找出插入点(按照空闲分区链的构建算法),如果将要回收的内存和插入点的左、右或者两者都相邻,那就把相邻的区合并成一个区,如果不相邻那就单独作为一个区插入进去,并修改相关的数据结构中的值。


10. 什么是基于索引搜索的动态分区分配算法?它可分为哪几种?
答:我们把空闲分区按照某种属性(通常是大小)分类,把每一类都链接起来形成一个链表,建立一个表把每类链表的相关信息写进去以供索引,按照这个数据分配空闲分区的算法叫做基于索引搜索的动态分区分配算法。它分为快速适应算法、伙伴系统、哈希算法。


11. 略。(其实是笔者读不懂题目所以……)


12. 分区存储管理中常用哪些分配策略?比较他们的优缺点。
答:


13. 为什么要引入对换?对换可分为哪几种类型?
答:为了提高系统的吞吐量,提高内存的利用率和处理机的利用率。对换可分为整体对换和局部对换(分段或页面对换)。


14. 对文件区管理的目标和对对换空间管理的目标有何不同?
答:对文件区的管理,主要是注重存储器利用率,其次才是存取的速度,故采取的是离散存储方式。但是对于对换区,我们主要是注重文件的存取速度,其次才是存储器的利用率,故采用的是连续分配的方式。


15. 为实现对换,系统应具备哪几方面的功能?
答:为了实现对换,系统必须实现的是:对对换空间的管理,进程的换入和进程的换出。


16. 在以进程为单位进行对换时,每次是否都将整个进程换出?为什么?
答:在选择换出程序之后,在对进程进行换出时,只能换出那些非共享的程序和数据段,而对于那些共享的数据段,只要有其他进程还需要,就不能换出。实质上,共享的程序和数据段不属于哪个进程。


17. 基于离散分配时所用的基本单位不同,可将离散分配分为哪几种?
答:分为分页存储管理方式,分段存储管理方式,段页式存储管理方式。


18. 什么是页面?什么是物理块?页面的大小应如何确定?
答:将进程的逻辑地址空间分成若干等分,同时相应的把内存也分成若干等分,前者产生的分组叫做页面,后者产生的分组称为物理块或页框。页面的大小应选择适中,应该是2的幂,通常为1K~8K,根据分配算法灵活变化。


19. 什么是页表?页表的作用是什么?
答:分页系统采用的是离散分配方式,所以,进程的各个页允许离散的存储在内存的任意物理块中,所以就建立一张映射表反应他们的对应关系,这张表就叫页表。页表反应的是进程的逻辑地址和内存的物理地址的映射。通过查找页表可以知道进程的逻辑地址的相应页在内存中放在何处。


20. 为实现分页存储管理,需要哪些硬件支持?
答:需要页表寄存器、物理地址寄存器和联想寄存器(快表)。页表寄存器和物理地址寄存器是地址变换机构所需的基本寄存器,联想寄存器是优化了地址转换过程后需要添加的一个寄存器。


21. 在分页系统中是如何实现地址变换的?
答:首先,进程运行时从进程的PCB中把页表始址和页表长度放入页表寄存器中,当进程要访问某个逻辑地址中的数据的时候,分页地址变换机构会自动的将有效地址(逻辑地址)分为页号和页内地址。讲页号和页表寄存器中的页表长度相比,如果页号比较大则说明访问越界,抛出中断。否则利用页号、页表始址和页表项长度计算出相应的页表中的位置(因为页表在内存中,所以需要计算对应的地址,而不是想象中的直接匹配页号,相当于“起点+单位数*单位长度”),从而得到物理块号。把物理块号和页内地址同时送入物理地址寄存器中,相结合得到物理地址。


22. 具有快表时是如何实现地址变换的?
答:首先,以前转换过程中查找过的页表项会被记录在快表之中。在每次需要访问逻辑地址中的数据的时候,都会根据页号先到快表中查看有没有对应的匹配项,如果有就直接得到相应的物理块号而不需要进过利用始址、页号和页表项长度计算后去内存中查表。得到物理块号后依然是送到物理地址寄存器中和页内地址结合形成最后的物理地址。


23. 较详细的说明引入分段存储管理是为了满足用户的哪几方面的需要?
答:方便编程、信息共享、信息保护、动态增长和动态链接。


24. 在具有快表的段页式存储管理方式中,如何实现地址变换?
答:与分页系统中方式一样,只是多了一个维度就是检索段号以后才可以得到页表,再用段内页号和页表进行匹配,得到物理块号,最后和页内地址结合得到物理地址。


25. 为什么说分段系统比分页系统更易于实现信息的共享和保护?
答:信息的共享和保护都是以信息的逻辑单位为基础的,所以,经常是以一个段为基本单位进行保护和共享的。但是在分页系统中,可能一个信息的逻辑单位有很多页,且一页中可能含有不同程序段的数据或程序。
26. 分页和分段存储管理有何区别?
答:页是信息的物理单位,而段是信息的逻辑单位。页的大小固定而且由系统决定,段的大小不固定,通常由编译程序划分。分页用户程序地址空间是一维的,分段用户程序地址空间是二维的。


27. 试全面比较连续分配和离散分配方式。
答:连续分配方式不需要额外的硬件支持,且实现算法相对简单。但是在很多情况下会造成内存利用率低,系统吞吐量小和CPU利用率低等情况,虽然可以通过紧凑等方式有所调节,但是紧凑也会造成很大的系统开销。离散分配方式需要额外的硬件支持,且实现的算法相对比较复杂,但是出于用户或操作系统的角度,离散分配方式在系统性能上或实现功能上明显比连续分配更灵活。比如信息的保护和共享等等方面,离散比连续更加容易实现。
1 0