文章标题
来源:互联网 发布:depthmap软件原理 编辑:程序博客网 时间:2024/06/15 10:50
连续分配方式
单一连续分配
固定分区分配
动态分区分配
根据进程的实际需要,动态地为之分配内存空间。
外部碎片:在所有分区外的存储空间变成越来越多的碎片
优点: 便于动态申请内存
碎片问题(外部碎片)
- 要求连续的内存空间
- 经过一段时间的分配回收后,内存中存在很多很小的空闲块。它们每一个都很小,不足以满足分配要求;但其总和满足分配要求。这些空闲块被称为碎片。
- 造成存储资源的浪费
分区分配中的数据结构
- 空闲分区表
记录每个空闲分区的情况。
每个空闲分区占一个表目:包括分区序号、分区始址及分区的大小等数据项。 - 空闲分区链
分区的回收
- 只需修改其前一分区F1的大小
- 用回收区的首址作为新空闲区的首址,大小为两者之和
- 使用F1的表项和F1的首址,取消F2的表项
- 回收区既不与F1邻接,又不与F2邻接。
这时应为回收区单独建立一新表项,填写回收区的首址和大小,并根据其首址插入到空闲链(表)中的适当位置。
动态分区分配算法
基于顺序式搜索的动态分区分配算法
首次适应算法
要求空闲分区链以地址递增的次序连接
该算法倾向于优先利用内存中低址部分的空闲分区,从而保留了高址部分的大空闲区.为以后到达的大作业分配大的内存空间创造了条件。- 缺点
低址部分不断被划分,会留下许多难以利用的、很小的空闲分区
每次查找又都是从低址部分开始,这无疑会增加查找可用空闲分区时的开销。
- 缺点
循环首次适应算法(next fit)
从上次找到的空闲分区的下一个空闲分区开始查找
直至找到一个能满足要求的空闲分区
从中划出一块与请求大小相等的内存空间分配给作业
应设置一起始查寻指针,用于指示下一次起始查寻的空闲分区,并采用循环查找方式- 使内存中的空闲分区分布得更均匀
减少了查找空闲分区时的开销
会缺乏大的空闲分区。
- 使内存中的空闲分区分布得更均匀
最佳适应算法
能满足且最小的空闲分区
将所有空闲分区按容量从小到大顺序形成空闲分区链
在存储器中会留下许多难以利用的小空闲区- 优点
可使剩下的空闲区不至于太小,产生碎片的几率最小
对中、小作业有利,查找效率很高。 - 缺点:它会使存储器中缺乏大的空闲分区。
- 优点
最坏适应算法(worst fit)
基于索引搜索的动态分区分配算法
快速适应算法(quick fit)
固定分区和动态分区方式的折衷
分区大小均为2的K次幂,L≤K≤M。
2L = 分配的最小分区大小
2M = 分配的最大分区大小,通常是整个可分配的内存大小
伙伴通过对大块的物理主存划分而获得
每次都对半划分
两个伙伴的大小必须相同- 无论已分配分区或空闲分区其大小均为2的k次幂。
直到产生大于或等于n的最小块
哈希算法
伙伴系统
动态重定位分区分配
阅读全文
0 0
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- oralce处理null值的方法
- linux操作系统常用命令
- 一些常用正则表达式
- c++面试题(2)
- Thread和Runnable类
- 文章标题
- 《python机器学习及实践-从零开始通往kaggle竞赛之路(代码Python 3.6 版)》chapter2.1.1.1
- ubuntu 下dpkg 与apt-get
- bzoj1877 [SDOI2009]晨跑(费用流)
- 二分
- Linux 下 rz/sz命令安装及使用
- Alibaba编码规约遵从
- ubuntu 下关闭触摸板
- 【enum】如何在枚举中定义自定义的方法,并进行使用