一种基于共享内存的Linux服务器多应用进程调度方法与流程

文档序号:33031682发布日期:2023-01-20 20:59阅读:42来源:国知局
一种基于共享内存的Linux服务器多应用进程调度方法与流程
一种基于共享内存的linux服务器多应用进程调度方法
技术领域
1.本发明属于数据处理技术领域,具体涉及一种基于共享内存的linux服务器多应用进程调度方法。


背景技术:

2.数据处理系统运行在安装linux内核操作系统的若干台服务器上。基于服务分层、部件通用化和功能灵活配置考虑,数据处理系统一般由成百上千的框架设计相同、处理逻辑近似、运行相互独立、具体功能各异的应用软件组成,并以守护进程模式常驻后台运行或按需动态调度模式启停。同—linux服务器上的各应用进程(应用程序的进程)之间主要以消息中间件方式进行数据交互,且在数据处理的上下游密切相关,一旦某个应用进程异常,将导致数据处理系统功能受到影响甚至不可用,因此在上述linux服务器大规模应用进程的全寿命周期中,需要解决各应用进程的初始化启动、运行时监控、异常时退出等进程管理问题,确保数据处理系统所有应用进程状态受控。
3.针对linux服务器多进程的设计,目前是基于linux内核的iptv直播系统多进程应用程序的解决方案,具体实现时由管理进程创建工作主进程并基于消息队列监控工作主进程,工作主进程创建工作子进程并通过共享内存完成进程间数据共享及进程监管。该方法当某个工作子进程异常时,需要杀死所有的工作进程,而后重启系统,这种方法无法在大规模进程的数据处理系统中使用,因为重启系统会导致数据处理服务产生较长时间中断,另外也不便于系统运维人员完成进程的启停控制。


技术实现要素:

