实验二 存储管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二存储管理
一、实验目的与基本要求
1.加深对可变分区的存储管理的理解;
2.提高用C 语言编制大型系统程序的能力,特别是掌握C 语言编程的难点:指针和指针作为函数参数;
3.掌握用指针实现链表和在链表上的基本操作。
二、实验条件
1.硬件:一台微机
2.软件:操作系统和C语言系统或VC++编译系统。
三、实验方法
编写程序,记录、观察显示结果,并分析原因。
四、实验内容
编写一个 C 程序,用char *malloc(unsigned size)函数向系统申请一次内存空间(如size=1000,单位为字节),用循环首次适应法来匹配。
两个模拟申请和释放函数,可以按以下定义addr = (char *)lmalloc(unsigned size) 和lfree(unsigned size,char * addr)模拟UNIX 操作系统的可变分区内存管理,实现对该内存区的分配和释放管理。
五、实验提示
要分配函数lmalloc 的参数size 和释放函数lfree 的参数size、addr 以键盘命令的形式
输入,每次分配和释放后显示自己的空闲存储区表。
空闲存储区表可采用结构数组的形式(最低要求)或双向链接表的形式,建议采用
的数据结构为:
struct map {
unsigned m_size;
char * m_addr;
};
struct map {
unsigned m_size;
char *m_addr;
struct map *next, *prior;
};
整个系统的基本框架为
程序结束前将整个存储区归还给系统。
六、实验报告要求
要采用标准的实验报告纸。它包含以下几个方面:
1.题目。
2.算法思想和概要设计和重要模块的详细设计及功能和接口说明。
3.重要数据结构和变量的说明。
4.源程序、注释和结果。注释如在上机时来不及打入,可在写报告时补上。5.测试方法,对测试结果的分析,错误的分析。
6.程序及测试的改进、本次上机经验及体会。