一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

微内核系统服务错误恢复方法及系统

2022-09-03 17:29:30 来源:中国专利 TAG:


1.本发明涉及微内核操作系统技术领域,具体地,涉及微内核系统服务错误恢复方法及系统,更为具体地,涉及通过事务性进程间通信实现带状态的微内核系统服务错误恢复方法及系统。


背景技术:

2.微内核操作系统,指的是将原本作为操作系统组件,运行在高特权级(内核态)的功能模块化,形成多个独立的系统服务,并将这些系统服务模块从内核中拆分出去,在低特权级(用户态)下运行这些模块,从而最小化高特权级代码量,增加系统的鲁棒性,隔离性与安全性的操作系统架构。微内核操作系统强调模块化思想,不仅在编写时将功能拆分为模块化的系统服务,在运行时每个系统服务也是独立的模块,一般以进程的形式体现。系统服务通过对外暴露特定的接口,使应用程序可以通过进程间通信来调用这些接口,从而获取对应的系统服务。由于每个系统服务在运行时也是独立的模块,相比于宏内核操作系统,微内核操作系统具有更强的鲁棒性。由于系统服务运行在用户态而非内核态,因此一个系统服务的崩溃不会影响到内核,从而避免整个操作系统的崩溃。同时由于系统服务的高度模块化,一个系统服务的崩溃也不会影响到其他系统服务的运行。由于上述优点,微内核操作系统已经引起了工业界越来越高的重视,例如sel4微内核操作系统的一个衍生分支——okl4,已经成为苹果设备中安全容器的一部分。
3.但是在微内核操作系统中,实现系统服务的错误恢复存在一个较为棘手的问题:如何将一个发生错误的系统服务恢复到它发生错误之前的状态?直接重启系统服务固然可以起到错误恢复的作用,但这么做会丢失对应系统服务在发生错误前所有的运行时状态。例如,文件系统服务重启后,所有应用持有的文件描述符都将失效,应用无法通过一个之前获取的文件描述符打开对应的文件,文件内的偏移量等元数据信息也全部丢失。因此单纯重启系统服务带来的后果是不得不让依赖于该系统服务的应用重新执行某些操作,例如重新打开一个系统服务发生错误之前已经打开的文件。
4.上述问题的另一种表述是:如何实现有状态的系统服务错误恢复。对于这个问题,目前研究界和工业界也提出了一些解决方案,但基本都有比较严重的缺陷,无法做到低开销,易迁移,支持并发。例如忒修斯微内核操作系统使用rust语言编写,利用rust语言的特性实现了错误恢复的状态保存。但是这个解决方案的迁移难度很高,因为大多数微内核操作系统并不使用rust编写。curios则采取应用自行保存系统服务状态的解决方案。对于每个系统服务,应用都必须保存自身在这个系统服务中的元数据和状态。在进程间通信开始时,应用将这些状态数据通过内存映射的方式映射到系统服务的地址空间中,使系统服务可以使用这些数据;在进程间通信结束后,再解除对这段地址空间的映射,应用就拥有更新后的状态数据。该方案的缺点是较大的时间开销以及较大的代码修改量。时间开销来源于内存映射时需要修改页表所在内存的数据,对内存的修改产生的时间开销比较大。而由于与现有的系统服务逻辑不一致,因此需要对所有的系统服务和应用的代码都进行修改,需
要修改的代码量较大。因此,从性能和修改成本上,该方案可行性并不高。orisis方案则采取了运行时记录撤销日志(日志)的策略保存对应的系统状态。记录日志的实现是对用户透明的,即用户不会感知或者必须主动触发记录日志的操作,因此源代码层面不需要做修改,这是该方案的一大优点。但是该解决方案不支持一个系统服务内的并发,实用性并不理想。
5.本发明通过“事务性进程间通信”解决了上述问题。由于系统服务都是被动接收客户端(即应用)的请求,因此可以被看作一个数据库,而所有客户端与该系统服务之间的进程间通信可以被看作一个改变此系统服务这一“数据库”当前状态的“事务”,从而恢复的系统服务的状态的问题可以转化为如何恢复一个数据库在特定时刻的状态的问题,而类似于数据库事务,可以回滚,并发进行的进程间通信,就是事务性进程间通信(事务性进程间通信)。通过记录日志,保存系统服务数据快照,设定进程间通信时间区间等方式,本发明实现了低开销、易迁移、可并发的有状态的系统服务错误恢复。


