动态分区分配算法
首次适应算法:
每次都从低地址开始查找,找到第一个能满足大小的空闲分区。
两种常用的数据结构:空闲分区表,空闲分区链
最佳适应算法:
空闲分区按容量递增次序链接。每次分配内存时顺序查找空闲分区链,找到第一个满足要求的空闲分区。
缺点:会产生很多的外部碎片。
最坏适应算法:(又称最大适应算法)
空闲分区按容量递减次序链接,每次分配内存时顺序查找空闲分区链,找到第一个满足要求的空闲分区。
缺点:导致较大的连续空闲区被迅速用完。
邻近适应算法:
空闲分区以地址递增的顺序排列。每次分配内存时从上次查找结束的位置开始查找空闲分区链,找到第一个满足要求的空闲分区。
四种算法中,首次适应算法效果是最好的。
连续分配:一个连续的内存空间
非连续分配:分散的内存空间
基本分页存储管理
将内存空间分为一个个大小相等的分区,每个分区就是一个“页框”或“页帧”。每个页框有一个编号,即页框号,页框号从0开始。
将用户进程的地址空间也分为与页框大小相等的一个个区域,称为页。每个页面也有一个编号,即页号,页号也是从0开始的。
页框不能太大,否则会产生内部碎片。
进程的每一个页面分别放入一个页框中。进程的页面与内存的页框有一一对应的关系。
模块在内存中的起始地址+偏移量
将进程的逻辑地址空间分页,假设每页大小为50B
逻辑地址如何转化为物理地址:
- 要算出逻辑