嵌入式系统三级项目样本文档格式.docx
《嵌入式系统三级项目样本文档格式.docx》由会员分享,可在线阅读,更多相关《嵌入式系统三级项目样本文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
本次课题研究范畴涉及使用嵌入式系统各类产品,在这些产品中嵌入式系统中内存管理就是用其中办法之一。
通过本次实验体会操作系统中内存分派模式;
掌握内存分派办法(FF,BF,WF);
学会进程建立,当一种进程被终结时内存是如何解决被释放块,并当内存不满足进程申请时是如何使用内存紧凑;
掌握内存回收过程及实现办法;
学会进行内存申请释放和管理;
嵌入式系统不同于普通计算机系统,普通用于完毕某种特定功能,规定实时性,可测性等。
内存管理在嵌入式系统中是一种比较重要问题,如果解决不好内存资源管理,那么系统效率将会大大减少,更严重话系统将会无法正常运营。
本次项目重要研究对象是内存管理。
通过本次项目体会操作系统中内存分派模式,掌握内存分派办法和内存回收过程及实现办法,学会进程建立及进行内存申请释放和管理。
1实验简介
1.1实验目
1、通过本次实验体会操作系统中内存分派模式;
2、掌握内存分派办法(FF,BF,WF);
3、学会进程建立,当一种进程被终结时内存是如何解决被释放块,并当内存不满足进程申请时是如何使用内存紧凑;
4、掌握内存回收过程及实现办法;
5、学会进行内存申请释放和管理;
1.2实验开发运营平台
UP-TECHS2410/P270DVP嵌入式实验平台、PC机Pentium500以上,硬盘10G以上。
PC机操作系统REDHATLINUX9.0+MINICOM+ARM-LINUX开发环境。
1.3项目内容
使用RedhatLinux9.0操作系统环境,安装ARM-Linux开发库及编译器。
创立一种新目录,并在其中编写mem.c和Makefile文献。
学习在Linux下编程和编译过程,以及ARM开发板使用和开发环境设立。
下载已经编译好文献到目的开发板上运营。
2实验环节
2.1建立工作目录
[root@BCroot]#cd..
[root@BC/]#cdarm2410cl
[root@BCarm2410cl]#mkdirmem
[root@BCarm2410cl]#cdmem
2.2在root顾客下建立新顾客
[root@BCmem]#useradduser1
[root@BCmem]#passwduser1
Changingpasswordforuseruser1
Newpassword:
//输入自定义密码,例如123456(系统会提示此密码过于简朴,但无影响)
Rtyenewpassword:
//再输入一次密码
2.3配备samba服务器
Samba是用来实现SMB一种软件,由澳大利亚AndewTridgell开发,是一种在Linux(Unix)环境下运营免费软件[21]。
通过使用Samba服务器,Linux系统可以实现文献服务,在Linux和Win95/NT之间实现文献传播和共享;
登陆服务器;
使用Windows客户能注册到网络上;
支持SSL(SecureSocketLayer)等功能,这里重要运用Samba服务器实现Linux与Windows之间文献传播和共享,详细配备过程如下:
一方面,应保证PC与Linux网络畅通,鼠标右键点击“网上邻居”——>
选取“属性”——>
右键点击“本地连接”——>
在弹出“本地连接属性”中双击“Internet合同(TCP/IP)”,将弹出“Internet合同(TCP/IP)属性”,就可以修改本机IP地址了;
如PC机IP地址为:
192.168.1.80,需将LinuxIP设立为与PC机在同一网段,“主菜单”——>
“系统设立”——>
“网络”——>
“网络配备”窗口,双击“设备”标签下“eth0”,浮现“以太网设备”窗口,如图1-1所示。
发现LinuxIP设立与PC机IP设立在同一网段,无需修改,直接选取“取消”即可。
图1-1Linux下IP地址设立
Linux与Windows下IP都设立完毕后,可在PC下命令提示符(点击开始菜单,选取“运营”,输入cmd)中用命令PING192.168.1.234测试PC与Linux网络与否连通。
如设立成功,如下图1-2所示:
图1-2Linux与Windows网络连接测试
另一方面,设立Samba服务器共享目录。
在Redhat系统中依次选取开始->
系统设立->
服务器设立->
Samba服务器,在弹出Samba服务器配备界面中添加一种Samba服务器共享目录,详细设立如图1-3所示:
图1-3Samba服务器共享目录设立
再次,要设立Linux下防火墙,打开一种命令终端输入命令:
setup
在浮现配备选项中选取Firewall,将其设立为Nofirewall,成果如图1-4:
图1-4Linux防火墙设立
向Samba服务器中添加顾客,以实当前Windows下对Linux访问。
在命令终端下输入:
[root@BCmem]#smbpasswd-auser1
NewSMBpassword:
//输入自定义密码
RetypenewSMBpassword:
再次输入密码
Addeduseruser1
最后,在Windows下运营命令程序,在其中输入LinuxIP地址,如图1-5所示:
图1-5在Windows下写入LinuxIP地址
图1-6连接到对话框
在弹出对话框中输入Samba服务器顾客名和密码,即可实现Windows与Linux之间文献传播功能。
可将文献复制到文献夹user1下,在linux系统下,顾客主目录user1位于/home目录下,每个linux顾客有一种以顾客名命名子目录。
在该目录下可找到从windows系统内复制来文献。
图1-7文献传播界面
2.4编译应用程序
编译应用程序上述环节完毕后,在工作目录下可直接将mem.c编译为可执行文献。
环节如下:
编译命令为:
armv4l-unknown-linux-gcc□□□□-c□–o□mem.o□mem.c
armv4l-unknown-linux-gcc□□-o□../bin/memmem.o
armv4l-unknown-linux-gcc□□-o□mem□mem.o
其中,armv4l最后一位是字母l,不是数字1。
2.5下载调试
在[/mnt/yaffs]后输入“ifconfig”命令查看系统IP地址,超级终端系统默认IP地址为192.168.0.121,为满足通信规定,需要将IP地址修改为192.1.168.123。
暂时修改IP地址基本命令为“ifconfigeth0192.168.1.123”,在宿主PC计算机上启动NFS服务,并设立好共享目录。
在建立好NFS共享目录后来,咱们就可以进入MINICOM中建立开发板与宿主PC机之间通讯了。
在超级终端下输入如下命令,成果如图1-8所示。
[/mnt/yaffs]mount-tnfs-onolock192.168.1.234:
/arm2410cl/host
图1-8成功建立nfs共享目录
再进入/host目录运营刚刚编译好mem程序,查看运营成果。
[/mnt/yaffs]cd/host
[/host]cdmem
[/host/mem]./mem
2.6实验运营成果
提示输入后来,输入1,显示如下:
紧接着输入:
3,设立内存空间为256,显示如下:
重复一次上一次操作。
再输入:
5,显示如下:
再输入:
4后,杀死2号进程,显示如下:
3数据流程图
3.1创立新进程
3.1.1原理
创立新进程重要是获取内存申请数量,一方面咱们先创立一种内存结点,将新进程进程号和进程名、对内存排序办法、索要申请内存大小进行写入,然后调用内存分派模块对内存进行分派。
分派有三种状况:
1分派成功但是内从链表为空,则将分派该内存块作为首结点;
2分派成功但是内存链表不为空,则将该内存块插入到内存链表表头;
3分派失败。
创立新进程特点就是能动态为系统增长进程完毕预想实现功能,这样显示了动态内存分派优越性。
如果一味静态分派则也许挥霍一某些资源,这样对嵌入式系统会导致一定打击,新系统解决事务效率也许就会减少,实时性和可靠性都也许得不到保障。
3.1.2流程图
图3-1创立新进程流程图
3.2分派内存
3.2.1原理
内存分派是为新进程分派进程所需要内存单元,普通进程有需要内存大小,按照一定内存分派规则,如果所给空闲块空闲空间不不大于所需内存块内存空间,则进行分派,在分派时分三种状况:
如果剩余空间不不大于规定最小空间,则将剩余某些重新作为一种新空闲内存块:
如果剩余某些不大于规定空闲块最小空间并且不不大于0,则将整个块都分派为空存块;
如果查找第一种空闲块大小满足它所需要,则查第二个与否与第一种与否为相连空闲内存单元,如果是则将两个一起分派给祈求者。
3.2.2流程图
图3-2分派内存流程图
3.3设立分派算法
3.3.1原理
对空闲块排序有三种算法,咱们可以依照设立分派算法,来进行对三种算法:
FF,BF,EF选取。
咱们要输入所需分派算法,通过Algoribhm来进行三种算法输出。
若输出FF算法,之后判断空闲块与否为空,若为空,按地址递增顺序排列空闲块;
若输出BF算法,之后判断空闲块与否为空,若为空,按地址递增顺序排列空闲块;
若输出EF算法,之后判断空闲块与否为空,若为空,按地址递增顺序排列空闲块。
3.3.2流程图
图3-3设立分派算法流程图
3.4内存回收
3.4.1原理
当分派内存块使用完毕之后需要对其今次那个回收,回收时需要新建一种空闲结点来保存该内存分派块有关信息,以备之后又新进程再次需要时能顺利进行分派。
一方面是将新建结点插入到空闲区链表头部并将空闲区按照地址递增顺序排列。
如果当前空闲区与就免空闲区相连,则进行合并,否则单独连接。
最后对整个空闲链表进行重新排序。
3.4.2流程图
图3-4释放ab进程块流程图
图3-5释放ab数据构造节点
3.5三个分派算法
3.5.1初次适应算法FF
规定空闲分区链以地址递增顺序链接,在分派内存时,从链首开始顺序查找,直到找到一种大小能满足规定空闲分区为止,然后再按照作业大小,从该分区中划出一块内存空间分给祈求者,余下空闲分区仍停留在空闲链中。
该算法优先使用低址某些空闲区,在低址空间导致许多小空闲区,在高地址空间保存大空闲区。
长处:
该算法倾向于优先运用内存中低址某些空闲分区,从而保存了高址某些大空闲区,这为后来到达大作业分派大内存空间创造了条件。
缺陷:
低址某些不断被划分,会留下许多难以运用,很小空闲分区,称为碎片。
而每次查找又都是从低址某些开始,这无疑又会增长查找可用空闲分区时开销。
3.5.2最佳适应算法BF
它从所有空闲区中找出能满足作业规定、且大小最小空闲分区,这种办法能使碎片尽量小。
为适应此算法,空闲分区表(空闲区链)中空闲分区要按从小到大进行排序,自表头开始查找到第一种满足规定自由分区别配。
该算法保存大空闲区,但导致许多小空闲区。
为后来到达大作业分派大内存空间创造了条件。
该算法总是把既能满足规定,又是最小空闲分区别配给作业。
为了加速查找,该算法规定将所有空闲区按其大小排序后,以递增顺序形成一种空白链。
这样每次找到第一种满足规定空闲区,必然是最优。
孤立地看,该算法似乎是最优,但事实上并不一定。
由于每次分派后剩余空间一定是最小,在存储器中将留下许多难以运用小空闲区。
同步每次分派后必要重新排序,这也带来了一定开销。
3.5.3最坏适应算法WF
最差适应算法中,该算法按大小递减顺序形成空闲区链,分派时直接从空闲区链第一种空闲分区中分派(不能满足需要则不分派)。
很显然,如果第一种空闲分区不能满足,那么再没有空闲分区能满足需要。
最坏适应算法与最佳适应算法排序正好相反,它队列指针总是指向最大空闲区,在进行分派时,总是从最大空闲区开始查寻。
长处:
这种分派办法初看起来不太合理,但它也有很强直观吸引力:
在大空闲区中放入程序后,剩余空闲区经常也很大,于是还能装下一种较大新程序。
该算法克服了最佳适应算法留下许多小碎片局限性,但保存大空闲区也许性减小了,并且空闲区回收也和最佳适应算法同样复杂。
3.5.4流程图
图3-6初次适应算法流程图
图3-7最佳适应算法流程图
图3-8最坏适应算法流程图
4心得体会
在本次实验中,我深刻理解了嵌入式内存管理系统工作原理,实时嵌入式内存管理与普通操作系统有很大不同,需要达到迅速性,可靠性,高效性。
通过动手操作,设立开发环境,对嵌入式软件交叉开发环境(交叉开发环境由宿主机和目的机构成,宿主机与目的机之间在物理连接基本上建立起逻辑连接)以及嵌入式软件实现阶段开发过程(生成、调试和固化运营)有了进一步理解。
通过阅读、运营该程序,我学到了可以通过预分派和最佳匹配原则最大限度减少内存碎片和内存泄露,规范了内存使用,并培养出一种使用内存严谨习惯。
参照文献
1张宏海,李成忠,陈祝亚,嵌入式实时系统.安徽工业大学学报:
自然科学版,
2俞建新.嵌入式系统基本教程.机械工业出版社,.1
3罗蕾.嵌入式实时操作系统及应用开发.北京航天航空大学出版社,.1