操作系统第5次实验报告:内存管理

  • 姓名:杨富宏
  • 学号:201821121017
  • 班级:计算1811

1. 记录内存空间使用情况

根据课堂上的实验报告,创建一个参数为(pid 进程id,size 大小,start_addr 起始地址,process_name 进程名,*next下一个块)的结构体allocated_block,用来记录内存空间的使用情况。

2. 记录空闲分区

创建一个(size 大小,start_addr 起始地址,*next 指向下一个块)的结构体链表free_block_type,来记录空闲分区。并且设置头指针为空,指向表头,再使用后面的算法进行排序,从低地址开始进行查找。

3. 内存分配算法

这边我用到了首次适应算法,首次适配算法是从最低地址的空闲分区开始找起,找到合适的便进行分配。内存空间按起始地址从小到大排序。
优点是查找速度快,而且比较便捷。
缺点是低地址会留下较多的内存碎片,高地址则会存留大块空闲分区,使总的数据比较冗余。

首次适应算法:

分配内存模块: 

 

4. 内存释放算法

释放链表节点:

释放进程所占用内存:

释放进程:

 

5. 运行结果

进程1分配了一个初始地址为0,大小为92的内存空间,空闲分区地址是从92开始大小为932的空间。

进程2分配了一个初始地址为92,大小为43的内存空间,空闲分区地址是从135开始大小为889的空间。

 进程3分配了一个初始地址为135,大小为61的内存空间,空闲分区地址是从169开始大小为828的空间。

 

 

 参考文献:https://github.com/City-Zero/LinuxTest/blob/master/OSex/mem_manager/mm.c

posted @ 2020-05-16 14:25  waiting!  阅读(335)  评论(0编辑  收藏  举报