发明内容
本发明要解决的技术问题在于克服现有技术的不足,提供一种启动方法、系统、设备及计算机可读存储介质,能够确保光线路终端在系统启动阶段,光线路终端的所有模块都完成初始化,光线路终端各模块的消息以及事件开始进行正常处理,从而确保光线路终端的系统稳定运行。
为解决上述技术问题,本发明采用技术方案的基本构思是:
第一方面,一种启动方法,所述方法包括以下步骤:
为待启动模块建立启动程序;
根据所述启动程序依次打开所述待启动模块;
获取所述待启动模块的运行状态;
判断所述待启动模块的运行状态是否正常,若运行状态正常,则开始进行消息的收发和事件的处理,若运行状态非正常,则在一定的时间间隔内,继续判断所述待启动模块的运行状态是否正常。
在上述任一方案中优选的实施例中,所述待启动模块,包括:
System模块、IPC通信模块、BCM模块、Switch协议模块、GPON模块以及WEB模块。
在上述任一方案中优选的实施例中,所述运行状态,依次包括:
启动中、启动完成、正常运行以及停止,其中,每个所述待启动模块均包含上述四种运行状态。
在上述任一方案中优选的实施例中,所述获取所述待启动模块的运行状态,包括:
获取所述待启动模块发送的指令;
根据所述指令,判断所述待启动模块的运行状态;
若所述待启动模块启动完成,则发送启动完成指令。
在上述任一方案中优选的实施例中,所述判断所述待启动模块的运行状态是否正常,包括:
查询所有待启动模块是否启动完成;
若所有待启动模块启动完成,则所述待启动模块把自己的状态标志转换为正常运行状态。
第二方面,一种启动系统,包括:
建立模块,用于为待启动模块建立启动程序,所述待启动模块,包括:System模块、IPC通信模块、BCM模块、Switch协议模块、GPON模块以及WEB模块;
打开模块,用于根据所述启动程序依次打开所述待启动模块;
第一获取模块,用于获取所述待启动模块的运行状态,所述运行状态,依次包括:启动中、启动完成、正常运行以及停止,其中,每个所述待启动模块均包含上述四种运行状态;
第一判断模块,用于判断所述待启动模块的运行状态是否正常,若运行状态正常,则开始进行消息的收发和事件的处理,若运行状态非正常,则在一定的时间间隔内,继续判断所述待启动模块的运行状态是否正常。
在上述任一方案中优选的实施例中,所述第一获取模块,包括:
第二获取模块,用于获取所述待启动模块发送的指令;
第二判断模块,用于根据所述指令,判断所述待启动模块的运行状态,若所述待启动模块启动完成,则发送启动完成指令。
在上述任一方案中优选的实施例中,所述第一判断模块,包括:
查询模块,用于查询所有待启动模块是否启动完成,若所有待启动模块启动完成,则所述待启动模块把自己的状态标志转换为正常运行状态。
第三方面,一种启动设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现所述的启动方法。
第四方面,一种计算机可读存储介质,所述计算机可读存储介质中存储有程序,该程序被处理器执行时实现所述的启动方法。
与现有技术相比,本申请实施例的启动方法,通过获取待启动模块的运行状态,并判断待启动模块的运行状态是否正常,能够确保光线路终端在系统启动阶段,光线路终端的所有模块都完成初始化,光线路终端各模块的消息以及事件开始进行正常处理,从而确保光线路终端的系统稳定运行。
下面结合附图对本发明的具体实施方式作进一步详细的描述。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
本申请下述实施例以启动方法为例进行详细说明本申请的方案,但是此实施例并不能限制本申请保护范围。
如图1所示,本发明提供了一种启动方法,所述方法包括以下步骤:
步骤1:为待启动模块建立启动程序,所述待启动模块,包括:System模块、IPC通信模块、BCM模块、Switch协议模块、GPON模块以及WEB模块;
步骤2:根据所述启动程序依次打开所述待启动模块;
步骤3:获取所述待启动模块的运行状态,所述运行状态,依次包括:启动中、启动完成、正常运行以及停止,其中,每个所述待启动模块均包含上述四种运行状态;
步骤4:判断所述待启动模块的运行状态是否正常,若运行状态正常,则开始进行消息的收发和事件的处理,若运行状态非正常,则在一定的时间间隔内,继续判断所述待启动模块的运行状态是否正常。
在本发明实施例所述的启动方法中,所述待启动模块的启动顺序依次为:System模块、IPC通信模块、BCM模块、Switch协议模块、GPON模块和WEB模块,其中,每个待启动模块都定义了四种状态,分别是:启动中、启动完成、正常运行、停止共四个状态,通过为每个待启动模块维护这四个状态,确保光线路终端的系统在运行过程中处于确定的状态,从而确保光线路终端的系统运行稳定。
如图2所示,所述获取所述待启动模块的运行状态,包括:
步骤31:获取所述待启动模块发送的指令;
步骤32:根据所述指令,判断所述待启动模块的运行状态;
步骤33:若所述待启动模块启动完成,则发送启动完成指令。
在本发明实施例所述的启动方法中,当所述待启动模块在启动过程中,对光线路终端系统的每个模块的启动运行状态进行保存记录,每个模块在启动过程中,都向光线路终端系统告知自己正在启动,当模块启动完成后,都向光线路终端系统注册自己启动已经完成,因此可以实时对光线路终端系统中的各个待启动模块进行实时监控。
如图1所示,所述判断所述待启动模块的运行状态是否正常,包括:
步骤41:查询所有待启动模块是否启动完成;
步骤42:若所有待启动模块启动完成,则所述待启动模块把自己的状态标志转换为正常运行状态。
在本发明实施例所述的启动方法中,在光线路终端系统启动过程中,每个待启动模块实时向光线路终端系统查询所有待启动模块是否启动完成,只有获取到所有待启动模块启动完成后的状态标志后,每个待启动模块才把自己的状态标志转换成正常运行状态,进行消息、事件等处理,通过这种启动过程的同步方法,实现光线路终端系统各待启动模块同步启动,确保光线路终端系统稳定运行。
例如,当光线路终端系统启动时,具体包括以下步骤:
步骤1:光线路终端的系统上电启动,Linux系统的Init进程执行初始化脚本文件,脚本文件中使用命令方式启动模块程序,各模块程序在脚本文件中的执行顺序依次为:System模块、IPC通信模块、BCM模块、Switch协议模块、GPON模块和WEB模块。Init进程按照脚本文件中的命令顺序执行各模块程序的启动,首先启动System模块,System模块使用全局变量数组Global_state[所有模块_ID](变量初始值全为0)维护所有模块的运行状态,当System模块启动完成后,通过本模块API(应用程序编程接口)函数携带System模块ID,初始化完成状态值1,保存到全局变量数组Global_state[System模块_ID]中。
步骤2:System模块启动完后,IPC通信模块进行启动,启动完成后,调用System模块的API(应用程序编程接口)接口,携带IPC通信模块ID,IPC通信模块启动完成状态值1保存到System模块中的全局变量数组Global_state[IPC通信模块_ID],IPC通信模块通过System模块提供的API(应用程序编程接口)读取全局变量数组Global_state[所有模块_ID],只有当全局变量数组Global_state[所有模块_ID]值全是1的情况下,即所有模块都启动完成,则IPC通信模块开始进行消息的收发和事件的处理;否则在IPC通信模块的死循环中,一直读取全局变量数组Global_state[所有模块_ID]的值,判断如果不全是1,则休眠1秒继续循环读取全局变量数组Global_state[所有模块_ID]的值,直至全局变量数组Global_state[所有模块_ID]的值全为1,表明所有模块都初始化完成。
步骤3:待启动模块依次启动,由于有些模块启动过程需要启动多个线程,完成模块初始化时间会长短不一,通过步骤2这种方式,可以确保所有模块启动完成后,都会调用System模块的API把状态值1保存到System模块全局变量Global_state[模块_ID]中进行维护和保存。
步骤4:所有模块都在循环调用System模块API获取全局变量数组Global_state[所有模块_ID]的完成状态值,一旦当System模块维护的全局变量数组Global_state[所有模块_ID]状态值是1的时候,所有模块开始进入消息收发和事件处理。光线路终端的系统所有模块进入运行状态,系统开始稳定运行,通过这种方法,确保OLT设备能稳定运行。
如图3和图4所示,一种启动系统,包括:
建立模块,用于为待启动模块建立启动程序,所述待启动模块,包括:System模块、IPC通信模块、BCM模块、Switch协议模块、GPON模块以及WEB模块;
打开模块,用于根据所述启动程序依次打开所述待启动模块;
第一获取模块,用于获取所述待启动模块的运行状态,所述运行状态,依次包括:启动中、启动完成、正常运行以及停止,其中,每个所述待启动模块均包含上述四种运行状态,所述第一获取模块,包括:第二获取模块,用于获取所述待启动模块发送的指令;第二判断模块,用于根据所述指令,判断所述待启动模块的运行状态,若所述待启动模块启动完成,则发送启动完成指令;
第一判断模块,用于判断所述待启动模块的运行状态是否正常,若运行状态正常,则开始进行消息的收发和事件的处理,若运行状态非正常,则在一定的时间间隔内,继续判断所述待启动模块的运行状态是否正常,所述第一判断模块,包括查询模块,用于查询所有待启动模块是否启动完成,若所有待启动模块启动完成,则所述待启动模块把自己的状态标志转换为正常运行状态。
图5为本发明实施例提供的一种启动设备的结构示意图。图5示出了适于用来实现本发明实施方式的示例性启动设备的框图。图5显示的启动设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,启动设备以通用计算设备的形式表现。启动设备的组件可以包括但不限于:一个或者多个处理器或者处理单元,存储器,连接不同系统组件(包括存储器和处理单元)的总线。
总线表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
启动设备典型地包括多种计算机系统可读介质。这些介质可以是任何能够被启动设备访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器。启动设备可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线相连。存储器可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块的程序/实用工具,可以存储在例如存储器中,这样的程序模块包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块通常执行本发明所描述的实施例中的功能和/或方法。
启动设备也可以与一个或多个外部设备(例如键盘、指向设备、显示器等)通信,还可与一个或者多个使得用户能与该启动设备交互的设备通信,和/或与使得该启动设备能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口进行。并且,启动设备还可以通过网络适配器与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器通过总线与启动设备的其它模块通信。应当明白,尽管图中未示出,可以结合启动设备使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元通过运行存储在存储器中的程序,从而执行各种功能应用以及数据处理,例如实现本发明任意实施例提供的启动方法。也即:为待启动模块建立启动程序,所述待启动模块,包括:System模块、IPC通信模块、BCM模块、Switch协议模块、GPON模块以及WEB模块;根据所述启动程序依次打开所述待启动模块;获取所述待启动模块的运行状态,所述运行状态,依次包括:启动中、启动完成、正常运行以及停止,其中,每个所述待启动模块均包含上述四种运行状态;判断所述待启动模块的运行状态是否正常,若运行状态正常,则开始进行消息的收发和事件的处理,若运行状态非正常,则在一定的时间间隔内,继续判断所述待启动模块的运行状态是否正常。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有程序,该程序被处理器执行时实现如本发明任意实施例所述的堆叠分裂的处理方法,该方法包括:
为待启动模块建立启动程序,所述待启动模块,包括:System模块、IPC通信模块、BCM模块、Switch协议模块、GPON模块以及WEB模块;根据所述启动程序依次打开所述待启动模块;
获取所述待启动模块的运行状态,所述运行状态,依次包括:启动中、启动完成、正常运行以及停止,其中,每个所述待启动模块均包含上述四种运行状态;
判断所述待启动模块的运行状态是否正常,若运行状态正常,则开始进行消息的收发和事件的处理,若运行状态非正常,则在一定的时间间隔内,继续判断所述待启动模块的运行状态是否正常。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质,例如可以是,但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中组件分或者全组件技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。