zoukankan      html  css  js  c++  java
  • OS 内存分配算法

    内存分配算法

    (1)首次适应算法

    首次适应算法把空闲区按地址从小到大排列在空闲分区表(链)中。每次分配时,总是从头顺序查找空闲分区表(链),找到第一个能满足长度要求的空闲区为止。分割这个找到的空闲分区,一部分分配给作业,另一部分仍为空闲区。
    

    这种分配算法优先利用主存低地址空闲分区,从而保留了高地址的大的空闲区,这为以后到达的大作业分配大的内存空间创造了条件。但由于低地址部分不断被分割,势必造成低地址部分有较多难以使用的“碎片”,而每次查找又都从低地址部分开始,这就增加了查找可用空闲分区的开销。

    (2)循环首次适应算法

    循环首次适应算法每次分配时,总是从上次扫描结束处顺序查找空闲分区表(链),找到第一个能满足长度要求的空闲区为止。分割这个找到的空闲分区,一部分分配给作业,另一部分仍为空闲区。这一算法是最先适应分配算法的一个变种,能使得存储空间的利用率更加均衡,不会导致小的空闲区集中在存储器的一端,但这会缺乏大的空闲分区。
    

    (3)最佳适应算法

    最佳适应算法要扫描整个空闲分区表(链),从空闲区中挑选一个能满足作业要求的最小分区进行分配。这种算法可保证不去分割一个更大的区域,使装入大作业时比较容易得到满足。采用这种分配算法时可把空闲区按长度以递增顺序排列,查找时总是从最小的一个区开始,直到找到一个满足要求的分区为止。按这种方法,在冋收一个分区时也必须对空闲分区表或空闲分区链重新排列。最佳适应算法找出的分区如果正好满足要求则是最合适的了,但如果比所要求的略大则分割后所剩下的空闲区就很小,以致无法使用。
    

    (4)最坏适应算法

    最坏适应算法要扫描整个空闲分区表(链),总是挑选一个最大的空闲区分割给作业使用,其优点是可使剩下的空闲区不至于太小,对中、小作业有利,但这会导致内存中缺乏大的空闲分区。采用这种分配算法时可把空闲区按长度以递减顺序排列,查找时只要看第一个分区能否满足作业要求即可,这样使最坏适应分配算法查找效率很高。
  • 相关阅读:
    Hadoop、Spark和Storm
    bro安装过程(纪念其中遇到的坑)
    tensorflow中出现{TypeError}unhashable type: 'numpy.ndarray'
    Python高级函数(map,reduce,cmp,filter,闭包,lambda )
    Java中设置百分数保留两位小数
    查看python支持的whl文件类型
    js 图表转图片
    dorado 7 使用总结
    Socket 接收本地短连接并转发为长连接 多线程
    java Socket 长连接 心跳包 客户端 信息收发 demo
  • 原文地址:https://www.cnblogs.com/HelloBytes/p/13159948.html
Copyright © 2011-2022 走看看