专注SIP通讯产品与方案

消息通信的处理过程

            S1240的操作系统中有一个消息处理(MH)模块,用于消息通信的控制与处理。这里将说明消息通信的处理过程,并介绍消息处理模块中确定消息路由的程序功能。
(1)消息传送过程
①消息传送一内部
            当一个消息在控制单元内部从一个进程发送给另一个进程时,消息传送过程如下:
(a)用户发送消息
用户可以是FMM或SSM,当需要发送消息时,可以通过软件中断调用消息处理中的消息发送原语。当然,首先要调用缓冲器管理中的GET一MSG—BUF,先分配一个消息缓冲器《MB),并将需要发送的数据写入MB中,再将MB的地址作为参数而传送给消息处理模块° ""
(b)消息发送原语的功能
消息发送(MSG-SEND)原语的主要操作如下:
•将本控制单元识别码和发送消息的进程号码存入MB中。
•如果消息发送者是进程,要将MB与PCB解除勾连。
•将MB中的USE比特置零。
•调用消息处理模块中的MH_ROUTE_MSG,以确定消息路由。调用MH_ROUTE_MSG后的返回数据,也就是确定路由的结果写在.MB的“ROUTINGRESULT"中(即以前所述的MB格式中的RRRR比特)。
•消息路由确定后:
•如果消息要通过虚拟通路发送,调用网络处理器中的SEND—MSG—OVER_VP;
•如果消息要通过用户控制通路或数据链路发送,调用网络处理器中的SEND-MSG_OVER-HELD-UP-PATH(消息通过保持通路发送)&如果消息目的地在内部,就置入对应的就绪队列,队列计数器加1,作业状态字(JSW)的相应比特置位。现在假定目的地是在内部。
(c)发送消息的进程进入等待状态
            调用了MSG—SEND原语后,仍要返回到发送消息的进程,继续执行到MSG—WAIT时,将进入进程管理。于是进程管理将这个进程置成等待状态,转去调度下一个作业。
(d)消息传送给接收进程
进程管理中的SNJ按其调度策略进行调度,当轮到该消息的调度时,就将消息发送给接收进程,激活该进程的继续执行。调度的有关情况已在SNJ中介绍。
消息传送一外部当一个消息要从一个控制单元发送到另一个控制单元时,消息传送的过程如下:
(a)用户发送消息
            用户也是使用原语MSG-SEND,通过软件中断进入消息处理模块,要发送的MB的指针作为参数而调用原语。消息处理中的MHC_ROUTE_MSG确定消息的目的地为另一个控制单元,要调用网络处理中的相应程序,要求发送这一消息。网络处理将消息排队后返回到消息处理,再由消息处理返回到发送消息的进程。
(b)调度网络处理程序而发送消息
            为了将消息发送到另一个控制单元,必须由进程管理在适当时刻调度网络处理中的相应程序,以执行消息的发送。
(c)另一控制单元接收消息
            在某个时刻;在另一个控制单元中的进程管理的调度下,其网络处理器中的事件处理程序在运行,会检测到“已收到外部发来的消息”这一事件,并进行处理。要通过缓冲器管理分配一个MB,将所收到的消息复制到MB中,并将MB传送给消息处理。消息处理确定消息目的地在内部,将消息编入就绪队列。