CSMA/CA之INIT入口

来源:互联网 发布:模拟炒股哪个软件好 编辑:程序博客网 时间:2024/05/17 00:05

这里比较奇怪的一个地方在于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

0 0
原创粉丝点击