一种面向高可用系统的冗余进程同步方法

文档序号:6512942阅读:149来源:国知局
一种面向高可用系统的冗余进程同步方法
【专利摘要】本发明提供一种面向高可用系统的冗余进程同步方法,将同步实施点放置于操作系统层,以任务同步方式在操作系统内核中完成对冗余进程的同步,将同步实施点设置在系统调用点,由于冗余进程装载完全相同的应用程序代码,所以会经历相同的系统调用操作,将同步实施点设置在系统调用上,能保证冗余进程在同步时刻应执行完全相同的操作,根据不同系统调用的特点,区别原生进程和冗余进程,实现在linux原有系统调用中插入相应的同步操作。
【专利说明】—种面向高可用系统的冗余进程同步方法
【技术领域】
[0001]本发明属于高可用系统设计领域,涉及一种面向高可用系统的冗余进程同步方法。
【背景技术】
[0002]随着计算机技术的发展和多核平台的规模的扩大,多核平台在金融电信等关键行业的应用也越来越广泛,对计算机系统的可靠性要求也提高,系统的失效或崩溃会造成巨大的经济损失,如何保证计算机系统的可靠性至关重要。
[0003]高端容错计算机系统通常采用了较为健全的容错机制,对关键进程构造双模冗余或多模冗余,采用进程间同步等手段确保冗余进程按照同样的执行逻辑运行,当其中一个关键进程出错时,冗余进程可以接着对外提供服务,通过监控系统对不同的错误采取相应的错误处理,从而提高系统的可用性。

【发明内容】

[0004]本发明的目的是提供一种面向高可用系统的冗余进程同步方法。
[0005]本发明的目的是按以下方式实现的,将同步实施点放置于操作系统层,以任务同步方式在操作系统内核中完成对冗余进程的同步,将同步实施点设置在系统调用点,由于冗余进程装载完全相同的应用程序代码,所以会经历相同的系统调用操作,将同步实施点设置在系统调用上,能保证冗余进程在同步时刻应执行完全相同的操作,根据不同系统调用的特点,区别原生进程和冗余进程,实现在Iinux原有系统调用中插入相应的同步操作,具体步骤如下:
(1)根据是否需要进行数据比较或系统调用参数的作用,将系统调用服务例程分为“读型”和“写型”,分别进行容错修改,读型和写型系统调用的典型代表是sys_read()与sys_write (),它们是Linux操作系统中最为常用的I/O系统调用服务例程。sys_read()与sys_write ()的入口参数有三个,分别是文件描述符fd,需要读入或者写入字符串的指针buf,以及字符数量count,对于冗余进程来说,在正常运行的情况下必须保持一致,所以需要在同步过程中对这三个参数进行比较和一致性调整;
(2)读型系统调用的冗余进程同步方法
在读型同步中,原生进程和冗余进程之间不仅需要同步,还需要交换数据,一般在同步点上由原生进程执行实际的系统操作,冗余进程获取函数返回值,宏FT_SYSCALL_IN定义了在冗余进程同步过程中需要使用的局部变量,宏SLAVE_IN( )、SLAVE_0UT()和MASTER_D0NE()用来进行同步控制;
冗余进程使用宏SLAVE_IN()等待原生进程先进,原生进程进入后先执行系统调用,然后调用宏MASTER_D0NE()等待冗余进程读取返回值,冗余进程读取完之后调用宏SLAVE_0UT()通知原生进程;
(3)写型系统调用的冗余进程同步方法 写型系统调用的参数需要用来进一步进行系统操作,因此需要进行数据比较,在写型同步中,冗余进程要发数据给原生进程,由原生进程比较中间数据并执行实际的系统操作,冗余进程获取函数返回值;
写型同步由宏MASTER_IN( )、MASTER_OUT()和SLAVE_DONE()进行同步控制,原生进程调用宏MASTER_IN()等待冗余进程先进,冗余进程进入后拷贝输出数据到缓冲区,调用宏SLAVE_DONE()唤醒原生进程,原生进程完成数据的比较后执行系统调用功能,最后通过宏MASTER_OUT ()通知冗余进程。
[0006]根据是否需要进行数据比较将系统调用服务例程分为“读型”和“写型”,分别进行容错修改。
[0007]在读型同步中,原生进程、冗余进程之间不仅需要同步,还需要交换数据,在同步点上由原生进程执行实际的系统操作,冗余进程获取函数返回值。
[0008]写型系统调用的参数需要用来进一步进行系统操作,因此需要进行参数数据比较,在写型同步中,冗余进程要发数据给原生进程,由原生进程比较中间数据并执行实际的系统操作,冗余进程获取函数返回值。
[0009]本发明的有益效果:本文给出了一种面向高可用系统的冗余进程同步方法,在操作系统层和系统调用层分别对冗余进程进行同步,冗余进程在同步时刻执行完全相同的操作,保证了冗余进程同步的正确性。该方法能有效地对冗余进程进行同步,提高系统可用性,并且性能损耗小,不依赖硬件架构,对应用程序和用户透明。
【专利附图】

