您的位置:首页 > 运维架构

CSMA/CA之INIT入口

2016-12-15 03:57 162 查看
这里比较奇怪的一个地方在于init竟然是非强制状态

仿真开始的时候,仿真核心维持的事件列表中维持着10个begsim_intrpt(因为有10个节点),且发生时间都为0时刻。

begsim_intrpt被触发,进程从初始的状态的入口开始执行。

如何确定这10个相同时刻的事件的执行顺序?

尽管发生在同一时刻,但是其在事件列表中仍然是有顺序的。

仿真核心按照其在事件列表的顺序一个一个执行。事件执行的过程中仿真时间不推进。

执行到下一个仿真开始中断事件的时候,仿真时间不推进,仍然为0。

每一个init入口处又设置了一个自中断,其触发时间也是0时刻。

可以想象,事件列表中一开始有10个0时刻的仿真开始中断,随着第一个仿真开始中断的执行,事件列表中又多了一个0时刻的自中断。当10个仿真开始中断都执行完毕,事件列表中会出现10个0时刻的自中断。

因为init是非强制状态,执行完入口代码后,控制权又回到了仿真核心。仿真核心执行事件列表的第一个事件,也即0时刻的自中断。控制权又回到init进程。init进程接着执行init的出口代码。

如何确定中断的接收者?

中断的接收者是进程

流中断的接收者通过包流很容易判断

自中断的接收者就是本身

其他进程中断的接收者是其他进程

如何确定进程内部状态的转移?

中断的传递是定向的,由仿真核心传递给目标进程

目标进程内部有很多状态,究竟装移到哪一个具体的状态,仅仅靠中断类型是不够的的。

流中断除了需要知道中断类型是流中断外,还需要知道是从哪一个流索引来的

自中断除了需要知道中断类型是自中断外,还需要知道其中断码是多少

tags:opnet
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  opnet