第八章动态存储管理 习题带答案
(完整)计算机操作系统第八章作业及答案
(完整)计算机操作系统第八章作业及答案编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)计算机操作系统第八章作业及答案)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)计算机操作系统第八章作业及答案的全部内容。
1、目前常用的外存有哪几种组织方式?(1)连续组织方式。
为每一个文件分配一组位置相邻接的盘块,由此形成的文件物理结构是顺序式的文件结构.(2)链接组织方式。
为每个文件分配一组位置离散的盘块,通过给每个盘块设置一个指针,将属于同一个文件的盘块链接在一起,链接的顺序和文件的逻辑页的顺序一致。
由此形成的文件物理结构是链接文件。
(3) 索引组织方式。
为每个文件分配一组位置离散的盘块,为每个文件建立一个物理结构的索引表,记录分配给该文件的物理盘块,以及这些盘块和文件逻辑页顺序的对应关系。
由此形成的文件物理结构是索引文件。
10、为了快速访问,又易于更新,当数据为以下形式时,应选择何种文件组织方式: (1)不经常更新,经常随机访问:顺序文件结构。
(2)经常更新,经常按一定顺序访问:显式链接文件结构。
(3) 经常更新,经常随机访问:索引文件结构。
14有一计算机系统利用P277图8—19所示的位示图来管理空闲盘块。
盘块的大小为1K。
现要为某文件分配两个盘块,试说明盘块的具体分配过程。
(1) 顺序检索位示图,找到第一个空闲块,它的i=3,j=3;(2)计算第一个盘块的编号:b=16*(3—1)+3=35(3) 将第35号盘块分配给申请的文件,将位示图中的第3行第3列单元置0.(4) 顺序检索位示图,找到下一个空闲块,它的i=4,j=7;(5) 计算第一个盘块的编号:b=16*(4—1)+7=55(6)将第55号盘块分配给申请的文件,将位示图中的第4行第7列单元置0。
操作系统--精髓与设计原理(第八版)第八章复习题答案
操作系统--精髓与设计原理(第⼋版)第⼋章复习题答案8.操作系统--精髓与设计原理(第⼋版)第⼋章复习题答案8.1 简单分页与虚拟内存分页有何区别?进程运⾏时,简单分页的所有页必须都在内存中,除⾮使⽤了覆盖技术,虚存分页并⾮所有页都须在内存页框中,仅在需要时才读⼊页,把⼀页读⼊内存可能需要把另⼀页写出到磁盘。
8.2 什么是抖动?当操作系统读取⼀块内存时,它必须把另⼀块换出。
如果⼀块正好在将要⽤到之前换出,操作系统就不得不很快地把它取回。
这类操作通常会导致⼀种称为系统抖动( thrashing)的情况。
这样会使处理器的⼤部分时间都⽤于交换块⽽⾮执⾏指令。
8.3 为何在使⽤虚拟内存时,局部性原理⾄关重要?局部性原理描述了⼀个进程中程序和数据引⽤的集簇倾向。
因此,假设在很短的时间内仅需要进程的⼀部分块是合理的。
同时,还可以对将来可能会访问的块进⾏猜测,从⽽避免系统抖动。
局部性原理表明虚拟内存⽅案是可⾏的。
8.4 哪些元素是页表项中能找到的典型元素?简单定义每个元素。
页号: 虚拟地址的页号部分。
进程标志符:使⽤该页的进程。
页号和进程标志符共同标志-个特定进程的虚拟地址空间的⼀页。
控制位: 该域包含⼀些标记,⽐如有效、访问和修改,以及保护和锁定信息。
链指针: 若某项没有链项,则该域为空(或⽤⼀个单独的位来表⽰)。
否则,该域包含链中下⼀项的索引值(0~2^m -1之间的数字)。
8.5 转换检测缓冲区的⽬的是什么?原则上,每次虚存访问都可能会引起两次物理内存访问:⼀次取相应的页表项,另⼀次取需要的数据。
因此,简单的虚拟内存⽅案会导致内存访问时间加倍。
为克服这个问题,⼤多数虚拟内存⽅案都为页表项使⽤了⼀个特殊的⾼速缓存,通常称为转换检测缓冲区(TranslationLookaside Buffer, TLB)。
8.6 简单定义两种可供选择的页⾯读取策略。
请求分页,只有当访问到某页中的⼀个单元时才将该页取⼊内存。
数据结构作业
6.45 编写递归算法:对于二叉树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。
6.46 编写复制一棵二叉树的非递归算法。
6.59 编写算法完成下列操作:无重复地输出以孩子兄弟链表存储的树T中所有的边(这里的边是指树T本身的分支,而不是孩子兄弟链表所形成的二叉树的分支)。输出的形式为(k1, k2), ..., (ki, kj), ..., 其中,ki和kj为树结点中的结点标识。
1.20试编写算法求一元多项式 的值Pn(x0),并确定算法中每一语句的执行次数和整个算法的时间复杂度。注意选择你认为较好的输入和输出方法。本题的输入为ai(i=0, 1,…, n)、x0和n,输出为Pn(x0)。
第二章线性表
2.11设顺序表va中的数据元素非递减有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。
注:根据同学们的要求,将作业量从六道题减少到三道题,希望同学们能及时完成。
第五章数组和广义表
5.21 假设稀疏矩阵A和B均以三元组顺序表作为存储结构。试写出矩阵相加的算法,另设三元组C存放结果矩阵。
5.26 试编写一个以三元组形式输出用十字链表表示的稀疏矩阵中非零元素及其下标的算法。
5.33 试编写递归算法,输出广义表中所有原子项及其所在的层次。
第十二章 文件
12.10假设某个有3000张床位的旅店需建立一个便于管理的文件,每个记录是一个旅客的身份和投宿情况。其中旅客身份证号(15位十进制数字)可作为主关键字,此外还需建立按姓名、投宿日期、从哪来等次关键字项索引。请为此文件确定一种组织方式(如:主文件如何组织,各次关键字项索引如何建立等
第十章 排序
10.23 试以L.r[k+1]作为监视哨改写直接插入排序算法。其中,L.r[1...k]为待排记录且k<MAXSIZE。
(软考软件设计师)第8章 动态存储管理答案
FROM:及时雨第八章动态存储管理一.选择题 1C二.判断题 1.错误 2.正确三.填空题1.(1)480+8=488(480 %23+1=0)(2)480-32=4482.(1)011011110100 (2)0110111000003.用户不再使用而系统没有回收的结构和变量。
例如,p=malloc(size);…,p=null;四.应用题1.在伙伴系统中,无论占用块或空闲块,其大小均为2的k(k为≥0的正整数)次幂。
若内存容量为2m,则空闲块大小只能是20,21,22,…,2m。
由同一大块分裂而得的两个小块互称“伙伴空间”,如内存大小为210的块分裂成两个大小为29的块。
只有两个“伙伴空间”才能合并成一个大空间。
起始地址为p,大小为2k的内存块,其伙伴的起始地址为:buddy(p,k)=p+2k (若p % 2k+1=0),或buddy(p,k)=p-2k (若p % 2k+1=2k)2.首次拟合法;从链表头指针开始查找,找到第一个≥所需空间的结点即分配。
最佳拟合法:链表结点大小增序排列,找到第一个≥所需空间的结点即分配。
最差拟合法:链表结点大小逆序排列,总从第一个结点开始分配,将分配后结点所剩空间插入到链表适当位置。
首次拟合法适合事先不知道请求分配和释放信息的情况,分配时需查询,释放时插在表头。
最佳拟合法适用于请求分配内存大小范围较宽的系统,释放时容易产生存储量很小难以利用的内存碎片,同时保留那些很大的内存块以备将来可能发生的大内存量的需求,分配与回收均需查询。
最差拟合法适合请求分配内存大小范围较窄的系统,分配时不查询,回收时查询,以便插入适当位置。
3. 011011110100 4.0110111000005.(1)buddy(1664,7)=1664-128=1536 (2)buddy(2816,6)=2816+64=28806.动态存储分配伙伴系统的基本思想请参见上面题1。
边界标识法在每块的首尾均有“占用”/“空闲”标志,空闲块合并方便。
操作系统第八章 文件复习题(答案)
第八章文件一、选择题1、在下列文件的外存分配方式中,不利于文件长度动态增长的文件物理结构是( A )A.连续分配B.链接分配C.索引分配D.以上都不对2、文件系统中若文件的外存分配方式采用连续分配,则文件控制块FCB中有关文件的物理位置的信息应包括( B )(Ⅰ)起始块号(Ⅱ)文件长度(Ⅲ)索引表地址A.全部B.(Ⅰ)和(Ⅱ)C.(Ⅰ)和(Ⅲ)D.(Ⅱ)和(Ⅲ)3、操作系统为保证未经文件拥有者授权,任何其他用户不能使用该文件所提供的解决方法是( A )A.文件保护B.文件保密C.文件转储D.文件共享4、文件系统最基本的目标是((1) A ),它主要是通过( (2) B )功能实现的,文件系统所追求的最重要目标是( (1) D )(1) A.按名存取 B.文件共享C.文件保护D.提高对文件的存取速度(2) A.存储空间管理 B.目录管理C.文件读写管理D.文件安全管理5、按逻辑结构可把文件分为(E )和( F )两类。
A.读、写文件B.只读文件C.索引文件D.链式文件E.记录式文件F.流式文件6、下面关于顺序文件和链接文件的论述中正确的是( C )A.顺序文件只能于建立在顺序存储设备上,而不能于建立在磁盘上。
B.在显式链接文件中是在每个盘块中设置一链接指针,用于将文件的所有盘块链接起来。
C.顺序文件采用连续分配方式,而链接文件和索引文件则都可采用离散分配方式。
D.在MS-DOS中采用的是隐式链接文件结构。
7、下面关于索引文件的论述中正确的是(B )A.在索引文件中,索引表的每个表项中必须含有相应记录的关键字和存放该记录的物理地址。
B.对顺序文件进行检索时,首先从FCB中读出文件的第一个盘块号,而对索引文件进行检索时,应先从FCB中读出文件索引表始址。
C.对于一个具有三级索引表的文件,存取一个记录必须要访问三次磁盘。
D.在文件较大时,进行顺序存取比随机存取快。
8、在存取文件时,如果利用给定的记录值对链表或索引表进行检索,以找到指定记录的物理地址,则上述文件分别称为 ( B )或( C ),如果根据给定的记录键值直接获得指定记录的物理地址,则把这种文件称为( D )A.顺序文件B.链接文件C.索引文件D.直接文件9、在文件管理中,位示图主要是用于(B )A.磁盘的驱动调动B.磁盘空间的分配和回收C.文件目录的查找D.页面置换10、用(B )可以防止共享文件可能造成的破坏,但实现起来系统开销太大。
存储管理习题答案精品.doc
第5章存储管理⑴存储管理的任务和功能是什么?解:存储管理的主要任务是:1.支持多道程序的并发执行,使多道程序能共享存储资源,在互不干扰的环境中并发执行。
2.方便用户,使用户减少甚至摆脱对存储器的管理,使用户从存储器的分配、保护和共享等繁琐事物中解脱出来。
3.提高存储器的利用率和系统吞吐量。
4.从逻辑上扩充内存空间,支持大程序能在小的内存空间运行或允许更多的进程并发执行。
为了完成上述任务,现代操作系统的存储管理应具有以下功能:1.存储空间的分配和I门I收。
2.地址转换,实现逻辑地址到物理地址的映射。
3.主存空间的共享。
4.主存空间的保护。
5.主存储空间的扩充。
6.对换,对换的主要任务是实现在内存和外存之间的全部或部分进程的对换,即将内存中处于阻塞状态的进程调换到外存上,而将外存上处于就绪状态的进程换入内存。
对换的目的主要是为了提高内存利用率,提高系统的吞吐量。
(2)为什么要配置层次式存储器?解:为了解决CPU和存储器之间速度上的不匹配,在现代计算机系统中,存储系统通常采用层次结构,存储层次可粗略分为三级:最高层为CPU寄存-器,中间为主存,最底层是辅存。
根据具体功能还可以细分为寄存器、高速缓存、主存储器、磁盘缓存、辅存储设备(固定磁盘、可移动存储介质)5层。
一个文件的数据可能出现在存储系统的不同层次电例如, 一个文件数据通常被存储在辅存中(如硬盘),当其需要运行或被访问时,就必须调入主存,也可以暂时存放在主存的磁盘高速缓存中。
大容量的辅存常常使用磁盘,磁盘数据经常备份在可移动磁盘:或者光盘上,以防止硬盘故障时丢失数据。
(3)什么是逻辑地址?什么是物理地址?为什么要进行二者的转换工作?解:逻辑地址是应用程序中使用的访存地址,有时也称为相对地址,由逻辑地址构成的地址空间称为逻辑空间。
每个应用程序的逻辑地址空间都是从零号地址码开始的。
物理地址是内存储器的实际存储单元地址,有时也称为绝对地址,由物理地址构成的地址空间称为物理空间。
07级操作系统第8章习题解答
8.2 32 10 22 a.存储器地址空间/页大小= 2 / 2 = 2 ,所以在虚拟存 储器中指定页需要22位。 (210 字节 / 页) 4个字节 / 页表项) 28 个页表项。 ( / = 每一页包含 每个页表占据了8位,因此22位需要用到三级页表。 b.两级的页表包含28个页表项,一级页表包含26 个页表项 (8+8+6=22)。 c.我们这里有三级,三级所占位数为6,8,8,则页的个 数为: 1 + 2 6 + 214 = 16449 若三级所占位数为:8,6,8,则页的个数为:
操作系统第八章习题解答
8.1 • a • 步骤: • 从虚地址求取页号和页内偏移(利用公式: 虚地址=页号*页长+页内偏移) • 利用页表由页号求取对应的块号 • 求物理地址(利用公式:物理地址=块号*块 长+块内偏移,注意到块长=页长,块内偏 移=页内偏移)
• b. • (i) 1052 = 1024 + 28 虚拟页号为1,得到 帧号为7。 • 物理地址=7*1024+28=7196 • (ii) 2221 = 2 * 1024 + 173 • 虚拟页号为2,页错误。 • (iii) 5499 = 5 *1024 + 379虚拟页号为5,得 到帧号为0。 • 物理地址=0*1024+379=379
2 2
8.6 • a. 命中率=16/33
• b. 命中率=16/33
c. 对于这个特定的访问序列,采用上述两种 替换策略得到的命中率相等。一般来说,采 用LRU替换策略的命中率会高于采用FIFO 替换策略的情况,而对于这个特定的访问序 列来说,一个页面被载入之后,很少发生在 接下来的5次连续访问中再次被访问的情形, 因此缺页发生的时刻与LRU的情况相当接近, 从而使得对应的命中率接近于LRU。
最新操作系统第五版答案第8章复习题及习题解答
虚拟内存8.1 简单分页与虚拟分页有什么区别?简单分页:一个程序中的所有的页都必须在主存储器中程序才能正常运行,除非使用覆盖技术。
虚拟内存分页:不是程序的每一页都必须在主存储器的帧中来使程序运行,页在需要的时候进行读取。
8.2 解释什么是抖动。
虚拟内存结构的震动现象,在这个过程中处理器大部分的时间都用于交换块,而不是执行指令。
8.3 为什么在使用虚拟内存时,局部性原理是至关重要的?可以根据局部性原理设计算法来避免抖动。
总的来说,局部性原理允许算法预测哪一个当前页在最近的未来是最少可能被使用的,并由此就决定候选的替换出的页。
8.4 哪些元素是页表项中可以找到的元素?简单定义每个元素。
帧号:用来表示主存中的页来按顺序排列的号码。
存在位(P):表示这一页是否当前在主存中。
修改位(M):表示这一页在放进主存后是否被修改过。
8.5 转移后备缓冲器的目的是什么?转移后备缓冲器(TLB)是一个包含最近经常被使用过的页表项的高速缓冲存储器。
它的目的是为了减少从磁盘中恢复一个页表项所需的时间。
8.6 简单定义两种可供选择的页读取策略。
在请求式分页中,只有当访问到某页中的一个单元时才将该页取入主存。
在预约式分页中,读取的并不是页错误请求的页。
8.7 驻留集管理和页替换策略有什么区别?驻留集管理主要关注以下两个问题:(1)给每个活动进程分配多少个页帧。
(2)被考虑替换的页集是仅限在引起页错误的进程的驻留集中选择还是在主存中所有的页帧中选择。
页替换策略关注的是以下问题:在考虑的页集中,哪一个特殊的页应该被选择替换。
8.8 FIFO和Clock页替换算法有什么区别?时钟算法与FIFO算法很接近,除了在时钟算法中,任何一个使用位为一的页被忽略。
8.9 页缓冲实现的是什么?(1)被替换出驻留集的页不久又被访问到时,仍在主存中,减少了一次磁盘读写。
(2)被修改的页以簇的方式被写回,而不是一次只写一个,这就大大减少了I/O操作的数目,从而减少了磁盘访问的时间。
(完整版)存储管理习题与答案作业
第5章一.选择题(40题)1.主存用来存放__D_。
A.程序B.数据C.微程序D.程序和数据2.下列存储器中,速度最慢的是_C__。
A.半导体存储器B.光盘存储器C.磁带存储器D.硬盘存储器3.某一SRAM芯片,容量为16KB×1位,则其地址线有__A__。
A.14根B.16K根C.16根D.32根4.下列部件中,存取速度最慢的是_B__。
A.光盘存储器B.CPU存储器C.软盘存储器D.硬盘存储器5.在主存和CPU之间增加Cache的目的是_C__。
A.扩大主存的容量B.增加CPU中通用寄存器的数量C.解决CPU和主存之间的速度匹配D.代替CPU中的寄存器工作6.计算机的存储器采用分级存储体系的目的是__D_。
A.便于读/写数据B.减小机箱的体积C.便于系统升级D.解决存储容量、价格与存取速度间的矛盾7.某SRAM芯片,其容量为1KB×8位,加上电源端和接地端后,该芯片的引出线的最少数目应为__A__。
A.23B.25C.50D.208.在Cache的地址映射中,若主存中的任意一块均可映射到Cache内的任意一块的位置上,则这种方法称为__A__。
A.全相联映射B.直接映射C.组相联映射D.混合映射9.处理机有32位地址,则它的虚拟地址空间为_B__字节。
A.2GBB.4GBC.100KBD.640KB10.虚拟内存的容量只受__D_的限制。
A.物理内存的大小B.磁盘空间的大小C.数据存放的实际地址D.计算机地址字长11.以下_B__不是段式存储管理系统的优点。
A.方便编程B.方便内存管理C.方便程序共享D.方便对程序保护12.在可变分区分配方案中,最佳适应法是将空闲块按_C__次序排序。
A.地址递增B.地址递减C.大小递增D.大小递减13.在分区存储管理方式中,如果在按地址生序排列的未分配分区表中顺序登记了下列未分配分区:1-起始地址17KB,分区长度为9KB;2-起始地址54KB,分区长度为13KB;现有一个分区被释放,其起始地址为39KB,分区长度为15KB,则系统要_C__。
操作系统第五版答案第8章复习题及习题解答
虚拟内存8.1 简单分页与虚拟分页有什么区别?简单分页:一个程序中的所有的页都必须在主存储器中程序才能正常运行,除非使用覆盖技术。
虚拟内存分页:不是程序的每一页都必须在主存储器的帧中来使程序运行,页在需要的时候进行读取。
8.2 解释什么是抖动。
虚拟内存结构的震动现象,在这个过程中处理器大部分的时间都用于交换块,而不是执行指令。
8.3 为什么在使用虚拟内存时,局部性原理是至关重要的?可以根据局部性原理设计算法来避免抖动。
总的来说,局部性原理允许算法预测哪一个当前页在最近的未来是最少可能被使用的,并由此就决定候选的替换出的页。
8.4 哪些元素是页表项中可以找到的元素?简单定义每个元素。
帧号:用来表示主存中的页来按顺序排列的号码。
存在位(P):表示这一页是否当前在主存中。
修改位(M):表示这一页在放进主存后是否被修改过。
8.5 转移后备缓冲器的目的是什么?转移后备缓冲器(TLB)是一个包含最近经常被使用过的页表项的高速缓冲存储器。
它的目的是为了减少从磁盘中恢复一个页表项所需的时间。
8.6 简单定义两种可供选择的页读取策略。
在请求式分页中,只有当访问到某页中的一个单元时才将该页取入主存。
在预约式分页中,读取的并不是页错误请求的页。
8.7 驻留集管理和页替换策略有什么区别?驻留集管理主要关注以下两个问题:(1)给每个活动进程分配多少个页帧。
(2)被考虑替换的页集是仅限在引起页错误的进程的驻留集中选择还是在主存中所有的页帧中选择。
页替换策略关注的是以下问题:在考虑的页集中,哪一个特殊的页应该被选择替换。
8.8 FIFO和Clock页替换算法有什么区别?时钟算法与FIFO算法很接近,除了在时钟算法中,任何一个使用位为一的页被忽略。
8.9 页缓冲实现的是什么?(1)被替换出驻留集的页不久又被访问到时,仍在主存中,减少了一次磁盘读写。
(2)被修改的页以簇的方式被写回,而不是一次只写一个,这就大大减少了I/O操作的数目,从而减少了磁盘访问的时间。
数据结构1800题和答案第8章 动态存储管理
第八章动态存储管理一、选择题1. 动态存储管理系统中,通常可有()种不同的分配策略。
【长沙铁道学院 1998 三、3 (2分)】A. 1 B. 2 C. 3 D. 4 E. 5二、判断题1.在伙伴系统中的伙伴是指任意两块大小相同、位置相邻的内存块。
()【北京邮电大学 2000 一、8(1分)】2.在动态存储管理系统中做空间分配时,最佳适配法与最先适配法相比,前者容易增加闲置空间的碎片。
()【东南大学 2001 一、1-1 (1分)】【中山大学 1994 一、1(2分)】三、填空题1.起始地址为480,大小为8的块,其伙伴块的起始地址是_______;若块大小为32,则其伙伴块的起始地址为_______。
【北方交通大学 1999 二、1(4分)】2.二进制地址为011011110000,大小为(4)10和(16)10块的伙伴地址分别为:________、_________。
【上海大学 2002 二、2(2分)】3.无用单元是指________,例________【北方交通大学 1999 二、6(4分)】四、应用题1.伙伴空间(名词解释)【西北工业大学 1999 一、4(3分)】2.设内存中可利用空间已连成一个单链表,对用户的存储空间需求,一般有哪三种分配策略?【北京科技大学 1999 一、6(2分)】3.计算起始二进制地址为011011110000,长度为4(十进制)的块的伙伴地址是多少?【中山大学1999一、2(3分)】4.在一个伙伴系统中,已知某存储块的始址X=(011011110000)2,大小为24,则它的伙伴块的始址是多少?【北方交通大学 1996 一、1(5分)】5.地址为(1664)10大小为(128)10的存储块的伙伴地址是什么?地址为(2816)10大小为(64)10的存储块的伙伴地址是什么?【清华大学1996 四、】6.试叙述动态存储分配伙伴系统的基本思想,它和边界标识法不同点是什么?【青岛大学 2000 十、(10分)】【中国人民大学 2000 一、1(4分)】7.组织成循环链表的可利用空间表附加什么条件时,首次适配策略就转变为最佳适配策略?【北方交通大学 1998 四、(8分)】8.已知一个大小为512个字长的存储,假设先后有6个用户申请大小分别为23,45,52,100,11和19的存储空间,然后再顺序释放大小为45,52,11的占用块。
数据结构习题集与实验指导
目录基础练习题及答案 (1)第一章绪论 (1)第二章线性表 (3)第三章栈和队列 (7)第四-五章串和数组 (12)第六章树和二叉树 (16)第七章图 (24)第八章查找 (30)第九章排序 (33)数据结构实验指导 (34)实验一线性表的应用 (34)实验二栈和队列的应用 (39)实验三串的应用 (47)实验四数组 (48)实验五二叉树的应用 (51)实验六图的应用 (55)实验七查找 (56)实验八排序 (61)配套题集算法答案 (64)第一章绪论 (64)第二章线性表 (67)第三章栈与队列 (79)第四章串 (89)第五章数组和广义表 (101)第六章树和二叉树 (114)第七章图 (133)第八章动态存储管理 (148)第九章查找 (152)第十章内部排序 (163)基础练习题及答案第一章绪论一、填空题1. 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和运算等的学科。
2. 数据结构被形式地定义为(D, R),其中D是数据元素的有限集合,R是D上的关系有限集合。
3. 数据结构包括数据的逻辑结构、数据的存储结构和数据的运算这三个方面的内容。
4. 数据结构按逻辑结构可分为两大类,它们分别是线性结构和非线性结构。
5. 线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。
6.在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有 1个前驱结点;最后一个结点没有后续结点,其余每个结点有且只有1个后续结点。
7. 在树形结构中,树根结点没有前驱结点,其余每个结点有且只有 1 个前驱结点;叶子结点没有后续结点,其余每个结点的后续结点数可以任意多个。
8. 在图形结构中,每个结点的前驱结点数和后续结点数可以任意多个。
9.数据的存储结构可用四种基本的存储方法表示,它们分别是顺序、链式、索引和散列。
10. 数据的运算最常用的有5种,它们分别是插入、删除、修改、查找、排序。
存储管理习题
1.存储管理的主要功能是什么?2.何谓静态分配?何谓动态分配?3.什么叫地址重定位?怎样区分静态重定位和动态重定位?各有什么优缺点?4.分区分配有哪几种?试比较各种分区分配的优缺点。
5.试述最佳、最差、最先适应算法的基本思想,并指出它们各自的优缺点。
6.什么是存储器的内零头和外零头?它们是怎么造成的?减少它们应采取什么措施?7.试述分页存储管理的基本实现原理,并说明如何实现从逻辑空间到物理空间的变换?8.什么叫联想存储器?为什么要引进联想存储器?9.考虑一个由8个页面,每页1024个字节组成的逻辑空间,把它映射到32个物理块的存储器中:(1) 逻辑地址有多少位?(2) 物理地址有多少位?(3)存取主存中的一条指令或数据至少要访问几次主存。
10.为什么要引入虚拟存储器的概念?11.请求分页和简单分页两种存储管理方案有何不同?缺页中断是如何发生的?发生缺页中断时如何处理?12.在一个请求分页存储系统中,一个程序的页面走向为1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6请完成下表。
13. 局部化的含义是什么?14.简述段式存储管理的基本实现原理和地址变换过程。
15.某段式存储管理系统中采用如下段表:试回答:(1)给出段号和段内地址,完成段式管理中的地址变换过程。
(2)计算[0,430],[ 1,10],[2,500],[ 3,400]的主存地址,其中方扩号内的第一个元素为段号,第二个元素为段内地址。
16.为什么要引入动态分段存储管理,它与请求页式存储管理有什么区别?1. 参考答案:(1)存储分配问题:主要讨论主存的分配和共享。
(2)地址变换问题:主要讨论各种地址变换机构,以及静态和动态地址重定位方法。
(3)"扩充"主存容量问题:借助于提供虚拟存储器或自动覆盖技术来达到扩充主存容量的目的,并非指硬件设备上的扩充。
(4)存储保护问题:主存内即有系统程序又有若干道用户程序,为了避免相互干扰和破坏,必须提供保护功能。
操作系统第八章课后习题
1.目前常用的外存有哪几种组织方式?答;(1)连续组织方式。
为每一个文件分配--组位置相邻接的盘块,由此形成的文件物理结构是顺序式的文件结构。
(2)链接组织方式。
为每个文件分配一组位置离散的盘块,通过给每个盘块设置一个指针,将属于同-一个文件的盘块链接在一起,链接的顺序和文件的逻辑页的顺序一致。
由此形成的文件物理结构是链接文件。
(3)索引组织方式。
为每个文件分配--组位置离散的盘块,为每个文件建立一个物理结构的索引表,记录分配给该文件的物理盘块,以及这些盘块和文件逻辑页顺序的对应关系。
由此形成的文件物理结构是索引文件。
2 •山连续组织方式所形成的顺序文件的主要优缺点是什么?它主要应用于何种场合?(1)连续组织方式所形成的顺序文件的主要优点①顺序访问容易②顺序访问速度快(2)连续组织方式所形成的顺序文件的主要缺点①要求为一个文件分配连续的存储空间②必须事先知道文件的长度;③不能灵活地删除和插入记录④对于那些动态增长的文件,山于事先很难知道文件的最终大小,因而很难为分配空间,而即使事先知道文件的最终大小,在采用预分配存储空间的方法时也会使大量的存储空间长期空闲。
(3)主要适用场合:连续组织方式所形成的顺序文件是一种最简单、最常用的文件组织方法,它适用于许多资料处理的场合,如磁带文件,打印文件都是常用的顺序文件。
3.在链接式文件中常用哪种链接方式?为什么?答:链接方式分为隐式链接和显式链接两种形式。
隐式链接是在文件U录的每U 录项中,都含有指向链接文件第一个盘块和最后一个盘块的指针。
显式链接贝把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中。
4•在文件分配表中为什么要引入“簇”的概念?以“簇"为基本的分配单位有什么好处?(1)引入“簇”的原因:为了适应磁盘容量不断增大的需要,在进行盘块分配时不再以盘块而是以簇(Cluster)为基本单位。
一个簇应包含扇区的数量与磁盘量的大小直接有关。
严蔚敏《数据结构c语言版习题集》答案第八章动态存储管理文库.doc
第八章动态存储管理8.11typedef struct {char *start;int size;} fmblock; //空闲块类型char *Malloc_Fdlf(int n)//遵循最后分配者最先释放规则的内存分配算法{while(Gettop(S,b)&&b.size<n){Pop(S,b);Push(T,b); //从栈顶逐个取出空闲块进行比较}if(StackEmpty(S)) return NULL; //没有大小足够的空闲块Pop(S,b);b.size-=n;if(b.size) Push(S,{b.start+n,b.size});//分割空闲块while(!StackEmpty(T)){Pop(T,a);Push(S,a);} //恢复原来次序return b.start;}//Malloc_Fdlfmem_init()//初始化过程{...InitStack(S);InitStack(T); //S和T的元素都是fmblock类型Push(S,{MemStart,MemLen}); //一开始,栈中只有一个内存整块...}//main8.12void Free_Fdlf(char *addr,int n)//与上一题对应的释放算法{while(Gettop(S,b)&&b.start<addr){Pop(S,b);Push(T,b);} //在按地址排序的栈中找到合适的插入位置if(Gettop(T,b)&&(b.start+b.size==addr)) //可以与上邻块合并{Pop(T,b);addr=b.start;n+=b.size;}if(Gettop(S,b)&&(addr+n==b.start)) //可以与下邻块合并{Pop(S,b);n+=b.size;}Push(S,{addr,n}); //插入到空闲块栈中while(!StackEmpty(T)){Pop(T,b);Push(S,b);} //恢复原来次序}//Free_Fdlf8.13void Free_BT(Space &pav,Space p)//在边界标识法的动态存储管理系统中回收空闲块p {n=p->size;f=p+n-1; //f指向空闲块底部if((p-1)->tag&&(f+1)->tag) //回收块上下邻块均为占用块{p->tag=0;f->tag=0;f->uplink=p;if(!pav){p->llink=p;p->rlink=p;}else{q=pav->llink;p->llink=q;p->rlink=pav;q->rlink=p;pav->llink=p;}pav=p;}//ifelse if(!(p-1)->tag&&(f+1)->tag) //上邻块为空闲块{q=(p-1)->uplink;q->size+=n;f->uplink=q;f->tag=0;}else if((p-1)->tag&&!(f+1)->tag) //下邻块为空闲块{q=f+1;s=q->llink;t=q->rlink;p->llink=s;p->rlink=t;s->rlink=p;t->llink=p;p->size+=q->size;(q+q->size-1)->uplink=p;p->tag=0;}else //上下邻块均为空闲块{s=(p-1)->uplink;t=f+1;s->size+=n+t->size;t->llink->rlink=t->rlink;t->rlink->llink=t->llink;(t+t->size-1)->uplink=s;}}//Free_BT,该算法在课本里有详细的描述.8.14void Free_BS(freelist &avail,char *addr,int n)//伙伴系统的空闲块回收算法{buddy=addr%(2*n)?(addr-n):(addr+n); //求回收块的伙伴地址addr->tag=0;addr->kval=n;for(i=0;avail[i].nodesize<n;i++); //找到这一大小的空闲块链if(!avail[i].first) //尚没有该大小的空闲块{addr->llink=addr;addr->rlink=addr;avail[i].first=addr; //作为唯一一个该大小的空闲块}else{for(p=avail[i].first;p!=buddy&&p!=avail[i].first;p=p->rlink);//寻找伙伴 if(p==buddy) //伙伴为空闲块,此时进行合并{if(p->rlink==p) avail[i].first=NULL;//伙伴是此大小的唯一空闲块else{p->llink->rlink=p->rlink;p->rlink->llink=p->llink;} //从空闲块链中删去伙伴new=addr>p?p:addr; //合并后的新块首址Free_BS(avail,new,2*n); //递归地回收新块}//ifelse //伙伴为占用块,此时插入空闲块链头部{q=p->rlink;p->rlink=addr;addr->llink=p;q->llink=addr;addr->rlink=q;}}//else}//Free_BS8.15FBList *MakeList(char *highbound,char *lowbound)//把堆结构存储的的所有空闲块链接成可利用空间表,并返回表头指针{p=lowbound;while(p->tag&&p<highbound) p++; //查找第一个空闲块if(p>=highbound) return NULL; //没有空闲块head=p;for(q=p;p<highbound;p+=cellsize) //建立链表if(!p->tag){q->next=p;q=p;}//ifp->next=NULL;return head; //返回头指针}//MakeList8.16void Mem_Contract(Heap &H)//对堆H执行存储紧缩{q=MemStart;j=0;for(i=0;i<Max_ListLen;i++)if(H.list[i].stadr->tag){s=H.list[i].length;p=H.list[i].stadr;for(k=0;k<s;k++) *(q++)=*(p++); //紧缩内存空间H.list[j].stadr=q;H.list[j].length=s; //紧缩占用空间表j++;}}//Mem_Contract。
内存管理练习带答案
内存管理1)选择题(1)采用 __B__ 不会产生内部碎片。
A. 分页存储管理B. 分段存储管理C. 固定分区存储管理D. 段页式存储管理 (2)首次适应算法的空白区是 _A__ 。
A. 按地址由小到大排列B. 按地址由大到小排列C. 按大小递减顺序连在一起D. 按大小递增顺序连在一起 (3)在分区存储管理中的拼接技术可以 _A__ 。
A. 集中空闲区B. 增加内存容量C. 缩短访问周期D. 加速地址转换 (4)在固定分区分配中,每个分区的大小是 _D__ 。
A. 可以不同但根据作业长度固定B. 相同C. 随作业长度变化D. 可以不同但预先固定(5)采用分段存储管理的系统中,若地址用24位表示,其中8位表示段号,则允许每段的最大长度是 _B__ 。
A. 224B. 216C. 28D. 232(6)设内存分配情况如图6-20所示。
若要申请一块40K 字节的内存空间,采用最佳适应算法,则所得到的分区首址为 _C__ 。
图6-20 内存分配情况A. 100KB. 190KC. 330KD. 410K(7)把作业地址空间使用的逻辑地址变成内存的物理地址称为 __D__ 。
A. 加载B. 物理化0 100K 180K 190K 280K 330K 390K 410K512K -1C. 逻辑化D. 重定位(8)在以下存储管理方案中,不适用于多道程序设计系统的是_C_ 。
A. 固定式分区分配B. 页式存储管理C. 单一连续分配D. 可变式分区分配(9)在可变式分区分配方案中,某一作业完成后,系统收回其内存空间并与相邻空闲区合并,为此需修改空闲区表,造成空闲区数减1的情况是_D__ 。
A. 无上邻空闲区也无下邻空闲区B. 有上邻空闲区但无下邻空闲区C. 有下邻空闲区但无上邻空闲区D. 有上邻空闲区也有下邻空闲区(10)采用两级页表的页式存储管理中,按给定的逻辑地址进行读写时,通常需访问主存的次数是__C__ 。
《计算机科学导论》第八章答案(包含讨论题)
一、选择题1——5 DCBAC 6——10 DBCDA二、简答题1、操作系统就是合理管理并控制计算机系统内软、硬件资源,并能够合理组织工作流程、方便用户使用的程序的集合。
通常我们将操作系统的功能概括为两大功能:扩展的虚拟机功能、资源管理功能。
其中,资源管理功能包括了处理机管理、内存管理、设备管理、文件管理四大功能。
而扩展的虚拟机提供友好的人机交互以及程序级接口,使得计算机看上去像是功能扩展了的机器。
2、最常见的是按照操作系统的性质来划分的类型:分为批处理操作系统、分时操作系统、实时操作系统、网络操作系统、嵌入式操作系统。
它们的特点分别是:批处理系统的主要特点是系统吞吐量大、系统资源利用率较高、平均作业周转时间(作业从提交到结果输出的时间)较长,系统无交互力。
分时系统中往往支持多道程序执行,尽管如此,各运行任务具有独立性,互不影响;由于将处理机分时使用,使得用户与系统的及时交互成为可能,因此,分时系统具有较好的交互性;同时,系统资源利用率也得到了很大的提高。
实时系统具有事件驱动的特点,往往是由外部事件来触发系统的响应;实时系统要求的响应时间很短,以便及时响应事件,从而保证整个系统的实时性和高可靠性。
网络操作系统要求组成网络的各台计算机物理分散且高度自治,各计算机都有各自的软、硬件资源,系统的主要目的是共享网络资源、信息交换和协作。
嵌入式操作系统具有普通计算机具有的通常功能,但同时具有实时系统的特征,通常是更小的具有一定硬件控制功能的系统。
3、并发通常指多个任务可以在同一个时间段内同时执行,即允许多个任务在宏观上并行,微观上仍然是串行的(对于单CPU系统而言)。
并行指的是多个任务真正意义上的同时执行,换言之,多个任务可以在同一个时刻同时执行。
并发系统只能够是宏观上并行、微观上串行执行;而并行则在微观执行上也是并行的。
只有在多处理机系统中,任务的并行执行才是可能的。
并行系统往往也可以支持任务的并发执行。
操作系统存储管理习题
OPT 第2页面:20+8*3 第4页面:20 +8*3 第5页面:20 +8*3 第2页面:8+1 第7页面:20 +8*3 第6页面:20+8*3 第4页面:8+1
第8页面:8+1 因此总的时间是 (20+8*3)*5 +(8+1)*3=247
2021/10/10
26
12、在某分页虚存系统中,测得CPU和磁盘的利用 率如下,试指出每种情况下的问题和措施。*
16us • 3、所存取的数据的页面不在内存,发生缺页中断, 此时存取数据的时间是: • 查询页表的时间+缺页中断的时间+访问页表的时 间+存取内存数据的时间 =8us+20us+8us+8us = 44us
2021/10/10
18
• 当对某一数据进行4次连续读取时: 第1次可能的时间分别为:1us+8us= 9us; 8us+8us= 16us;8us+20us+8us+8us=44us。 第2次时,对应页面的页表项已经交换到快
求内存的有效存取时间。(*)
2021/10/10
20
内存的有效存取时间EAT(Efficent Access Time)也叫平均存取时间AAT(Average Access Time),其计算公式如下:
EAT=命中快表时的存取时间×快表命中率 +命中内存时的存取时间×内存命中率
+页面失效时的存取时间×页面失效率
若存储块长度为n,在该系统所采用的调度算法 下,较长时间内无法选出一道长度不超过该块的 作业,则称该块为外零头(外部碎片)。
表时,如果该页在内存但快表中没有页表项,系统 将自动把该页页表项送入快表。
操作系统内存管理之(动态及静态)内存分配_基础知识习题及答案
操作系统之(动态/静态)内存分配_基础知识习题(答案见尾页)一、选择题1. 静态内存分配的原理与过程是什么?A. 将分配给程序的内存空间在编译时确定B. 在运行时根据程序需求动态分配内存C. 通过操作系统的内存管理器进行内存分配D. 以上都是2. 静态内存分配的优点和缺点分别是什么?A. 优点:内存分配可靠,缺点:内存占用较大,灵活性较差B. 优点:内存占用较小,缺点:分配不灵活C. 优点:分配灵活,缺点:内存占用较大D. 优点:内存占用较少,缺点:分配不可靠3. 以下哪种方法不是静态内存分配的方式?A. 预分配内存B. 申请-分配内存C. 复制分配D. 自由式内存分配4. 以下哪个选项描述了静态内存分配的过程?A. 先申请,后分配B. 先分配,后申请C. 分配-申请D. 申请-分配-释放5. 静态内存分配中,如何解决内存泄漏的问题?A. 释放不再使用的内存B. 使用垃圾回收机制C. 重新申请新的内存D. 以上都是6. 以下哪个算法可以用于静态内存分配?A. 线性搜索B. 排序C. 插入排序D. 选择排序7. 以下哪个选项不是静态内存分配的一种方式?A. 直接分配B. 动态分配C. 分块分配D. 复制分配8. 在静态内存分配中,哪种情况下可能会发生内存碎片?A. 分配的内存大小合适B. 分配的内存大小较小C. 多次分配和释放内存D. 没有内存碎片问题9. 以下哪种算法适用于静态内存分配?A. 快速排序B. 归并排序C. 堆排序D. 以上都不适用10. 静态内存分配中,如何优化内存使用效率?A. 合理分配内存大小B. 避免内存浪费C. 增加内存缓存D. 以上都是11. 动态内存分配的原理与过程是什么?A. 分配一段连续的内存空间给程序B. 在程序运行过程中,根据需要分块分配内存C. 使用操作系统的内存管理器进行动态分配D. 以上都是12. 动态内存分配的优点和缺点分别是什么?A. 优点:内存分配灵活,缺点:分配效率较低B. 优点:分配效率较高,缺点:内存占用较大C. 优点:分配灵活,缺点:分配不灵活D. 优点:内存占用较少,缺点:分配不可靠13. 以下哪种方法不是动态内存分配的方式?A. 预分配内存B. 申请-分配内存C. 复制分配D. 自由式内存分配14. 以下哪个选项描述了动态内存分配的过程?A. 先申请,后分配B. 先分配,后申请C. 分配-申请D. 申请-分配-释放15. 动态内存分配中,如何解决内存泄漏的问题?A. 释放不再使用的内存B. 使用垃圾回收机制C. 重新申请新的内存D. 以上都是16. 以下哪个算法可以用于动态内存分配?A. 线性搜索B. 排序C. 插入排序D. 选择排序17. 以下哪个选项不是动态内存分配的一种方式?A. 直接分配B. 动态分配C. 分块分配D. 复制分配18. 在动态内存分配中,哪种情况下可能会发生内存泄漏?A. 分配的内存大小合适B. 分配的内存大小较小C. 多次分配和释放内存D. 没有内存泄漏问题19. 以下哪种算法适用于动态内存分配?A. 快速排序B. 归并排序C. 堆排序D. 以上都不适用20. 动态内存分配中,如何优化内存使用效率?A. 合理分配内存大小B. 避免内存浪费C. 增加内存缓存D. 以上都是21. 静态内存分配和动态内存分配的内存使用情况有何不同?A. 静态内存分配内存占用较大,动态内存分配内存占用较小B. 动态内存分配内存占用较大,静态内存分配内存占用较小C. 两种内存分配方式内存占用情况相似D. 无法比较22. 静态内存分配和动态内存分配的性能差异如何?A. 静态内存分配性能较高,动态内存分配性能较低B. 动态内存分配性能较高,静态内存分配性能较低C. 两种内存分配方式性能相似D. 无法比较23. 在什么情况下,应该选择静态内存分配而不是动态内存分配?A. 程序需要分配固定大小的内存空间B. 程序需要频繁地分配和释放内存C. 内存占用较小D. 以上都是24. 在什么情况下,应该选择动态内存分配而不是静态内存分配?A. 程序需要分配动态增长的内存空间B. 程序不需要分配固定大小的内存空间C. 内存占用较大D. 以上都是25. 以下哪种说法是错误的?A. 静态内存分配是在编译期间完成的B. 动态内存分配是在运行期间完成的C. 静态内存分配通常比动态内存分配更高效D. 动态内存分配需要使用额外的内存管理开销26. 以下哪种方法不是静态内存分配的特点?A. 分配内存的过程与程序无关B. 分配内存的大小在编译期间确定C. 分配内存的过程与程序相关D. 内存分配需要在运行期间进行27. 以下哪种方法不是动态内存分配的特点?A. 分配内存的过程与程序无关B. 分配内存的大小在编译期间确定C. 分配内存的过程与程序相关D. 内存分配需要在运行期间进行28. 在进行静态内存分配时,哪种内存管理策略是正确的?A. 一次分配,多次释放B. 按需分配,分配-释放C. 先分配,后释放D. 以上都不是29. 在进行动态内存分配时,哪种内存管理策略是正确的?A. 按需分配,分配-释放B. 一次分配,多次释放C. 先分配,后释放D. 以上都不是30. 如何根据程序的需求选择合适的内存分配方式?A. 根据程序的内存需求和使用场景选择静态内存分配或动态内存分配B. 根据程序的性能要求选择静态内存分配或动态内存分配C. 根据程序的内存需求和使用场景选择是否使用内存分配D. 以上都是31. 内存分配算法的主要目的是什么?A. 提高内存利用率B. 减少内存分配的时间C. 减少内存泄漏的问题D. 以上都是32. 以下哪种算法不能用于内存分配?A. 线性搜索B. 排序C. 插入排序D. 选择排序33. 以下哪种算法适用于小规模内存分配?B. 排序C. 插入排序D. 选择排序34. 以下哪种算法适用于大规模内存分配?A. 线性搜索B. 排序C. 插入排序D. 选择排序35. 以下哪种算法可以保证内存分配的公平性?A. 线性搜索B. 排序C. 插入排序D. 选择排序36. 以下哪种算法可以保证内存分配的效率?A. 线性搜索B. 排序C. 插入排序D. 选择排序37. 以下哪种算法在内存分配时需要额外的内存开销?A. 线性搜索B. 排序C. 插入排序D. 选择排序38. 以下哪种算法适用于具有随机访问特性的数据结构?A. 线性搜索B. 排序C. 插入排序39. 以下哪种算法适用于具有顺序访问特性的数据结构?A. 线性搜索B. 排序C. 插入排序D. 选择排序40. 以下哪种算法适用于具有插入访问特性的数据结构?A. 线性搜索B. 排序C. 插入排序D. 选择排序二、问答题1. 静态内存分配的原理与过程2. 静态内存分配的优缺点3. 动态内存分配的原理与过程4. 动态内存分配的优缺点5. 内存使用情况与性能差异6. 适用场景选择参考答案选择题:1. D2. A3. D4. A5. D6. A7. B8. C9. D 10. D11. D 12. A 13. D 14. A 15. D 16. B 17. A 18. C 19. C 20. D21. B 22. B 23. D 24. A 25. C 26. C 27. B 28. C 29. A 30. A31. D 32. B 33. A 34. D 35. D 36. D 37. D 38. A 39. C 40. C问答题:1. 静态内存分配的原理与过程静态内存分配是在程序编译期间完成内存空间的分配,其原理是根据程序的需求和系统的限制,提前确定好内存的使用情况。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第八章动态存储管理
一、选择题
1. 动态存储管理系统中,通常可有()种不同的分配策略。
【长沙铁道学院 1998 三、3 (2分)】
A. 1 B. 2 C. 3 D. 4 E. 5
二、判断题
1.1.在伙伴系统中的伙伴是指任意两块大小相同、位置相邻的内存块。
()
【北京邮电大学 2000 一、8(1分)】
2.2.在动态存储管理系统中做空间分配时,最佳适配法与最先适配法相比,前者容易增加闲置空间的碎片。
()【东南大学 2001 一、1-1 (1分)】【中山大学 1994 一、1(2分)】
三、填空题
1.起始地址为480,大小为8的块,其伙伴块的起始地址是_______;若块大小为32,则其伙伴块的起始地址为_______。
【北方交通大学 1999 二、1(4分)】
2.二进制地址为011011110000,大小为(4)10和(16)10块的伙伴地址分别为:________、_________。
【上海大学 2002 二、2(2分)】
3.3.无用单元是指________,例________【北方交通大学 1999 二、6(4分)】
四、应用题
1.伙伴空间(名词解释)【西北工业大学 1999 一、4(3分)】
2.设内存中可利用空间已连成一个单链表,对用户的存储空间需求,一般有哪三种分配策略?
【北京科技大学 1999 一、6(2分)】
3.计算起始二进制地址为011011110000,长度为4(十进制)的块的伙伴地址是多少?
【中山大学1999一、2(3分)】
4.在一个伙伴系统中,已知某存储块的始址X=(011011110000)2,大小为24,则它的伙伴块的始址是多少?【北方交通大学 1996 一、1(5分)】
5.地址为(1664)10大小为(128)10的存储块的伙伴地址是什么?
地址为(2816)10大小为(64)10的存储块的伙伴地址是什么?【清华大学 1996 四、】
6.试叙述动态存储分配伙伴系统的基本思想,它和边界标识法不同点是什么?
【青岛大学 2000 十、(10分)】【中国人民大学 2000 一、1(4分)】
7.组织成循环链表的可利用空间表附加什么条件时,首次适配策略就转变为最佳适配策略?
【北方交通大学 1998 四、(8分)】
8.已知一个大小为512个字长的存储,假设先后有6个用户申请大小分别为23,45,52,100,11和19的存储空间,然后再顺序释放大小为45,52,11的占用块。
假设以伙伴系统实现动态存储管理。
(1)画出可利用空间表的初始状态。
(2)画出为6个用户分配所需要的存储空间后可利用空间表的状态以及每个用户所得到的存储块的起始地址。
(3)画出在回收3个占用块之后可利用空间表的状态。
【清华大学1998三(15分)】【同济大学 1999】9.下图所示的伙伴系统中,回收两块首地址分别为768及128,大小为27的存储块,请画出回收后该伙伴系统的状态图。
【北京邮电大学 1996 二、(10分)】
10.假设利用边界标识法,并以首次拟合策略分配,已知在某个时刻可利用空间表的状态如下图所示:(注:存储块头部size域的值和申请分配的存储量均包括头部和尾部的存储空间。
)
请画出:
(1)当系统回收一个起始地址为559,大小为45的空闲块之后的链表状态;
(2)系统继而在接受存储块大小为100的请求后,又回收一个起始地址为515,大小为44的空
第10题图:可利用空间表的状态图
第八章第八章动态存储管理
一.选择题 1C
二.判断题 1.错误 2.正确
三.填空题
1.(1)480+8=488(480 %23+1=0)(2)480-32=448
2.(1)011011110100 (2)011011100000
3.用户不再使用而系统没有回收的结构和变量。
例如,p=malloc(size);…,p=null;
四.应用题
1.1.在伙伴系统中,无论占用块或空闲块,其大小均为2的k(k为≥0的正整数)次幂。
若内存容量为2m,则空闲块大小只能是20,21,22,…,2m。
由同一大块分裂而得的两个小块互称“伙伴空间”,如内存大小为210的块分裂成两个大小为29的块。
只有两个“伙伴空间”才能合并成一个大空间。
起始地址为p,大小为2k的内存块,其伙伴的起始地址为:
buddy(p,k)=p+2k (若p % 2k+1=0),或buddy(p,k)=p-2k (若p % 2k+1=2k)
2.首次拟合法;从链表头指针开始查找,找到第一个≥所需空间的结点即分配。
最佳拟合法:链表结点大小增序排列,找到第一个≥所需空间的结点即分配。
最差拟合法:链表结点大小逆序排列,总从第一个结点开始分配,将分配后结点所剩空间插入到链表适当位置。
首次拟合法适合事先不知道请求分配和释放信息的情况,分配时需查询,释放时插在表头。
最佳拟合法适用于请求分配内存大小范围较宽的系统,释放时容易产生存储量很小难以利用的内存碎片,同时保留那些很大的内存块以备将来可能发生的大内存量的需求,分配与回收均需查询。
最差拟合法适合请求分配内存大小范围较窄的系统,分配时不查询,回收时查询,以便插入适当位置。
3. 011011110100 4.011011100000 5.(1)buddy(1664,7)=1664-128=1536 (2)buddy(2816,6)=2816+64=2880
6.动态存储分配伙伴系统的基本思想请参见上面题1。
边界标识法在每块的首尾均有“占用”/“空闲”标志,空闲块合并方便。
伙伴系统算法简单,速度快,但只有互为伙伴的两个空闲块才可合并,因而易产生虽空闲但不能归并的碎片。
7.组织成循环链表的可利用空间表的结点大小按递增序排列时, 首次适配策略就转变为最佳适配策略。
8.因为512=29,可利用空间表的初始状态图如8-1所示。
当用户申请大小为23的内存块时,因24<23<=25,但没有大小为25的块,只有大小为29的块,故将29的块分裂成两个大小为28的块,其中大小为28
的一块挂到可利用空间表上,另一块再分裂成两个大小为27的块。
又将其中大小为27的一块挂到可利用空间表上,另一块再分裂成两个大小为26的块,一块26的块挂到可利用空间表上,另一块分裂成两个大小为25的块,其中一块挂到可利用空间表上,另一块分给用户(地址0—31)。
如此下去,最后每个用户得到的存储空间的起始地址如图8-2, 6个用户分配所需要的存储空间后可利用空间表的状态如图8-3。
在回收时,因为给申请45的用户分配了26
,其伙伴地址是0,在占用中,不能合并,只能挂到可利用空间表上。
在回收大小为52的占用块时,其伙伴地址是192,也在占用。
回收大小为11的占用块时,其伙伴地址是48,可以合并为大小25的块, 挂到可利用空间表上。
回收3个占用块之后可利用空间表的状态如图8-4。
图8-2 图8-1
(注:在图8.3和8.4画上了占用块,从原理上,只有空闲块才出现在“可利用空间表”中。
)
图8-3 图8-4
9. 因为768 % 27+1=0,所以768和768+27=896互为伙伴, 伙伴合并后,首址为768,块大小为28。
因为768 % 28+1=28,所以,所以首址768大小为28的块和首址512大小为28的块合并,成为首址512大小为29
的空闲块。
因为128 % 27+1
=27
,其伙伴地址为128-27
=0, 将其插入可利用空间表中。
回收后该伙伴系统的状态图如下。
10.(1)系统回收一个起始地址为559,大小为45的空闲块后,因右侧起始地址604为空闲块,应与之合并。
合并后,起始地址为559,大小为167的空闲块。
链表状态如图10.(1)所示。
10.(1)
(2)系统在接受存储块大小为100的请求后,将大小为117的空闲块分出100给予用户。
在回收一个起始地址为515,大小为44的空闲块之后,因左侧起始地址462大小53和右侧起始地址559大小167均为空闲块,应与之合并。
合并后,起始地址为462,大小为264的空闲块。
链表状态如图10.(2)
所示。
10.(2)。