存储器管理的目的
- 主存储器的分配和管理
- 提高主存储器的利用率
- “扩充”主存容量
- 存储保护
- 自动地址修改
- 0页,1页寻址
- 界限寄存器
- 单一连续分配方式
- 分区式分配方式
- 可重定位分区分配
应用程序装入到用户区,可使用用户区全部空间 。
分区式分配方式算法复杂,回收分区时系统开销大 。
1. 固定分区分配
(1)分区大小不等(2)分区大小相等
建立分区说明表,内存分配程序检索分区说明表,找出合适分区后修改分区状态 。
优点:易于实现,开销小
缺点:内碎片造成浪费,分区总数固定,限制了并发执行的程序数目,存储空间的利用率太低 。
2. 动态分区分配
1. 分区数目固定
2. 分区数目大小均不固定
数据结构:空闲分区表 / 空闲分区链
分区分配算法基于顺序搜索:
1. 最佳适应算法
2. 最坏适应算法
3. 首次适应算法
4. 循环首次(下次)适应算法
基于索引搜素:
1. 快速适应算法
2. 伙伴系统
最佳适应算法总是寻找其大小最接近作业所要求的存储区域 。即使作业放入后剩下的零头最小 。
优点:
遇到大作业到来时,作业要求的存储区域就比较容易得到满足 。
缺点:
产生空白区较多,且空白区较小无法使用(可干脆将整个区域划分给申请的作业 。
回收分区时插入到合适的位置较为费时 。
为了加快查找速度,应将存储空间中所有的空白 区按其大小递增的顺序链接起来,组成一空白区链 (Free List) 。
最坏适应算法它在为作业选择存储区域时,总是寻找最大的空白区 。在划分后剩下的空白区也是最大的,因而对以后的分配很可能仍然是有用的,这是该算法的一个优点 。
但是,由于最大的空白块总是首先被分配而进行划分,当有大的作业时,其存储空间的申请往往得不到满足,这是该算法的一个缺点 。
为了支持这个算法的实现,空白块应以大小递减的顺序链接起来 。
首次适应算法每个空白区按其在存储空间中地址递增的顺序链在 一起,即每个后继空白区的起始地址总是比前者的 大 。在为作业分配存储区域时,从这个空白区链的 始端开始查找,选择第一个足以满足请求的空白块,而不管它究竟有多大 。
这个选择的空白区被分成两部分 。一部分与请求的大小相等,分配给作业;剩下的部分留在空白区链中 。显然,这个算法倾向于优先利用存储空间中低址部分的空白区 。
优点:
算法简单,查找速度快,大作业到来时也比较容易得到满足
缺点:
会留下较多无法使用的空白区,存储空间利用率不高 。较小空白区集中在前端,较大空白区在尾端,导致找到合适的空白区的速度降低 。
下次适应算法我们把存储空间中空白区构成一个循环链 。每次为存储请求查找合适的分区时,总是从上次查找结束的地方开始,只要找到一个足够大的空白区,就将它划分后分配出去 。
优点:存储空间的利用更加均衡 。
快速适应算法将空闲分区根据其容量大小进行分类,对于每一 类具有相同容量的所有空闲分区,单独设立一个空闲分区链表 。
在内存中设立一张管理分区类型,并记录 了该类型空闲分区链表表头的索引表,该表的每一个表项记录了对应类型空闲分区链表表头的指针 。
在内存中设立一张管理分区类型,并记录了该类型空闲分区链表表头的索引表,该表的每一个表项记录了对应类型空闲分区链表表头的指针 。
优点:
查找效率高 。
该算法在进行空闲分区分配时,不会对任何分区产生 分割,所以能保留大的分区,满足对大空间的需求,也不会产生内存碎片 。(外碎片)
缺点:
在分区归还主存时算法复杂,系统开销较大 。
该算法在分配空闲分区时是以进程为单位,一个分区 只属于一个进程,因此在为进程所分配的一个分区中 ,或多或少地存在一定的浪费 。空闲分区划分越细,浪费则越严重 。(内碎片)
推荐阅读
- win10系统提示计算机内存不足处理方法 显存不足怎么解决方案
- 计算机常用快捷方式及说明 电脑快捷方式是什么意思
- 电脑操作系统处理文件的启动 电脑bat文件怎么打开
- 城市基础设施配套费会计分录 城市基础设施配套费
- 兰芝化妆品效果怎么样 兰芝化妆品效果怎么样?
- 计算机里面乘号的输入方法 笔记本电脑乘号怎么打
- 佳能R6零基础图文教学 菜单键是哪个按键
- 肌肉量增加基础代谢下降 肌肉分解基础代谢下降
- Windows操作系统全面详解 windows什么意思
- 现在的量子计算机发展到了什么阶段,瓶颈是什么,前景如何呢?