西安邮电大学操作系统内存管理实验报告4700字_第1页
西安邮电大学操作系统内存管理实验报告4700字_第2页
西安邮电大学操作系统内存管理实验报告4700字_第3页
西安邮电大学操作系统内存管理实验报告4700字_第4页
西安邮电大学操作系统内存管理实验报告4700字_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

西安邮电大学操作系统内存管理实验报告4700字

西安邮电大学(计算机学院)课内实验报告实验名称:内存管理专业名称:班级:1101班学生姓名:武妍娜学号(8指导教师:舒新峰实验日期:20xx年12月15日一.实验目的及实验环境(一)、实验环境Ubuntu13.10shell+Vim+GCC编译器(二)、实验目的(1)、掌握内存分配FF,BF,WF策略及实现的思路;(2)、掌握内存回收过程及实现思路;(3)、参考本程序思路,实现内存的申请、释放的管理程序,调试运行,总结程序设计中出现的问题并找出原因。二.实验内容(1)补充完整FF,BF,WF等算法的代码;(2)掌握内存回收过程及实现思路;(3)实现内存的申请和释放。三.方案设计(一)、主要模块的介绍图一(二)、关键算法思想设计与分析首次适应算法(FirstFit):从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法目的在于减少查找时间。为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到高进行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高地址空间保留大的空闲区。最佳适应算法(BestFit):它从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表(空闲区链)中的空闲分区要按从小到大进行排序,自表头开始查找到第一个满足要求的自由分区分配。该算法保留大的空闲区,但造成许多小的空闲区。最差适应算法(WorstFit):它从全部空闲区中找出能满足作业要求的、且大小最大的空闲分区,从而使链表中的结点大小趋于均匀,适用于请求分配的内存大小范围较窄的系统。为适应此算法,空闲分区表(空闲区链)中的空闲分区要按大小从大到小进行排序,自表头开始查找到第一个满足要求的自由分区分配。该算法保留小的空闲区,尽量减少小的碎片产生。四.测试数据及运行结果图二主界面图三设置内存大小图四显示内存使用情况图五选择内存分配算法图六创建新进程图七显示内存使用情况图八撤销进程图九显示内存使用情况图十退出程序五.总结通过本次的内存实验我深刻的体会并了解到内存的管理模型的部分相关知识,尤其是在内存紧缩合并回收部分还遇到了一些问题,最终通过查资料解决了问题,虽然对内存我可能还有还有很多未知的内容,但是这次的内存管理实验过程给我开启了一个良好的开端,使我对此部分也有了个人的学习计划。同时也让我复习了c语言部分的一些知识。六.附录:(补充代码)/*按FF算法重新整理内存空闲块链表*/intrearrange_FF(void){structfree_block_type*pointer,*pointer1,*pointer2;pointer=free_block;pointer1=pointer2=pointer->next;/*使用插入法进行排序*/while(pointer->next!=NULL){while(pointer2!=NULL){if(pointer->next->start_addr<=pointer2->start_addr){pointer1=pointer2;pointer2=pointer2->next;}else{pointer1->next=pointer2->next;pointer2->next=pointer->next;pointer->next=pointer2;break;}}pointer=pointer->next;pointer1=pointer2=pointer->next;}return1;}/*按BF算法重新整理内存空闲块链表*/intrearrange_BF(void){structfree_block_type*pointer,*pointer1,*pointer2;pointer=free_block;pointer1=pointer2=pointer->next;/*使用冒泡法进行排序*/while(pointer->next!=NULL){while(pointer2!=NULL){if(pointer->next->size<=pointer2->size){pointer1=pointer2;pointer2=pointer2->next;}else{pointer1->next=pointer2->next;pointer2->next=pointer->next;pointer->next=pointer2;break;}}pointer=pointer->next;pointer1=pointer2=pointer->next;}return1;}/*按WF算法重新整理内存空闲块链表*/intrearrange_WF(void){structfree_block_type*pointer,*pointer1,*pointer2;pointer=free_block;pointer1=pointer2=pointer->next;/*使用冒泡法进行排序*/while(pointer->next!=NULL){while(pointer2!=NULL){if(pointer->next->size>=pointer2->size){pointer1=pointer2;pointer2=pointer2->next;}else{pointer1->next=pointer2->next;pointer2->next=pointer->next;pointer->next=pointer2;break;}}pointer=pointer->next;pointer1=pointer2=pointer->next;}return1;}/*分配内存模块*/intallocate_mem(structallocated_block*ab){structfree_block_type*fbt,*pre;intrequest_size=ab->size;intmemory_count;fbt=pre=free_block;while((pre!=NULL)&&(request_size>pre->size)){//遍历查找匹配空白区memory_count+=pre->size;fbt=pre;pre=pre->next;}if(!pre){if(memory_count>=request_size){free_memory_rearrage(memory_count-request_size,request_size);/*不可满足,采用紧缩技术*/return0;}else{printf("thememoryallocatedisfailed!\n");return0;}}else{if((pre->size-request_size)>MIN_SLICE){//找到可满足空闲分区且分配后剩余空间足够大,则分割pre->size=pre->size-request_size;ab->start_addr=pre->start_addr+pre->size;}else{fbt->next=pre->next;//找到可满足空闲分区且但分配后剩余空间比较小,则一起分配ab->start_addr=pre->start_addr;ab->size=pre->size;}}rearrange(ma_algorithm);//分配成功,按照相应算法排序return1;}/*紧缩内存*/intfree_memory_rearrage(intmemory_reduce_size,intsize){structfree_block_type*pointer1,*pointer2;structallocated_block*x1,*x2;x1=(structallocated_block*)malloc(sizeof(structallocated_block));pointer1=free_block->next;pointer2=pointer1->next;pointer1->start_addr=0;pointer1->size=memory_reduce_size;pointer1->next=NULL;while(pointer2!=NULL){pointer1=pointer2;pointer2=pointer2->next;free(pointer1);}x2=allocated_block_head;x1->pid=pid;x1->size=size;x1->start_addr=memory_reduce_size;sprintf(x1->process_name,"PROCESS-%02d",pid);x1->next=allocated_block_head;allocated_block_head=x1;x2=x1->next;while(x2!=NULL){x2->start_addr=x1->start_addr+x1->size;x1=x2;x2=x2->next;}return1;}

第二篇:西安邮电大学操作系统考题1100字-----------------纸---用--专---卷--题---试---院线学--电--邮---安--西-------------------订-----------号---序--内---班----------------------装---名---姓------------------------上--级---班--业---专------------------共3页第1页------------------------------------线------------------------------订----------------------------------装-----------------------------封--------------------------------密-------------------------说明:1。拟题请用碳塑墨水钢笔书写。不要出框。除填空题、图解及特殊要求外一般不留答题空间。2.装订试卷,考生答卷时不得拆开或在框外留写标记,否则按零分计-------------------------------纸--用---专--卷--线题试---院---学--电---邮--安---西

温馨提示

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

评论

0/150

提交评论