具体实施方式
下面,参照附图详细说明应用了本发明的信息处理装置、信息处理系统和信息处理方法以及计算机程序的实施方式。
本发明在多个信息处理装置之间执行通信并执行应用了通信数据的数据处理的结构中,不管发生了内部处理错误、通信错误的哪一种,作为信息处理装置的实体A和B双方都能够正确地识别错误的发生,并使各自的内部状态同步,从而可以进行可靠的错误恢复并重新开始处理。
在以下的本发明的说明中,将在进行通信的同时执行数据处理的2个信息处理装置假定为实体A和实体B。另外,各个符号的含义定义如下。
A:在相互通信过程中最先发送数据的实体
B:与实体A进行通信的实体
TR:通过A与B的通信而执行的特定处理
ITRXi(v):实体X使用值v所作的第i项内部处理(i=0,1,2......)
Dataj:数据处理中作为处理或通信对象的第j项数据
IV:用于执行TR的初始值
SXi:实体X的内部状态(实体A的初始状态为SA0,实体B的初始状态为SB0)
在实体A和实体B相互通信以执行处理(TR)的信息处理系统中,如果发生了错误,则各个实体A、B分别返回各自的初始状态(SA0、SB0),由此实现内部状态的同步。检测出错误时的错误恢复处理(以下简称为错误处理)通常有以下两种处理方法。
(处理1)就此返回初始状态。
(处理2)向通信对方发送错误通知数据后返回初始状态。接收到错误通知数据的实体就此返回初始状态。
首先,在(处理1)的情况下,处于内部状态SAi而检测出错误的实体A从内部状态SAi返回初始状态SA0。另一方面,实体B不可能知道错误的发生,因此其内部状态仍然是SBi。因此,当实体A尝试重新开始执行数据处理(TR)的情况下,实体A、实体B之间的内部状态保持不同步而执行TR,不能得出正确的执行结果。当实体B处于内部状态SBi检测出错误时也是如此。
这种情况下,为了使各个实体的内部状态达到同步,需要有暂停处理。亦即,需要如下所示的处理:检测出错误的实体中断处理一定时间后返回初始状态,而另一个实体根据在一定时间内没有发送数据这一情况检测出错误的发生,由此返回初始状态。这种暂停处理所面临的问题是,要考虑数据延迟等因素适当地设定时间,这并不容易做到。
接着,在(处理2)的情况下,处于内部状态SAi而检测出错误的实体A向实体B发送错误通知数据后从内部状态SAi返回初始状态SA0,实体B接收到错误通知数据后返回初始状态SB0,由此可以实现内部状态的同步。
但是,如果存在从实体A向实体B连续多次发送数据的处理,则当从实体A发送数据的过程中发生通信错误的情况下,实体B试图向实体A发送错误通知数据,同时,实体A试图发送剩余的数据,因此而导致两个实体处于同时发送的状态,特别是在硬件的情况下有可能会陷入死锁。这样一来,利用上述(处理1)、(处理2)的处理难以可靠地使内部状态同步而实现错误恢复。
本发明采用的是在这种执行相互通信的信息处理系统中通过设定满足某种条件来可靠地实现各实体的内部状态同步的方式。下面叙述设定条件、通常状态下TR的执行、错误处理、错误发生时的动作。
(1)设定条件
为了使各实体的内部状态在即使发生了错误的情况下也能够同步,构筑满足以下的设定条件的信息处理系统。此外,所谓的信息处理系统是由执行相互通信以执行数据处理的多个信息处理装置等实体构成的。
(设定1):发送数据可以使接收端检测出有无通信错误。
(设定2):发送和接收的数据无论有无错误都可以被接收。
(设定3):发送和接收必须交替重复。
(设定4):实体B在发送了最后的数据之后仍然可以从实体A接收数据或者重置。
此外,在相互之间执行通信的信息处理系统中,这些设定条件1~4依照例如以下方式实现。
(设定1):在发送数据时,数据发送端实体在发送数据中附加相应的错误确认或用作订正信息的奇偶比特或校验和后发送出去。另外,数据接收端实体计算出接收数据的奇偶比特或校验和,判断数据中是否没有错误。
(设定2):所发送的数据的数据长度、数据包长度等对于全部数据都采用相同数值。或者,在实体AB之间进行一次协商后将比特长度固定下来。
(设定3):采用实体A、B都“从发送数据后直到接收到下一数据为止的期间内不执行内部处理”这样的动作结构,并将实体A作为最初的数据发送方。
(设定4):将实体B的动作构成为在TR执行结束后进入等待接收来自实体A的数据或者等待重置的状态。
【通常状态下的数据处理(TR)的执行实例】
下面说明在实体A、B之间执行数据通信的处理实例。首先,参照图1~图3说明没有发生错误的情况下的通信处理和实体A、B中的数据处理实例。
这里假定实体A和实体B分别执行N次内部处理(数据处理)和2N次数据发送和接收,由此完成全部数据处理(TR)。假定数据处理中所使用的初始值为初始值IV=Data0。
在图1中表示整个处理的序列图,在图2和图3中表示用于说明实体A和实体B的内部处理的执行次序的流程图。
首先,根据图1说明整个处理的序列。
处理开始(TR开始)后,在步骤S101中,实体A使用初始值(IV)执行数据处理(内部处理)ITRA1,根据初始值(IV)计算出数据处理的结果数据Data1。即,根据
Data1=ITRA1(IV)
得到数据Data1。
实体A将该数据Data1发送给实体B。
在步骤S102中,实体B执行验证处理,验证从实体A接收到的数据的正确性。数据Data1中附加有用作错误确认或订正信息的奇偶比特或校验和,实体B计算出接收数据的奇偶比特或校验和,判断数据中是否没有错误。
如果判断为发现数据中有错误,则转至错误处理。在后段详细说明错误处理。如果判断认为数据中没有错误,则在步骤S103中,实体B使用所接收的数据(Data1)执行数据处理(内部处理)ITRB1,根据数据(Data1)计算出数据处理的结果数据Data2。即,根据
Data2=ITRB1(Data1)
得到数据Data2。
实体B将该数据Data2发送给实体A。
在步骤S104中,实体A执行验证处理,验证从实体B接收到的数据的正确性。数据Data2中也附加有用作错误确认或订正信息的奇偶比特或校验和,实体A计算出接收数据的奇偶比特或校验和,判断数据中是否没有错误。
如果判断为发现数据中有错误,则转至错误处理;如果判断认为数据中没有错误,则使用所接收的数据(Data2)执行数据处理(内部处理)ITRA2,根据数据(Data2)计算出数据处理的结果数据Data。
重复执行这种数据处理、数据发送、数据验证处理,最终在步骤S121~S124执行与步骤S101~S104相同的处理;在步骤S124中,实体A对从实体B接收到数据DataN执行正确性验证,如果判断认为数据中没有错误就结束处理。
如果在全部数据处理、数据通信中都没有发生错误,则实体A和实体B分别执行N次内部处理(数据处理)和2N次数据发送和接收,由此完成全部数据处理(TR)。
接着参照图2、图3说明实体A、B各自的处理序列。首先参照图2说明实体A的处理。
在步骤S201中开始处理,在步骤S202中将参数i的初始值设定为i=0。参数i相当于内部状态SAi的参数i。在这种状态下,内部状态为初始状态SA0。此外,各实体在数据处理执行过程中存储保存自己的内部状态。亦即,实体A保存内部状态SAi(i=0,1,......),实体B保存内部状态SBi(i=0,1,......)。
在步骤S203中执行参数更新处理,将参数i加1。即,执行
i=i+1
的更新处理。
接着,在步骤S204中执行数据处理(内部处理)。该数据处理使用数据Data2(i-1)执行处理ITRAi,由此计算出处理结果数据Data2i-1。即,根据
Data2i-1=ITRAi(Data2(i-1))
计算出数据Data2i-1。
在步骤S205中,将步骤S204的数据处理(内部处理)的结果数据Data2i-1发送到实体B。然后,在步骤S206中,从实体B接收实体B中的数据处理(内部处理)的结果数据Data2i。
在步骤S207中执行接收数据Data2i的正确性验证,如果正确性得到确认则进入步骤S208,判断参数i是否等于最大值N;如果i<N则存在后续处理,因此在步骤S203中将参数i更新后重复执行步骤S204以下的处理。最后,在步骤S208中如果判断为发现参数i等于最大值N,则结束通信,转至步骤S209执行最终处理,结束全部处理。
在步骤S207中,如果判断为发现接收数据Data2i不正确,则进入步骤S210,转至错误处理。在后段说明错误处理的详细内容。
接着参照图3说明实体B的处理。在步骤S221中开始处理,在步骤S222中将参数i的初始值设定为i=0。参数i相当于内部状态SBi的参数i。在这种状态下,内部状态为初始状态SB0。
在步骤S223中执行参数更新处理,将参数i加1。即,执行
i=i+1
的更新处理。
接着,在步骤S224中从实体A接收数据。所接收的数据是实体A中的内部处理的结果数据,即数据Data2i-1。在步骤S225中对接收数据Data2i-1进行正确性验证。正确性验证处理使用接收数据中附带的例如奇偶比特或校验和执行处理。
如果接收数据的正确性得到确认,则进入步骤S226,在实体B一侧使用接收数据Data2i-1执行数据处理(内部处理)。该数据处理使用从实体A接收的数据Data2i-1执行处理ITRBi,由此计算出处理结果数据Data2i。即,根据
Data2i=ITRBi(Data2i-1)
计算出数据Data2i。
在步骤S227中,将步骤S226的数据处理(内部处理)的结果数据Data2i发送到实体A。然后,在步骤S228中判断参数i是否等于最大值N,如果i<N则表示存在后续处理,因此在步骤S223中更新参数i,重复执行步骤S224以下的处理。最后,如果在步骤S228中判断为发现参数i等于最大值N,则表示在实体一侧没有后续处理,因此进入步骤S229,转至等待接收来自实体A的数据的状态。
在步骤S225中接收数据Data2i-1的正确性验证中,如果确认接收数据中有错误,则进入步骤S230,转至错误处理。在后段说明错误处理的详细内容。
以上参照图1~图3说明了伴随着实体AB之间的通信所执行的数据处理序列。此外,这些处理序列的算法如下所述。
【算法】
1:假定i=0。
2:将i+1代入i。
3:实体A计算出Data2i-1=ITRAi(Data2(i-1))的结果,发送给实体B。
4:实体B接收到Data2i-1后判断有无错误。
如果有错误则执行错误处理,否则进入下一步。
5:实体B计算出Data2i=ITRBi(Data2i-1)的结果,发送给实体A。
6:实体A接收到Data2i后判断有无错误。
如果有错误则执行错误处理,否则进入下一步。
7:如果i=N则执行最终处理,TR结束。
否则返回2。
【错误处理】
接着,说明当伴随着实体之间的通信的数据处理中发生错误时的处理。
伴随着实体AB之间的通信的数据处理中发生错误的形式有以下4种。
(1)实体A的数据处理(内部处理)ITRAi中发生错误。
(2)实体B的数据处理(内部处理)ITRBi中发生错误。
(3)从实体A向实体B发送的通信数据Data2i-1中发生错误。
(4)从实体B向实体A发送的通信数据Data2i中发生错误。
有可能发生上述4种形式的错误。
实体A、B针对所有这些错误形式执行相同的错误处理。实体A和实体B分别执行错误处理。首先参照图4、图5的流程图说明这些各实体中的错误处理序列,然后参照图6~图9说明对应于上述(1)~(4)的各个错误形式的处理序列。
首先,参照图4所示的流程图说明错误发生时实体A所执行的处理次序。
实体A在检测到有错误发生或者从实体B接收到有错误发生的通知时,在步骤S301中向实体B发送错误通知数据。其中,实体A自己检测到上述(1)~(4)的各个错误形式或者从实体B接收到有错误发生的通知。具体情形如下所述。
(1)实体A的数据处理(内部处理)ITRAi中发生错误。
(4)从实体B向实体A发送的通信数据Data2i中发生错误。
在这两种情况下,实体A执行错误检测,以检测到这些错误为条件,就在步骤S301中由实体A向实体B发送初始的错误通知。
(2)实体B的数据处理(内部处理)ITRBi中发生错误。
(3)从实体A向实体B发送的通信数据Data2i-1中发生错误。
在这两种情况下,实体B执行错误检测,由实体B向实体A发送初始的错误通知,实体A接收到该错误通知后,在步骤S301中向实体B发送错误通知。
步骤S301的错误通知处理是分别与上述各个错误形式的处理相对应的错误通知处理。其后,实体A在步骤S302中从实体B接收错误通知数据。在步骤S303中,实体A以接收到来自实体B的错误通知为条件返回初始状态SA0。
依照此种方式,实体A执行:
(A1)错误通知数据发送处理;
(A2)错误通知数据发送后的错误通知数据接收处理;
(A3)以执行了这些错误通知数据发送接收处理为条件执行返回初始状态SA0的处理。
该处理序列是通用于上述(1)~(4)的全部出错形式而执行的处理。
此外,在上述处理中,在
(A2)错误通知数据发送后的错误通知数据接收处理中,如果发生了通信错误就会导致实体A无法确认所接收的数据是错误通知数据,但即使出现了这种情况,实体A也执行返回初始状态SA0的处理。亦即,实体A在执行了
(A1)错误通知数据发送处理之后,如果从实体B接收到数据,则即使无法确认所接收的数据是错误通知数据,仍然执行返回初始状态SA0的处理。在后段的“针对错误通知数据的通信错误的处理实例”一项中说明这种处理。
接着,参照图5所示的流程图说明错误发生时实体B所执行的处理次序。
实体B在检测到有错误发生或者从实体A接收到有错误发生的通知时,在步骤S321中向实体A发送错误通知数据。其中,实体B自己检测到上述(1)~(4)的各个错误形式或者从实体A接收到有错误发生的通知。具体情形分为如下所述。
(2)实体B的数据处理(内部处理)ITRBi中发生错误。
(3)从实体A向实体B发送的通信数据Data2i-1中发送错误。
在这两种情况下,实体B执行错误检测,将检测到这些错误作为条件,就在步骤S321中由实体B向实体A发送初始的错误通知。
(1)实体A的数据处理(内部处理)ITRAi中发生错误。
(4)从实体B向实体A发送的通信数据Data2i中发生错误。
在这两种情况下,实体A执行错误检测,由实体A向实体B发送初始的错误通知,实体B接收到该错误通知后,在步骤S321中向实体A发送错误通知。
步骤S321的错误通知处理是分别与上述各个错误形式的处理相对应的错误通知处理。其后,实体B在步骤S322中返回初始状态SB0。
依照此种方式,实体B执行:
(B1)错误通知数据发送处理;
(B2)以执行了错误通知数据发送处理为条件,执行返回初始状态SA0的处理。
该处理序列是通用于上述(1)~(4)的全部出错形式的处理。
接着,参照图6~图9说明(1)~(4)的出错形式、亦即
(1)实体A的数据处理(内部处理)ITRAi中发生错误;
(2)实体B的数据处理(内部处理)ITRBi中发生错误;
(3)从实体A向实体B发送的通信数据Data2i-1中发送错误;
(4)从实体B向实体A发送的通信数据Data2i中发生错误;这4种出错形式中的数据处理、通信序列。
图6是用于说明对应于(1)实体A的数据处理(内部处理)ITRAi中发生错误的处理次序的序列图。按照步骤S401~S412的顺序执行处理。此外,在步骤S401~S412中,步骤S401~S407是与错误相对应的处理,而步骤S409以后的处理则表示重新开始处理和重新开始处理后的处理。步骤S401~S407的错误应对处理在伴随着实体AB之间的通信的数据处理的执行期间内的任意时刻执行。
首先,实体A在步骤S401中检测到在实体A的数据处理(内部处理)ITRAi中发生了错误。实体A检测出错误后就在步骤S402中向实体B发送错误通知数据。该错误通知数据的发送处理对应于先前说明的图4的流程图中的步骤S301的错误通知数据的发送处理。
接着,实体B在步骤S403中接收来自实体A的错误通知数据,并在步骤S404中向实体A发送错误通知数据之后在步骤S405中返回初始状态SB0。步骤S404的错误通知数据发送处理与先前参照图5说明的处理流程中的步骤S321的错误通知数据发送处理相对应,步骤S405的初始状态SB0复原处理与图5的处理流程中的步骤S322的初始状态SB0复原处理相对应。
接着,实体A在步骤S406中接收来自实体B的错误通知数据,并在步骤S407中返回初始状态SA0。步骤S406的错误通知数据接收处理与先前参照图4说明的处理流程中的步骤S302的错误通知数据接收处理相对应,步骤S407的初始状态SA0复原处理与图4的处理流程中的步骤S303的初始状态SA0复原处理相对应。
其中,如后段的“针对错误通知数据的通信错误的处理实例”中所说明,实体A即使由于通信错误而无法确认在步骤S406中接收的来自实体B的数据是错误通知数据,也会进入步骤S407,返回初始状态SA0。在后段说明该处理的详细内容。
实体A在步骤S407中返回初始状态SA0后,在步骤S408中从初始状态开始重新执行数据处理(TR)。处理重新开始后,在步骤S409中,实体A使用初始值(IV)执行数据处理(内部处理)ITRA1,根据初始值(IV)计算出数据处理的结果数据Data1。即,根据
Data1=ITRA1(V1)
得到数据Data1。
实体A将该数据Data1发送给实体B。
在步骤S410中,实体B执行验证处理,验证从实体A接收到的数据的正确性。亦即,计算出奇偶比特或校验和,判断数据中是否没有错误。如果判断为发现数据中有错误,则转至错误处理。
这种情况下的错误处理是前面叙述的错误形式(1)~(4)中的(3)从实体A向实体B发送的通信数据Data2i-1中发送错误;在后段参照图8加以详细说明。
如果判断认为数据中没有错误,则在步骤S411中,实体B使用所接收的数据(Data1)执行数据处理(内部处理)ITRB1,根据数据(Data1)计算出数据处理的结果数据Data2。即,根据
Data2=ITRB1(Data1)
得到数据Data2。
实体B将该数据Data2发送给实体A。
在步骤S412中,实体A执行验证处理,验证从实体B接收到的数据的正确性。计算出数据Data2的奇偶比特或校验和,判断数据中是否没有错误。如果判断为发现数据中有错误,则转至错误处理。
这种情况下的错误处理是前面叙述的错误形式(1)~(4)中的(4)从实体B向实体A发送的通信数据Data2i中发生错误;在后段参照图9加以详细说明。如果判断认为数据中没有错误,则使用所接收的数据(Data2)执行数据处理(内部处理)ITRA2,根据数据(Data2)计算出数据处理的结果数据Data3。以后则重复执行同样的数据处理、数据发送、数据验证处理。
由以上所说明的序列可知,(1)实体A的数据处理(内部处理)ITRAi中发生错误时相应的错误处理中,按照先前说明的图4、图5的流程图执行处理,亦即,
实体A执行:
(A1)错误通知数据发送处理;
(A2)错误通知数据发送后的错误通知数据接收、或通信错误数据接收处理;
(A3)以执行了这些数据发送接收处理为条件,执行返回初始状态SA0的处理。
另一方面,实体B执行:
(B1)错误通知数据发送处理;
(B2)以执行了错误通知数据发送处理为条件,执行返回初始状态SA0的处理。
通过使各个实体执行这些处理,能够使其同步而分别返回初始状态SA0、SB0,从而实现可靠地使内部状态同步的错误恢复处理。
接着,参照图7说明(2)实体B的数据处理(内部处理)ITRBi中发生错误时相应的处理次序。按照步骤S501~S517的顺序执行处理。此外,在步骤S501~S517中,步骤S502~S512是错误检测和错误应对处理,而步骤S513以后的处理则表示重新开始处理和重新开始处理后的处理。步骤S502~S512的错误应对处理在伴随着实体AB之间的通信的数据处理的执行期间内的任意时刻执行。
首先,实体A在步骤S501中执行实体A的数据处理(内部处理)ITRAi,根据
Data2i-1=ITRAi(Data(2i-1))
得到数据Data2i-1。
实体A将该数据Data2i-1发送给实体B。
在步骤S502中,实体B执行验证处理,验证从实体A接收到的数据的正确性。亦即,计算出奇偶比特或校验和,判断数据中是否没有错误。如果判断为发现数据中有错误,则转至错误处理。这种情况下的错误处理是前面叙述的错误形式(1)~(4)中的(3)从实体A向实体B发送的通信数据Data2i-1中发送错误;在后段参照图8加以详细说明。
在该处理实例中,在步骤S502中,假定实体B确认从实体A接收到的数据的正确性,而在步骤S503中,实体B则执行实体B的数据处理(内部处理)ITRBi,根据
Data2i=ITRBi(Data2i-1)
得到数据Data2i。
实体B在该数据Data2i的生成处理中检测出错误的发生。实体B检测出错误后就在步骤S504中向实体A发送错误通知数据。该错误通知数据的发送处理对应于先前说明的图5的流程图中的步骤S321的错误通知数据的发送处理。
其后,实体B在步骤S505中返回初始状态SB0。步骤S505的初始状态SB0复原处理与图5的处理流程中的步骤S322的初始状态SB0复原处理相对应。
其后,实体A在步骤S506中接收到来自实体B的错误通知数据后,就在步骤S507中向实体B发送错误通知数据。该错误通知数据的发送处理对应于先前说明的图4的流程图中的步骤S301的错误通知数据的发送处理。
接着,实体B在步骤S508中接收来自实体A的错误通知数据,并在步骤S509中向实体A发送错误通知数据之后在步骤S510中返回初始状态SB0。步骤S509的错误通知数据发送处理与先前参照图5说明的处理流程中的步骤S321的错误通知数据发送处理相对应,步骤S510的初始状态SB0复原处理与图5的处理流程中的步骤S322的初始状态SB0复原处理相对应。
接着,实体A在步骤S511中接收来自实体B的错误通知数据,并在步骤S512中返回初始状态SA0。步骤S511的错误通知数据接收处理与先前参照图4说明的处理流程中的步骤S302的错误通知数据接收处理相对应,步骤S512的初始状态SA0复原处理与图4的处理流程中的步骤S303的初始状态SA0复原处理相对应。
此外,实体A即使由于通信错误而无法确认在步骤S511中接收的来自实体B的数据是错误通知数据,也会进入步骤S512,返回初始状态SA0。在后段的“针对错误通知数据的通信错误的处理实例”中详细说明这种处理。
实体A在步骤S512中返回初始状态SA0后,在步骤S513中从初始状态开始重新执行数据处理(TR)。以下的步骤S514~S517与图6的序列图的步骤S409~S412的处理相同,省略其说明。
由以上所说明的序列可知,(2)实体B的数据处理(内部处理)ITRBi中发生错误时相应的错误处理中,也按照先前说明的图4、图5的流程图执行处理,亦即,
实体A执行:
(A1)错误通知数据发送处理;
(A2)错误通知数据发送后的错误通知数据接收、或通信错误数据接收处理;
(A3)以执行了这些错误通知数据发送接收处理为条件,执行返回初始状态SA0的处理。
另一方面,实体B执行:
(B1)错误通知数据发送处理;
(B2)以执行了错误通知数据发送处理为条件,执行返回初始状态SA0的处理。
在图7所示的序列中,实体B将上述B1、B2的处理执行了2次;最终,当实体A返回初始状态SA0时,实体B也返回初始状态SB0,此时,数据处理(TR)从初始状态开始重新执行,因此可以可靠地使内部状态同步而实现错误恢复。
接着,参照图8说明(3)从实体A向实体B发送的通信数据Data2i-1中发生错误时相应的处理次序。按照步骤S601~S616的顺序执行处理。此外,在步骤S601~S616中,步骤S602~S611是错误检测和错误应对处理,而步骤S612以后的处理则表示重新开始处理和重新开始处理后的处理。步骤S602~S611的错误对应处理在伴随着实体AB之间的通信的数据处理的执行期间内的任意时刻执行。
首先,实体A在步骤S601中执行实体A的数据处理(内部处理)ITRAi,根据
Data2i-1=ITRAi(Data2(i-1))
得到数据Data2i-1。
实体A将该数据Data2i-1发送给实体B。
在本处理实例中,假定发生了该通信数据Data2i-1的通信错误。在步骤S602中,实体B执行验证处理,验证从实体A接收到的数据的正确性。亦即,计算出奇偶比特或校验和,判断数据中是否没有错误。如果判断为发现数据中有错误,则转至错误处理。
在该处理实例中,假定在步骤S602中实体B在从实体A接收到的数据中检测出错误。这种情况下,实体B在步骤S603中向实体A发送错误通知数据。该错误通知数据的发送处理对应于先前说明的图5的流程图中的步骤S321的错误通知数据的发送处理。
其后,实体B在步骤S604中返回初始状态SB0。步骤S604的初始状态SB0复原处理与图5的处理流程中的步骤S322的初始状态SB0复原处理相对应。
其后,实体A在步骤S605中接收到来自实体B的错误通知数据后,就在步骤S606中向实体B发送错误通知数据。该错误通知数据的发送处理对应于先前说明的图4的流程图中的步骤S301的错误通知数据的发送处理。
接着,实体B在步骤S607中接收来自实体A的错误通知数据,并在步骤S608中向实体A发送错误通知数据之后在步骤S609中返回初始状态SB0。步骤S608的错误通知数据发送处理与先前参照图5说明的处理流程中的步骤S321的错误通知数据发送处理相对应,步骤S609的初始状态SB0复原处理与图5的处理流程中的步骤S322的初始状态SB0复原处理相对应。
接着,实体A在步骤S610中接收来自实体B的错误通知数据,并在步骤S611中返回初始状态SA0。步骤S610的错误通知数据接收处理与先前参照图4说明的处理流程中的步骤S302的错误通知数据接收处理相对应,步骤S611的初始状态SA0复原处理与图4的处理流程中的步骤S303的初始状态SA0复原处理相对应。
此外,实体A即使由于通信错误而无法确认在步骤S610中接收的来自实体B的数据是错误通知数据,也会进入步骤S611,返回初始状态SA0。在后段的“针对错误通知数据的通信错误的处理实例”中详细说明这种处理。
实体A在步骤S611中返回初始状态SA0后,在步骤S612中从初始状态开始重新执行数据处理(TR)。以下的步骤S612~S616与图6的序列图的步骤S409~S412的处理相同,省略其说明。
由以上所说明的序列可知,(3)从实体A向实体B发送的通信数据Data2i-1中发生错误时相应的错误处理中,也按照先前说明的图4、图5的流程图执行处理,亦即,
实体A执行:
(A1)错误通知数据发送处理;
(A2)错误通知数据发送后的错误通知数据接收、或通信错误数据接收处理;
(A3)在完成了这些错误通知数据发送接收处理后返回初始状态SA0的处理。
另一方面,实体B执行:
(B1)错误通知数据发送处理;
(B2)以执行了错误通知数据发送处理为条件,执行返回初始状态SA0的处理。
在图8所示的序列中,实体B也将上述B1、B2的处理执行了2次;最终,当实体A返回初始状态SA0时,实体B也返回初始状态SB0,此时,数据处理(TR)从初始状态开始重新执行,因此可以可靠地使内部状态同步而实现错误恢复。
接着,参照图9说明(4)从实体B向实体A发送的通信数据Data2i中发生错误时相应的处理次序。按照步骤S701~S715的顺序执行处理。此外,在步骤S701~S715中,步骤S704~S710是错误检测和错误应对处理,而步骤S711以后的处理则表示重新开始处理和重新开始处理后的处理。步骤S704~S710的错误应对处理在伴随着实体AB之间的通信的数据处理的执行期间内的任意时刻执行。
首先,实体A在步骤S701中执行实体A的数据处理(内部处理)ITRAi,根据
Data2i-1=ITRAi(Data2(i-1))
得到数据Data2i-1。
实体A将该数据Data2i-1发送给实体B。
在步骤S702中,实体B执行验证处理,验证从实体A接收到的数据的正确性。亦即,计算出奇偶比特或校验和,判断数据中是否没有错误。如果判断为发现数据中有错误,则转至错误处理。这种情况下的错误处理是前面叙述的错误形式(1)~(4)中的(3)从实体A向实体B发送的通信数据Data2i-1中发送错误;执行参照图8所说明的处理。
在该处理实例中,在步骤S702中,假定实体B确认了从实体A接收到的数据的正确性,而在步骤S703中,实体B则执行实体B的数据处理(内部处理)ITRBi,根据
Data2i=ITRBi(Data2i-1)
执行数据Data2i的计算处理,将所生成的数据发送给实体A。
在本处理实例中,假定在该实体B的生成数据的通信过程中发生了错误。在步骤S704中,实体A执行验证处理,验证从实体B接收到的数据的正确性。亦即,计算出奇偶比特或校验和,判断数据中是否没有错误。如果判断为发现数据中有错误,则转至错误处理。
在该处理实例中,在步骤S704中实体A根据从实体B接收到的数据检测错误。这种情况下,实体A在步骤S705中向实体B发送错误通知数据。该错误通知数据的发送处理对应于先前说明的图4的流程图中的步骤S301的错误通知数据的发送处理。
接着,实体B在步骤S706中接收来自实体A的错误通知数据,并在步骤S707中向实体A发送错误通知数据之后在步骤S708中返回初始状态SB0。步骤S707的错误通知数据发送处理与先前参照图5说明的处理流程中的步骤S321的错误通知数据发送处理相对应,步骤S708的初始状态SB0复原处理与图5的处理流程中的步骤S322的初始状态SB0复原处理相对应。
接着,实体A在步骤S709中接收来自实体B的错误通知数据,并在步骤S710中返回初始状态SA0。步骤S709的错误通知数据接收处理与先前参照图4说明的处理流程中的步骤S302的错误通知数据接收处理相对应,步骤S710的初始状态SA0复原处理与图4的处理流程中的步骤S303的初始状态SA0复原处理相对应。
此外,实体A即使由于通信错误而无法确认在步骤S709中接收的来自实体B的数据是错误通知数据,也会进入步骤S710,返回初始状态SA0。在后段的“针对错误通知数据的通信错误的处理实例”中详细说明这种处理。
实体A在步骤S710中返回初始状态SA0后,在步骤S711中从初始状态开始重新执行数据处理(TR)。以下的步骤S711~S715与图6的序列图的步骤S409~S412的处理相同,省略其说明。
由以上所说明的序列可知,(4)从实体B向实体A发送的通信数据Data2i中发生错误时相应的错误处理中,也按照先前说明的图4、图5的流程图执行处理,亦即,
实体A执行:
(A1)错误通知数据发送处理;
(A2)错误通知数据发送后的错误通知数据接收、或通信错误数据接收处理;
(A3)以执行了这些错误通知数据发送接收处理为条件,执行返回初始状态SA0的处理。
另一方面,实体B执行:
(B1)错误通知数据发送处理;
(B2)以执行了错误通知数据发送处理为条件,执行返回初始状态SA0的处理。
在图9的序列中,实体B也执行上述B1、B2的处理;当实体A返回初始状态SA0时,实体B也返回初始状态SB0,此时,数据处理(TR)从初始状态开始重新执行,因此可以可靠地使内部状态同步而实现错误恢复。
【针对错误通知数据的通信错误的处理实例】
参照图6~图9所说明的处理序列并没有考虑在实体A和实体B之间收发的错误通知数据中可能发生的发送错误,但即使错误通知数据中发生了发送错误,只要实体A按照图4所示的流程图执行处理而实体B则按照图5所示的流程图执行处理,双方同步返回初始状态,就能够从初始状态开始重新执行数据处理(TR)。
下面,说明错误通知数据中发生了发送错误的情形。当错误通知数据中发生错误时,图4的流程图中的步骤S301和步骤S302的错误通知数据和图5的流程图中的步骤S321的错误通知数据在传输时出现错误。
首先,说明图4的步骤S301、S302的错误通知数据发生错误时的处理。在图4所示的流程图中,错误通知数据中发生通信错误的情形可以分为以下3种。
(1)在步骤S301中发送的数据中出现通信错误的情形;
(2)在步骤S302中接收的数据中出现通信错误的情形;
(3)(1)、(2)都发生的情形。
首先,说明当(1)在步骤S301中发送的数据中出现通信错误时的处理。在步骤S301中,实体A所发送的数据是错误通知数据。因此,当该数据中出现通信错误时,实体B在图3的处理流程中的步骤S225中执行接收数据的正确性验证,例如根据奇偶或校验和执行验证处理,判断为发现接收数据不正确,断定发生了通信错误。
根据该判断,实体B转至图3的处理流程中的步骤S230的错误处理。如果没有发生通信错误,则判断为是错误通知数据,执行正常的错误处理。
因此,无论在哪种情况下,实体B都会开始执行图5的流程图所示的错误处理,执行图5的步骤S321的错误通知处理,实体A则会执行图4的步骤S302的错误通知接收处理,因此,正常的错误处理得以执行,实体双方能够同步返回初始状态,重新开始数据处理。
接着,考察(2)在步骤S302中接收的数据中出现通信错误的情形。在执行步骤S302的时刻,实体A已经在步骤S301中向实体B发送了错误通知数据,实体A预测为从实体B必定会返回来错误通知数据。这是因为,在本发明的错误处理序列中规定,实体A在发送了错误通知数据之后会从实体B返回错误通知数据。
因此,实体A即使无法确认从实体B接收的数据是错误通知,仍然会执行返回初始状态SA0的处理。此时,实体B按照图5所示的步骤S321~S322的处理返回初始状态SB0,实体双方能够同步返回初始状态,重新开始数据处理。
最后,考察(3)(1)、(2)都发生的情形,亦即,图4的步骤S301、S302的错误通知数据的传输中都发生了错误的情形的处理。
该处理不过是上述
(1)在步骤S301中发送的数据中发生通信错误的情形;
(2)在步骤S302中接收的数据中发生通信错误的情形;
的处理的组合,实体A、B分别按照图4、图5所示的处理执行处理,返回初始状态后重新开始处理。
亦即,首先,当在步骤S301中发送的数据中发生了通信错误时实体B在图3所示的步骤S525的接收数据的正确性判定处理中检测出错误后开始错误处理,执行图5的流程图的步骤S321、S322后返回初始状态SB0。
接着,当在图4的步骤S302中的发送数据中发生了通信错误时实体A因为已经在步骤S301中将错误通知数据发送给实体B,所以预测为必定有错误通知数据从实体B返回;如果从实体B接收到数据,则无论其是错误通知还是无法确认其是错误通知,都执行图4所示的步骤S303的初始状态复原处理,执行返回初始状态SA0的处理。其结果是,实体双方能够同步返回初始状态,重新开始数据处理。
接着,说明图5的实体B一侧的处理流程中的错误通知数据传输过程中发生错误时的处理。亦即,图5的处理流程的步骤S321的从实体B向实体A发送的错误通知数据中发生了错误的情形。
这是与图4的步骤S302的错误通知数据传输相当的处理,与上述的(2)在步骤S302中接收的数据中发生通信错误的情况下的处理完全相同。
亦即,在执行步骤S302的时刻,实体A已经在步骤S301中向实体B发送了错误通知数据,由于实体A预测为必定有错误通知数据从实体B返回,因此如果实体A从实体B接收到数据,则无论能否确认其是错误通知,都会执行图4所示的步骤S303的初始状态复原处理,执行返回初始状态SA0的处理。
另一方面,实体B执行图5所示的步骤S321,然后,在步骤S322中执行返回初始状态SB0的处理,因此,其结果是,实体双方能够同步返回初始状态,重新开始数据处理。
【信息处理装置的结构】
参照图10说明执行上述数据通信和数据处理的信息处理装置的结构实例。执行上述处理的实体可以由能够执行数据通信的信息处理装置、例如PC、移动终端或IC卡等装置构成。或者,当在PC内构成的1个信息处理部通过总线与其他信息处理部通信的情况下,也可以执行上述处理;这种情况下,各个信息处理部发挥上述的实体A、实体B的功能。
图10中表示了2个信息处理装置110、120,作为构成实体的1个设置实例。信息处理装置110、120由例如PC构成。信息处理装置110具有数据处理部111、通信部112、错误检测部113、存储部114。与信息处理装置110进行通信的信息处理装置120也具有数据处理部121、通信部122、错误检测部123、存储部124。
信息处理装置110、信息处理装置120的结构相同,以信息处理装置110的结构为代表加以说明。数据处理部111由CPU等构成,按照预定的程序执行数据处理。数据处理用的程序保存在存储部114,CPU根据程序按照预先设定的处理序列执行数据处理。首先,规定了参照图2、图3所说明的数据处理以及参照图4、图5所说明的错误处理、初始状态复原处理等各种数据处理序列的计算机程序被保存到存储部114,按照该程序执行处理。
通信部112执行与信息处理装置20的通信。此外,可以通过例如因特网、LAN等局域网、电缆、总线等各种通信手段进行通信。错误检测部113除了根据上述奇偶、校验和等对通信数据进行正确性验证之外,也对内部处理中所执行的数据计算处理进行错误检测。这些错误检测也按照存储部114中保存的程序执行处理。
此外,在图10中将数据处理部111、错误检测部113区别开来表示;但这只是为了说明信息处理装置的功能而做的区分,实际的处理结构可以是使用1个CPU执行各种数据处理、错误检测处理的结构。
信息处理装置110、120分别由任一方作为上述实体A执行数据处理,由另一方作为实体B执行数据处理。实体A在按照图2所示的流程图执行数据处理的同时,按照图4所示的流程图执行错误处理。另外,实体B在按照图3所示的流程图执行数据处理的同时,按照图5所示的流程图执行错误处理。
通过执行这些处理,以各种形式所发生的错误,亦即,
(1)实体A的数据处理(内部处理)ITRAi中发生错误;
(2)实体B的数据处理(内部处理)ITRBi中发生错误;
(3)从实体A向实体B发送的通信数据Data2i-1中发送错误;
(4)从实体B向实体A发送的通信数据Data2i中发生错误;
无论发生了上述哪一种错误,实体双方都能够同步返回初始状态,可靠地重新开始数据处理。
以上参照特定的实施例详细说明了本发明。但是,不言而喻,本领域技术人员可以在不脱离本发明的要旨的范围内可对该实施例加以修正或替代。即,只是以示例的形式对本发明进行公开,并不是限定性的解释。
此外,在说明书中所说明的一系列处理可以由硬件或软件、或者两者的复合结构执行。在利用软件执行处理的情况下,可以将记录了处理序列的程序安装到嵌入了专用硬件的计算机内的存储器中加以执行,或者安装到能够执行各种处理的通用计算机中加以执行。
例如,可以将程序预先记录到用作记录介质的硬盘或ROM(ReadOnly Memory:只读存储器)中。或者,也可以预先将程序暂时或永久地记录到软盘、CD-ROM(Compact Disc Read Only Memory:只读光盘存储器)、MO(Magneto Optical:磁性光)盘、DVD(Digital VersatileDisc:数字多功能光盘)、磁盘、半导体存储器等可拆除记录介质中。这种可拆除记录介质可以作为所谓的软件包进行提供。
此外,除了从如上所述的可拆除记录介质将程序安装到计算机上之外,也可以从下载网站将程序通过无线传输或LAN(Local AreaNetwork:局域网)、因特网这类网络有线传输到计算机中;在计算机中接收由此传输过来的程序,安装到内置的硬盘等存储介质中。
此外,说明书中所记述的各种处理不仅可以按照所记述的时间序列执行,也可以根据执行处理的装置的处理能力或根据需要并行或个别执行。另外,本说明书中所谓的系统是多个装置的逻辑集合结构,各个构成装置并不限于在同一壳体内。