glomosim仿真的运行过程

1 glomosim系统启动的入口是.\main\driver.pc文件中的main()函数。main()函数首先调用parsec_main()函数。parsec_main()函数是parsec运行库函数,我们看不到它的源代码。


2 parsec系统的入口是driver实体。parsec系统启动时首先执行driver实体的代码。driver实体首先读取核心配置文件,解

析出仿真场景区域范围、仿真随机数种子、仿真总时间、网络中节点总数等配置信息,随后生成取名为 partitionEntityNameGLOMOPartition类型的实体,然后driver实体根据网络节点初始位置配置参数NODE-PLACEMENT的设置值确 定各节点的初始位置,保存在消息NodePositionMsg中,接着利用send方法把消息NodePositionMsg发送给GLOMOPartition类型 的实体partitionEntityName。此后driver实体将暂停以等待实体partitionEntityName完成初始化后发送过来信息Ready。


3 GLOMOPartition类型的实体partitionEntityName被创建时就立即申请所需内存空间。当接收到driver实体发送过来的消息

NodePositionMsg时,实体partitionEntityName接收到根据消息中的信息更新本区域实体中各节点的初始位置,然后构造全局 普通事件堆heapSplayTree,接着针对各节点各层模块调用其初始化函数以完成仿真初始化工作。初始化完成后实体 partitionEntityName向driver实体发送信息Ready。


4 实体driver 接收到信息Ready 后得知partitionEntityName已经初始化完毕,所以它向partitionEntityName发送信息

StartSim命令它开始仿真。


5 实体partitionEntityName接收到信息StartSim后即进入仿真事件处理循环。该循环将持续下去直到事件队列为空或设定的仿

真时间已到。每次循环过程中,实体partitionEntityName从全局事件队列中取出队首事件,判断该事件由哪个节点处理,根据 该事件的某些属性判断该事件应由哪个层次处理,并把该事件交给目标节点的相应层次的调度模块。该层调度模块进行进一步 调度,将事件交给相应节点的具体功能模块进行处理。


6 退出循环后即进入仿真收尾阶段。该阶段中实体partitionEntityName将依次调用各节点的各层模块的收尾函数以将仿真过程
中搜集的统计数据写入本区域实体的仿真数据临时文件中。仿真收尾阶段中,实体partitionEntityName针对每个节点依次调用radio、mac、网络层、传输层和应用层的收尾调度模块。收尾阶段完成后仿真过程结束,至此函数parsec_main()执行完毕,系统重新回到函数main()的控制下。函数main()中parsec_main()后的代码继续执行。

转载于:https://www.cnblogs.com/Aioria0622/archive/2009/03/05/1404223.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值