- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
电子钟简单设计
湘南学院
课程设计报告
课程名称:嵌入式系统原理
实验题目:嵌入式操作系统的内存管理模拟
二○○七年十二月二十四日
目 录
1、系统概论 1
1.1内存管理技术理论 1
1.1.1为什么必须管理内存 1
1.1.2 C风格的内存分配程序 1
1.2嵌入式系统对内存管理的要求 2
1.3嵌入式系统的内存管理特点 2
1.4内存管理策略概述 3
1.5内存管理模块策略及实现考量 3
1.5.1简单内存模型 3
1.5.2静态方式 4
1.5.3动态方式 4
2、需求分析 6
2.1需求背景 6
2.2功能需求 6
3、系统设计 8
3.1、程序的开发、运行平台 8
3.2、系统处理流程 8
3.3、各功能模块分析实现 8
4、系统实现 12
4.1、总体界面与程序流程分析 12
4.2、流程图 16
5、使用说明 18
5.1.源程序的编译 18
5.2 程序的运行 18
6、课程设计总结 20
参考文献 21
附录:重要代码 21
1、系统概论
1.1内存管理技术理论
1.1.1为什么必须管理内存
内存管理是计算机编程最为基本的领域之一。在很多脚本语言中,您不必担心内存是如何管理的,这并不能使得内存管理的重要性有一点点降低。对实际编程来说,理解您的内存管理器的能力与局限性至关重要。在大部分系统语言中,比如C和C十十,您必须进行内存管理。追溯到在Apple 11上进行汇编语言编程的时代,那时内存管理还不是个大问题。您实际上在运行整个系统。系统有多少内存,您就有多少内存。您甚至不必费心思去弄明白它有多少内存,因为每一台机器的内存数量都相同。所以,如果内存需要非常固定,那么您只需要选择一个内存范围并使用它即可。不过,即使是在这样一个简单的计算机中,您也会有问题,其是当您不知道程序的每个部分将需要多少内存时。如果您的空间有限,而内存需求是变化的,那么您需要一些方法来满足这些需求:确定您是否有足够的内存来处理数据。从可用的内存中获取一部分内存。向可用内存池(pool)中返回部分内存,以使其可以由程序的其他部分或者其他程序使用。
实现这些需求的程序库称为分配程序(allocators), 因为它们负责分配和回收内存。程序的动态性越强,内存管理就越重要,您的内存分配程序的选择也就更重要。
1.1.2 C风格的内存分配程序
在大部分操作系统中,内存分配由以下两个简单的函数来处理:
Void *malloc(long numbytes):该函数负责分配numbytes大小的内存,并返回指向第一个字节的指针。
Void fre(void* firstbyte):如果给定一个由先前的malloc返回的指针,那么该函数会将分配的空间归还给进程的“空闲空间”
Malloc_init将是初始化内存分配程序的函数。它要完成以下三件事:将分配程序标识为己经初始化,找到系统中最后一个有效内存地址,然后建立起指向我们管理的内存的指针。
malloc()的实现有很多,这些实现各有优点与缺点。在设计一个分配程序时,要面临许多需要折衷的选择,其中包括:分配的速度;回收的速度;有线程的环境的行为;内存将要被用光时的行为:局部缓存;簿记(Bookkeeping)内存开销;虚拟内存环境中的行为;小的或者大的对象;实时保证。
基于malloc()的内存管理的缺点:不只是我 们的内存管理器有缺点,基于malloc()的内存管理器仍然也有很多缺点,不管您使用的是哪个分配程序。对于那些需要保持长期存储的程序使用malloc()来管理内存可能会非常令人失望。如果您有大量的不固定的内存引用,经常难以知道它们何时被释放。生存期局限于当前函数的内存非常容易管理,但是对于生存期超出该范围的内存来说,管理内存则困难得多。
1.2嵌入式系统对内存管理的要求
1. 快速性:
嵌入式系统中对实时性的保证,要求内存分配要尽可能地快。因此在嵌入式系统中,不可能采用通用操作系统中地复杂而完善地内存策略,一般都采取简单、快速地内存管理策略。
2. 可 靠 性:
嵌入式系统应用环境千变万化,其中有一些是对可靠性要求极高地。比如,汽车地自动驾驶系统中,系统检测到即将撞车,如果因为内存分配失败而不能执行相应的操作,就会发生车毁人亡的惨剧,这是不能容忍的。
3. 高 效 性:
内存分配要尽可能减少浪费。不可能为了保证满足所有的内存分配请求而将内存配置的无限大。一方面,嵌入式系统对成本的要求使得内存在其中只是一种有限得资源;另一方面,即使不考虑成本得因素,系统有限得空间决定了可配置得内存容量是很有限的。
1.3嵌入式系统的内存管理特点
许多软件使用虚拟内存,程序过大,可以交换到虚拟存储器上。然而在嵌入式系统中特别要求实时性很强的系统来说,这个功能的确不那么重要,因为这个机制会
原创力文档


文档评论(0)