02 OPNET的仿真原理.ppt

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

附注: 调试(单步) 单步进入函数 单步执行函数 附注: 调试(添加监视) 1)概要 信源发送消息:周期性 链路传输消息:有时延 信宿接收消息:输出消息内容 信源 信宿 PPP链路 2)简单PPP链路模型 状态机 当接收来自输入端的消息时,缓存消息并等待时延 当等待时延结束时,将消息取出并发送到输出端 2)简单PPP链路模型 状态变量 当前状态 对象名称 时延 链路输入端和输出端的对象(的名称) 消息队列及队列项内存池 3)信源 状态机 当发送时钟触发后,向链路发送报文。 3)信源 状态变量 当前状态 对象名称 所连接链路的名称 传输时延 最大报文发送数量 当前已发送报文的数量 4)信宿 状态机 当接收到来自链路的报文时,打印报文内容,并销毁报文。 4)信宿 状态变量 当前状态 对象名称 所连接链路的名称 5)仿真场景 主要步骤 创建链路对象“ppp link 0”,并设置相应的对象属性。 创建信源对象“source 0”,并设置相应的对象属性。 创建信宿对象“sink 0”,并设置相应的对象属性。 运行仿真。 总体架构(UML图示) 通用数据结构 专用数据结构 用户对象模型 课后作业 认真阅读、分析简易仿真器架构与源代码: 理解总体设计思路 理解内存池的设计与实现 理解链表的设计与实现 理解哈希表的设计与实现 理解仿真内核的设计与实现 理解用户对象模型中状态机的设计与实现 理解仿真场景的设计与实现 课后作业 在一周时间内,将简易仿真器的源代码抄写(或者重新实现)2~3遍,仔细体会其中的代码及注释,了解动态链接库(.dll)与可执行文件(.exe)的编写方法,并在Visual Studio 2010中进行运行和调试。 对简易仿真器中存在的不足、不方便、设计不周之处,提出你自己的感想与建议,并在下一堂课上课前提交作业(纸制)。 附注: 创建一个空白的解决方案 附注: 创建一个空白的解决方案(续) 附注: 添加一个动态链接库程序 附注: 添加一个动态链接库程序(续) 附注: 添加一个动态链接库程序(续) 附注: 添加头文件 附注: 添加头文件(续) 附注: 添加源文件 附注: 编译、链接 附注: 添加一个可执行控制台程序 附注: 添加一个可执行控制台程序(续) 附注: 添加一个可执行控制台程序(续) 附注: 设置为活动工程 附注: 设置工程依赖顺序 附注: 设置工程依赖顺序(续) 附注: 调试(添加断点) 附注: 调试(运行调试) 附注: 调试(运行调试) 2、主要的数据结构 通用数据结构 专用数据结构 1)通用数据结构 内存池 双向链表 字符串哈希表 A、内存池 在程序的设计过程中,通常需要使用大量的小对象(大小在1~128字节)。 利用系统的动态内存分配,往往会消耗大量的时间查找合适的空闲内存区。 内存池(memory pool)就是专门针对小对象的高速内存分配机制。 A、内存池 内存池通过预先申请所需要的内存,等待需要使用的时候直接使用,能够大大减少内存动态申请次数,降低内存检索开销。 内存池可有效降低动态申请内存的次数,减少与内核态的交互,提升系统性能,减少内存碎片,增加内存空间使用率,避免内存泄漏的可能性,这么多的优点,没有理由不在系统中使用该技术。 A、内存池 借鉴Modern C++ Design的设计方法。 内存区(memory chunk):内存区是一段连续的内存区域。设每个内存块(memory block,即小对象)需要N字节,一个内存区能够为C个小对象分配内存,即占用CN字节。 N个字节 N个字节 N个字节 … N个字节 内存区(占CN个字节) 内存块(占N个字节) A、内存池 内联链表:将每个内存块编号为0、1、……、C-1,每个内存块的第1个字节表示下一个空闲内存块的编号。由于只占1个字节,C不大于256。 … 内存区(占CN个字节) 1 2 C-1 0 内存块0 内存块1 内存块C-2 内存块C-1 A、内存池 内存区对象 第一个空闲内存块的编号,初始为0。 当前空闲的内存块数量,初始为C。 内存区的指针,所指内存区占CN个字节。 A、内存池 内存池对象 内存块的大小,即N。 内存区中内存块的数量,即C。 内存区对象的数量。 内存区对象数组的指针。 内存区对象 内存区对象 内存区对象 … 内存区对象 内存区对象数组 DesT_Memory_Chunk A、内存池 … A、内存池 … 1 2 3 4 0 第0号内存块 第1号内存块 第2号内存块 第3号内存块 第C-1号内存块 A、内存池 内存块的分配 A、内存池 … j 首个空闲内存块编号为i。 第j号内存块 首个空闲内存块编号修改为j。 第i号内存块 返回第i号内存块。 A、内存池 内存块的释放 目前没有考虑内存区对象数组的缩编问题, 即内存区

文档评论(0)

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

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

1亿VIP精品文档

相关文档