我们在操作系统和后台存储一些东西的时候,需要考虑存储管理器的问题,就是如何把我们要放置安置的东西,如虚拟机等东西最优化地存储,就需要用到今天讲的分区分配算法。
在这里插入图片描述
我们用的比较多的就是FF,首次适应算法。空闲分区链以地址递增的次序链接

分配时,从链首开始顺序查找,直至找到一个大小能满足要求的空闲分区为止;再按照要存东西的大小(我们称之为作业),从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍然留在空闲链中。
在这里插入图片描述
要是都找不到,就失败返回。

所以这里有个缺点就是空闲区分布的不均匀,之前的小的占满了,后面的高地址可能就占不到了。
在这里插入图片描述
这里举一个例子,分配这三种作业,到后台的存储中,如何分配?
在这里插入图片描述
对于FF算法,低地址的A是18K,我们首先看到了30K内存空间,就分配给A了。后面的B是25K,我们找空闲的,但是只有最后一个满足,所以把C给了46K的内存空间。

可以看到最佳适应就可以很好对应上每个作业。

申请的不同类型的虚拟机要放置在物理内存当中,也可以用这种方法做,先给你一个,一个一个来放,放完发现第一个物理内存已经放不下最新的一个虚拟机的时候,就开辟新的一个物理内存来存放。这里需要和粒子群算法并用,我们需要优化放置的物理内存最少,最终得到的结果是粒子群的群体最优解,我们把它和FF结合就能得到相对最少的物理服务器。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