4.本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种基于共享内存的linux服务器多应用进程调度方法,其方法步骤简单、设计合理,将运行于linux服务器的所有应用程序对应的进程进行统一考虑,将各应用程序的进程信息存入系统进程共享内存,基于进程调度处理策略和进程状态对多进程进行调度管理,各个进程的启动、停止和重启独立控制。
5.为解决上述技术问题,本发明采用的技术方案是:一种基于共享内存的linux服务器多应用进程调度方法,其特征在于,该方法包括以下步骤:步骤一、根据数据处理需求,对运行于linux服务器的数据处理系统的各个应用软件进行配置;其中,各个应用软件被加载到内存后为各个进程,则对各个应用软件被加载后进行配置的内容包括进程执行映像名、进程名、进程描述表名称和进程超时时间;步骤二、创建共享内存;步骤三、共享内存中多个进程信息内容的设置及初始化;其中,每个进程信息内容包括进程pid、进程执行映像名、进程名、进程状态、调度处理策略、进程描述表名称、进程超时时间和进程存活时间;将共享内存中多个进程信息内容中进程pid参数预置为-2,进程状态预置为“空进
程”,调度处理策略预置为“维持”;步骤四、将步骤一中各个应用软件的配置信息依次写入共享内存,然后置各个应用软件对应进程的进程状态为“待建”,调度处理策略为“启动”;步骤五、启动各应用软件,更新共享内存对应进程的pid参数;步骤六、各应用软件对应的进程运行时,定时更新共享内存对应进程的存活时间参数;步骤七、定时读取共享内存各进程信息,通过进程状态、pid参数和存活时间信息判断,更新或维持共享内存各进程状态;步骤八、任一应用软件的停止或重启动。
6.上述的一种基于共享内存的linux服务器多应用进程调度方法,其特征在于:步骤五中启动各应用软件,更新共享内存对应进程的pid参数,具体过程如下:步骤501、将各个进程共享内存中的进程状态置为“就绪”,调度处理策略置为“维持”;步骤502、将各应用软件的可执行映像文件从其存放目录拷贝到服务器其他目录下,并对其重命名,且重命名后的文件称为软件副本,软件副本的名称与共享内存中的进程名一致;步骤503、通过调用服务器中linux操作系统提供的execl接口函数运行软件副本,各应用软件启动成功后将各应用软对应的进程pid更新至共享内存该进程pid参数中。
7.上述的一种基于共享内存的linux服务器多应用进程调度方法,其特征在于:步骤六中各应用软件对应的进程运行时均包含一个定时器线程,各进程运行时每隔设定时间,获取各进程的存活时间信息,并将其写入共享内存对应进程的存活时间参数中。
8.上述的一种基于共享内存的linux服务器多应用进程调度方法,其特征在于:步骤七中定时读取共享内存各进程信息,通过进程状态、pid参数和存活时间信息判断,更新或维持共享内存各进程状态,具体过程如下:步骤701、判断共享内存任一进程状态是否为“空进程”或者“待建”,如果是,执行步骤702;否则执行步骤703;步骤702、维持共享内存中该进程状态不变;步骤703、判断该进程的进程pid在linux服务器的操作系统中是否存在,如果是执行步骤704;否则执行步骤705;步骤704、若该进程的存活时间不断变化,或者若该进程的存活时间不再变化且持续时间未达到进程超时时间,则将该进程状态更新为“正常”;若存活时间不再变化且持续时间达到进程超时时间,则将该进程状态更新为“异常无响应”;步骤705、将该进程状态更新为“异常退出”。
9.上述的一种基于共享内存的linux服务器多应用进程调度方法,其特征在于:步骤八中任一应用软件的停止或重启动,具体过程如下:任一应用软件的停止,如下:步骤801、将共享内存中该应用软件对应的进程信息调度处理策略置为“停止”,判断该进程的进程pid在linux服务器的操作系统中是否存在,如果是,执行步骤802和步骤
803;否则执行步骤803;步骤802、调用linux服务器的操作系统提供的kill方法杀死该进程,以使该应用软件停止;步骤803、将共享内存中该进程的进程状态置为“停止”,调度处理策略置为“维持”;任一应用软件的重启动,如下:步骤80a、将共享内存中该应用软件对应的进程信息调度处理策略置为“重启”,判断该进程的进程pid在linux服务器的操作系统中是否存在,如果是,依次执行步骤80b和步骤80c;否则执行步骤80c;步骤80b、调用linux服务器的操作系统提供的kill方法杀死该进程;步骤80c、按照步骤501、步骤502和步骤503所述的方法,将该应用软件重启动。
10.本发明与现有技术相比具有以下优点:1、本发明将linux服务器上所有应用程序的进程信息用一个数据结构进行描述并将其写入创建的系统进程共享内存中,按进程调度处理策略完成所有应用程序的进程的启停管理,并能定时更新进程的存活时间和进程状态。因此本发明提供的方法简单,通用性较强。
11.2、本发明实现了对大规模应用进程的集中统一监控,提高了数据处理系统的可靠性。其中,进程启动过程中自动创建“软件副本”的技术可有效防止应用软件版本升级对正在运行的进程造成影响。
12.3、本发明提供方法可实现对于异常进程的独立处置,即对单个或者多个异常进程的停止或重启处置,无需通过重启整个系统实现,从而提高了系统连续服务能力。
13.4、本发明采用的共享内存机制存储所有被管理进程的状态信息,可彻底解决管理进程异常退出后产生大量不受控制的孤儿进程的问题。
14.5、本发明将进程存活时间实时更新到共享内存,充分利用共享内存通信效率高的优势,降低了进程管理对服务器计算资源的消耗。
15.下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
16.图1为本发明的方法流程框图。
17.图2为本发明共享内存的多应用进程信息示意图。
具体实施方式
18.如图1和图2所示,本发明一种基于共享内存的linux服务器多应用进程调度方法,包括以下步骤:步骤一、根据数据处理需求,对运行于linux服务器的数据处理系统的各个应用软件进行配置;其中,各个应用软件被加载到内存后为各个进程,则对各个应用软件被加载后进行配置的内容包括进程执行映像名、进程名、进程描述表名称和进程超时时间;步骤二、创建共享内存;步骤三、共享内存中多个进程信息内容的设置及初始化;其中,每个进程信息内容
包括进程pid、进程执行映像名、进程名、进程状态、调度处理策略、进程描述表名称、进程超时时间和进程存活时间;将共享内存中多个进程信息内容中进程pid参数预置为-2,进程状态预置为“空进程”,调度处理策略预置为“维持”;步骤四、将步骤一中各个应用软件的配置信息依次写入共享内存,然后置各个应用软件对应进程的进程状态为“待建”,调度处理策略为“启动”;步骤五、启动各应用软件,更新共享内存对应进程的pid参数;步骤六、各应用软件对应的进程运行时,定时更新共享内存对应进程的存活时间参数;步骤七、定时读取共享内存各进程信息,通过进程状态、pid参数和存活时间信息判断,更新或维持共享内存各进程状态;步骤八、任一应用软件的停止或重启动。
19.本实施例中,步骤五中启动各应用软件,更新共享内存对应进程的pid参数,具体过程如下:步骤501、将各个进程共享内存中的进程状态置为“就绪”,调度处理策略置为“维持”;步骤502、将各应用软件的可执行映像文件从其存放目录拷贝到服务器其他目录下,并对其重命名,且重命名后的文件称为软件副本,软件副本的名称与共享内存中的进程名一致;步骤503、通过调用服务器中linux操作系统提供的execl接口函数运行软件副本,各应用软件启动成功后将各应用软对应的进程pid更新至共享内存该进程pid参数中。
20.本实施例中,步骤六中各应用软件对应的进程运行时均包含一个定时器线程,各进程运行时每隔设定时间,获取各进程的存活时间信息,并将其写入共享内存对应进程的存活时间参数中。
21.本实施例中,步骤七中定时读取共享内存各进程信息,通过进程状态、pid参数和存活时间信息判断,更新或维持共享内存各进程状态,具体过程如下:步骤701、判断共享内存任一进程状态是否为“空进程”或者“待建”,如果是,执行步骤702;否则执行步骤703;步骤702、维持共享内存中该进程状态不变;步骤703、判断该进程的进程pid在linux服务器的操作系统中是否存在,如果是执行步骤704;否则执行步骤705;步骤704、若该进程的存活时间不断变化,或者若该进程的存活时间不再变化且持续时间未达到进程超时时间,则将该进程状态更新为“正常”;若存活时间不再变化且持续时间达到进程超时时间,则将该进程状态更新为“异常无响应”;步骤705、将该进程状态更新为“异常退出”。
22.本实施例中,步骤八中任一应用软件的停止或重启动,具体过程如下:任一应用软件的停止,如下:步骤801、将共享内存中该应用软件对应的进程信息调度处理策略置为“停止”,判
断该进程的进程pid在linux服务器的操作系统中是否存在,如果是,执行步骤802和步骤803;否则执行步骤803;步骤802、调用linux服务器的操作系统提供的kill方法杀死该进程,以使该应用软件停止;步骤803、将共享内存中该进程的进程状态置为“停止”,调度处理策略置为“维持”;任一应用软件的重启动,如下:步骤80a、将共享内存中该应用软件对应的进程信息调度处理策略置为“重启”,判断该进程的进程pid在linux服务器的操作系统中是否存在,如果是,依次执行步骤80b和步骤80c;否则执行步骤80c;步骤80b、调用linux服务器的操作系统提供的kill方法杀死该进程;步骤80c、按照步骤501、步骤502和步骤503所述的方法,将该应用软件重启动。
23.本实施例中,需要说明的是,各应用软件对应的进程共同访问共享内存时,需要通过获取或释放信号量实现多进程读写同一共享内存的互斥与同步。
24.本实施例中,每隔设定时间设置为1秒。
25.本实施例中,需要说明的是:“空进程”:是指共享内存创建时,进程状态字段初始化默认设置为“空进程”;“待建”:是指新增加的应用软件的进程信息第一次写入共享内存时,设置共享内存该进程状态字段为“待建”;“就绪”:是指对于调度处理策略为“启动”的进程,当执行该调度处理策略后即将共享内存该进程状态字段设置为“就绪”;“停止”:是指对于调度处理策略为“停止”的进程,当执行该调度处理策略后进程正常退出,则该进程状态设置为“停止”。
26.本实施例中,需要说明的是,进程的“就绪”状态在一定条件下可转变为“正常”、“异常无响应”或“异常退出”。
27.本实施例中,每个进程信息内容包括进程pid、进程执行映像名procexname、进程名procname、进程状态status、调度处理策略stategy、进程描述表名称descname、进程超时时间exittime和进程存活时间livetime。
28.本实施例中,进程描述表名称descname中存储的是进程配置文件名,进程配置文件描述了各进程启动运行时读取的各类可变参数,如网络收发地址,数据处理结果文件名称及路径,运行日志文件名称及路径,物理量解析方法。
29.本实施例中,调度处理策略stategy有“维持”“启动”、“停止”和
““
重启”。
30.本实施例中,需要说明的是:“启动”:是指应用软件第一次启动时,设置该软件对应的共享内存中进程调度处理策略为“启动”;“停止”:是指需要停止使用某个应用软件时,设置该软件对应的共享内存中进程调度处理策略为“停止”;“重启”:是指更新进程执行映像或者进程配置文件后,为使其生效,需要先停止该进程,而后再启动该进程,此时设置该进程调度处理策略为“重启”;“维持”:是指对于调度处理策略为“启动”、“停止”或者“重启”的进程,该进程执行该调度处理策略后,则处于维持等待状态,避免该进程不停地执行“启动”、“停止”或者“重启”。
31.以上所述,仅是本发明的较佳实施例,并非对本发明作任何限制,凡是根据本发明技术实质对以上实施例所作的任何简单修改、变更以及等效结构变化,均仍属于本发明技术方案的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1