一种关机处理方法和装置制造方法及图纸

技术编号:27826763 阅读:16 留言:0更新日期:2021-03-30 11:12
本申请提供了一种关机处理方法和装置,应用于服务器,该服务器包括内核和用户态应用程序,该方法包括:用户态应用程序查询第一状态文件,该第一状态文件包括用于指示服务器是否即将关机的第一状态信息,当确认所述第一状态信息的取值用于指示服务器即将关机时,则执行用户态应用程序所需要处理的操作;当执行完所述操作后,修改第二状态文件中的第二状态信息的取值,以使修改后的取值用于指示已执行完操作;内核查询第二状态信息,当确认第二状态信息的取值用于指示用户态应用程序执行完所需要处理的操作时,则执行关机流程以完成服务器的关机操作。由此实现了用户态应用程序在关机前执行完所要执行的操作,而且不会出现关机流程阻塞。程阻塞。程阻塞。

【技术实现步骤摘要】
一种关机处理方法和装置


[0001]本申请涉及计算机通信
,尤其涉及一种关机处理方法和装置。

技术介绍

[0002]随着计算机技术的普及,社会日常工作的信息化程度正在逐步提高。特别是在企业和公共应用领域基于通用服务器架构的用户态应用程序也越来越丰富。典型情况下企业应用系统的程序通常都分布于一台或多台服务器上,当服务器关机时,其上运行的用户态应用程序往往不能及时感知,或者无法在系统关闭前完成所需要做的事情,例如,分布式集群存储系统当中的IO异常快速处理,以减小单节点退出对整集群系统性能的影响。这样在服务器关闭前,如果能提前告知运行在其上的用户态应用程序做异常处理并能等待相应的操作完成再关机就显得很有必要。
[0003]一般来说,当服务器的运行环境为Linux系统时,当执行现有的关机指令触发关机操作时,Linux系统都会执行关机流程处理。该关机流程的执行过程,默认不会等待运行于系统的用户态下的应用程序(简称用户态应用程序)进行异常处理,而且往往用户态应用程序的进程在关机流程中会被直接退出,导致用户态应用程序无法执行针对异常的异常处理。
[0004]现有技术为了能够在服务器关机前让其上的用户态应用程序执行完所要执行的操作,所采用的方案是利用了Linux内核关闭处理流程中的通知链机制,以在内核执行关闭操作前,先回调自行添加的内核模块,以便用户态应用程序在关机前执行完所要完成的操作,待自行添加的内核模块执行完成后,执行内核关闭操作。但该方法添加的内核模块只能在内核态执行,如果添加的内核模块流程处理异常就会导致关机流程阻塞;此外,如果添加的内核模块执行关机前处理的操作时,用户态应用程序的进程已退出,则该方法就无法处理用户态应用程序在关机前进行异常处理的需求。
[0005]因此,如何在服务器关机前能够让其上的用户态应用程序执行完所要执行的操作,而且不会出现关机流程阻塞是值得考虑的问题之一。

技术实现思路

