题目一:动态分区分配方式的模拟题目二:ping命令模拟实现_第1页
题目一:动态分区分配方式的模拟题目二:ping命令模拟实现_第2页
题目一:动态分区分配方式的模拟题目二:ping命令模拟实现_第3页
题目一:动态分区分配方式的模拟题目二:ping命令模拟实现_第4页
题目一:动态分区分配方式的模拟题目二:ping命令模拟实现_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网络操作系统课程设计报告书题目题目一动态分区分配方式的模拟题目二PING命令模拟实现学号学生姓名指导教师2009年12月19日目录题目一动态分区分配方式的模拟111题目要求112设计思想113设计思想1131最佳适应算法数据结构1132首次适应算法数据结构114各模块的算法流程图215程序清单2151参考程序3152使用帮助11153运行结果1116总结体会13题目二PING命令模拟实现1421题目要求1422设计思想1423程序项目14231参考程序14232运行结果1724使用方法介绍1725体会及建议19教师评语20一动态分区分配方式的模拟11题目要求用C语言或C语言分别实现采用首次适应算法和最佳适应算法的动态分区分配过程ALLOC和回收过程FREE。其中,空闲分区通过空闲分区链表来管理,在进行内存分配时,系统优先使用空闲区低端的空间。12设计思想在动态内存分配机制中一般采用两种设计方案最佳适应算法和首次适应算法。最佳适应算法要求所有的空闲内存块按照内存块的大小,由小到大链接在一起,自表头开始查找到第一个满足要求的自由分区分配。首次适应算法中所有的空闲内存块都是按地址由小到大链接的,自表头开始查找到第一个满足要求的分区。13数据结构131最佳适应算法数据结构TYPEDEFSTRUCTMEM/定义作业成员结构体INTSTARTINTENDSTRUCTMEMNEXTMEMTYPEDEFSTRUCTWORK/定义作业结构体INTID/作业号INTSIZE/MEMSIZE/作业长度INTSTART/作业起始地址STRUCTWORKNEXTWORKSTRUCTALLOCQUERY/定义请求序列结构体/INTNUMINTSTATE/A表示申请,F表示释放/INTLENGTHSTRUCTALLOCQUERYALLOCQ11132首次适应算法数据结构STRUCTFREEQUERY/定义内存分配队列/INTFLAG/IDNO0表示空闲,其他数值表示相应作业/INTFIRSTADD/起始地址/INTLENGTH/占有长度/STRUCTFREEQUERYFREEQ1114各模块的算法流程图首次适应算法和最佳适应算法流程是相同的,都是按编号顺序分配内存块,只是他们各自的内存块的编号顺序排列规则不一样前者按大小排序,后者按位置排序,算法流程图如下15程序清单151参考程序(一)源文件1、最佳适应算法/SAMPLECODEFORDYNAMICDISTRIBUTEMEMORYBYCHAOCOMPILEVC60/INCLUDE“STDIOH“INCLUDE“STDLIBH“INTI1/IDTYPEDEFSTRUCTMEM/定义作业成员结构体INTSTARTINTENDSTRUCTMEMNEXTMEMTYPEDEFSTRUCTWORK/定义作业结构体INTID/作业号INTSIZE/MEMSIZE/作业长度INTSTART/作业起始地址STRUCTWORKNEXTWORKWORKINITWORKINTSIZE/初始化WORKHEADWORKMALLOCSIZEOFHEAD/为作业分配地址HEADIDIHEADSTART1HEADSIZESIZEHEADNEXTNULLRETURNHEADWORKINSERTWORKWORKHEAD,INTSTART,INTSIZE/插入新作业IWORKPI,PB/PIISTHEINSERTONEPBISTHEPOINTPIWORKMALLOCSIZEOFWORKPIIDIPISTARTSTARTPISIZESIZEPINEXTNULLIFHEADNULLHEADPIHEADNEXTNULLPBHEADWHILEPBNEXTNULLPBPBNEXTPBNEXTPIRETURNHEADMEMINITMEMINTSIZE/作业成员初始化MEMHEADMEMMALLOCSIZEOFMEMHEADSTART1HEADEND640HEADNEXTNULLRETURNHEADMEMINSERTMEMMEMHEAD,INTSTART,INTSIZE/插入作业成员MEMPI,PB,PFINTPBSIZEPBHEADPBSIZEPBENDPBSTART1PIMEMMALLOCSIZEOFMEMPISTARTSTARTPIENDSIZESTART1IFPBNULLHEADPIPINEXTNULLELSEWHILEPISTARTPBSTARTPBPBNEXTIFPISTARTSTARTIFPBHEADHEADPI/头节点PINEXTPBELSEPFNEXTPI/其他位置PINEXTPBELSEPBNEXTPIPINEXTNULL/在表末插入/合并相邻的内存PFPBHEADWHILEPBNEXTNULLIFPFEND2PBSTARTPFENDPBENDPFNEXTPBNEXTPFPBPBPBNEXTRETURNHEADINTGETSTARTWORKHEAD,INTSIZEWORKPBPBHEADWHILEPBNULLIFPBSIZESIZERETURNPBSTARTPBPBNEXTRETURN0INTALLOCMEMHEAD,INTSIZEMEMPBPBHEADINTAWHILEPBNULLIFSIZEENDPBSTART1APBSTARTPBSTARTPBSTARTSIZERETURNAPBPBNEXTRETURN0WORKFREE1WORKHEAD,INTSIZEWORKPB,PFWHILEHEADNULLPRINTF“NOTHISNOD“GOTOENDPBHEADWHILEPBSIZESIZEPBPBNEXTIFPBSIZESIZEIFPBHEADHEADPBNEXTELSEPFNEXTPBNEXTENDRETURNHEADVOIDPRINTWWORKHEADWORKPBPBHEADWHILEPBNULLPRINTF“IDSTARTSIZEN“PRINTF“D7D8DN“,PBID,PBSTART,PBSIZEPBPBNEXTVOIDPRINTMMEMHEADMEMPBPBHEADWHILEPBNULLPRINTF“STARTENDN“PRINTF“D9DN“,PBSTART,PBENDPBPBNEXTVOIDMAININTWREC/接收返回的地址INTMRECMEMMHEADMHEADINITMEM640WORKWHEAD/1WHEADINITWORK130WRECALLOCMHEAD,130/2WRECALLOCMHEAD,60WHEADINSERTWORKWHEAD,WREC,60/3WRECALLOCMHEAD,100WHEADINSERTWORKWHEAD,WREC,100/4MRECGETSTARTWHEAD,60WHEADFREE1WHEAD,60MHEADINSERTMEMMHEAD,MREC,60/5WRECALLOCMHEAD,200WHEADINSERTWORKWHEAD,WREC,200/6MRECGETSTARTWHEAD,100WHEADFREE1WHEAD,100MHEADINSERTMEMMHEAD,MREC,100/7MRECGETSTARTWHEAD,130WHEADFREE1WHEAD,130MHEADINSERTMEMMHEAD,MREC,130/8WRECALLOCMHEAD,140WHEADINSERTWORKWHEAD,WREC,140/9WRECALLOCMHEAD,60WHEADINSERTWORKWHEAD,WREC,60/10WRECALLOCMHEAD,50WHEADINSERTWORKWHEAD,WREC,50/11MRECGETSTARTWHEAD,60WHEADFREE1WHEAD,60MHEADINSERTMEMMHEAD,MREC,60PRINTF“作业的链表N“PRINTWWHEADPRINTF“N“PRINTF“空闲分区链表N“PRINTMMHEAD2、首次适应算法INCLUDE“STDIOH“STRUCTALLOCQUERY/定义请求序列结构体/INTNUMINTSTATE/A表示申请,F表示释放/INTLENGTHSTRUCTALLOCQUERYALLOCQ11STRUCTFREEQUERY/定义内存分配队列/INTFLAG/IDNO0表示空闲,其他数值表示相应作业/INTFIRSTADD/起始地址/INTLENGTH/占有长度/STRUCTFREEQUERYFREEQ11/首次适应算法函数/VOIDFIRST_ALGSTRUCTALLOCQUERYALLOCQNOW,INTPTOTAL,STRUCTFREEQUERYPFREEQMAININTI,JFILEFPCHARFNAME“CATXT“INTFREETOTAL1FPFOPENFNAME,“W“ALLOCQ0NUM1ALLOCQ0STATEAALLOCQ0LENGTH130ALLOCQ1NUM2ALLOCQ1STATEAALLOCQ1LENGTH60ALLOCQ2NUM3ALLOCQ2STATEAALLOCQ2LENGTH100ALLOCQ3NUM2ALLOCQ3STATEFALLOCQ3LENGTH60ALLOCQ4NUM4ALLOCQ4STATEAALLOCQ4LENGTH200ALLOCQ5NUM3ALLOCQ5STATEFALLOCQ5LENGTH100ALLOCQ6NUM1ALLOCQ6STATEFALLOCQ6LENGTH130ALLOCQ7NUM5ALLOCQ7STATEAALLOCQ7LENGTH140ALLOCQ8NUM6ALLOCQ8STATEAALLOCQ8LENGTH60ALLOCQ9NUM7ALLOCQ9STATEAALLOCQ9LENGTH50ALLOCQ10NUM6ALLOCQ10STATEFALLOCQ10LENGTH60FREEQ0FLAG0FREEQ0FIRSTADD0FREEQ0LENGTH640FORI0IALLOCQNOWLENGTHTEMP_NUMPFREEQIFLAGTEMP_ADDPFREEQIFIRSTADDALLOCQNOWLENGTHTEMP_LENGTHPFREEQILENGTHALLOCQNOWLENGTHPFREEQIFLAGALLOCQNOWNUMPFREEQILENGTHALLOCQNOWLENGTHIFPFREEQI1LENGTH0PFREEQI1FLAGTEMP_NUMPFREEQI1FIRSTADDTEMP_ADDPFREEQI1LENGTHTEMP_LENGTHELSEIFPFREEQI1FIRSTADDTEMP_ADDTEMP_F1FLAGTEMP_NUMTEMP_F1FIRSTADDTEMP_ADDTEMP_F1LENGTHTEMP_LENGTHTEMP_F2PFREEQI1FORJI1PFREEQJLENGTH0JPFREEQJTEMP_F1TEMP_F1TEMP_F2TEMP_F2PFREEQJ1PFREEQJTEMP_F1BREAKELSE/释放空间/FORI0I0PFREEQI1LENGTHPFREEQI1LENGTHALLOCQNOWLENGTHPFREEQI1LENGTHFORJIPFREEQJLENGTH0JPFREEQJFLAGPFREEQJ2FLAGPFREEQJFIRSTADDPFREEQJFIRSTADDPFREEQJLENGTHPFREEQJLENGTHELSEIFPFREEQI1FLAG0FORJIPFREEQJLENGTH0JPFREEQJFLAGPFREEQJ1FLAGPFREEQJFIRSTADDPFREEQJ1FIRSTADDPFREEQJLENGTHPFREEQJ1LENGTHELSEIFPFREEQI1FLAG0PFREEQIFLAG0PFREEQILENGTHALLOCQNOWLENGTHPFREEQI1LENGTHFORJI1PFREEQJLENGTH0JPFREEQJFLAGPFREEQJ1FLAGPFREEQJFIRSTADDPFREEQJ1FIRSTADDPFREEQJLENGTHPFREEQJ1LENGTHELSEPFREEQIFLAG0NUM0/统计空闲块/FORI0PFREEQILENGTH0IIFPFREEQIFLAG0NUMPTOTALNUM152使用帮助程序编译运行成功后,对于首次适应算法,可以在CATXT中看到运行结果,对于最佳适应算法直接在DOS中可以看到153运行结果最佳适应算法运行状态和结果如下首次适应算法运行状态运行结果在CATXT中TOTALFREEBLOCKS1IDNOADDRESSLENGTH101300130510TOTALFREEBLOCKS1IDNOADDRESSLENGTH101302130600190450TOTALFREEBLOCKS1IDNOADDRESSLENGTH1013021306031901000290350TOTALFREEBLOCKS2IDNOADDRESSLENGTH1013001306031901000290350TOTALFREEBLOCKS2IDNOADDRESSLENGTH10130013060319010042902000490150TOTALFREEBLOCKS2IDNOADDRESSLENGTH10130013016042902000490150TOTALFREEBLOCKS2IDNOADDRESSLENGTH0029042902000490150TOTALFREEBLOCKS2IDNOADDRESSLENGTH50140014015042902000490150TOTALFREEBLOCKS2IDNOADDRESSLENGTH5014061406002009042902000490150TOTALFREEBLOCKS2IDNOADDRESSLENGTH5014061406072005002504042902000490150TOTALFREEBLOCKS3IDNOADDRESSLENGTH501400140607200500250404290200049015016总结体会此次课程设计,我受益匪浅,主要有下面三个方面首先,我更一步深入地理解了操作系统的知识。通过编写最佳适应算法,我深刻体会了动态分区分配的优点以及它与固定分区分配的差异,更加深了对操作系统中内存的链接原理和分配原理的理解。最后,为了直观地显示运行结果以及要完成文件的打开和保存功能,我用到了VC的MFC编程,实现了可视化界面。通过查阅相关书籍,我对MFC编程有了基础了解,我相信,这对以后的编程是大有裨益的。二PING命令模拟实现21题目要求PING命令使用ICMP协议,其常用格式为PING20219616014,或PINGWWWZZIAEDUCN,根据参考程序编译、连接生成EXE程序,并在命令行提示符下运行程序。22设计思想首先装载ICMPDLL连接库,查找给定机器的IP地址信息,然后通过三个指针函数PICMPCREATEFILE、PICMPCLOSEHANDLE、PICMPSENDECHO从ICMPDLL中得到函数入口地址,打开PING服务

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论