嵌入式三级项目报告.docx
- 文档编号:30390437
- 上传时间:2023-08-14
- 格式:DOCX
- 页数:13
- 大小:820.90KB
嵌入式三级项目报告.docx
《嵌入式三级项目报告.docx》由会员分享,可在线阅读,更多相关《嵌入式三级项目报告.docx(13页珍藏版)》请在冰豆网上搜索。
嵌入式三级项目报告
嵌入式系统内存管理三级项目报告书
姓名
班级
学号
课题分工或贡献率
课程名称
指导教师
2016/5/13
摘要:
本次三级项目的主要内容是内存的可变大小存储区管理,其中包括进程的创建和结束、内存的分配、释放、回收、紧凑操作以及对应部分C语言程序的编写纠错和下载调试,并且重点对内存的三种分配方式(FF/WF/BF)以及内存紧凑操作的实验结果进行记录。
关键字:
内存分配FFBFWF内存紧凑
前言:
,随着嵌入式实时软件系统的规模越来越大,复杂度迅速增加,内存管理也越来越重要,如今相关领域用垃圾搜集器(GC)进行自动内存管理克服了人工内存管理所导致的潜在危险,例如内存泄漏,指针悬挂,内存碎片等。
因此对垃圾搜集器的实时化的研究,将其应用于大规模嵌入式实时系统软件的开发,可以提高嵌入式实时软件开发的效率,对于缩短开发周期,提高系统安全可靠性方面具有重要的意义。
本次三级项目的研究范围就集中在内存管理方面。
本课程三级项目的目的是让学生基于 UP-2410 实验箱完成嵌入式 linux 操作系统内存管理实验程序设计。
通过该项目的实施使学生加深对嵌入式linux 操作系统指令系统,内存管理基本原理等知识的理解,并初步具备运用所学知识进行嵌入式 linux 程序设计的能力,相关标准、手册的查阅能力等,引导学生积极思考、主动学习,锻炼和提高学生的交流、沟通和表达能力以及团队合作能力。
实验预期能够实现创建新的进程并设置内存大小,选择内存分配算法,终止进程,显示内存的使用情况,掌握内存管理程序程序设计,代码编写、编译和移植,程序调试等。
本小组分工如下:
王智宇:
调试程序、FF算法
秦佳佳:
查阅资料、WF算法
闫梦瑶:
调试程序、内存紧凑
赵维娜:
查阅资料、BF算法
韩敬丽:
查阅资料、PPT汇总
一研究项目的相关基本概念
在本次三级项目中,内存管理包括了进程的建立,内存的分配,当一个进程被终止时内存是如何处理被释放,并当内存不满足进程申请时如何使用内存紧凑等这些方面的内容,其中最主要的内容放在了内存分配和内存紧凑操作这个部分。
内存有多种分配方式,包括连续分配和非连续分配,具体分类见图1
图一内存分配方式
这次三级项目中内存分配方法是可变大小存储区管理。
可变大小存储区管理的基本思想是在作业要求装入内存时,若当时内存中有足够的存储空间满足该作业的需求,那就划分出一个与作业相对地址空间同样大小的分区分配给它使用。
实施可变分区存储管理要解决的三个问题
1.采用地址动态重定位技术,使程序能在内存中移动,为空闲区合并提供保证。
2.记住各分区的使用情况,当一个分区被释放时,要能判定它的前、后分区是否为空闲区。
若是空闲区,就进行合并,形成一个大的空闲区
3.给出分区分配算法,在有多个空闲区都满足作业的存储请求时,决定分配哪一个
分区分配方式有三种,分别是首次适应算法(FF)、最佳适应算法(BF)以及最差适应算法(WF)
首次适应算法(First Fit):
从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法目的在于减少查找时间。
为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到高进行排序。
该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高地址空间保留大的空闲区。
最佳适应算法(Best Fit):
它从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小。
为适应此算法,空闲分区表(空闲区链)中的空闲分区要按从小到大进行排序,自表头开始查找到第一个满足要求的自由分区分配。
该算法保留大的空闲区,但造成许多小的空闲区。
最差适应算法(Worst Fit):
它从全部空闲区中找出能满足作业要求的、且大小最大的空闲分区,从而使链表中的结点大小趋于均匀,适用于请求分配的内存大小范围较窄的系统。
为适应此算法,空闲分区表(空闲区链)中的空闲分区要按大小从大到小进行排序,自表头开始查找到第一个满足要求的自由分区分配。
该算法保留小的空闲区,尽量减少小的碎片产生。
当有一个新进程被创建进行内存申请时,如果存在可以满足要求的空闲分区时,将该空闲分区分配。
如果找不到可满足要求的空闲分区但空闲分区之和能满足需求,则采用内存紧凑操作。
所谓紧凑操作就是将内存中的所有进程进行移动,使它们全都相邻接,而把原来分散的多个小空闲分区拼接成一个大分区,以使新建进程可装入进去。
二、研究方法及相关工具
本次三级项目用到的实验设备包括UP-TECHS2410/P270DVP嵌入式实验平台、PC机Pentium500以上,硬盘10G以上、PC机操作系统REDHATLINUX9.0+MINICOM+ARM-LINUX开发环境。
采用rethatlinux9.0操作环境系统,安装ARM-linux的开发库及编译器。
创建一个新目录,在root用户下建立一个新用户。
之和添加一个基本权限为可读可写的Samba服务器,通过Samba服务器,linux系统可以实现文件在linux和win95/NT之间的传输和共享。
设置linux下的防火墙为NOfirewall;向samba服务器中添加一个用户,以实现在Windows下对linux的访问。
在windows下运行命令程序,在其中输入linux的ip地址,登陆samba中创建的用户,即可实现windows与linux之间的文件传输;将编写好的c语言代码复制到主机的user1目录下,并通过虚拟机将该文件改成.c的格式,并将其复制到虚拟机的/arm2410cl/mem目录下;在工作目录下将源代码编译成可执行文件,并在超级终端上下载运行该程序。
三、内存管理程序设计方案
本次三级项目的程序共包括六个功能模块,如图2所示
图二功能模块图
第一个模块set_mem_size(),用来设置内存空间的大小;
第二个模块set_alogrithm()用来选择内存分配的算法,在程序调试过程中发现BF,和WF算法的程序存在错误,将其更正如下:
第三个模块new_process()用来创建一个新进程,其中调用了内存分配函数,内存分配函数的设计思路是:
当存在可以满足要求的空闲分区时,将该空闲分区分配。
找不到可满足要求的空闲分区但空闲分区之和能满足需求,则采用内存紧凑操作。
将新建进程插入到进程链表的表头。
在程序调试过程中发现内存紧凑部分的代码缺失,补充如下:
第四个模块kill——process()用来结束一个进程,它的设计思路是:
根据输入的进程号将相对应的进程结束,释放其内存空间,将释放的内存插入到空闲分区链表的表头。
然后调用FF算法将链表排序以便于相邻空闲分区的合并,之后根据当前选择的算法将内存块进行整理。
在程序调试过程中发现根据进程号查找进程的find-process函数存在错误:
只能查找到位于进程,而不能遍历整个进程链表。
因此作出如下更正:
第五个模块display-mem-usage()用来显示内存的使用情况;
第六个模块do-exit()用来退出程序;
将程序作出以上更正之后,便可以得出理想的实验结果
四、实验结果分析
(1)FF算法
首先申请一个大小为2048的内存空间
建立三个大小分别为256,512,256的进程
结束进程2,可以发现进程二的内存空间被释放,成为一个空闲分区。
空闲分区按地址从低到高进行排序
创建一个占用空间为256字节的进程4,按照ff算法,将低地址部分满足条件的空闲分区分配,也就是将起始地址为256的空闲分区分配给进程四,如下图所示,进程四起始地址为256,剩余大小为256的内存空间作为空闲分区插入到空闲链表,起始地址为512
(2)BF算法
同样申请一个大小为2048的内存空间,然后选择2,(BF算法)
建立四个大小分别为256,、512、400、和600的进程
结束进程1和3,对应的内存空间被释放,成为空闲分区。
空闲分区按大小从小到大进行排序
创建一个占用空间为200字节的进程5,按照bf算法,将满足条件且大小最小的空闲分区分配,也就是将起始地址为0的空闲分区分配给进程5,如下图所示,进程5起始地址为0,剩余大小为56的内存空间作为空闲分区插入到空闲链表,起始地址为200;再创建一个一个占用空间为270字节的进程6,同理将起始地址为1768的大小为280的空闲分区分配给进程6,如下图所示,进程6起始地址为1768,剩余大小为10的内存空间作为空闲分区插入到空闲链表,起始地址为2038
(3)WF算法
同样申请一个大小为2048的内存空间,然后选择3,(wF算法)
建立四个大小分别为256,、512、256、和600的进程
结束进程1和3,对应的内存空间被释放,成为空闲分区。
空闲分区按大小从大到小进行排序
创建一个占用空间为200字节的进程5,按照wf算法,将满足条件且大小最大的空闲分区分配,也就是将起始地址为1624的大小为424的空闲分区分配给进程5,如下图所示,进程5起始地址为1624,剩余大小为224的内存空间作为空闲分区插入到空闲链表,起始地址为1824;给大小为200的进程安排了最大的块,这是最坏的结果。
(4)内存紧凑
在添加的程序段中,通过遍历进程链表的方式,将表头进程的起始地址设为零,其余的进程依次排列,最后将空闲分区链表的起始地址改变,大小变为剩余内存大小之和。
下图中内存的空闲分区有两个,大小分别为10和20
这时,创建一个大小为30的新进程,则采用内存紧凑操作。
首先将位于链表表头的进程五起始地址设为0,进程3和2在之后依次排列。
将分散的两个小的空闲分区合并成一个大小为30的大空闲分区分配给新进程。
结果如下:
五总结
本次三级项目
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 三级 项目 报告