[0006]有鉴于此,本申请提供一种关机处理方法和装置,用以在服务器关机前能够让其上的用户态应用程序执行完所要执行的操作,而且不会出现关机流程阻塞。
[0007]具体地,本申请是通过如下技术方案实现的:
[0008]根据本申请的第一方面,提供一种关机处理方法,应用于服务器,所述服务器包括内核和用户态应用程序,所述方法,包括:
[0009]所述用户态应用程序查询第一状态文件,所述第一状态文件包括用于指示所述服务器是否即将关机的第一状态信息,所述第一状态信息的取值与所述内核是否接收到关机中断指令的结果相关;
[0010]所述用户态应用程序当确认所述第一状态信息的取值用于指示所述服务器即将
关机时,则执行所述用户态应用程序所需要处理的操作;
[0011]所述用户态应用程序当执行完所述操作后,修改第二状态文件中的第二状态信息的取值,以使修改后的第二状态信息的取值用于指示已执行完所述操作;
[0012]所述内核查询所述第二状态文件中的第二状态信息,当确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,则执行关机流程,以完成所述服务器的关机操作。
[0013]根据本申请的第二方面,提供一种关机处理装置,设置于服务器中,所述服务器包括内核和用户态应用程序,所述装置,包括:
[0014]第一查询模块,用于查询第一状态文件,所述第一状态文件包括用于指示所述服务器是否即将关机的第一状态信息,所述第一状态信息的取值与所述内核是否接收到关机中断指令的结果相关;
[0015]执行模块,用于当确认所述第一状态信息的取值用于指示所述服务器即将关机时,则执行所述用户态应用程序所需要处理的操作;
[0016]修改模块,用于当执行完所述操作后,修改第二状态文件中的第二状态信息的取值,以使修改后的第二状态信息的取值用于指示已执行完所述操作;
[0017]第二查询模块,用于查询所述第二状态文件中的第二状态信息;
[0018]启动模块,用于当确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,则执行关机流程,以完成所述服务器的关机操作。
[0019]根据本申请的第三方面,提供一种服务器,包括处理器和机器可读存储介质,机器可读存储介质存储有能够被处理器执行的计算机程序,处理器被计算机程序促使执行本申请实施例第一方面所提供的方法。
[0020]根据本申请的第四方面,提供一种机器可读存储介质,机器可读存储介质存储有计算机程序,在被处理器调用和执行时,计算机程序促使处理器执行本申请实施例第一方面所提供的方法。
[0021]本申请实施例的有益效果:
[0022]本申请维护了两个状态文件:第一状态文件和第二状态文件,在服务器即将关机时通过修改第一状态信息的取值,然后让用户态应用程序读取到第一状态信息,根据读取到的第一状态信息的取值确认是否要执行所要执行的操作,这样可以实现服务器在关机前,保证用户态应用程序执行完所要执行的操作,此外,通过在第二状态文件中维护第二状态信息,用户态应用程序根据是否执行完其所需要执行的操作来更改第二状态信息的取值,使得在基于第二状态信息的取值确认用户态应用程序执行完所要执行的操作时,启动关机流程,这样也就不会存在关机流程阻塞的情况。
附图说明
[0023]图1是本申请实施例提供的一种关机处理方法的流程示意图;
[0024]图2是本申请实施例提供的一种服务器的结构图;
[0025]图3是本申请实施例提供的一种服务器中关机处理流程的逻辑架构图;
[0026]图4是本申请实施例提供的一种关机处理装置的框图。
具体实施方式
[0027]这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如本申请的一些方面相一致的装置和方法的例子。
[0028]在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相对应的列出项目的任何或所有可能组合。
[0029]应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
[0030]在介绍本申请提供的关机处理流程之前,先对本申请任一实施例涉及的技术术语进行介绍:
[0031]init进本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种关机处理方法,其特征在于,应用于服务器,所述服务器包括内核和用户态应用程序,所述方法,包括:所述用户态应用程序查询第一状态文件,所述第一状态文件包括用于指示所述服务器是否即将关机的第一状态信息,所述第一状态信息的取值与所述内核是否接收到关机中断指令的结果相关;所述用户态应用程序当确认所述第一状态信息的取值用于指示所述服务器即将关机时,则执行所述用户态应用程序所需要处理的操作;所述用户态应用程序当执行完所述操作后,修改第二状态文件中的第二状态信息的取值,以使修改后的第二状态信息的取值用于指示已执行完所述操作;所述内核查询所述第二状态文件中的第二状态信息,当确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,则执行关机流程,以完成所述服务器的关机操作。2.根据权利要求1所述的方法,其特征在于,当确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,则执行关机流程,包括:若在设定时间内,所述内核确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,则执行关机流程。3.根据权利要求2所述的方法,其特征在于,若在所述设定时间内且超过所述设定时间时,所述内核均确认所述第二状态信息的取值用于指示所述用户态应用程序未执行完所述所需要处理的操作,则执行关机流程,以完成所述服务器的关机操作。4.根据权利要求1所述的方法,其特征在于,所述关机中断指令为高级配置电源管理接口acpi中断指令;所述acpi中断指令为所述内核中的电源按键acpi button处理函数接收到的;以及所述内核查询所述第二状态文件中的第二状态信息,包括:所述内核通过所述acpi button处理函数查询所述第二状态文件中的第二状态信息。5.根据权利要求4所述的方法,其特征在于,当确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,则执行关机流程,以完成所述服务器的关机操作,包括:当所述acpi button处理函数确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,向用户态的acpi事件处...

【专利技术属性】
技术研发人员:曾军
申请(专利权)人:新华三技术有限公司成都分公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1