惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
Recent Announcements
Recent Announcements
GbyAI
GbyAI
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Microsoft Azure Blog
Microsoft Azure Blog
N
Netflix TechBlog - Medium
人人都是产品经理
人人都是产品经理
MongoDB | Blog
MongoDB | Blog
D
DataBreaches.Net
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
WordPress大学
WordPress大学
U
Unit 42
腾讯CDC
D
Docker
The GitHub Blog
The GitHub Blog
阮一峰的网络日志
阮一峰的网络日志
Vercel News
Vercel News
I
InfoQ
Jina AI
Jina AI
爱范儿
爱范儿
宝玉的分享
宝玉的分享
博客园 - Franky
G
Google Developers Blog
P
Proofpoint News Feed

博客园 - yijiangchunxue

测试网站和电子书下载网址 一位软件工程师的6年总结(转) 【转】VC调试篇 【转】C++时间函数 在VC++中生成伪随机数祥解 c++产生随机数 2008年全球人均GDP排行 精选最新优秀源码下载网站排行 堆内存和栈内存区别 assert() 函数用法 C/C++笔试题(1) 华为笔试网络题 华为笔试题及解答 华为C/C++笔试题(5) 华为C/C++笔试题(4) 华为C/C++笔试题(3) 华为C/C++笔试题(2) 华为C/C++笔试题(1) malloc/free 和 new /delete 的区别
glomosim仿真的运行过程
yijiangchunxue · 2009-03-05 · via 博客园 - yijiangchunxue

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()后的代码继续执行。