【附图说明】
[0010]附图1读型系统调用主从进程执行流程图;
附图2写型系统调用主从进程执行流程图。
【具体实施方式】
[0011 ] 参照说明书附图对本发明的方法作以下详细地说明。
[0012]本发明的目的是力图解决冗余进程同步间存在的问题,本文提出了一种面向高可用系统的冗余进程同步方法,将冗余进程的同步实施点放置于操作系统层,以任务同步方式在操作系统内核中完成对冗余进程的同步。将同步实施点设置在系统调用点,由于冗余进程装载完全相同的应用程序代码,会经历相同的系统调用操作,将同步实施点设置在系统调用上,可以保证冗余进程在同步时刻应执行完全相同的操作。根据不同系统调用的特点,区别原生进程和冗余进程,在Iinux原有系统调用中插入相应地同步操作,完成原生进程和冗余进程间的同步。
[0013]本发明的目的是这样实现的,根据是否需要进行数据比较(或者说是系统调用参数的作用),将系统调用服务例程分为“读型”和“写型”,分别进行容错修改。读型和写型系统调用的典型代表是sys_read()与sys_write(),它们是Linux操作系统中最为常用的I/O系统调用服务例程。sys_read()与sys_write()的入口参数有三个,分别是文件描述符fd,需要读入或者写入字符串的指针buf,以及字符数量count,对于冗余进程来说,在正常运行的情况下必须保持一致,所以需要在同步过程中对这三个参数进行比较和一致性调整。[0014](I)读型系统调用的冗余进程同步算法
在读型同步中,原生进程和冗余进程之间不仅需要同步,还需要交换数据,一般在同步点上由原生进程执行实际的系统操作,冗余进程获取函数返回值。宏FT_SYSCALL_IN定义了在冗余进程同步过程中需要使用的局部变量,宏SLAVE_IN( )、SLAVE_0UT()和MASTER_D0NE()用来进行同步控制。
[0015]冗余进程使用宏SLAVE_IN()等待原生进程先进,原生进程进入后先执行系统调用,然后调用宏MASTER_D0NE()等待冗余进程读取返回值,冗余进程读取完之后调用宏SLAVE_0UT()通知原生进程,具体流程如附图1所示。
[0016](2)写型系统调用的冗余进程同步算法
写型系统调用的参数需要用来进一步进行系统操作,因此需要进行数据比较。在写型同步中,冗余进程要发数据给原生进程,由原生进程比较中间数据并执行实际的系统操作,冗余进程获取函数返回值,典型的系统调用如sys_write()。
[0017]写型同步由宏MASTER_IN( )、MASTER_0UT ()和 SLAVE_D0NE ()进行同步控制。原生进程调用宏MASTER_IN()等待冗余进程先进,冗余进程进入后拷贝输出数据到缓冲区,调用宏SLAVE_D0NE()唤醒原生进程。原生进程完成数据的比较后执行系统调用功能,最后通过宏MASTER_0UT()通知冗余进程,具体流程如附图2所示。
[0018]读型系统调用中首先通过宏FT_SYSCALL_IN定义冗余进程同步过程中需要使用的局部变量,判断进程是否为系统原生进程,若是,则进行正常的系统操作,在内存中分配共用缓冲区,将读取的数据拷贝到该缓冲区,调用MASTER_D0NE (),被冗余进程唤醒后,释放共用的缓冲区,清空指针并返回。若为冗余进程则调用宏SLAVE_IN(),被原生进程唤醒后,取出原生进程的函数返回值并对同步状态做记录,调用宏SLAVE_0UT()并返回。
[0019]写型系统调用同样判断进程是否为系统原生进程,若是,则调用宏MASTER_IN(),等待被冗余进程唤醒,唤醒后比较原生进程和冗余进程参数,若参数不同则进入错误处理,否则执行实际的系统操作并记录返回值,调用宏MASTER_0UT()通知冗余进程并返回。若为冗余进程,则分配内核临时缓冲区,拷贝待写参数,调用宏SLAVE_D0NE(),被原生进程唤醒后,释放临时缓冲区,清空相应的指针,获取原生进程的函数返回值并返回。
[0020]除说明书所述的技术特征外,均为本专业技术人员的已知技术。
【权利要求】
1.一种面向高可用系统的冗余进程同步方法,其特征在于将同步实施点放置于操作系统层,以任务同步方式在操作系统内核中完成对冗余进程的同步,将同步实施点设置在系统调用点,由于冗余进程装载完全相同的应用程序代码,所以会经历相同的系统调用操作,将同步实施点设置在系统调用上,能保证冗余进程在同步时刻应执行完全相同的操作,根据不同系统调用的特点,区别原生进程和冗余进程,实现在Iinux原有系统调用中插入相应的同步操作,具体步骤如下: (1)根据是否需要进行数据比较或系统调用参数的作用,将系统调用服务例程分为“读型”和“写型”,分别进行容错修改,读型和写型系统调用的典型代表是sys_read()与sys_write (),它们是Linux操作系统中最为常用的I/O系统调用服务例程,sys_read()与sys_write ()的入口参数有三个,分别是文件描述符fd,需要读入或者写入字符串的指针buf,以及字符数量count,对于冗余进程来说,在正常运行的情况下必须保持一致,所以需要在同步过程中对这三个参数进行比较和一致性调整; (2)读型系统调用的冗余进程同步方法 在读型同步中,原生进程和冗余进程之间不仅需要同步,还需要交换数据,一般在同步点上由原生进程执行实际的系统操作,冗余进程获取函数返回值,宏FT_SYSCALL_IN定义了在冗余进程同步过程中需要使用的局部变量,宏SLAVE_IN( )、SLAVE_0UT()和MASTER_D0NE()用来进行同步控制; 冗余进程使用宏SLAVE_IN()等待原生进程先进,原生进程进入后先执行系统调用,然后调用宏MASTER_DONE()等待冗余进程读取返回值,冗余进程读取完之后调用宏SLAVE_0UT()通知原生进程; (3)写型系统调用的冗余进程同步方法 写型系统调用的参数需要用来进一步进行系统操作,因此需要进行数据比较,在写型同步中,冗余进程要发数据给原生进程,由原生进程比较中间数据并执行实际的系统操作,冗余进程获取函数返回值; 写型同步由宏MASTER_IN( )、MASTER_OUT()和SLAVE_DONE()进行同步控制,原生进程调用宏MASTER_IN()等待冗余进程先进,冗余进程进入后拷贝输出数据到缓冲区,调用宏SLAVE_DONE()唤醒原生进程,原生进程完成数据的比较后执行系统调用功能,最后通过宏MASTER_OUT ()通知冗余进程。
2.根据权利要求1所述的一种面向高可用系统的冗余进程同步方法中,其特征在于根据是否需要进行数据比较将系统调用服务例程分为“读型”和“写型”,分别进行容错修改。
3.根据权利要求1所述的一种面向高可用系统的冗余进程同步方法,其特征在于在读型同步中,原生进程、冗余进程之间不仅需要同步,还需要交换数据,在同步点上由原生进程执行实际的系统操作,冗余进程获取函数返回值。
4.根据权利要求1所述的一种面向高可用系统的冗余进程同步方法,其特征在于写型系统调用的参数需要用来进一步进行系统操作,因此需要进行参数数据比较,在写型同步中,冗余进程要发数据给原生进程,由原生进程比较中间数据并执行实际的系统操作,冗余进程获取函数返回值。
【文档编号】G06F9/48GK103473133SQ201310438964
【公开日】2013年12月25日 申请日期:2013年9月25日 优先权日:2013年9月25日
【发明者】刘璧怡, 何志平, 谢若鸿, 周雄, 吴楠 申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1