技术实现要素:

6.针对现有技术中的缺陷,本发明的目的是提供一种微内核系统服务错误恢复方法及系统。
7.根据本发明提供的一种微内核系统服务错误恢复方法,包括:
8.通过clang插件在写指令前后自动插入日志记录指令,使对应的数据记录到日志中;基于日志实现微内核系统服务状态恢复;
9.在多个进程间通信的情况下,以会话为单位划分进程间通信,并通过快照机制记录进程间通信在会话中的状态,基于快照机制记录的状态实现微内核系统服务状态恢复;
10.在进程间通信并发的情况下,划分进程间通信时间区间,在同一个进程间通信时间区间内,所有事务性进程间通信只要有一个需要回滚,那么全部的事务性进程间通信都必须回滚至进程间通信时间区间开始的状态;在进程间通信时间区间的结束时通过快照机制记录当前微内核系统服务的状态,基于快照机制记录的状态实现微内核系统服务状态恢复;
11.所述事务性进程间通信是使进程间通信拥有数据库里的事务性的特性。
12.优选地,以被写入日志的数据地址作为索引,使用全局的位标记图标识地址对应的数据是否已经被记录过,从而确保不会重复记录同一个数据的状态以减少不必要的日志记录操作。
13.优选地,采用与缓存行相同的大小作为日志记录和位标记图的粒度。
14.优选地,通过静态分析确定位于同一缓存行中的,属于同一结构体的所有修改的数据,并将当前所有数据修改统一为一次日志记录。
15.优选地,将与标识符相关的上下文定义为一个会话,属于某个进程间通信会话的热点数据称为会话数据;当一个会话修改其他会话中的会话数据,则其他进程中被修改的数据被称为友邻会话数据;在不同微内核系统服务的事务性进程间通信都会被修改的数据称为全局会话数据;所有会话数据都需要在当前事务性进程间通信前通过快照机制记录;
16.所述标识符是应用通过进程间通信的方式获得微内核系统服务返回的标识符,之后使用当前标识符请求相应的服务。
17.优选地,使用intel的mpk机制进行数据区域权限隔离,并通过mpk机制自动监测需
要进行记录的友邻数据区域。
18.优选地,在分配进程间通信会话的数据时,基于会话的分配器,通过指定的拓展接口使所有不同的热点数据区域分布在微内核系统的不同位置,在利用快照机制时,在分配器层面通过会话id直接定位对应数据,并进行快照。
19.优选地,所述进程间通信时间区间的结束是指同一进程间通信时间区间内,最晚结束执行或阻塞的事务性进程间通信的结束或被阻塞的时间点;在进程间通信时间区间结束时,微内核系统服务异步对当前时间区间内所有的事务性进程间通信做快照备份;
20.当一个进程间通信被阻塞时,微内核系统通过快照机制对进程间通信的状态进行保存,在下一个进程间通信时间区域中,如果需要回滚,则进程间通信将会到阻塞的状态重新等待唤醒;保存当前对应进程间通信的上下文,包括寄存器与栈信息;从堆上分配的内存,在回滚时会再进程间通信时间区间结束后进行释放。
21.优选地,对于事务性进程间通信过程中调用的系统调用所造成的内核状态的改变,事务性进程间通信会记录在微内核系统服务处理当前进程间通信过程中调用的所有系统调用,在回滚时根据数据记录,对系统服务状态进行恢复。
22.根据本发明提供的一种微内核系统服务错误恢复系统,包括:
23.通过clang插件在写指令前后自动插入日志记录指令,使对应的数据记录到日志中;基于日志实现微内核系统服务状态恢复;
24.在多个进程间通信的情况下,以会话为单位划分进程间通信,并通过快照机制记录进程间通信在会话中的状态,基于快照机制记录的状态实现微内核系统服务状态恢复;
25.在进程间通信并发的情况下,划分进程间通信时间区间,在同一个进程间通信时间区间内,所有事务性进程间通信只要有一个需要回滚,那么全部的事务性进程间通信都必须回滚至进程间通信时间区间开始的状态;在进程间通信时间区间的结束时通过快照机制记录当前微内核系统服务的状态,基于快照机制记录的状态实现微内核系统服务状态恢复;
26.所述事务性进程间通信是使进程间通信拥有数据库里的事务性的特性。
27.与现有技术相比,本发明具有如下的有益效果:
28.1、本发明提出了一种针对微内核操作系统中系统服务的高效、易用的容错框架。在本框架中,进程间通信在出错之后可以被回滚到进程间通信执行之前的状态;
29.2、本发明利用微内核的特性,通过快照机制,进程间通信会话,进程间通信时间区间等降低了运行时开销,从而满足当前微内核容错机制的性能需求;
30.3、本发明提出事务性进程间通信的概念,利用微内核系统服务的特性,将进程间通信作为事务看待,有效地实现了有状态的系统服务错误恢复;
31.4、本发明通过全局位标记图、匹配缓存行数据粒度、静态分析等方式,减少无意义的重复状态记录,提升读写效率,避免记录无意义变量和批量记录结构体数据,降低错误恢复日志记录带来的额外开销;
32.5、本发明提出进程间通信会话及友邻会话的处理机制,通过快照机制和mpk技术实现自动检测友邻会话和数据权限保护,进一步提高日志记录效率和降低运行时开销,并提供分析工具提升开发者标注全局会话数据准确性;提供了新的会话分配器接口,在分配器层面进行数据区域的合理分划,提升了快照机制的效率;
33.6、提出进程间通信时间区间同步机制,通过处于同一个进程间通信时间区间中的所有事务性进程间通信必须同时提交或回滚的规则,解决读写依赖、写写依赖等数据依赖可能造成的数据一致性问题,支持系统服务并发处理事务性进程间通信;
34.7、本发明提出了一套完整的、可移植性强的微内核系统服务错误恢复技术。
附图说明
35.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
36.图1为友邻会话数据更新说明示意图。
37.图2为时间区间划分示意图。
具体实施方式
38.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
39.实施例1
40.本发明提出的一种微内核系统服务错误恢复方法,使得微内核系统服务能够以较小的代码改动量为代价,实现低开销、支持并发的有状态错误恢复。
41.本发明提出的一种微内核系统服务错误恢复方法主要需要解决以下问题:
42.发生错误时,如何对用户透明的回滚一个事务性进程间通信?
43.如何减少记录日志带来的额外开销?
44.如何支持并发?
45.根据本发明提供的一种微内核系统服务错误恢复方法,包括:
46.通过以下方式记录日志,实现事务性进程间通信的状态回滚:编写clang插件,实现在写指令前后自动插入日志记录指令;由于事务性进程间通信的状态只有完成和被回滚两种,因此对于一条在整个事务性进程间通信过程中会被多次修改的数据,使用全局的位标记图,以被写入日志的数据地址作为索引,标识该地址对应的数据是否已经被记录过,从而确保不会重复记录同一个数据的状态以减少不必要的日志记录操作。
47.为了减少对热点数据(即频繁访问和修改的数据)记录日志时产生的过高开销,本发明技术以会话为单位划分进程间通信,使用快照机制保存进程间通信在每个会话中的状态,降低日志记录的开销。
48.如图2所示,为了支持系统服务中并发性的进程间通信,划分进程间通信时间区间,在同一个进程间通信时间区间内,所有事务性进程间通信只要有一个需要回滚,那么全部的事务性进程间通信都必须回滚到该进程间通信时间区间开始的状态。在进程间通信时间区间的结尾,系统服务将会做一次快照,将当前系统服务的状态写入日志。
49.所述划分进程间通信时间区间是以某一个进程间通信开始执行的时刻为基准点,按照指定规则划分出一个时间区间。这里的“某一个”是一个递推的关系:微内核系统启动后,系统服务的第一个进程间通信的开始时刻就是第一个时间区间的开始时刻,由此可以
划分出第一个时间区间,然后在这个时间区间之后,最早开始执行的进程间通信的开始时刻就是第二个时间区间的开始时刻,以此类推下去。
50.所述快照机制是保存当前的整体数据,相当于对当前系统状态做一次“快照”。在恢复状态时可以根据快照数据直接将系统恢复到崩溃前的状态。
51.所述事务性进程间通信是使进程间通信拥有数据库里的事务性的特性;
52.数据库系统中的事务性特性是在数据库系统中,对一系列数据的更新可以打包成一个“事务”。处理事务有一些规则,其中一个很重要的规则就是保证事务的“原子性”。“原子性”的意思是:一个事务要么全部完成,要么全部不做,不能存在一部分数据被修改,一部分数据未被修改的中间状态,这样就能保证数据库中数据的正确性。本发明实现的进程间通信也具有这种性质,即为了保证进程间通信状态数据的正确性,要么本次进程间通信全部正常完成,要么本次进程间通信对状态数据的所有修改都必须全部恢复到未进行本次进程间通信前的状态。
53.具体地,对事务性进程间通信过程中的所有写指令都记录日志不仅会产生较高的开销,还会导致很多不必要的日志记录。通过静态分析,可以减少一部分不必要的日志记录。例如栈上的数据和新分配的数据都是无需记录的,因为这两类数据的状态都是非持续性的:栈上的数据在事务性进程间通信中要么随着回滚被重新分配,要么随着过程的成功完成而自动随着栈一起被系统回收,无需进行记录;而新分配的变量由于未经过初始化,因此在事务性进程间通信中和栈上数据的性质是一致的。
54.此外,记录日志本身的写入开销也需要考虑。粗粒度的日志会减少整个元数据占用的内存空间大小,但是需要更多的写入操作,反之亦然。本发明采用与平台的缓存行相同的大小(在实验平台上为64b)作为日志记录和位标记图的粒度,避免造成过多写放大的问题以及提高写入效率。在更新c语言结构体时,如果连续更新处于同一个缓存行中的不同数据段,那么多次对位标记图的访问和多次读取连续地址的数据是较高的浪费。因此,本发明通过静态分析确定位于同一缓存行中的,属于同一结构体的所有数据修改,并将这些修改统一为一次日志记录,削减了日志记录的开销。
55.具体地,系统服务内部一般会维护所有调用该系统服务的应用相关的状态信息。因此该应用往往会先通过进程间通信的方式获得系统服务返回的一个标识符,之后使用该标识符请求相应的服务,例如网络收发数据使用socket标识符。本发明将一个标识符相关的上下文定义为一个会话,属于某个进程间通信会话的热点数据可被成为会话数据。一个会话可能修改其他会话中的会话数据,其他进程中被修改的数据可被称为友邻会话数据。还有一部分全局数据,在不同系统服务的事务性进程间通信中都会被修改,这部分数据属于“全局会话”,被称为全局会话数据。以上所有会话数据都需要在本次事务性进程间通信前通过快照机制记录日志。
56.具体地,为了能够实现自动检测并记录相应的友邻会话数据,本发明方案使用intel的mpk(memory protection key)机制进行数据区域权限隔离,并通过该机制自动检测需要进行记录的友邻数据区域。初始状态下,每个数据区域的mpk权限都被设定为仅本会话可访问。当某个会话访问其他会话的数据区域时,会触发一次权限保护错误从而使系统感知该数据属于友邻会话数据,从而将该数据区域纳入快照机制的记录范围。本次进程间通信由于只会接触对应的友邻会话数据,因此不会更新无关的数据区域,如图1所示:会话0
只会更新本身的数据和友邻会话(会话1)的数据以及全局会话的数据,无关会话1、2的数据不会受到影响。
57.全局会话数据只能由开发者手动标注,本发明方案给出了一套分析工具,该工具通过对所有的写指令做记录以反馈是否有某些数据为多进程访问的热点区域,从而为开发者提供标注全局会话数据的参考。
58.为了方便进行快照以及标注全局数据,本发明方案对分配器进行了一些拓展,实现了基于会话的分配器。在分配某个进程间通信会话的数据时,应使用本发明方案指定的拓展接口。这些接口能够使所有不同的热点数据区域分布在系统的不同位置,在进行快照机制时可以在分配器层面通过会话id直接定位对应数据,并进行快照。
59.具体地,在一个系统服务并发处理多个事务性进程间通信请求时,进程间通信时间区间以某个事务性进程间通信开始执行的时间点作为进程间通信时间区间的起点,在该进程间通信结束执行或者被阻塞之前开始执行的事务性进程间通信都与其处在相同的进程间通信时间区间内。进程间通信时间区间的结束是指在同一进程间通信时间区间内,最晚结束执行或阻塞的事务性进程间通信的结束或被阻塞的时间点,如下图所示。在时间区间结束时,系统服务会异步地对该时间区间内所有的事务性进程间通信做快照备份。
60.在一个进程间通信时间区间结束时,系统服务会异步地进行快照,保存当前的状态。当一个进程间通信被阻塞而非完成时(如上图的进程间通信1),系统也会对其的状态进行快照,在下一个进程间通信时间区间中,如果需要回滚,则进程间通信1将会到阻塞的状态重新等待唤醒。此时需要保存对应进程间通信的上下文,包括寄存器与栈信息,因为此时进程间通信并没有结束,栈上的数据属于状态的一部分。由于回滚时需要回到之前的状态,因此信号量也需要进行记录。从堆上分配的内存,在回滚时会在进程间通信时间区间结束后进行释放,以免造成double free。
61.具体地,对于事务性进程间通信过程中调用的系统调用所造成的内核状态的改变,事务性进程间通信会记录在系统服务处理本进程间通信过程中调用的所有系统调用,在回滚时根据数据记录,尽可能的对系统状态进行恢复。
62.根据本发明提供的一种微内核系统服务错误恢复系统,包括:
63.通过以下方式记录日志,实现事务性进程间通信的状态回滚:编写clang插件,实现在写指令前后自动插入日志记录指令;由于事务性进程间通信的状态只有完成和被回滚两种,因此对于一条在整个事务性进程间通信过程中会被多次修改的数据,使用全局的位标记图,以被写入日志的数据地址作为索引,标识该地址对应的数据是否已经被记录过,从而确保不会重复记录同一个数据的状态以减少不必要的日志记录操作。
64.为了减少对热点数据(即频繁访问和修改的数据)记录日志时产生的过高开销,本发明技术以会话为单位划分进程间通信,使用快照机制保存进程间通信在每个会话中的状态,降低日志记录的开销。
65.如图2所示,为了支持系统服务中并发性的进程间通信,划分进程间通信时间区间,在同一个进程间通信时间区间内,所有事务性进程间通信只要有一个需要回滚,那么全部的事务性进程间通信都必须回滚到该进程间通信时间区间开始的状态。在进程间通信时间区间的结尾,系统服务将会做一次快照,将当前系统服务的状态写入日志。
66.所述划分进程间通信时间区间是以某一个进程间通信开始执行的时刻为基准点,
按照指定规则划分出一个时间区间。这里的“某一个”是一个递推的关系:微内核系统启动后,系统服务的第一个进程间通信的开始时刻就是第一个时间区间的开始时刻,由此可以划分出第一个时间区间,然后在这个时间区间之后,最早开始执行的进程间通信的开始时刻就是第二个时间区间的开始时刻,以此类推下去。
67.所述快照机制是保存当前的整体数据,相当于对当前系统状态做一次“快照”。在恢复状态时可以根据快照数据直接将系统恢复到崩溃前的状态。
68.所述事务性进程间通信是使进程间通信拥有数据库里的事务性的特性;
69.数据库系统中的事务性特性是在数据库系统中,对一系列数据的更新可以打包成一个“事务”。处理事务有一些规则,其中一个很重要的规则就是保证事务的“原子性”。“原子性”的意思是:一个事务要么全部完成,要么全部不做,不能存在一部分数据被修改,一部分数据未被修改的中间状态,这样就能保证数据库中数据的正确性。本发明实现的进程间通信也具有这种性质,即为了保证进程间通信状态数据的正确性,要么本次进程间通信全部正常完成,要么本次进程间通信对状态数据的所有修改都必须全部恢复到未进行本次进程间通信前的状态。
70.具体地,对事务性进程间通信过程中的所有写指令都记录日志不仅会产生较高的开销,还会导致很多不必要的日志记录。通过静态分析,可以减少一部分不必要的日志记录。例如栈上的数据和新分配的数据都是无需记录的,因为这两类数据的状态都是非持续性的:栈上的数据在事务性进程间通信中要么随着回滚被重新分配,要么随着过程的成功完成而自动随着栈一起被系统回收,无需进行记录;而新分配的变量由于未经过初始化,因此在事务性进程间通信中和栈上数据的性质是一致的。
71.此外,记录日志本身的写入开销也需要考虑。粗粒度的日志会减少整个元数据占用的内存空间大小,但是需要更多的写入操作,反之亦然。本发明采用与平台的缓存行相同的大小(在实验平台上为64b)作为日志记录和位标记图的粒度,避免造成过多写放大的问题以及提高写入效率。在更新c语言结构体时,如果连续更新处于同一个缓存行中的不同数据段,那么多次对位标记图的访问和多次读取连续地址的数据是较高的浪费。因此,本发明通过静态分析确定位于同一缓存行中的,属于同一结构体的所有数据修改,并将这些修改统一为一次日志记录,削减了日志记录的开销。
72.具体地,系统服务内部一般会维护所有调用该系统服务的应用相关的状态信息。因此该应用往往会先通过进程间通信的方式获得系统服务返回的一个标识符,之后使用该标识符请求相应的服务,例如网络收发数据使用socket标识符。本发明将一个标识符相关的上下文定义为一个会话,属于某个进程间通信会话的热点数据可被成为会话数据。一个会话可能修改其他会话中的会话数据,其他进程中被修改的数据可被称为友邻会话数据。还有一部分全局数据,在不同系统服务的事务性进程间通信中都会被修改,这部分数据属于“全局会话”,被称为全局会话数据。以上所有会话数据都需要在本次事务性进程间通信前通过快照机制记录日志。
73.具体地,为了能够实现自动检测并记录相应的友邻会话数据,本发明方案使用intel的mpk(memory protection key)机制进行数据区域权限隔离,并通过该机制自动检测需要进行记录的友邻数据区域。初始状态下,每个数据区域的mpk权限都被设定为仅本会话可访问。当某个会话访问其他会话的数据区域时,会触发一次权限保护错误从而使系统
感知该数据属于友邻会话数据,从而将该数据区域纳入快照机制的记录范围。本次进程间通信由于只会接触对应的友邻会话数据,因此不会更新无关的数据区域,如图1所示:会话0只会更新本身的数据和友邻会话(会话1)的数据以及全局会话的数据,无关会话1、2的数据不会受到影响。
74.全局会话数据只能由开发者手动标注,本发明方案给出了一套分析工具,该工具通过对所有的写指令做记录以反馈是否有某些数据为多进程访问的热点区域,从而为开发者提供标注全局会话数据的参考。
75.为了方便进行快照以及标注全局数据,本发明方案对分配器进行了一些拓展,实现了基于会话的分配器。在分配某个进程间通信会话的数据时,应使用本发明方案指定的拓展接口。这些接口能够使所有不同的热点数据区域分布在系统的不同位置,在进行快照机制时可以在分配器层面通过会话id直接定位对应数据,并进行快照。
76.具体地,在一个系统服务并发处理多个事务性进程间通信请求时,进程间通信时间区间以某个事务性进程间通信开始执行的时间点作为进程间通信时间区间的起点,在该进程间通信结束执行或者被阻塞之前开始执行的事务性进程间通信都与其处在相同的进程间通信时间区间内。进程间通信时间区间的结束是指在同一进程间通信时间区间内,最晚结束执行或阻塞的事务性进程间通信的结束或被阻塞的时间点,如下图所示。在时间区间结束时,系统服务会异步地对该时间区间内所有的事务性进程间通信做快照备份。
77.在一个进程间通信时间区间结束时,系统服务会异步地进行快照,保存当前的状态。当一个进程间通信被阻塞而非完成时(如上图的进程间通信1),系统也会对其的状态进行快照,在下一个进程间通信时间区间中,如果需要回滚,则进程间通信1将会到阻塞的状态重新等待唤醒。此时需要保存对应进程间通信的上下文,包括寄存器与栈信息,因为此时进程间通信并没有结束,栈上的数据属于状态的一部分。由于回滚时需要回到之前的状态,因此信号量也需要进行记录。从堆上分配的内存,在回滚时会在进程间通信时间区间结束后进行释放,以免造成double free。
78.具体地,对于事务性进程间通信过程中调用的系统调用所造成的内核状态的改变,事务性进程间通信会记录在系统服务处理本进程间通信过程中调用的所有系统调用,在回滚时根据数据记录,尽可能的对系统状态进行恢复。
79.本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
80.以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献