一种计算机操作系统的进程自动快速恢复的方法和装置与流程

文档序号:30794505发布日期:2022-07-16 12:06阅读:214来源:国知局
一种计算机操作系统的进程自动快速恢复的方法和装置与流程

1.本发明属于计算机领域,涉及一种计算机操作系统的进程自动快速恢复的方法和装置。


背景技术:

2.通常计算程序启动运行需要经过如下过程:产生新进程,新进程从磁盘读取待执行的文件并加载,加载程序需要的共享库并链接,跳转至程序入口开始执行用户程序。在上述过程中,加载用户程序和共享库需要从磁盘读取数据,由于磁盘访问速度远低于内存,当应用程序体积较大时,程序的启动运行时间可能会较长。
3.由于程序自身的设计缺陷以及运行中一些偶然因素,计算机程序通常会不可避免的存在运行出错退出的情况,例如访问无效地址错误引起的程序退出。一些外服务的用户应用程序通常需要持续运行以保证服务能力持续提供,因此在程序退出执行后通常需要重新启动以继续提供相应的服务。当前一些进程重启运行的方法基本是外部进程监视目标进程并在目标程序退出后重新通过磁盘加载的方式来启动,此时过长的重启时间会严重的影响其服务的可获得性,如何降低程序的重启时间就成为保障服务质量的重要内容。


技术实现要素:

