最有适应算法
A. 最佳适应算法的解释
不是最好,而是最优,适合的才是最好的!
B. 【高分悬赏】用C/C++语言设计一个适应算法(最先、最佳或最坏适应算法)
考的是内存的动态划分区域内容,很好写啊
1.可以用数字来模拟内存区域划分情况,比如建一个100大小的数组(结构为struc (区号,值),值为0表示空闲,值为1表示占用,初始化几个已确定占有的分区,分区一,1-5 占有,6-12 空闲,。。。。。。。,并建立空闲区域表,很简单,从头到尾对数组扫描下就知道了
2.最先适应:从内存开始地址找到第一个大于请求大小的连续空闲区域,如请求5个空间,那就在刚开始6-12空闲处建立分区二 ,6-11 ,占用
3.最佳适应:指所有空闲块最适应请求大小的那块,min(空闲块大小-请求大小)
4.最坏:指适应请求大小,且最大的那块空闲区域
C. 首次适应算法是什么
First-fit (FF)是一种用于装箱的在线算法。
它的输入是一个不同大小的项目列表。它的输出是一个包装——将物品分成固定容量的箱子,这样每个箱子中物品的大小之和最多就是容量。理想情况下,我们希望使用尽可能少的 bin,但是最小化 bin 的数量是一个 NP-hard 问题。首次拟合算法使用以下启发式:
它保留一个打开的垃圾箱列表,最初是空的。
当一件物品到达时,它会找到该物品可以放入 的第一个箱子(如果有的话)。
如果找到这样的箱子,则将新物品放入其中。
否则,将打开一个新的箱子并将即将到来的物品放入其中。
优缺点
1、优点
处理速度快。由于处理器将最近的可用内存分区分配给作业,因此执行速度非常快。
2、缺点
浪费大量内存。处理器忽略分配给作业的分区大小与作业大小相比是否非常大。它只是分配内存。结果,浪费了大量内存,许多作业可能无法在内存中获得空间,并且必须等待另一个作业完成。
D. 最先适应,下次适应,最佳和私营,最坏适应四种分配算法中,哪一种更适合固定分区存储管理系统为什么
固定分区存储管理系统适合采用最佳适应算法。因为,此算法所产生的内碎片最少。
这里还要介绍一下下次适应算法。下次适应(next fit)算法也称“临近适应”算法,其工作方式和最先适应算法相同(最先适应也称首次适应算法。它总是最先找到的、满足存储要求的那个空闲分区作为分配对象。),不同的是每次找到合适的空闲的分区时就记住它的位置,以便下次就从该位置开始往下查找,而不是每次都像最先适应算法那样从头开始查找。但是这种算法的总体结果通常要比最先适应算法差。由于它经常会在内存的末尾分配存储分区,使位于存储空间末尾的最大分区被撕裂成小的外部碎片,因此必须经常不断地进行存储紧凑。在该算法中应采取循环查找方式,即最后上个空闲区的大小仍不能满足要求时,应再从第一个空闲区开始查找,故又称为循环造就算法
E. 首次适应算法,最佳适应算法和最坏适应算法怎么分配资源
首次适应算法要求空闲分区链以空闲分区开始地址递增的次序链接,从链首开始顺序查找,直至找到一个能满足程序大小要求的空闲分区为止
最佳适应算法技能满足要求,又是最小的空闲分区
最差适应算法总是找到一个满足程序长度要求的最大空闲分区
F. 最佳适应算法的介绍
最佳适应算法是从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区的一种计算方法,这种方法能使碎片尽量小。
G. 最佳适应算法产生什么碎片
最佳适应算法产生的碎片是:外部碎片,因为最佳适应算法虽然称为“最佳”,但是性能通常很差,所以每次最佳的分配会留下很小的难以利用的内存块,它会产生最多的外部碎片。
并且最坏适应算法与最佳适应算法相反,选择最大的可用块,这看起来最不容易产生碎片,但是却把最大的连续内存划分开,会很快导致没有可用的大的内存块,因此性能也非常差。
所以首次适应算法可能比最佳适应法效果好,而它们两者一定比最大适应法效果好。另外注意,在算法实现时,分配操作中最佳适应法和最大适应法需要对可用块进行排序或遍历查找,而首次适应法和邻近适应法只需要简单查找。
回收操作中,当回收的块与原来的空闲块相邻时,需要将这些块合并。在算法实现时,使用数组或链表进行管理。除了内存的利用率,这里的算法开销也是操作系统设计需要考虑的一个因素。
最佳适应算法中动态分区的分配策略是:
在进程装入或换入主存时,如果内存中有多个足够大的空闲块,操作系统必须确定分配哪个内存块给进程使用,这就是动态分区的分配策略。
1、首次适应:地址递增,顺序查找,第一个能满足的即分配给进程。
2、最佳适应:容量递增,找到第一个能满足要求的空闲分区。
3、最坏适应:容量递减,找到第一个能满足要求的分区。
4、邻近适应:循环首次适应算法。
H. 什么是最优适应分配算法
分区分配算法(Partitioning Placement Algorithm) ,共有3种。分别为最佳适应算法、首次适应算法、循环首次适应算法。
1、最佳适应算法(Best Fit):
它从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表(空闲区链)中的空闲分区要按大小从小到大进行排序,自表头开始查找到第一个满足要求的自由分区分配。该算法保留大的空闲区,但造成许多小的空闲区。
2、首次适应算法(First Fit):
从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法目的在于减少查找时间。为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到高进行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高地址空间保留大的空闲区。
3、循环首次适应算法(Next Fit):
该算法是首次适应算法的变种。在分配内存空间时,不再每次从表头(链首)开始查找,而是从上次找到空闲区的下一个空闲开始查找,直到找到第一个能满足要求的的空闲区为止,并从中划出一块与请求大小相等的内存空间分配给作业。该算法能使内存中的空闲区分布得较均匀。
I. 什么是最先适应分配算法
最想适应算法和首次适应算法是一个意思
就是每次分配内存在内存空闲分区说明表(按地址从高到低排列)
找到一个能满足大小的内存分配