新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > 基于VxWorks的全IP开发平台进程通信处理机制

基于VxWorks的全IP开发平台进程通信处理机制

作者:时间:2013-04-23来源:网络收藏

不同处理器间的进程通信流程如图3所示,下面根据不同的对话方式分别描述通信处理流程。

本文引用地址:http://www.eepw.com.cn/article/153524.htm

c.JPG


①点对点通信。每个需要通信的处理器之间维护一条TCP连接,所有连接组成连接表。进程通过接口发送的消息首先挂在相应的连接的发送队列中。通信任务在连接表中的所有连接上监测链路状态,在连接写就绪时依序发送连接发送队列中的消息,在连接读就绪时接收连接上的消息并向上层转发,在连接异常时告警并恢复链路状态,在检查报到达的时候将链路丢失的检查报清零。
②多对多通信。使用一个公用的UDP套接口,发送时指定协议类型为不可靠传输协议的时候,根据逻辑地址查找到对应的IP地址,直接从UDP套接口上发送出去。组播任务同样守护在UDP套接口上,当套接口读就绪的时候接收消息并向上层转发。
③组播。采用静态分组的方法,每一个组播组对应一个到组播地址,所有这种对应关系组成分组表。每一处理器可以加入特定组播组,也可以随时脱离组播组。组播任务守护在组播组表的组播套接口上,在套接口读就绪时接收消息并向上层转发。进程直接在组播套接字上发送消息。
④广播。分组表中有一个特殊项用作广播,该组成员为系统内所有处理器,组播任务在该项上守护,进行和上面相同的处理。
⑤处理器内广播。向同一个进程类型的实例分别发送一条消息的拷贝。
消息的派发过程如图4所示。调度任务从自己的邮箱接收消息,并负责向各个进程的中派发,在派发的过程中区别消息的类型。根据消息类型描述处理流程,派发同步应答消息时,将目标进程转入就绪状态,设置解除阻塞原因为应答到;派发同步超时消息时,将目标进程转入就绪状态,设置解除阻塞原因为同步超时;派发延时结束消息时,将目标进程转入就绪状态,设置解除阻塞原因为延时结束;派发其他类型的消息时,将消息挂到目标进程尾部,如果目标进程因为没有消息而阻塞,将目标进程转入就绪状态。

d.JPG


2.2 TCP连接状态机设计
TCP连接的状态记录在TCP连接控制块的状态域里面,本端上层应用发起TCP连接建立请求时,TCP连接的状态迁移如图5所示。①没有激活状态:接收到来自上层应用的连接发起请求后,向对端发起连接,进入等待写就绪状态。②等待写就绪状态:如果接收到本端套接字的写就绪事件,向对端发送检查报,进入等待对端检查报状态;如果接收到对端连接请求(连接请求1)并且对端IP地址比自己的IP地址小,拒绝请求,继续等待;如果接收到对端连接请求(连接请求2)并且对端IP地址比自己的IP地址大,接收请求,终止本端发起的连接过程,启动连接接收的状态机。③等待检查报状态:收到检查报后,连接成功,进入工作状态;如果接收到对端连接请求(连接请求1)并且对端IP地址比自己的IP地址小,拒绝请求,继续等待;如果接收到对端连接请求(连接请求2)并且对端IP地址比自己的IP地址大,接收请求,终止本端发起的连接过程,启动连接接收的状态机。④工作状态:如果收到数据收发请求,则进行数据收发,并保持状态;如果收到连接的关闭请求,则关闭本连接,转到连接没有激活状态;如果收到对端的连接建立请求,则启动连接的接收状态机,并保持现在的连接在工作状态。

e.JPG


在上述各种状态下收到连接异常的信息都异常关闭连接,转到连接没有激活状态。

f.JPG


本端收到对端发起TCP连接建立请求时,TCP连接的状态迁移如图6所示。①没有激活状态:接收到对端的连接请求后,进入等待检查报状态;②等待检查报状态:如果接收到对端的检查报,进入等待写就绪状态;如果接收到对端连接请求,接收请求,终止上次的连接过程,进入等待检查报状态;③等待写就绪状态:如果收到写就绪事件,向对端发送检查报,连接成功,如果以前存在工作的链路,关闭该链路,本链路投入工作状态;如果接收到对端连接请求,接收请求,终止本次连接过程,切换到等待检查报状态;④工作状态:如果收到数据收发请求,则进行数据收发,并保持状态;如果收到连接的关闭请求,则关闭本连接,转到连接没有激活状态;如果收到对端的连接建立请求,则启动备份连接的建立状态机,并保持状态。
在上述各种状态下收到连接异常的信息都异常关闭连接。



评论


相关推荐

技术专区

关闭