交大网络教育操作系统实验一可变分区存储管理.docxVIP

交大网络教育操作系统实验一可变分区存储管理.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
交大网络教育操作系统实验一可变分区存储管理

实验一可变分区存储管理(一)????? 实验题目编写一个C程序,用char *malloc(unsigned size)函数向系统申请一次内存空间(如size=1000,单位为字节),用循环首次适应法addr = (char *)lmalloc(unsigned size) 和lfree(unsigned size,char * addr)模拟UNIX可变分区内存管理,实现对该内存区的分配和释放管理。?(二)????? 实验目的1.加深对可变分区的存储管理的理解;2.提高用C语言编制大型系统程序的能力,特别是掌握C语言编程的难点:指针和指针作为函数参数;3.掌握用指针实现链表和在链表上的基本操作。?(三)????? 实验要求要分配函数lmalloc的参数size和释放函数lfree的参数size、addr以键盘命令的形式输入,每次分配和释放后显示自己的空闲存储区表。空闲存储区表可采用结构数组的形式(基本要求)或双向链接表的形式(提高一步),建议采用的数据结构为:结构数组的形式:struct map { unsigned m_size; char * m_addr;};struct map coremap[N];或双向链接表的形式:struct map { unsigned m_size; char *m_addr; struct map *next, *prior;};struct map *coremap;整个系统的基本框架为:程序结束前将整个存储区归还给系统。?(四)????? 实验注意事项键盘命令的简单形式如:m[alloc] 100 [enter] 通过lmalloc函数申请100字节的内存空间。f[ree] 100 2567899 [enter] 通过lfree函数释放起始地址为2567899的那个内存区,该地址先前通过lmalloc申请的有效存储区地址。命令输入可用C函数scanf (“%c”, cmdchar); cmdchar =getchar ( ) 或scanf (“%s”, cndstring)后跟scanf (“%u”, size) 或scanf (“%u %u”, size, addr)。如采用通用的命令串的形式,还要调用一个串匹配函数,以判断是哪个命令。如采用简单的读取单个命令字符的形式,由于getchar或scanf可能读入的是前一个命令留在键盘输入缓冲区内的‘’,‘/t’,‘/n’等空白字符,为了正确地读入m,f等本次命令字符,需要预先滤去输入缓冲区的空白字符:do c=getchar();while(c==‘/n’||c==‘/t’||c==‘’)程序输入、调试和测试可以在Linux的环境下进行,也可在turbo C的环境中进行,但turbo C不支持I/O转向,故在完成此项工作时应将编译后产生的执行文件如myproc.exe存入磁盘的某个目录中,然后进入DOS环境运行程序,用I/O转向生成结果文件。如:myproc.exe result.txt在Linux的环境下可直接运行: myproc result??(五)????? 测试要求在程序调试基本通过后,应进行较为全面的测试,建议采用白盒法的路径测试方法,测试路径应包含lmalloc的“循环”、“首次”,lfree的与邻近空闲分区联系的四种情况,还要包含一些必要的出错处理路径。测试通过后可用I/O转向使屏幕的输出结果转至指定文件。注意,由于此时看不到提示字符串和空闲存储区表的输出内容,欲释放存储地址较难正确输入,可采用以下几种方法:1.在不采用输出转向时先完整地运行一遍,并记下所有的命令和参数,再用I/O转向时“摸瞎”似地依次输入各个命令和参数,由于malloc所分配的存储区地址时用户程序的虚地址空间,故同一程序的两次运行的结果应当是一样的。为了使输出结果文件也含有输入的命令串,应在输入命令后,再将命令和参数输出至标准输出设备。2.如lmalloc和lfree,是采用相对地址的管理方法(malloc所分配的地址+偏移地址),那么输入lfree的释放地址就容易得多。3.输入也可采用I/O转向,将预先设计好的所有输入次序(部分数据可在不采用I/O转向运行时输入)写入输入文件,再用:myprog.exe inputfile.txt result.txt的形式执行。4.对于文件的I/O较熟悉的学生可采用每次在屏幕输出后重复向文件输出的方法,这样上述的问题就很容易解决了。?(六)????? 实验数据和结果学生最后应当将程序、输出结果文件和输入命令文件(如果有的话)合并成一个文件,如progres.txt上载到作业系统中。在DOS中的合并方法是:copy myprog.c + input.txt + res

文档评论(0)

xjj2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档