版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验一 可变分区存储管理 请尽量到机房上机 (一)实验题目 编写一个C程序,用char *malloc(unsigned size)函数向系统申请一次内存空间(如size=1000,单位为字节),用首次适应法 addr = (char *)fmalloc(unsigned size) 和 ffree(unsigned size,char * addr)(基本要求)或 循环首次适应法(提高一步) addr = (char *)lmalloc(unsigned size) 和 lfree(unsigned size,char * addr) 模拟UNIX可变分区内存管理,实现对该内存区的分配和释放
2、管理。(二)实验目的1加深对可变分区的存储管理的理解;2提高用C语言编制大型系统程序的能力,特别是掌握C语言编程的难点:指针及指针作为函数参数。(三)实验要求 空闲存储区表可采用结构数组的形式,建议采用的数据结构为: 结构数组的形式: struct map unsigned m_size; char * m_addr; ; struct map coremapN; 分配函数的参数size和释放函数的参数size、addr以键盘命令的形式输入,每次分配和释放后显示自己的空闲存储区表。整个系统的基本框架为: (四)实验注意事项 键盘命令的简单形式如: malloc 100 通过fmalloc函数申
3、请100字节的内存空间。 free 100 2567890 通过ffree函数释放起始地址为2567890的那个内存区,该地址先前通过fmalloc申请的有效存储区地址。 为了避免输入复杂的释放地址,可采用输入相对地址的方法,如:f 100 300(相对地址)调用ffree时再加上分配到的内存始地址。命令输入可用C函数: scanf (“%c”, &cmdchar); cmdchar =getchar ( ) 或 scanf (“%s”, &cndstring)后跟 scanf (“%u”, &size) 或 scanf (“%u %u”, &size, &addr)。 如采用通用的命令串的形
4、式,还要调用一个串匹配函数,以判断是哪个命令。 可采用简单的读取单个命令字符的形式,由于getchar或scanf可能读入的是前一个命令留在键盘输入缓冲区内的 ,t,n等空白字符,为了正确地读入m,f等本次命令字符,需要预先滤去输入缓冲区的空白字符: do c=getchar(); while(c=n|c=t|c= ) 程序输入、调试和测试 可以在Linux的环境下进行,也可在Windows turbo C等的环境中进行,但Windows和turbo C环境不直接支持I/O转向,故在完成此项工作时应将编译后产生的执行文件如myproc.exe存入磁盘的某个目录中,如是Windows,运行cmd
5、命令进入命令行窗口,运行程序,用I/O转向生成结果文件。如: myproc.exe result.txt 在Linux的环境下可直接运行: ./myproc resul(五) 测试要求程序调试基本通过后,应进行较为全面的测试,建议采用白盒法的路径测试方法,测试路径应包含分配算法的“首次”或“循环首次”、,释放算法的与邻近空闲分区联系的四种情况,还要包含一些必要的出错处理路径。 可在测试通过后,可用I/O转向使屏幕的输出结果转至指定文件。注意,由于此时看不到提示字符串和空闲存储区表的输出内容,欲释放存储地址较难正确输入,可采用以下几种方法: 测试通过后可用I/O转向使屏幕的输出结果转至指定文件。
6、注意,由于此时看不到提示字符串和空闲存储区表的输出内容,欲释放存储地址较难正确输入,可采用以下几种方法:1在不采用输出转向时先完整地运行一遍,并记下所有的命令和参数,再用I/O转向时“摸瞎”似地依次输入各个命令和参数,由于malloc所分配的存储区地址时用户程序的虚地址空间,故同一程序的两次运行的结果应当是一样的。为了使输出结果文件也含有输入的命令串,应在输入命令后,再将命令和参数输出至标准输出设备。2. 如fmalloc和ffree,是采用相对地址的管理方法(malloc所分配的地址+偏移地址),那么输入ffree的释放地址就容易得多。3输入也可采用I/O转向,将预先设计好的所有输入次序(部
7、分数据可在不采用I/O转向运行时输入)写入输入文件,再用: myprog.exe result.txt的形式执行。4对于文件的I/O较熟悉的学生可采用每次在屏幕输出后重复向文件输出的方法,这样上述的问题就很容易解决了。(六) 实验数据和结果 学生最后应当将实验报告、程序、输出结果文件和输入命令文件(如果有的话)合并成一个文件,如progres.txt。 如在cmd命令行窗口的合并方法是:copy myprog.c+input.txt+result.txt progres.txt 在Linux中的合并方法是:cat myprog.c input result progres.txt(七)实验报告
8、要求实验报告包含以下几个方面: 1题目。 2算法思想和概要设计和重要模块的详细设计及功能和接口说明。 3重要数据结构和变量的说明。 4源程序、注释和结果。 5测试方法,对测试结果的分析,错误的分析。 6. 程序及测试的改进、本次上机经验及体会。以上可以简化。 7. 将以上内容和前面程序、输出/输入的文件再合并成一个实验报告word文件。实验报告中一定还要有一到两幅含有自己姓名(可以是汉语拼音)的运行情况和结果的截图。8. 将实验报告(1个文件,不要压缩)发到作业系统中。9. 如实验在机房中完成,经老师检查后,实验报告可简化。参考答案在操作系统习题与应用解析中的13章(p67)有该题的参考答案,可以参考、简化,但不要照抄。实验环境可以是任何的C或C+虚拟机,但要求编C程序,不要编C+程序。鼓励编一个数组实现的循环首次适应法的实验程序,这只要在首次适应法的基础上略加修改。在机房Win7/Win10允许telnet客户端登录Linux服务器控制面板-程序-程序和功能(打开(启用)或关闭windows功能)-勾选:Telnet客户端-点击确定服务器地址:10.12.111.24210.12.111.243用户名 student
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2020甲状腺结节超声恶性危险分层中国指南:C-TIRADS
- 2026医院心源性休克患者急救流程
- 品管圈护理领导力培养
- 失禁性皮炎的护理
- 初中八年级化学根据信息书写化学方程式专题知识清单(鲁教版五四制)
- 《宏观经济运行质量评估:理论与第五次全国经济普查实践》教学设计(大学本科经济学专业三年级)
- 品管圈护理统计方法与应用
- 初中八年级道德与法治(上册)网络改变世界精讲知识清单
- 外科病人疼痛管理
- 初中八年级历史教学设计:改革开放以来社会生活变迁的观察与思辨
- 食品原料验收知识培训课件
- 施工现场质量培训课件
- 2025年河北中考地理真题含答案
- 2025年《养老机构智慧运营与管理》课程标准(含课程思政元素)
- 第三单元第2课《风铃 》教案 粤教版劳动技术二年级下册
- 部编版2024年三年级语文下册《课内阅读》专项复习题及答案
- 20G520-1-2钢吊车梁(6m-9m)2020年合订本
- 新能源技术对环境保护的影响及作用
- GB/T 43800-2024船舶电气与电子装置电磁兼容性非金属船舶
- DB6505-T 121-2021 舍饲肉牛饲养管理技术规程
- 镇静催眠药的应用
评论
0/150
提交评论