一、实验目的
通过编程进一步了解内存管理。
二、实验内容
在服务器上用Vim编写一个程序(在os_exp/exp6_mem/mem.c
文件上编写):仿真实现某个内存管理算法,设计测试用例,给出结果,并对解释运行结果。
如何模拟内存管理:
- 调用函数
malloc
函数,从实际内存中申请一块空间,对这块空间进行管理
三、实验要求
实验基本要求见:所有实验要求
截止时间:2023-05-30 23:00 (大概有三周时间可以做)
实验报告提交:提交到课堂派,同时上传pdf和markdown文档
四、评分
- 本次基本实验满分10分
- 记录内存空闲和使用情况,3分
- 内存分配,3分
- 内存释放,3分
- 测试,1分
- 挑战性任务,15分
- 实现虚拟内存管理,分页、分段、段页式,不需要实现连续分配
五、实验报告
如果很尽力去做了,但代码运行不正确,或者部分功能未能实现。没关系,将你所做的努力写到报告里,依然可以得高分,因为实验重在展示你所做的努力,而非最后结果。
- 做了什么
- 碰到什么样的问题
- 针对遇到的问题,你做了哪些努力
注:
- 结合关键代码,解释代码背后的原理(对于别人不能一眼就能明白你代码要做什么的,你要给出解释)
- 设计测试用例,给出测试结果,并解释运行结果
- 文末,给出完整的源代码
六、一些提示
如果采用链表记录内存空闲区,不定长的,那么至少需要这些变量,从哪里开始、大小、指向下一个空闲链表指针,那么定义一个结构体,如下:
/*描述每一个空闲块的数据结构*/
typedef struct free block typet{
int size;
int start_addr;
struct free block type *next;
}FBT;