Program execution system having a plurality of program versions

A program execution system for a program having one or more versions includes a program storing unit for storing a plurality of program versions, an exclusive condition storing unit for storing invocation data for abnormal termination of a process, an executing unit for selecting a version form among one or more versions of the program corresponding to the process to be invoked, a detecting unit for detecting an abnormality of the process during the execution, and an updating unit for transferring the invocation data. If the currently executing code version fails, the program execution system selects another version for execution, thus minimizing system interruption and improving system reliability.

BACKGROUND OF THE INVENTION 
1. Field of the Invention 
The present invention relates to a program execution system, and more 
particularly, to a program execution system having a plurality of program 
versions. 
2. Description of the Related Art 
In the information processing field, it is very important for a programmer 
to guarantee the reliability of the program. A program needs to be 
complete and not fail due to errors encountered during execution. However, 
as computer hardware technology advances, programs are becoming larger and 
more complex, making it difficult to achieve reliability. 
It is known that when a version of a program fails, the system uses another 
version of the program having the same function as the failed program to 
minimize job discontinuity. Such a system has a plurality of program 
versions with each version containing the same function but a slightly 
different code. 
If the currently executing code version fails, the program execution system 
selects another version for execution. This can be done in two ways. The 
first way is to maintain a static priority order among all versions of the 
code. The second way is, when a process or routine calls and activates 
another procedure, the system statically selects the program version of 
the called process corresponding to the calling process. 
However, the known systems have the following problems. The known systems 
use a fixed condition, e.g., giving a fixed priority to each version, in 
order to select a version of a program. If it is ascertained that a 
program version failed due to certain invocation or call-up data, the 
system will execute another version of the same program. Nevertheless, if 
the system executes the other version of the same program according to the 
same specified initial data next time, the system will repeatedly fail. To 
avoid such a situation, the programmer must interrupt the system execution 
and modify the condition in order to select another version of the 
program. 
SUMMARY OF THE INVENTION 
Accordingly, the present invention is directed to a program execution 
system that substantially obviates one or more of the problems due to 
limitation and disadvantages of the related art. 
Additional features and advantages of the invention will be set forth in 
the description which follows, and in part will be apparent from the 
description, or may be learned by practice of the invention. The 
objectives and other advantages of the invention will be realized and 
attained by the apparatus particularly pointed out in the written 
description and claims hereof as well as the appended drawings. 
To achieve these and other advantages and in accordance with the purpose of 
the invention, as embodied and broadly described, the invention provides a 
program execution system including program storing means for storing a 
plurality of program versions, each version corresponding to a process; 
exclusive condition storing means for storing invocation data for abnormal 
termination of a process, as an exclusive condition in order to exclude 
the version of the program corresponding to the abnormal termination; 
executing means for selecting a version from among one or more versions of 
the program corresponding to the process to be invoked, based on the 
exclusive condition stored in said exclusive condition storing means, for 
invoking the process based on the selected version of the program, and for 
executing the process; detecting means for detecting an abnormality of the 
process during the execution; and updating means for transferring the 
invocation data, detected by said detecting means upon abnormal 
termination of the executing process, into said exclusive condition 
storing means as one of the exclusive conditions. 
In another aspect, the invention is a program execution method for a 
program having one or more versions, comprising the steps of waiting for 
an invocation request in a state of waiting; invoking a program version 
process not containing an exclusive invocation condition; determining 
whether the invoked process completes without abnormal termination; 
sending invocation data to another processing unit if the invoked process 
abnormally terminates; and updating invocation data for an abnormally 
terminated process. 
It is to be understood that both the foregoing general description and the 
following detailed description are exemplary and explanatory and are 
intended to provide further explanation of the invention as claimed.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
Embodiments of the present invention will be described below with reference 
to the accompanying drawings, in which the same reference numerals denote 
the same parts throughout the accompanying drawings. 
An embodiment of the present invention provides a program execution system 
having a plurality of program versions. The program execution system 
prepares multiple versions of a program, with each version containing the 
same function but a slightly different code. 
If the currently executing code version fails, the program execution system 
selects another version for execution. This is can be done in two ways. 
The first way is to maintain a static priority order among all versions of 
the code. The second way is, when a process or routine calls and activates 
another procedure, the system statically selects the program version of 
the called process corresponding to the calling process. 
FIG. 1A shows one configuration of a program execution system. The 
illustrated system of FIG. 1A comprises several processing units one of 
which is shown in FIG. 1B. In this embodiment, one of the processing units 
1a executes a process or procedure for a program. In FIG. 1A, each 
processing unit, 1a, 1b, 1c calls up or invokes a process corresponding to 
a program and executes it. Each processing unit, 1a, 1b, 1c is connected 
to each other by a communication line 3, e.g., a local area network and a 
bus connection, through communication units, 2a, 2b, 2c, respectively. 
Each communication unit 2a, 2b, 2c, controls the communication between 
processing units. 
FIG. 1B schematically shows the structure of processing unit 1a. Processing 
unit 1a comprises a CPU (Central Processing Unit) 101, a ROM (Read Only 
Memory) 102, a RAM (Random Access Memory) 103, an I/O unit (Input/Output 
unit), and a system bus for enabling communication between the processing 
unit components. 
FIG. 2 shows the program execution system having a mechanism for updating 
an excluding or exclusive condition according to the first embodiment of 
the present invention. Each processing unit, 1a, 1b, 1c, connected by 
communication unit, 2a, 2b, 2c, respectively, executes a process for 
programs having a plurality of different program versions depending on the 
application or circumstance. This means that there are one or more 
versions of the same program for each process. Thus, all versions of the 
same program have the same process name and performs the same function(s). 
A program storing unit 21 stores each version of a program, having one or 
more versions corresponding to a process. 
An exclusive condition storing unit 22 stores information related to an 
invocation condition for each process, to exclude a version of program 
which has terminated abnormally during execution. 
FIG. 3 shows the data structure of an exclusive condition table stored in 
the exclusive condition storing unit 22. In FIG. 3, the exclusive 
condition table consists of four fields, which corresponds to a program 
version, namely, column number 31, process name 32, invocation data for 
abnormal 33, i.e., an exclusive condition, and program starting address 34 
corresponding to a program version of a program. One of the four fields 
corresponds to one version of a program. The exclusive condition 33 works 
as follows. If the information relating to invocation matches the 
exclusive condition 33 of the exclusive condition table, an execution unit 
28, described below, invokes another program version corresponding to the 
same process, but does not invoke the program version corresponding to the 
matching exclusive condition. As stated above, each program having one or 
more versions is stored in program unit 21 and the program starting 
address 34 points to the top address of memory storing the program 
version. 
As shown in FIG. 2, an execution unit 23 invokes and executes a process. A 
detecting unit 24 detects abnormal termination when an executing process 
terminates. When abnormal termination is detected by detecting unit 24, 
sending unit 25 sends various data to another processing unit, 1a,1b,1c 
through a communication unit, 2a,2b,2c. The data is received by the 
receiving unit 27 and an updating unit 26 updates the exclusive condition 
table stored in the exclusive condition storing unit 22. A re-execution 
unit 28 executes a process based on another version of the program instead 
of the abnormally terminated version. 
The state of the executing process and the waiting process are entered into 
each process queue. FIG. 4 shows the data structure of each process queue. 
In FIG. 4, the executing process queue 41 stores the state of one 
executing process and the waiting process queue 42 stores a plurality of 
waiting process states. In this instance, there are no executing process 
states and no waiting process states in the process queues. Each process 
queue consists of invocation data 43, the column number on the exclusive 
condition table 44, i.e., the column number in FIG. 3, and other general 
states of the process 45. 
The program executing system constructed, as discussed above, is operated 
as follows. 
FIG. 5 is a flow diagram illustrating the operation of the program 
execution system according to the first embodiment of the present 
invention(FIG. 2). An invocation request for a process occurs. The 
invocation request is triggered by a working process, or is sent by 
another processing unit, 1a, 1b, 1c through the communication line 3. If 
there is no invocation request, each of the processing unit, 1a, 1b, and 
1c is waiting for the invocation request, in a state of waiting (STEP 51). 
When the invocation request occurs and is entered into the process 
invocation request table 62, the execution unit 23 (FIG. 3) invokes a 
program version process not containing the exclusive invocation condition 
(STEP 52). The execution unit 23 invokes and executes the program version 
process which has yet not yet been abnormally by the terminated invocation 
data. 
For example, the processing unit 1a, shown in FIG. 1 receives an invocation 
request with the process name A and invocation data (0,-1) sent by another 
processing unit, 1b or 1c. As shown in FIG. 3, there is no exclusive 
conditions in this case. Consequently, the execution unit 23 selects 0000 
as the starting address of a program with column number 0, which is the 
smallest column number among the column numbers with a process A, and 
appends A to the waiting process queue (FIG. 4). 
Thereafter, the execution unit 23 moves the appended data into the 
executing process queue and executes the process. When the process has 
spent a predetermined time, referred to as a dispatch time, or the process 
completes without abnormal termination (STEP 53), the execution unit 23 
proceeds to STEP 51 to repeat the above operation. If the process 
terminates abnormally(STEP 53), the detecting unit 24 detects the abnormal 
termination. The abnormal termination means, for example, that a process 
operates for an invalid address. 
If the detecting unit 24 detects abnormal termination, it determines the 
appropriate invocation data based on the process name and the column 
number of the exclusive condition table (FIG. 3), and informs the sending 
unit 25, the updating unit 26 and re-execution unit 28 (STEP 54). In other 
words, the detecting unit 24 decides (0,-1) as the invocation data due to 
abnormal termination and 0 as the column number shown in FIG. 3. The 
sending unit 25 sends information to another processing unit, 1b or 1c 
through the communication line 3. 
The updating unit 26 updates the invocation data for the abnormally 
terminated processes, as exclusive condition in the exclusive condition 
storing unit 22 (STEP 55, STEP 56). 
Then re-execution unit 28 selects 0800 as the program starting address, 
which is column number 1 which is the smallest column number, from a 
plurality of program versions with process name A (See FIG. 11). 
According to the above discussion, the program execution system stores one 
or more versions of the program, and appends and stores the invocation 
data, i.e., the exclusive condition, when one process abnormally 
terminates using one version of program. When the program execution system 
activates a process, it excludes a version containing the invocation data, 
which is the exclusive condition, and process execution. Therefore, the 
program execution system can avoid abnormal termination of a process and 
thus, improve system reliability. 
In the first embodiment of present invention, although the processing units 
are distributed, respectively, the program execution system updates the 
exclusive condition when any processing unit terminates abnormally, and 
consequently causes all processing units to reflect the updated exclusive 
condition. Thus, this also improves system reliability. 
Also, as the program execution system immediately re-executes another 
version of the program, it avoids, interruption during operation. 
FIG. 6 shows the program execution system with a mechanism to update 
exclusive condition according to a second embodiment of the present 
invention. This embodiment differs from the previously discussed first 
embodiment as follows. A re-execution management unit 61 updates a process 
invocation request table 62 only according to a re-execution instruction 
by the detecting unit 24. Execution unit 23 executes a process according 
to the process invocation request table 62 regardless of re-execution 
management unit 61. 
The operation of each of the units is explained according to FIG. 7. 
For example, the processing unit 1a, shown in FIG. 1A receives an 
invocation request with process name A and invocation data (0,-1) sent by 
another processing unit, 1b or 1c. The invocation request is written into 
the process invocation request table 62. As shown in FIG. 3, there is no 
exclusive conditions in this case and the process queue is empty (FIG. 4). 
The execution unit 28 refers to the process invocation request table 62 
(FIG. 6) and reads the written process name and the invocation data, and 
thus obtains a process invocation request(STEP 71). Also, the execution 
unit 23 searches the exclusive condition table (FIG. 3) and selects a 
version of the program not containing the invocation data (0,-1) as an 
exclusive condition of choosing from a plurality of program versions with 
the process name A. In this embodiment, as shown in FIG. 3, there is no 
exclusive condition among any version of the program corresponding to the 
process name A. Consequently, because none of the program versions have 
the invocation data (0,-1) as the exclusive condition, the execution unit 
23 selects a program corresponding to the smallest column number with the 
process name A. The execution unit 23 appends the column number 0 and the 
program starting address 0000 to the end of the waiting process queue(STEP 
72). 
The execution unit 23 then shifts the contents currently at the top of the 
waiting process queue to the executing process queue and executes the 
process(STEP 73). When the process has spent the dispatch time given for 
A(STEP 74), the execution unit 23 shifts the process of the executing 
process queue to the end of the waiting process queue (STEP 75), and the 
execution unit 23 proceeds to STEP 71 to repeat the above operation. If 
the execution unit 23 could terminate normally (STEP 76), it removes A 
from the process queue (STEP 77). Conversely, if the executing process A 
terminates abnormally (STEP 76), the execution unit 23 signals an abnormal 
signal(STEP 78). 
As shown in FIGS. 2 and 6, if the detecting unit 24 detects the abnormal 
signal, it determines (0,-1) as the invocation data for abnormal 
termination and 0 as the column number in the exclusive condition table 
based on the contents of the executing process queue. The detecting unit 
24 informs sending unit 25, updating unit 26, and re-execution management 
unit 61. 
The sending unit 25 sends (0,-1) and 0 to another processing unit, 1b or 
1c, through the communication line 3. The updating unit 26 appends (0,-1) 
as the exclusive condition to a section corresponding to column number 0 
in the exclusive condition table (FIG. 3). 
One the other hand, when other processing units, 1b or 1c, receive the 
invocation data and the column number by sending unit 25 of a processing 
unit 1a, the processing unit receiving the information informs its 
updating unit 26. The updating unit 26 similarly appends (0,-1) as the 
exclusive condition to its invocation data section with the column number 
0 in the exclusive condition table. Consequently, each exclusive storing 
unit 22 is updated with exclusive condition (0,-1)and column number 0. 
The re-execution management unit 61, which receives invocation data (0,-1) 
and column number 0 from detecting unit 24 determines that process A is 
the process invocation request corresponding to column number 0, and 
writes A and (0,-1) into the process invocation request table 62. 
The execution unit 23 again refers to the process invocation request table 
62 and receives A and (0,-1) which is the new invocation process request 
(STEP 71). The execution unit 23 searches the exclusive condition table 
and selects a version of the program not containing the invocation data 
(0,-1) as the exclusive condition of choosing from a plurality of program 
versions with process name A. In this case, as shown in FIG. 10, the 
execution unit 23 selects column number 1, which does not contain 
invocation data (0,-1). As shown in FIG. 11, the execution unit 23 appends 
column number 1 and invocation data (0,-1) to the end of the waiting 
process queue (STEP 72). 
As shown in FIGS. 8 and 9, the execution unit 23 then shifts the contents 
currently at the top of the waiting process queue to the executing process 
queue and executes the process (STEP 73). 
After that above operation, when the invocation request is A and exclusive 
condition is A and exclusive condition is (0,-1) in the processing unit 
1a, 1b or 1c, the execution unit 23 excludes the program version of a 
process with column number 0 and executes the program version of a process 
with column number 1. 
Additional advantages and modifications will be apparent to those skilled 
in the art. The invention in its broader aspects is therefore not limited 
to the specific details, representative apparatus and method, and 
illustrative examples are and described. Accordingly, departure may be 
made from such details without departing from the spirit or scope of the 
general inventive concept. Thus, it is intended that this invention cover 
the modifications and variations of the invention provided they are within 
the scope of the appended claims and their equivalents.