4.为了解决现有技术中存在的上述技术问题,本发明提出了一种计算机操作系统的进程自动快速恢复的方法和装置,可以快速的重启和恢复用户进程,同时保持进程的外部特征,简化进程相关管理工作,其具体技术方案如下:一种计算机操作系统的进程自动快速恢复的方法,包括以下步骤:步骤一,用户进程创建前,计算机的内核申请地址连续的两块内存作为进程控制块,内核使用其中一块内存进行用户进程创建,即其中一块内存作为当前进程控制块;步骤二,用户进程创建完成后,对当前进程控制块的数据进行复制备份至另一块内存即备份进程控制块;步骤三,执行用户进程逻辑后,用户进程的程序出现错误时,触发计算机系统的异常,系统收到异常信息并处理后,通知用户进程该异常信息,用户进程收到异常信息后,从备份进程控制块的数据信息中恢复用户进程数据,使用户进程状态回滚到初始状态,实现进程重启恢复。
5.进一步地,所述当前进程控制块新增的进程类型字段中,设置所述用户进程为自动恢复类型。
6.进一步地,所述步骤二具体包括以下子步骤:步骤2.1,保存计算机当前处理器硬件的寄存器数据值;步骤2.2,以当前进程控制块为源对象,以备份进程控制块为目的对象,复制当前进程控制块中直接存储的数据,并将备份进程控制块的对应指针指向新生成的数据对象;步骤2.3,复制用户进程的内存页表,同时设置所述内存页表的只读属性;
步骤2.4,对用户进程的指针类型数据,采用深拷贝模式来复制数据即申请新的内存以完成指针数据拷贝;步骤2.5,对备份进程控制块中的指向公共内核或其他进程的指针数据,进行指针拷贝,即同步对指针指向数据进行复制。
7.进一步地,所述步骤2.3具体为:对用户进程的内存页表,以写时复制策略,复制用户进程的内存页表,同时设置所述内存页表的只读属性,以使写时可以完成复制操作。
8.进一步地,所述步骤三中的系统处理包括:清除用户进程已设定的定时器,清除用户进程的软中断、延迟任务;释放用户进程已占用资源,包括进程页表、信号量、锁、文件、命名空间、线程控制资源;保留与备份进程控制块共享的数据,以及用户进程的子进程列表信息。
9.进一步地,所述从备份进程控制块的数据信息中恢复用户进程数据,使用户进程状态回滚到初始状态,以实现进程重启,具体为:从备份进程控制块中复制出备份的数据信息,数据信息包括进程内存页表、进程调度、进程上下文、进程id、进程信号量、锁、文件、命名空间;将复制出的备份的数据信息再拷贝至当前进程控制块中,采用深拷贝模式来复制;再释放当前进程控制块的资源,根据进程上下文数据信息,从备份的进程信息中,恢复设置处理器硬件的寄存器数据值;最后跳转到用户进程的程序执行入口地址,开始执行用户进程。
10.一种计算机操作系统的进程自动快速恢复的装置,包括一个或多个处理器,用于实现所述的一种计算机操作系统的进程自动快速恢复的方法。
11.一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现所述的一种计算机操作系统的进程自动快速恢复的方法。
12.有益效果:本发明通过复制备份进程初始空间,在需要重启时直接将进程的执行状态环境恢复至备份的初始状态,使得进程可以免去费时的磁盘数据读取过程,提升进程重启速度;同时保留必要的进程外部交互数据,使得进程的外部表征保持一致,减少对外部其他进程的影响,简化进程管理。
附图说明
13.图1为本发明的一种计算机操作系统的进程自动快速恢复的方法流程示意图;图2为本发明的当前进程控制块和备份进程控制块的内存存储地址关系示意图;图3为本发明的进程控制块在备份过程中的不同复制方式的示意图;图4为本发明实施例的当前进程控制块和备份进程控制块之间的关系结构示意图;图5为本发明的一种计算机操作系统的进程自动快速恢复的装置结构示意图。
具体实施方式
14.为了使本发明的目的、技术方案和技术效果更加清楚明白,以下结合说明书附图
和实施例,对本发明作进一步详细说明。
15.本发明的一种计算机操作系统的进程自动快速恢复的方法,在用户进程创建时复制备份该进程的进程控制块数据,当进程出错需要重启时,从备份的进程控制块数据中读取恢复当前进程的进程控制块,即恢复进程的执行状态至进程初始创建时刻,具体的,如图1所示,包括以下步骤:步骤一,用户进程创建前,计算机的内核申请地址连续的两块内存作为进程控制块,内核使用其中一块内存进行用户进程创建,即其中一块内存作为当前进程控制块;其中,用户进程创建具体可以是常规标准的进程创建过程;在当前进程控制块新增的进程类型字段中,设置当前用户进程为自动恢复类型。
16.步骤二,用户进程创建完成后,对当前进程控制块的数据进行复制备份至另一块内存即备份进程控制块中;此复制备份的数据作为进程后续错误恢复时的基准数据信息,计算机系统在产生错误时,根据备份的进程控制块中的相关数据对用户进程进行恢复,使用户进程再次以正确的逻辑运行。
17.所述步骤二具体包括以下子步骤:步骤2.1,保存计算机当前处理器硬件的寄存器数据值;步骤2.2,以当前进程控制块为源对象,以备份进程控制块为目的对象,复制当前进程控制块中直接存储的数据,并将备份进程控制块的对应指针指向新生成的数据对象;步骤2.3,对用户进程的内存页表,以写时复制策略,复制用户进程的内存页表,同时设置所述内存页表的只读属性,以使写时可以完成复制操作;其中的复制策略包括但不限于写时复制策略;步骤2.4,对用户进程的指针类型数据(指针形式存在的用户进程专属的配置属性数据),采用深拷贝模式来复制数据即申请新的内存以完成指针数据拷贝;步骤2.5,对备份进程控制块中的指向公共内核或其他进程的指针数据,进行指针拷贝,即同步对指针指向数据进行复制。
18.步骤三,执行用户进程逻辑后,用户进程的程序出现错误时,触发计算机系统的异常,系统收到异常信息并处理后,通知用户进程该异常信息,用户进程收到异常信息后,从备份进程控制块的数据信息中恢复用户进程数据,使用户进程状态回滚到初始状态,以实现进程重启恢复。其中异常信息的处理逻辑主要是内核中默认的各类会引起进程退出的信号(signal)的处理,例如段错误、浮点运算错误等错误的处理。
19.所述处理包括:清除用户进程已设定的定时器,清除用户进程的软中断、延迟任务;释放用户进程已占用资源,包括进程页表、信号量、锁、文件、命名空间、线程控制资源;保留与备份进程控制块共享的数据,以及用户进程的子进程列表信息。
20.所述从备份进程控制块的数据信息中恢复用户进程数据,使用户进程状态回滚到初始状态,以实现进程重启,具体为:从备份进程控制块中复制出备份的数据信息,如图4所示,数据信息包括进程内存页表、进程调度、进程上下文、进程id、进程信号量、锁、文件、命名空间;将复制出的备份的数据信息再拷贝至当前进程控制块中,同样采用深拷贝模式来复制,但是不对当前用户进程的子进程列表数据进行恢复;再释放当前进程控制块的资源,根据进程上下文数据信息,从备份的进程信息中,
恢复设置处理器硬件的寄存器数据值;最后跳转到用户进程的程序执行入口地址,开始执行用户进程。
21.实施例:本发明以linux系统下的进程和进程管理为基础,通过修改进程创建和异常信息处理的流程,实现一种在用户进程崩溃退出时自动恢复重启的方法和流程,提高用户服务的可靠性。
22.如图4所示,通过在进程创建时备份进程相关的进程状态数据,该备份数据一直存在于系统中,当进程发生致命错误需要退出时,从该备份数据中恢复进程状态并基于该状态继续执行。
23.linux进程均通过进程控制块(pcb)来管理,每个进程均有一个独立的进程控制块。在本实施例中,进程会同时拥有两个进程控制块,一个是备份数据的进程控制块,一个是常规的进程调度运行的进程控制块。
24.在进程初始创建前,需要申请俩倍大小的进程控制块内存以存放两个进程控制块,为了兼容和方便统一管理,两块进程控制块在内存中位于连续地址中。其中常规运行的进程控制块位于低地址位置,备份进程块位于高地址位置,通过连续地址形式将两者关联绑定,使系统在需要时可以快速确定和访问备份进程控制块数据,如图2所示。
25.进程控制块内存的申请方式可以通过伙伴系统malloc(动态内存分配)方式或者slab系统来完成,slab是linux操作系统的一种内存分配机制,slab系统包括slob、slub衍生系统,slob是一种linux内核三个可用内存分配器,机构被设计的小而高效,slub是 linux 内核中的一种分配器。
26.在进程创建完成后,在返回用户态执行用户应用逻辑前,需要进行进程控制块复制备份,复制备份操作具体如下:内存描写符mm_struct结构的内存页表复制。为保障整体复制性能,可采用写时复制策略,设置进程的内存页表和对应实际物理内存,使进程在实际写对应内存时才实际进行内存及对应页表的复制工作。
27.对进程信用值cred、进程任务组task_group、进程文件系统fs_struct、进程信号signal_struct等结构数据,以当前进程的对应数据为源数据进行内容复制,并将备份进程控制块的对应指针指向新生成的数据对象。
28.进程控制块中其余数据,直接将当前进程控制块中的数据复制到备份进程控制块中。
29.进程控制块的复制根据内容不同包含三种不同复制方式,通过写时复制的共享设置实现复制,通过数据内存新申请并数据复制和关联实现的复制,以及直接数据复制,如图3所示。
30.进程控制块内容复制完成之后,即可进行正常的进程运行,为了在进程出错需要退出时能够进行进程恢复,需要修改操作系统的相关处理操作。
31.由于linux操作系统在诸如除0等错误触发异常后,会通过signal信号机制来通知进程进行进程退出等操作,本实施例通过修改系统的信号处理逻辑以实现相应进程的恢复运行而不是退出,对应主要修改内容如下:对系统中包括但不限于进程终止sigill、进程总线异常sigbus、进程浮点运算异
常sigfpe、进程段错误异常sigsegv、进程管道异常sigpipe等信号,修改信号处理逻辑,判断当前进程是否是需要自动恢复的进程,如果是,则根据备份的进程控制块数据恢复进程状态,对于需要自动恢复的进程,其信号处理逻辑中进程恢复的内容如下:a)确定当前运行进程的进程控制块地址,同步确定当前进程的备份进程控制块地址;b)清除当前进程中已经设置的硬件定时器;c)清除当前进程设置的延迟任务;d)清除等待当前进程处理的软中断;e)释放当前进程已经占用的信号量、锁、文件,命名空间;f)释放当前进程控制块中进程信用值cred、进程任务组task_group、进程文件系统fs_struct、进程信号signal_struct等数据结构实际指向的内存;g)释放当前进程页表中已经被写时拷贝复制修改过的页表以及数据内存;h)以备份进程控制块为源,以当前进程控制块为目的,对进程信用值cred、进程任务组task_group、进程文件系统fs_struct、进程信号signal_struct等结构数据进行内容复制,并将当前进程控制块的对应指针指向新生成的数据对象;i)对备份进程控制块中其余数据,直接将备份进程控制块中的数据复制到当前进程控制块中;j)设置当前进程的页表为写时复制属性;k)从备份进程控制块中获取处理器寄存器状态值并设置当前处理器;l)跳转到用户程序入口地址开始执行;上述过程是程序运行过程中异常终止恢复的流程,在进程需要正常结束时,例如通过按下ctrl-c按键发送sigkill信号来终止用户程序,进程需要同步释放备份进程控制块的相关数据以完成进程退出,主要流程包括:正常释放当前进程的各类资源,包括信号、内存页表、文件资源;释放备份进程控制块中的内存页表;释放备份进程控制块中进程信用值cred、进程任务组task_group、进程文件系统fs_struct、进程信号signal_struct等结构数据;继续按常规流程退出进程,通知父进程,本进程已经退出;父进程释放当前进程的进程控制块和备份进程控制块。
32.与前述一种计算机操作系统的进程自动快速恢复的方法的实施例相对应,本发明还提供了一种计算机操作系统的进程自动快速恢复的装置的实施例。
33.参见图5,本发明实施例提供的一种计算机操作系统的进程自动快速恢复的装置,包括一个或多个处理器,用于实现上述实施例中的一种计算机操作系统的进程自动快速恢复的方法。
34.本发明一种计算机操作系统的进程自动快速恢复的装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面
而言,如图5所示,为本发明一种计算机操作系统的进程自动快速恢复的装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图5所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
35.上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
36.对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
37.本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的一种计算机操作系统的进程自动快速恢复的方法。
38.所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是风力发电机的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(smart media card,smc)、sd卡、闪存卡(flash card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
39.以上所述,仅为本发明的优选实施案例,并非对本发明做任何形式上的限制。虽然前文对本发明的实施过程进行了详细说明,对于熟悉本领域的人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行同等替换。凡在本发明精神和原则之内所做修改、同等替换等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1