内存为什么要管理
在OS中,每个运行的进程都会占用内存,那么操作系统势必要做好两件事:内存分配和内存回收。这便是本次实验要做的模拟实验了。
内存分配策略
FF(首次适应算法)
这种策略旨在从最低地址的空闲分区开始找起,找到合适的便进行分配。内存空间按起始地址从小到大排序。
优点:查找速度快
缺点:低地址会留下较多的内存碎片,高地址则会存留大块空闲分区。
BF(最佳适应算法)
这种策略每次分配都将最小块的满足需求空闲分区拿去分配。内存空间按空闲区从小到大排序。
优点:保留大的空闲分区。
缺点:造成很多小的空闲分区。
WF(最差适应算法)
这种策略每次分配都将最大块的满足需求空闲分区拿去分配。内存空间按空闲区从大到小排序。
优点:不会留下许多小的内存碎片。往往可以装入多个大内存程序。
缺点:留下大空闲区的可能减少了。
内存管理实验内容
模拟操作系统,既然是模拟,那么自然比真正的内存分配简单很多。
程序中两个链表:
空闲内存区块表,包含该空闲区的起始地址以及大小。程序初始化链表仅一个节点,大小为默认大小。
一分配内存区块表,包含被分配的内存区起始地址及大小和使用该内存的进程pid。
程序初始,可以选择修改内存总大小。仅能修改一次。并且分配过内存后就不能再修改大小了。
之后可以随时选择分配算法。
创建新进程并且杀死进程,观察内存占用。
流程图
下次补上
程序代码
宏定义配置文件:https://github.com/City-Zero/LinuxTest/blob/master/OSex/mem_manager/conf.h
程序代码:https://github.com/City-Zero/LinuxTest/blob/master/OSex/mem_manager/mm.c