单一连续分配:
最简单的一种存储管理方式
就是将内存分为系统区和用户区;只能用于单用户,单任务的操作系统中。
优点:方法简单
缺点:内存和CPU利用率低,难于实现共享
固定分区分配:
把内存用户区划分成若干固定大小的分区,每个分区只装入一道作业
划分方法:
1.分区大小相等
缺点:不灵活,分区太大或太小都不行
2.分区大小不相等
把用户区分成含有多个较小的分区,适量的中等分区及少量的大分区。
内存分配的具体实现:
把分区按大小进行排队并建立分区使用表,表项包括:分区好,分区起始地址,分区大小,分区状态
要装入时有内存分配程序检索该表:找到满足要求的就分配并更改状态,没找到则拒绝 分配内存
缺点:内碎片问题;限制了并发执行的程序数目
动态(可变)分区分配
作业装入时,根据实际需要和内存空间的使用情况进行动态分配
特点:分区个数,分区大小不固定
需要解决的三个问题:
1.分区分配中的数据结构
(1)空闲分区表、已分配分区表
(2)空闲分区链,双向链表有前后指针
2.分区分配算法
2.1、顺序搜索分配算法:
FF(首次适应)NF(循环适应)这两个是链表按空闲区地址从低到高排序,首次适应是第一次找到并后第二次再找还是从链表的头部开始找,浪费时间。循环则是第一次找到后第二次再找则从第一次找到的位置继续往后找,若没找到则在从链表的开头找。
BF(最佳适应):链表按空闲区容量从小到大排序
WF(最坏适应):链表按空闲区容量从大到小排序
2.2、分类搜索分配算法(基于索引):
QF(快速适应):容量相等的空闲区组成一个链表
将空闲分区按照进程常用的空间大小进行分类。分配时,根据进程长度,寻找到能容纳它的最小空闲区链表,并取下第一块进行分配
3.分区的分配与回收
动态分区的分配与回收
可重定位分区分配