面向多内核操作系统的容错方法

文档序号:32942923发布日期:2023-01-14 09:39阅读:50来源:国知局
面向多内核操作系统的容错方法

1.本发明属于计算机操作系统技术领域,具体涉及一种面向多内核操作系统的容错方法。


背景技术:

2.操作系统是计算机硬件和应用间的核心组件,当前,计算机的cpu的计算性能主要依赖于单个cpu的性能和芯片上cpu的数量多少,由于单个cpu受到物理器件工艺的限制,多内核系统的应用越来越广泛,其所包含的核心数量也越来越多。为了能在多内核系统上高效的运行操作系统以及灵活使用其上的资源,研究者设计和实现了多内核的操作系统。andrew baumann等人设计了一种多内核的模型,令不同的核心上运行不同的内核结点,运行在其上的程序可以通过进程间通信的方式进行交互(参见《the multikernel:a new os architecture for scalable multicore systems》,sosp'09)。
3.在多内核的操作系统的设计中,当其中一个内核出现故障或是需要进行系统更新时,为了原本运行在该内核上的程序能够继续提供服务,需要一定的容错机制。前人对此有一定研究,王磊等人发明了一种失效控制方式,设计了轻重内核,并通过将系统服务从故障核心上转移到其他正常核心的方式来实现容错(参见《多内核操作系统的失效控制方法及装置》,cn104657240a)。但是,该方式在重核心内核出现故障时,需要从多个轻核心内核中重新确定出新重核心内核,转移系统服务,并在所有内核中更新相应的内核状态信息,因此,机制较为复杂;同时,转移系统服务涉及到状态信息及数据的复制,因此,对性能也有一定影响。


技术实现要素:

4.为解决上述问题,提供一种面向多内核操作系统的容错方法,本发明采用了如下技术方案:
5.本发明提供了一种面向多内核操作系统的容错方法,用于快速恢复多内核操作系统的故障内核上运行的服务,该多内核操作系统包括:第一内核,运行有服务进程,该服务进程具有第一用户地址空间;第二内核,至少运行有用户进程;内存,其特征在于,包括如下步骤:步骤s1,当在第一内核上创建服务进程时,在第二内核上创建对应的影子服务进程,该影子服务进程具有第二用户地址空间,第一用户地址空间和第二用户地址空间映射到同一块内存;步骤s2,当服务进程修改第一用户地址空间的内容时,影子服务进程以相同方式修改第二用户地址空间的内容;步骤s3,当检测到第一内核失效后,第二内核将影子服务进程移入工作队列,使得用户进程从访问服务进程改为访问影子服务进程。
6.本发明提供的面向多内核操作系统的容错方法,还可以具有这样的技术特征,其中,多内核操作系统为微内核操作系统。
7.本发明提供的面向多内核操作系统的容错方法,还可以具有这样的技术特征,其中,服务进程还具有第一线程控制块;影子服务进程还具有第二线程控制块,第一线程控制
块在第一内核的工作队列中;第二线程控制块在第二内核的副本队列中。
8.本发明提供的面向多内核操作系统的容错方法,还可以具有这样的技术特征,其中,当第一内核失效时,第二内核将第二线程控制块移入工作队列中。
9.本发明提供的面向多内核操作系统的容错方法,还可以具有这样的技术特征,其中,用户进程通过进程间通信来访问服务进程以及影子服务进程。
10.发明作用与效果
11.根据本发明的面向多内核操作系统的容错方法,事先准备好了服务进程对应的影子服务进程,两者的用户地址空间映射到同一块内存,在服务进程与其所在的内核交互,修改其用户地址空间的内容时,影子服务进程也以相同的方式修改其用户地址空间的内容,从而使得两者的状态信息和数据都保持一致,影子服务进程在副本队列中,并不实际运行,在服务进程所在内核出现故障时,影子服务进程被放置到工作队列中,变成一个正常运行的任务,用户进程可以用原进程间通信调用直接访问影子服务进程,因此,该容错方法能用影子服务快速替代故障内核上运行的原服务,机制简单,占用较少系统资源,且不需要经过任何复制的过程,对性能的影响更小。
附图说明
12.图1是本发明实施例的服务进程和影子服务进程运行示意图;
13.图2是本发明实施例的多用户使用服务进程运行示意图;
14.图3是本发明实施例的失效时影子服务进程运行示意图。
具体实施方式
15.为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,以下结合实施例及附图对本发明的面向多内核操作系统的容错方法作具体阐述。
16.《实施例》
17.本实施例中,多内核操作系统为sel4,运行在基于x86架构的多核硬件平台上。
18.图1是发明实施例的服务进程和影子服务进程运行示意图。
19.如图1所示,多内核操作系统包括第一内核1,第二内核2以及内存3。该多内核操作系统中的每两个内核可以互为第一内核1和第二内核2。
20.服务进程11运行在第一内核1上,服务进程11在第一内核1上具有第一用户地址空间12以及第一线程控制块(thread control block,tcb)13。
21.影子服务进程21运行在第二内核2上,影子服务进程21在第二内核2上具有第二用户地址空间22以及第二线程控制块23。
22.通过如下步骤来进行失效服务的快速恢复:
23.步骤s1,当在第一内核1上创建服务进程11时,在第二内核2上创建对应的影子服务进程21,第一用户地址空间12和第二用户地址空间22映射到同一块内存3,也即映射到相同的物理地址空间。
24.步骤s2,当服务进程11与第一内核1交互,并修改第一用户地址空间12中的内容时,影子服务进程21也与第二内核2交互,以相同的方式修改第二用户地址空间22中的内容,使得两边在内存数据上一致。上述的权限管理和数据管理是通过sel4的能力
(capabilities)来实现的。此时,第二线程控制块23在第二内核2的副本队列中,也即影子服务进程21在副本队列中,不会真正运行,不会修改用户内存的内容。
25.图2是本发明实施例的多用户使用服务进程运行示意图。
26.如图2所示,第一用户进程14运行在第一内核1上,第二用户进程24运行在第二内核2上。第一用户进程14以及第二用户进程24都通过进程间通信(ipc)访问第一内核1上的服务进程11。
27.图3是本发明实施例的失效时影子服务进程运行示意图。
28.步骤s3,如图3所示,第一内核1出现故障,服务进程11失效,系统检测到第一内核1失效后,第二内核2将第二线程控制23移入第二内核2的工作队列,也即影子服务进程21变成正常运行的任务,影子服务进程21的状态信息和数据与失效前的服务进程11相一致。此时,第一内核1上的第一用户进程14失效,而第二内核2上的第二用户进程24可以通过完全相同的ipc调用(例如使用相同的sel4权限)来访问影子服务进程21,从而对用户进程24实现失效服务的快速恢复。
29.实施例作用与效果
30.根据本实施例提供的面向多内核操作系统的容错方法,事先准备好了服务进程对应的影子服务进程,两者的用户地址空间映射到同一块内存,在服务进程与其所在的内核交互,修改其用户地址空间的内容时,影子服务进程也以相同的方式修改其用户地址空间的内容,从而使得两者的状态信息和数据都保持一致,影子服务进程在副本队列中,并不实际运行,在服务进程所在内核出现故障时,影子服务进程被放置到工作队列中,变成一个正常运行的任务,用户进程可以用原进程间通信调用直接访问影子服务进程,因此,该容错方法能用影子服务快速替代故障内核上运行的原服务,机制简单,占用较少系统资源,且不需要经过任何复制的过程,对性能的影响更小。
31.上述实施例仅用于举例说明本发明的具体实施方式,而本发明不限于上述实施例的描述范围。
32.在上述实施例中,多内核操作系统为sel4,在本发明的其他方案中,也可以使用其他微内核操作系统,例如minix,也能实现本发明的技术效果。
33.在上述实施例中,为一个服务进程创建了一个对应的影子服务进程,在本发明的其他方案中,也可以为一个服务进程在多个其他内核上创建多个对应的影子服务进程,也能实现本发明的技术效果。
34.在上述实施例中,为一个服务进程创建了一个对应的影子服务进程,在本发明的其他方案中,也可以分别为多个服务进程创建对应的影子服务进程,也能实现本发明的技术效果。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1