3.2 通信机制的实现
在SDL中系统通过信道与环境连接。系统由许多用信道连接起来的功能块组成,每个功能块相对于其他功能块而言是独立的。在两个不同功能块中的进程之间,通信的惟一手段是靠发送信号,信号通过信道来传递。信号是系统的不同功能块之间或功能块和环境之间进行通信的手段。
根据信号发送的目的采用两种不同方式实现SDL的通信:
(1)同一功能块内部的进程通讯,这种情况下进程之间的通信是由功能块内部的消息分发机制实现的;
(2)不同功能块之间进程的通信,在这种情况下先通过调用操作系统的消息发送机制将消息发送给目标进程所在功能块,由功能块再分发给进程。
这种两种方式不管是哪种方式都使用了统一消息发送接口函数,对开发者来说是透明的。
3.3 定时器管理
定时器是SDL语言中一个重要元素在通信协议开发中被大量应用,比如在WiMAX系统开发中周期测距需要一个定时器周期触发周期测距进程进行信号质量的检测,在网口地址过滤中需要周期进行地址老化。在SDL协议开发平台中,我们将定时器绑定在进程状态机上,通过静态分配的方法将在平台初始化时分配定时器给每个进程,定时器的定时功能由进程所在的功能块任务维护,这种方法避免了采用一个任务管理所有定时器带来任务负荷过大的问题。另外为了降低功能块的任务负荷,在功能任务内没有采用传统的在一个固定tick周期内检查是否有定时器超时的方法,而是利用功能块任务已经有的等待外部任务消息超时来实现定时器的定时检查。具体说就是在SDL的功能任务内采用差值定时的方法维护定时器,在每个功能块任务内维护一个定时器链表,当定时器启动时就插入到这个定时器链表中并根据时间进行排序。在功能块任务等待外部消息超时后就检查是否链表中有定时器超时,如果有则向相应的进程发送超时消息_并删除该定时器,然后更新下一个定时器超时周期并把这个周期设置成等待外部消息超时的时间。采用这种定时器管理机制的好处是定时器管理任务只在下一个定时器超时的时候被激活,而不需要每隔一个固定周期就需要激活去检查定时器链表,大大节省了任务的切换时间。
4 结 语
基于SDL协议开发平台提供一套将SDL语言直接映射成协议代码的高效方法,使通信协议软件开发人员在协议开发过程中将主要精力集中在前期的SDL对系统的描述阶段,而无需关心系统底层的实现,较好地提高了协议开发的效率和代码的可维护性、可移植性,这些优点已经在基于IEEE802.16d的固定宽带无线接入系统的开发中得到了充分的体现。目前SDL协议开发平台还只是实现了基本的SDL进程、功能块、定时器等元素,对SDL中通信只实现了消息的交互,没有实现远端过程(Remote Pro—eedure)调用和远端变量(Remote Variable),这会限制SDL平台在一些复杂通信协议开发中的使用,针对这些问题我们将在后续的工作逐步完善。