【OPNET学习系列文章之1】进程模型解析

来源:互联网 发布:淘宝物流模板怎么设置 编辑:程序博客网 时间:2024/06/06 05:36

作为三层建模机制的最底层,进程模型是实施各种算法的载体,是建模仿真过程中最终要的部分也是最难实现的部分。进程模型主要用来刻画节点模型里的处理机和队列模型的行为。

OPNET把进程模型中的有限状态机的状态转移图、标准的C/C++语言以及OPNET提供的核心函数统一在一起,成为PROTO-C语言。

对于事件驱动的仿真来说,OPNET的进程模型是产生事件并处理事件的主题。仿真的控制权不断地在进程和仿真核心之间进行转换,当事件到达后,仿真核心确定事件交给哪一个进程进行处理,仿真控制权随后就交给该进程,进程进入活动状态,根据事件进行相应的处理后,将控制权交给仿真核心,进程进入阻塞状态。

进程主要由状态和转移线构成。

随着仿真的进行,进程在状态之间不断转移,状态分为两类,强迫状态和非强迫状态。强迫状态是不允许停留的状态,当进程进入强迫状态后,仿真核心将强迫进程立刻转移到下一状态,当进程进入非强迫状态后,将停留在此状态,等待事件、其他进程或仿真核心的触发。在每个进程模型中至少有一个初始状态,是进程被访问的第一个状态,既可以是强迫状态,又可以是非强迫状态。非强迫状态被认为是系统的真正状态因为当系统进入非强迫状态的进入代码后,进程就处于阻塞状态,等待新的触发。而强迫状态是为了实际编程和状态控制的需要而提出的一种状态,进程不会停留在该状态。

每个状态都有都有相应的动作与其对应,在Proco-C中这些动作被称为执行代码。状态的执行代码分为两部分,上面部分称为进入代码,下面部分称为离开代码。

转移则描述了进程模型从一个状态向另一个状态转移的过程和条件,包含四个部分,源状态,目的状态,转移条件,转移执行代码。其含义为在源状态时,进程只要完成源状态的离开代码,就立即对转移条件进行判断,当转移条件成立,则执行转移代码,之后转移到目标状态。转移分为条件转移和非条件转移,分别用实线和虚线表示。



1 0