基于VRTX操作系统实现V5接口协议
要求的精度各不相同,所选择时间的长度对各定时器进行监视和计数累计是问题的关键:时间间隔太小,影响系统运行效率;时间间隔太长,影响定时器的精度。为了解决这个问题,系统中设定了三种不同分辨率的定时器:10ms、100ms和1s(分辨率指计数时间间隔)。
若某应用进程须要使用定时器,首先要向定时器管理进程发送一消息,消息中应包含申请定时器的分辨率、预置计数值、溢出后应发送的消息等信息。定时器管理进程收到该消息后,根据定时器的分辨率将其放到合适的定时队列中,启动定时。若定时器计数为零,则表示该定时器溢出,定时器管理进程应向相应的应用进程发送溢出消息,同时应释放该定时器。应用进程若主动要求放弃一定时器,则应向定时器管理进程发送一释放定时器消息。消息中应包含所申请定时器的标号、分辨率以及溢出目标进程、目标对象等。定时器管理进程接收到此消息后,在合适的定时器队列中寻找到该定时器后,将其释放。定时器管理进程管理其他各应用进程所申请的定时器。在定时器管理进程中,有三个链表分别用于存放这3种不同分辨率的定时器。
定时器管理进程完成以下一些基本功能:
(1)管理10ms、100ms和1s三种定时器链表。
(2)当10ms定时间隔到,应遍历10ms定时器链表,完成对链表中各定时器的计数处理。若有定时器溢出,则向相应的进程发送溢出消息,并从定时器链表中释放该定时器。同样,当100ms或1s的定时间隔到时,也应对100ms或1s定时器链表作相同处理。
(3)处理从其他进程接收到的消息。当收到从其他进程发送的申请定时器的消息时,应在相应分辨率的定时器链表中插入所申请的定时器;在接收到从其他进程来的释放定时器的消息后,应寻找到该定时器,并将其释放。
5.编写可重入函数
V5接口中有大量的函数需要编写。和传统的编程环境不同,本系统中,V5接口软件运行在多任务环境上,函数的可重入性(reentrancy)显得很重要。
所谓可重入函数是指一个可以被多个任务调用的过程,任务在调用时不必担心数据是否会出错。在编写函数时应尽量只使用局部变量,对于要使用的全局变量需要加以保护(如采用关中断、信号量等措施),这样构成的函数一定是可重入的;而编译器是否具有可重入的库,与它所服务的操作系统有关,如DOS下的BorlandC和MicrosoftC/C++等就没有可重入函数库,这是因为DOS是一个单用户、单任务的操作系统。
为了确保每一个调用函数的任务控制自己私有变量,在一个可重入的C函数中,将这样的变量申明为局部变量,C编译器将这样的变量存放在调用栈上或寄存器里。在VRTX操作系统下编写可重入的函数,须要遵循以下原则:
(1)将所有局部变量申明为auto或寄存器(register)类型;
(2)尽量不要使用static或extern变量,不可避免使用全局变量时,需加以保护;
(3)用VRTX库函数sc_gblock分配大的数据结构。
三、V5接口发展的趋势
从长远看,为了克服现有一系列SNI(业务节点接口)功能的限制,须要开发附加的SNI,特别是模块型和B-ISDN接入型SNI。目前,以ATM为基础的VB5接口的标准化工作正在进行。VB5参考点可分为VB5.1和 《基于VRTX操作系统实现V5接口协议(第4页)》
本文链接地址:http://www.oyaya.net/fanwen/view/174171.html
若某应用进程须要使用定时器,首先要向定时器管理进程发送一消息,消息中应包含申请定时器的分辨率、预置计数值、溢出后应发送的消息等信息。定时器管理进程收到该消息后,根据定时器的分辨率将其放到合适的定时队列中,启动定时。若定时器计数为零,则表示该定时器溢出,定时器管理进程应向相应的应用进程发送溢出消息,同时应释放该定时器。应用进程若主动要求放弃一定时器,则应向定时器管理进程发送一释放定时器消息。消息中应包含所申请定时器的标号、分辨率以及溢出目标进程、目标对象等。定时器管理进程接收到此消息后,在合适的定时器队列中寻找到该定时器后,将其释放。定时器管理进程管理其他各应用进程所申请的定时器。在定时器管理进程中,有三个链表分别用于存放这3种不同分辨率的定时器。
定时器管理进程完成以下一些基本功能:
(1)管理10ms、100ms和1s三种定时器链表。
(2)当10ms定时间隔到,应遍历10ms定时器链表,完成对链表中各定时器的计数处理。若有定时器溢出,则向相应的进程发送溢出消息,并从定时器链表中释放该定时器。同样,当100ms或1s的定时间隔到时,也应对100ms或1s定时器链表作相同处理。
(3)处理从其他进程接收到的消息。当收到从其他进程发送的申请定时器的消息时,应在相应分辨率的定时器链表中插入所申请的定时器;在接收到从其他进程来的释放定时器的消息后,应寻找到该定时器,并将其释放。
5.编写可重入函数
V5接口中有大量的函数需要编写。和传统的编程环境不同,本系统中,V5接口软件运行在多任务环境上,函数的可重入性(reentrancy)显得很重要。
所谓可重入函数是指一个可以被多个任务调用的过程,任务在调用时不必担心数据是否会出错。在编写函数时应尽量只使用局部变量,对于要使用的全局变量需要加以保护(如采用关中断、信号量等措施),这样构成的函数一定是可重入的;而编译器是否具有可重入的库,与它所服务的操作系统有关,如DOS下的BorlandC和MicrosoftC/C++等就没有可重入函数库,这是因为DOS是一个单用户、单任务的操作系统。
为了确保每一个调用函数的任务控制自己私有变量,在一个可重入的C函数中,将这样的变量申明为局部变量,C编译器将这样的变量存放在调用栈上或寄存器里。在VRTX操作系统下编写可重入的函数,须要遵循以下原则:
(1)将所有局部变量申明为auto或寄存器(register)类型;
(2)尽量不要使用static或extern变量,不可避免使用全局变量时,需加以保护;
(3)用VRTX库函数sc_gblock分配大的数据结构。
三、V5接口发展的趋势
从长远看,为了克服现有一系列SNI(业务节点接口)功能的限制,须要开发附加的SNI,特别是模块型和B-ISDN接入型SNI。目前,以ATM为基础的VB5接口的标准化工作正在进行。VB5参考点可分为VB5.1和 《基于VRTX操作系统实现V5接口协议(第4页)》