CN112559057A - 一种关机处理方法和装置 - Google Patents
一种关机处理方法和装置 Download PDFInfo
- Publication number
- CN112559057A CN112559057A CN202011284295.1A CN202011284295A CN112559057A CN 112559057 A CN112559057 A CN 112559057A CN 202011284295 A CN202011284295 A CN 202011284295A CN 112559057 A CN112559057 A CN 112559057A
- Authority
- CN
- China
- Prior art keywords
- shutdown
- state information
- application program
- server
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/442—Shutdown
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Power Sources (AREA)
Abstract
本申请提供了一种关机处理方法和装置,应用于服务器,该服务器包括内核和用户态应用程序,该方法包括:用户态应用程序查询第一状态文件,该第一状态文件包括用于指示服务器是否即将关机的第一状态信息,当确认所述第一状态信息的取值用于指示服务器即将关机时,则执行用户态应用程序所需要处理的操作;当执行完所述操作后,修改第二状态文件中的第二状态信息的取值,以使修改后的取值用于指示已执行完操作;内核查询第二状态信息,当确认第二状态信息的取值用于指示用户态应用程序执行完所需要处理的操作时,则执行关机流程以完成服务器的关机操作。由此实现了用户态应用程序在关机前执行完所要执行的操作,而且不会出现关机流程阻塞。
Description
技术领域
本申请涉及计算机通信技术领域,尤其涉及一种关机处理方法和装置。
背景技术
随着计算机技术的普及,社会日常工作的信息化程度正在逐步提高。特别是在企业和公共应用领域基于通用服务器架构的用户态应用程序也越来越丰富。典型情况下企业应用系统的程序通常都分布于一台或多台服务器上,当服务器关机时,其上运行的用户态应用程序往往不能及时感知,或者无法在系统关闭前完成所需要做的事情,例如,分布式集群存储系统当中的IO异常快速处理,以减小单节点退出对整集群系统性能的影响。这样在服务器关闭前,如果能提前告知运行在其上的用户态应用程序做异常处理并能等待相应的操作完成再关机就显得很有必要。
一般来说,当服务器的运行环境为Linux系统时,当执行现有的关机指令触发关机操作时,Linux系统都会执行关机流程处理。该关机流程的执行过程,默认不会等待运行于系统的用户态下的应用程序(简称用户态应用程序)进行异常处理,而且往往用户态应用程序的进程在关机流程中会被直接退出,导致用户态应用程序无法执行针对异常的异常处理。
现有技术为了能够在服务器关机前让其上的用户态应用程序执行完所要执行的操作,所采用的方案是利用了Linux内核关闭处理流程中的通知链机制,以在内核执行关闭操作前,先回调自行添加的内核模块,以便用户态应用程序在关机前执行完所要完成的操作,待自行添加的内核模块执行完成后,执行内核关闭操作。但该方法添加的内核模块只能在内核态执行,如果添加的内核模块流程处理异常就会导致关机流程阻塞;此外,如果添加的内核模块执行关机前处理的操作时,用户态应用程序的进程已退出,则该方法就无法处理用户态应用程序在关机前进行异常处理的需求。
因此,如何在服务器关机前能够让其上的用户态应用程序执行完所要执行的操作,而且不会出现关机流程阻塞是值得考虑的问题之一。
发明内容
有鉴于此,本申请提供一种关机处理方法和装置,用以在服务器关机前能够让其上的用户态应用程序执行完所要执行的操作,而且不会出现关机流程阻塞。
具体地,本申请是通过如下技术方案实现的:
根据本申请的第一方面,提供一种关机处理方法,应用于服务器,所述服务器包括内核和用户态应用程序,所述方法,包括:
所述用户态应用程序查询第一状态文件,所述第一状态文件包括用于指示所述服务器是否即将关机的第一状态信息,所述第一状态信息的取值与所述内核是否接收到关机中断指令的结果相关;
所述用户态应用程序当确认所述第一状态信息的取值用于指示所述服务器即将关机时,则执行所述用户态应用程序所需要处理的操作;
所述用户态应用程序当执行完所述操作后,修改第二状态文件中的第二状态信息的取值,以使修改后的第二状态信息的取值用于指示已执行完所述操作;
所述内核查询所述第二状态文件中的第二状态信息,当确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,则执行关机流程,以完成所述服务器的关机操作。
根据本申请的第二方面,提供一种关机处理装置,设置于服务器中,所述服务器包括内核和用户态应用程序,所述装置,包括:
第一查询模块,用于查询第一状态文件,所述第一状态文件包括用于指示所述服务器是否即将关机的第一状态信息,所述第一状态信息的取值与所述内核是否接收到关机中断指令的结果相关;
执行模块,用于当确认所述第一状态信息的取值用于指示所述服务器即将关机时,则执行所述用户态应用程序所需要处理的操作;
修改模块,用于当执行完所述操作后,修改第二状态文件中的第二状态信息的取值,以使修改后的第二状态信息的取值用于指示已执行完所述操作;
第二查询模块,用于查询所述第二状态文件中的第二状态信息;
启动模块,用于当确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,则执行关机流程,以完成所述服务器的关机操作。
根据本申请的第三方面,提供一种服务器,包括处理器和机器可读存储介质,机器可读存储介质存储有能够被处理器执行的计算机程序,处理器被计算机程序促使执行本申请实施例第一方面所提供的方法。
根据本申请的第四方面,提供一种机器可读存储介质,机器可读存储介质存储有计算机程序,在被处理器调用和执行时,计算机程序促使处理器执行本申请实施例第一方面所提供的方法。
本申请实施例的有益效果:
本申请维护了两个状态文件:第一状态文件和第二状态文件,在服务器即将关机时通过修改第一状态信息的取值,然后让用户态应用程序读取到第一状态信息,根据读取到的第一状态信息的取值确认是否要执行所要执行的操作,这样可以实现服务器在关机前,保证用户态应用程序执行完所要执行的操作,此外,通过在第二状态文件中维护第二状态信息,用户态应用程序根据是否执行完其所需要执行的操作来更改第二状态信息的取值,使得在基于第二状态信息的取值确认用户态应用程序执行完所要执行的操作时,启动关机流程,这样也就不会存在关机流程阻塞的情况。
附图说明
图1是本申请实施例提供的一种关机处理方法的流程示意图;
图2是本申请实施例提供的一种服务器的结构图;
图3是本申请实施例提供的一种服务器中关机处理流程的逻辑架构图;
图4是本申请实施例提供的一种关机处理装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相对应的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在介绍本申请提供的关机处理流程之前,先对本申请任一实施例涉及的技术术语进行介绍:
init进程,Linux系统下所有用户态程序的父进程,是Linux系统下最新初始化出来的用户态进程,当Linux执行关机时,也会进入该进程的处理逻辑来进行相应的处理。
系统调用,Linux用户态下访问Linux内核实现的相关功能的方式或接口。
acpi,是指服务器Linux环境下的电源管理相关的流程和配置。
acpi button:服务器的电源按键,用以触发服务器关机或重启。
poweroff_stat文件,为第一状态文件,属于内存状态文件,用以表示服务器是否即将关机,例如可以通过cat/proc/sys/kernel/poweroff_stat访问。
deal_done文件,为第二状态文件,属于内存状态文件,用以表示用户态应用程序的处理是否已完成,例如可以通过echo 1>/proc/sys/kernel/deal_done来修改。
下面对本申请提供的关机处理方法进行详细地说明。
参见图1,图1是本申请提供的一种关机处理方法的流程图,应用于服务器中,该服务器包括内核和用户态应用程序,参考图2所示,则服务器实施上述关机方法可包括如下所示步骤:
S101、用户态应用程序查询第一状态文件,所述第一状态文件包括用于指示所述服务器是否即将关机的第一状态信息。
其中,上述第一状态信息的取值与所述内核是否接收到关机中断指令的结果相关。本申请预先维护了一个第一状态文件,该第一状态文件中的第一状态信息的取值专门用于表征当前服务器的状态。
具体地,第一状态文件是内核控制的,内核可以对第一状态文件进行读和写;用户态应用程序对该第一状态文件具有读功能。由此,当内核接收到关机中断指令后,在触发启动关机程序之前,先修改第一状态文件中的第一状态信息的取值。其中,第一状态信息的取值与所述内核是否接收到关机中断指令的结果相关,例如,第一状态信息的取值可以为0或者1;例如当接收到关机中断指令,则可以将第一状态信息的取值配置为1,可以用来表征服务器即将关机;而当未接收到关机中断指令,则可以将第一状态信息的取值配置为0时,可以用来表征服务器正常运行,未处于即将关机的状态。基于此原理,当内核接收到关机中断指令后,则表明服务器即将要关机,则此时为了保证用户态应用程序把当前所需要执行的操作执行完整,避免因服务器关机影响用户态应用程序执行的保护操作,内核将第一状态文件中第一状态信息的取值修改为1,暂不执行关机流程,以便用户态应用程序及时从第一状态文件中获取到用于表征服务器是否即将关机的第一状态信息。
需要说明的是,为了保证用户态应用程序能够及时捕捉到服务器是否即将关机的信息,用户态应用程序可以快速轮询查找第一状态文件。例如用户态应用程序可以启动一个线程,由该线程周期性地(每1秒或2秒)轮询第一状态文件的第一状态信息的取值,这样可以避免用户态应用程序未能及时监控到服务器的状态的情况发生。
可选地,上述第一状态文件由内核生成,即,在关机处理流程中添加了用于生成第一状态文件的代码逻辑。
S102、用户态应用程序当确认所述第一状态信息的取值用于指示所述服务器即将关机时,则执行所述用户态应用程序所需要处理的操作。
本步骤中,当用户态应用程序获取到第一状态文件中的第一状态信息的取值为1时,则表明服务器即将关机,则用户态应用程序执行其所需要处理的操作,如用户态应用程序执行保护服务器所需执行的异常处理操作等等。
S103、用户态应用程序当执行完所述操作后,修改第二状态文件中的第二状态信息的取值,以使修改后的第二状态信息的取值用于指示已执行完所述操作。
具体地,本申请维护了一个第二状态文件,该第二状态文件由用户态应用程序控制,用户态应用程序可以对第二状态文件进行读和写,但内核可以读取第二状态文件。第二状态文件中的第二状态信息用于表征用户态应用程序是否执行完关机前需要执行的操作;例如,第二状态信息的取值为1表明用户态应用程序已完成关机前所需执行的操作;第二状态信息的取值为0表明用户态应用程序当前未完成关机前所需执行的操作。
在此基础上,本步骤中,当用户态应用程序执行完其所需要执行的操作后,可以将上述第二状态文件中的第二状态信息的取值置为1,若未完成其所需要执行的操作,则将上述第二状态文件中的第二状态信息的取值置为0。
可选地,上述第二状态文件由内核生成,即,在关机处理流程中添加了用于生成第二状态文件的代码逻辑。
S104、内核查询所述第二状态文件中的第二状态信息,当确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,则执行关机流程,以完成所述服务器的关机操作。
具体地,当内核接收到关机中断指令后,在修改第一状态文件中第一状态信息的取值的同事,会启动针对第二状态文件中的第二状态信息的取值的轮询,具体地,内核可以定时或周期性地查询第二状态文件中第二状态信息的取值,当确认第二状态信息取值为1时,表明用户态应用程序已完成关机前所要执行的操作,则内核可以执行关机流程,以完成服务器的正常关机操作。而当确认第二状态信息的取值为0时,表明用户态应用程序当前未完成关机前所要执行的操作,则内核暂时不启动关机流程,直至第二状态信息的取值为1时启动关机流程。
采用图1所示的流程,本申请维护了2个状态文件,第一状态文件和第二状态文件,在服务器即将关机时通过修改第一状态信息的取值,然后让用户态应用程序读取到第一状态信息,根据读取到的第一状态信息的取值确认是否要执行所要执行的操作,这样可以实现服务器在关机前,保证用户态应用程序执行完所要执行的操作,此外,通过在第二状态文件中维护第二状态信息,用户态应用程序根据是否执行完其所需要执行的操作来更改第二状态信息的取值,使得在基于第二状态信息的取值确认用户态应用程序执行完所要执行的操作时,启动关机流程,这样也就不会存在关机流程阻塞的情况。
可选地,在执行步骤S104时,可以按照下述过程实施:若在设定时间内,所述内核确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,则执行关机流程。
具体地,内核不可能一直等待用户态应用程序完成关机前所需要执行的操作,也可能会存在用户态应用程序因为自身状态无法执行完所需要执行的操作导致第二状态文件中第二状态信息的取值一直为0,这会影响服务器正常关机,为了避免这一情况的发生,内核会设置一个设定时间,该时间为等待的最大时间,从接收到关机中断指令开始计时,或者从修改第一状态信息的取值开始计时,内核若设定时间内确认第二状态信息的取值为1,则执行关机流程,这样也给用户态应用程序预留了完成所需执行的操作的操作时间。
可选地,若在上述设定时间内且超过所述设定时间时,内核均确认所述第二状态信息的取值用于指示所述用户态应用程序未执行完所述所需要处理的操作,则执行关机流程,以完成所述服务器的关机操作。
具体地,当从计时时间开始,若内核在设定时间内查询第二状态信息的取值时均确认第二状态信息的取值为0,且超过第二设定时间时依然确认第二状态信息的取值为0,则表明用户态应用程序执行操作的进程可能存在问题,则此时无需再等待用户态应用程序执行所需操作,立即启动关机流程,以完成服务器的关机操作,从而避免影响服务器的关机进程。
需要说明的是,上述设定时间可以但不限于为30秒等等。
可选地,本实施例中的关机中断指令为高级配置电源管理接口(advancedconfiguration power interface,acpi)中断指令;该acpi中断指令为内核中的电源按键acpi button处理函数接收到的;则在此基础上,内核在执行步骤S104中查询所述第二状态文件中的第二状态信息时,可以按照下述过程实施:内核通过所述acpi button处理函数查询所述第二状态文件中的第二状态信息。
在此基础上,可以按照下述过程实施步骤S104中当确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,则执行关机流程,以完成所述服务器的关机操作:
当所述acpi button处理函数确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,向用户态的acpi事件处理进程发送acpi事件通知,以执行关机流程,以完成所述服务器的关机操作。
具体地,结合图3所示的服务器中关机处理流程的逻辑架构图进行说明,图3中用户态应用程序、acpi事件处理进程、init进程均处于用户态,而关闭内核准备、关闭内核处理、acpi button处理函数均位于内核中。为了描述方便,上述第一状态文件可以记为poweroff_start文件,相应地,第一状态信息可以记为poweroff_start;第二状态文件可以为deal_done文件,相应地,第二状态信息可以记为deal_done。
现有的情况是,用户可以按压服务器的power button按键或者通过BMC(Baseboard Management Controller,设备带外管理最小系统)管理系统触发正常的关机操作,该操作会触发关机中断指令,会进入acpi button的处理流程,当服务器在Linux系统收到acpi中断指令,会进入acpi button的相关处理流程处理,acpi button处理函数会通过通知机制发送事件给用户态的acpi事件处理进程,由其再触发服务器关机,此时不会考虑用户态应用程序是否完成其所需要执行的操作。
而本申请为了保证关机前用户态应用程序能够完成关机前所需要执行的操作,本申请对服务器中的acpi button的处理流程来操作,即,acpi button处理函数接收到acpi中断指令后,在其向用户态的acpi事件处理进程通知关机事件前,将poweroff_start文件中的poweroff_start的取值修改为1,使得能够让用户态应用程序感知到服务器即将关机,当用户态应用程序确认poweroff_start的取值为1时,则可以执行关机前所需要执行的异常处理操作,当处理完成后,用户态应用程序将deal_done文件中的deal_done的取值置为1;内核会查询deal_done文件中的deal_done的取值,为了能够让用户态应用程序有一定的时间完成其所需要执行的操作,可以设置30秒(设定时间)的等待时间,等待用户态应用程的处理完成,当设定时间内确认deal_done的取值为1时,则启动关机流程;若超过30秒依然确认deal_done的取值为0,则同样启动关机流程,关机流程如下:acpi button处理函数产生apci事件并通知给用户态的acpi事件处理进程,由用户态的acpi事件处理进程触发关机命令给init进程,由init进程调用关闭内核准备和关闭内核处理进程,执行关闭操作。通过实施上述关机处理流程,在接收到关机中断指令后,在执行关机流程前,通过修改poweroff_start文件中的poweroff_start的取值,通知用户态应用程序服务器即将关机,使得用户态应用程序在确认服务器即将关机时,在服务器关机之前执行其所需要执行的操作,在执行完所需操作后,通过修改deal_done文件中的deal_done的取值,以通知内核,使得内核在基于deal_done文件中的deal_done的取值确认用户态应用程序已完成所需要执行的操作后,启动关机流程,由此,既保证了用户态应用程序在服务器关机之前已完成了其所需要执行的操作,同时也避免了阻塞服务器的正常关机流程的情况发生。
基于同一发明构思,本申请还提供了与上述关机处理方法对应的关机处理装置。该关机处理装置的实施具体可以参考上述对关机处理方法的描述,此处不再一一论述。
参见图4,图4是本申请一示例性实施例提供的一种关机处理装置,设置于服务器中,该服务器包括内核和用户态应用程序,上述装置包括:第一查询模块401、执行模块402、修改模块403、第二查询模块404和关机执行模块405,其中,第一查询模块401、执行模块402、修改模块403设置在用户态应用程序中,上述第二查询模块404和关机执行模块405设置在内核中,其中:
第一查询模块401,用于查询第一状态文件,所述第一状态文件包括用于指示所述服务器是否即将关机的第一状态信息,所述第一状态信息的取值与所述内核是否接收到关机中断指令的结果相关;
执行模块402,用于当确认所述第一状态信息的取值用于指示所述服务器即将关机时,则执行所述用户态应用程序所需要处理的操作;
修改模块403,用于当执行完所述操作后,修改所述第二状态文件中的第二状态信息的取值,以使修改后的第二状态信息的取值用于指示已执行完所述操作;
第二查询模块404,用于查询所述第二状态文件中的第二状态信息;
关机执行模块405,用于当确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,则执行关机流程,以完成所述服务器的关机操作。
可选地,上述关机执行模块405,具体用于若在设定时间内,所述内核确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,则执行关机流程。
可选地,上述关机执行模块405,还用于若在所述设定时间内且超过所述设定时间时,所述内核均确认所述第二状态信息的取值用于指示所述用户态应用程序未执行完所述所需要处理的操作,则执行关机流程,以完成所述服务器的关机操作。
可选地,本实施例中的关机中断指令为高级配置电源管理接口acpi中断指令;所述acpi中断指令为所述内核中的电源按键acpi button处理函数接收到的;以及
上述第二查询模块404,具体用于通过所述acpi button处理函数查询所述第二状态文件中的第二状态信息。
可选地,上述关机执行模块405,具体用于当所述acpi button处理函数确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,向用户态的acpi事件处理进程发送acpi事件通知,以执行关机流程,以完成所述服务器的关机操作。
另外,本申请实施例提供了一种机器可读存储介质,机器可读存储介质存储有计算机程序,在被处理器调用和执行时,计算机程序促使处理器执行本申请实施例所提供的关机处理方法。
对于机器可读存储介质实施例而言,由于其涉及的方法内容基本相似于前述的方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
上述装置中各个单元/模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元/模块可以是或者也可以不是物理上分开的,作为单元/模块显示的部件可以是或者也可以不是物理单元/模块,即可以位于一个地方,或者也可以分布到多个网络单元/模块上。可以根据实际的需要选择其中的部分或者全部单元/模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种关机处理方法,其特征在于,应用于服务器,所述服务器包括内核和用户态应用程序,所述方法,包括:
所述用户态应用程序查询第一状态文件,所述第一状态文件包括用于指示所述服务器是否即将关机的第一状态信息,所述第一状态信息的取值与所述内核是否接收到关机中断指令的结果相关;
所述用户态应用程序当确认所述第一状态信息的取值用于指示所述服务器即将关机时,则执行所述用户态应用程序所需要处理的操作;
所述用户态应用程序当执行完所述操作后,修改第二状态文件中的第二状态信息的取值,以使修改后的第二状态信息的取值用于指示已执行完所述操作;
所述内核查询所述第二状态文件中的第二状态信息,当确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,则执行关机流程,以完成所述服务器的关机操作。
2.根据权利要求1所述的方法,其特征在于,当确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,则执行关机流程,包括:
若在设定时间内,所述内核确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,则执行关机流程。
3.根据权利要求2所述的方法,其特征在于,
若在所述设定时间内且超过所述设定时间时,所述内核均确认所述第二状态信息的取值用于指示所述用户态应用程序未执行完所述所需要处理的操作,则执行关机流程,以完成所述服务器的关机操作。
4.根据权利要求1所述的方法,其特征在于,所述关机中断指令为高级配置电源管理接口acpi中断指令;所述acpi中断指令为所述内核中的电源按键acpi button处理函数接收到的;以及所述内核查询所述第二状态文件中的第二状态信息,包括:
所述内核通过所述acpi button处理函数查询所述第二状态文件中的第二状态信息。
5.根据权利要求4所述的方法,其特征在于,当确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,则执行关机流程,以完成所述服务器的关机操作,包括:
当所述acpi button处理函数确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,向用户态的acpi事件处理进程发送acpi事件通知,以执行关机流程,以完成所述服务器的关机操作。
6.一种关机处理装置,其特征在于,设置于服务器中,所述服务器包括内核和用户态应用程序,所述装置,包括:
第一查询模块,用于查询第一状态文件,所述第一状态文件包括用于指示所述服务器是否即将关机的第一状态信息,所述第一状态信息的取值与所述内核是否接收到关机中断指令的结果相关;
执行模块,用于当确认所述第一状态信息的取值用于指示所述服务器即将关机时,则执行所述用户态应用程序所需要处理的操作;
修改模块,用于当执行完所述操作后,修改所述第二状态文件中的第二状态信息的取值,以使修改后的第二状态信息的取值用于指示已执行完所述操作;
第二查询模块,用于查询所述第二状态文件中的第二状态信息;
关机执行模块,用于当确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,则执行关机流程,以完成所述服务器的关机操作。
7.根据权利要求6所述的装置,其特征在于,
所述关机执行模块,具体用于若在设定时间内,所述内核确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,则执行关机流程。
8.根据权利要求7所述的装置,其特征在于,
所述关机执行模块,还用于若在所述设定时间内且超过所述设定时间时,所述内核均确认所述第二状态信息的取值用于指示所述用户态应用程序未执行完所述所需要处理的操作,则执行关机流程,以完成所述服务器的关机操作。
9.根据权利要求6所述的装置,其特征在于,所述关机中断指令为高级配置电源管理接口acpi中断指令;所述acpi中断指令为所述内核中的电源按键acpi button处理函数接收到的;以及
所述第二查询模块,具体用于通过所述acpi button处理函数查询所述第二状态文件中的第二状态信息。
10.根据权利要求9所述的装置,其特征在于,
所述关机执行模块,具体用于当所述acpi button处理函数确认所述第二状态信息的取值用于指示所述用户态应用程序执行完所述所需要处理的操作时,向用户态的acpi事件处理进程发送acpi事件通知,以执行关机流程,以完成所述服务器的关机操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011284295.1A CN112559057B (zh) | 2020-11-17 | 2020-11-17 | 一种关机处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011284295.1A CN112559057B (zh) | 2020-11-17 | 2020-11-17 | 一种关机处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112559057A true CN112559057A (zh) | 2021-03-26 |
CN112559057B CN112559057B (zh) | 2022-05-27 |
Family
ID=75043031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011284295.1A Active CN112559057B (zh) | 2020-11-17 | 2020-11-17 | 一种关机处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112559057B (zh) |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030093602A1 (en) * | 2001-11-13 | 2003-05-15 | Inventec Corporation | Method of shutting down a server in safety |
CN101840261A (zh) * | 2010-04-02 | 2010-09-22 | 艾默生网络能源有限公司 | 一种多电源供电服务器的安全关闭方法和系统 |
US20120047404A1 (en) * | 2010-08-19 | 2012-02-23 | Hon Hai Precision Industry Co., Ltd. | Electronic device and method for detecting power failure type |
CN102567047A (zh) * | 2010-12-06 | 2012-07-11 | 微软公司 | 快速计算机启动 |
CN102693136A (zh) * | 2011-03-23 | 2012-09-26 | 联想(北京)有限公司 | 计算机的快速启动方法、快速启动系统及启动系统 |
CN103793667A (zh) * | 2012-11-03 | 2014-05-14 | 上海欧朋软件有限公司 | 服务器关机方法 |
CN107179921A (zh) * | 2016-03-11 | 2017-09-19 | 阿里巴巴集团控股有限公司 | 终端关机方法和装置 |
CN107797848A (zh) * | 2016-08-29 | 2018-03-13 | 华为数字技术(苏州)有限公司 | 进程调度方法、装置和主机设备 |
CN108206847A (zh) * | 2016-12-19 | 2018-06-26 | 腾讯科技(深圳)有限公司 | Cdn管理系统、方法及装置 |
CN108958811A (zh) * | 2018-05-23 | 2018-12-07 | 郑州云海信息技术有限公司 | 一种关机方法、装置、设备及计算机可读存储介质 |
CN109120416A (zh) * | 2018-08-20 | 2019-01-01 | 电子科技大学 | 一种基于云网络的服务器的自适应延迟关机方法 |
CN109144873A (zh) * | 2018-08-22 | 2019-01-04 | 郑州云海信息技术有限公司 | 一种linux内核处理方法及装置 |
CN109948310A (zh) * | 2018-12-29 | 2019-06-28 | 华为技术有限公司 | 一种锁定方法及相关电子设备 |
CN110515820A (zh) * | 2019-08-29 | 2019-11-29 | 北京浪潮数据技术有限公司 | 一种服务器故障维护方法、装置、服务器及存储介质 |
-
2020
- 2020-11-17 CN CN202011284295.1A patent/CN112559057B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030093602A1 (en) * | 2001-11-13 | 2003-05-15 | Inventec Corporation | Method of shutting down a server in safety |
CN101840261A (zh) * | 2010-04-02 | 2010-09-22 | 艾默生网络能源有限公司 | 一种多电源供电服务器的安全关闭方法和系统 |
US20120047404A1 (en) * | 2010-08-19 | 2012-02-23 | Hon Hai Precision Industry Co., Ltd. | Electronic device and method for detecting power failure type |
CN102567047A (zh) * | 2010-12-06 | 2012-07-11 | 微软公司 | 快速计算机启动 |
CN102693136A (zh) * | 2011-03-23 | 2012-09-26 | 联想(北京)有限公司 | 计算机的快速启动方法、快速启动系统及启动系统 |
CN103793667A (zh) * | 2012-11-03 | 2014-05-14 | 上海欧朋软件有限公司 | 服务器关机方法 |
CN107179921A (zh) * | 2016-03-11 | 2017-09-19 | 阿里巴巴集团控股有限公司 | 终端关机方法和装置 |
CN107797848A (zh) * | 2016-08-29 | 2018-03-13 | 华为数字技术(苏州)有限公司 | 进程调度方法、装置和主机设备 |
CN108206847A (zh) * | 2016-12-19 | 2018-06-26 | 腾讯科技(深圳)有限公司 | Cdn管理系统、方法及装置 |
CN108958811A (zh) * | 2018-05-23 | 2018-12-07 | 郑州云海信息技术有限公司 | 一种关机方法、装置、设备及计算机可读存储介质 |
CN109120416A (zh) * | 2018-08-20 | 2019-01-01 | 电子科技大学 | 一种基于云网络的服务器的自适应延迟关机方法 |
CN109144873A (zh) * | 2018-08-22 | 2019-01-04 | 郑州云海信息技术有限公司 | 一种linux内核处理方法及装置 |
CN109948310A (zh) * | 2018-12-29 | 2019-06-28 | 华为技术有限公司 | 一种锁定方法及相关电子设备 |
CN110515820A (zh) * | 2019-08-29 | 2019-11-29 | 北京浪潮数据技术有限公司 | 一种服务器故障维护方法、装置、服务器及存储介质 |
Non-Patent Citations (2)
Title |
---|
CHI-HONG HWANG 等: ""A predictive system shutdown method for energy saving of eventdriven computation"", 《ACM TRANSACTIONS ON DESIGN AUTOMATION OF ELECTRONIC SYSTEMS》 * |
杨志军: ""基于流量信息的服务器监控系统设计与实现"", 《中国优秀硕士学位论文全文数据库 (信息科技辑)》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112559057B (zh) | 2022-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5815702A (en) | Method and software products for continued application execution after generation of fatal exceptions | |
JP5606633B2 (ja) | オペレーティングシステム(os)不在サービス環境においてファームウェアをプロビジョニングする方法 | |
US7243267B2 (en) | Automatic failure detection and recovery of applications | |
US7707454B2 (en) | Method for protecting backup data of a computer system from damage | |
JP5026494B2 (ja) | 高速で起動するコンピュータ | |
US8782643B2 (en) | Device and method for controlling communication between BIOS and BMC | |
JPH06236284A (ja) | コンピュータシステム処理状態を保存及び復元する方法及びコンピュータシステム | |
EP1162536A1 (en) | Multiple operating system control method | |
WO2008101386A1 (fr) | Procédé de récupération d'une exception à noyau unique dans un système à plusieurs noyaux | |
CN108845875B (zh) | 一种常驻进程保活系统以及方法 | |
US7383450B2 (en) | Low power firmware | |
US20030051127A1 (en) | Method of booting electronic apparatus, electronic apparatus and program | |
US8225289B2 (en) | Method and system for improved tool interaction with a target | |
JP2000259585A (ja) | システムアプリケーション管理方式とその管理方式を実行するためのプログラムを記録した記録媒体 | |
WO2017123225A1 (en) | Management with respect to a basic input/output system policy | |
CN112559057B (zh) | 一种关机处理方法和装置 | |
CN108089889B (zh) | Linux操作系统快速启动的实现方法 | |
CN111880850A (zh) | 一种辅助计算机设备关机的方法、装置、设备及存储介质 | |
CN115617263A (zh) | 块设备的自动发现及实时复制变化数据的方法及存储介质 | |
JP2001290637A (ja) | コンポーネントの動的置換装置及びコンピュータ読み取り可能な記憶媒体 | |
US7275132B2 (en) | Computing machine with hard stop-tolerant disk file management system | |
WO2015043010A1 (zh) | 数据处理方法、装置及电子设备 | |
CN112988365B (zh) | 一种线程管理方法、装置、设备及介质 | |
US20150230080A1 (en) | Media scanning method and media scanning terminal | |
CN114356659A (zh) | 重启方法及装置、终端设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |