某操作系统的内存管理采用段式管理,内存分配采用最佳适配算法,计算机的内存为50M,刚开始时内存均未使用。经过一段时间的运行(其内存申请;释放的序列为:申请20M一申请15M一申请10M一释放15M一申请10M一释放20M一申请4M)以后,内存中存在(26)

admin2009-02-15  36

问题 某操作系统的内存管理采用段式管理,内存分配采用最佳适配算法,计算机的内存为50M,刚开始时内存均未使用。经过一段时间的运行(其内存申请;释放的序列为:申请20M一申请15M一申请10M一释放15M一申请10M一释放20M一申请4M)以后,内存中存在(26)。

选项 A、2个空闲块,长度分别为10M、16M
B、3个空闲块,长度分别为20M、1M、5M
C、1个空闲块,长度为26M
D、4个空闲块,长度分别为5M、5M、5M、11M

答案B

解析 段式管理中内存分配需要对一个合适的空闲块进行切割并分配。经过多次的分配与释放内存操作以后,内存可能变得支离破碎,由于反复切割,出现大量互不邻接的空闲块,每个空闲块长度不大,基本不能满足用户的正常需要。然而,所有空块加在一起,又是一个相当大的数目,造成内存不能充分利用。由于碎片在段以外,又称“外碎片”。为了缓解这种现象,分配内存时如何选取空闲块加以切割成了研究的问题,最主要的有两种方法:最先适配和最佳适配。所谓最先适配是选取空闲块链表中第一个不小于申请要求的空闲块,加以切割与分配,这种方法的运行效率较高,平均检索时间为1/2空闲块链表长,但有可能将本来可以满足较大空间要求的大空闲块分割,不利于较大空间要求的有效满足;为避免不能“物尽其用”的现象出现,最佳适配法检索全部空闲块,挑选最接近且不小于申请要求的空闲块加以分割和分配,从而避免“大材小用”现象,但算法的效率较差,每次分配都需要调查所有空闲快的长度,平均检索时间较最先适配法长了一倍。
   需要说明的是:这两种算法在解决碎片问题方面不能简单地加以比较,最先适配法虽然会出现大材小用的现象,但即使是大材小用,裁下来的空闲块可能还比较大,还能满足其它较小的要求;后者虽然一定程度避免了大材小用现象,但裁下来的部分可能都比较小,可能再也不能满足任何申请要求,成了碎片。
   本题中,由于内存没有使用,只有一个空闲块,起始地址为0,长度为50M。响应第 1个要求(申请分配20M)后,分配出去的是起始地址为0、长度为20M的内存块;空闲块还是—个,长度为30M,起始地址为20M。同理,响应第2个要求(申请分配15M)后,分配出去的是起始地址为20M、长度为15M的内存块:空闲块还是一个,长度为15M,起始地址为35M。响应第3个要求(申请分配10M)后,分配出去的是起始地址为35M、长度为10M的内存块;空闲块仍旧是一个,长度为5M,起始地址为45M。第4个要求是释放15M内存,显然是第2个要求所申请的。这时,空闲块链表有了两项:
   
   第5个要求是申请10M,只有第1个空块可以满足,切割并分配的磁盘块的起始地址 20M,长度10M,空闲块链表变成:
   
   第6个请求释放20M,是第1次申请的内存,响应释放后空闲块链表有了3个空闲块:
   
   第6个请求是申请4M内存,这时3个空闲块都能满足,但后两个的大小与申请数量最接近,可以任意选择,这里选第2个加以切割分配空闲块链表变成:
   
   所以正确答案应该为B。
转载请注明原文地址:https://kaotiyun.com/show/0CxZ777K
0

相关试题推荐
最新回复(0)