TRILLIUM分析演示文档.ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TRILLIUM分析演示文档.ppt

TRILLIUM代码分析 大唐移动基站部软二室 齐童亚 2002/11/28 TRILLIUM公司介绍 Trillium公司()是全球最大的通信协议软件供应商(目前已成为Intel的全资子公司),具有十多年的通信协议软件开发经验,其源码协议栈产品覆盖了SS7、ATM、VoIP、Wireless、FR、ISDN、X.25/X.75等几乎所有的通信领域;世界上著名的通信厂商如Motorola、Lucent、Nortel、Alcatel、Ericsson、Nokia、Siemens、Fujitsu、NEC等均是Trillium的用户。 软件总体描述 TRILLIUM代码的文件构成 源代码由*.c文件组成 头文件由*.h和*.x文件组成 *.h包含各种宏定义和宏。 *.x包含各种结构定义 好处:文件功能清楚。 TRILLIUM代码 概述 目录组成 整个trillium系统的源代码由三部分组成。分别对应三个目录: 。common目录 该目录下的文件中定义并实现通用功能(比如链表、和一些其他常用的数据结构和算法), 以及高层协议(如ATM)所需要的数据类型,常量,数据结构和函数调用 ?。product目录 协议栈全部源代码和所需系统桩函数都存放于该目录中。包括各种自定义数据类型和常量,全局变量,数据结构和函数。 ?。sample目录 全部测试源代码存放在该目录下。Trillium在该目录下同时提供了一个sample upper layer、 一个sample lower layer一个sample management layer的桩函数实现。 TRILLIUM任务之间的通信方式 ?。松耦合方式 两个模块通过层原语调用而实现相互间的消息交互。即:完全通过message实现原语调用的传递。在VxWorks上的体现就是任务之间的通讯。 ? 。紧耦合方式 两个模块通过函数调用而实现相互间的消息交互。即:两个模块之间的通信不涉及到与操作系统、以及原语打包和解包。 VxWorks任务之间的通信方式 互斥:速度最快,但容易造成死锁 信号量:任务一次能接收和发送很多消息,速度很快,消息不用拷贝。但使用不是很方便 消息队列:任务一次能接收和发送很多消息,但是消息必须拷贝,浪费系统资源。优点是使用简单 管道(与消息队列不同的是能够等待集合数据):适合在一个任务需要等待多个条件满足的情况。 TRILLIUM系统服务层 定时器管理 内存管理 任务管理 消息队列管理 定时器管理 优点(相对直接使用系统定时器) 避免因为VxWorks系统对Watch Dog数量限制(在其他系统中也有类似的限制,只是数量不同而已),而无法实现协议中需要大量定时器同时工作的情况,比如ALCAP在极限的时候可能需要上千个定时器 这种方法同时能够减轻系统时钟中断服务程序的负担 对协议层软件屏蔽与操作系统相关的东西 内存管理 动态分配(用malloc函数)带来的问题 1:产生内存碎片 2:很容易忘记释放而产生内存漏洞,尤其是在两个模块之间传递数据时 解决办法:采用分页的方式,内存按页来分配、释放 内存按页分配的问题 分页大小的问题(分页太大内存浪费太多,太小效率不够高) 连续分配的问题(有时候要求分配很大的连续空间,而分页显然不可能很大) TRILLIUM的解决办法 分级分页(解决分页大小的问题) 采用“堆”(解决连续分配的问题) 此种内存管理的好处 1.? 系统更加稳定可靠。由于内存在系统启动初始化时,一次性的分配。在系统的运行中,内存的分配和释放不通过操作系统进行。所以避免内存的分配出现问题。 2.? 提高系统对数据的处理效率。 系统的底层直接使用内存块做为发送和接收数据的缓冲区,效率比较高 任务管理 TAPA(Trillium Advanced Portability Architecture) task :所谓的TAPA task就是一个功能函数。而该功能函数是在system task(操作系统任务)中被调用执行的。 每一个TAPA task和System task 相关联,每个TAPA task有自己一些属性。 System task :就是操作系统的任务或者进程 TAPA task任务属性 typedef struct ssTTskEntry { SsdTTskEntry dep; /* implementation specific */ Bool used; /* entry is

文档评论(0)

docindpp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档