Distributed processing

Data processing: software development – installation – and managem – Software program development tool – Translation of code

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C717S152000, C709S202000, C709S203000

Reexamination Certificate

active

06256779

ABSTRACT:

BACKGROUND OF THE INVENTION
1. Field of the Invention
This invention relates to distributed processing, particularly but not exclusively distributed processing for control of a telecommunications network, and with developing and updating the control systems implemented on the distributed processors, which are preferably (but not necessarily) processes implemented in an object-oriented fashion.
2. Related Art
Telecommunications networks are increasingly required to support high bandwidth, low delay information flow. The bandwidth required is rapidly progressing from kilobits per second to megabits per second and even, for some applications, gigabits per second (particularly, for example, for video on demand; animated shared simulations, and distributed computing).
To provide “intelligent network” facilitates such as call redirection to particular numbers, computer programs run on a number of host computers (up to 100, for example) connected with switching centres. The way in which services are to be provided for particular customers (for example, a particular number to which calls for a customer are to be routed) depends upon data stored in relation to that customer on the host computers. Thus, there may be many millions of subscriber records on tens or hundreds of host computers.
In “Twenty-twenty vision—software architectures for intelligence in the 21st century”, P. A. Martin, BT Technol J Vol 13 No. 2 April 1995, the present inventor has proposed the use of object-oriented techniques to implement the distributed processing required.
A description of object oriented technology will be found in, for example,
BT Technol J Vol.
11 No. 3 (July 1993), “Object oriented technology”, edited by E. L. Cusack and E. S. Cordingley. Although the term is not always used with precision, object oriented computing here refers to the computing technique in which data is stored in “encapsulated” form in which, rather than being directly accessible by a calling program or routine, the data is accessible only by a limited part of a program which can read, write and edit the data. A record of data and its associated computer code are referred to as an “object”. Communication to and from an object is generally by “message passing”; that is, a call to the object passes data values and invokes the operation of one of the programs comprised within the object, which then returns data values.
Various languages are available for programmers who wish to use the objected oriented approach. Of these, the commonest at present is C++.
Distributed processing differs from single processor operation in several respects. Firstly, different access techniques may be required depending on whether other programs or data are located on the same host computer as a calling program or on a different host computer. The location of a program or data will also affect the speed with which it can be reached from another program. Also, one or more host computers may fail whilst leaving others in operation.
Distributed computing is conventionally performed, by using a “client-server” arrangement in which a “client” program on one computer interrogates a “server” program on another computer which then performs the function or returns the data required by the client program.
Object oriented techniques have not widely been applied to distributed processing. A summary of the state of the art in this respect may be found in “Object oriented programming systems”; Blair G., Pitman Publishing, London, 1991 (ISBN 0-273-03132-5) and particularly in Chapter
9
at pages 223-243; “Distributed systems and objects”; David Hutchison and Jonathan Walpole. Previous attempts have generally added new syntax to an existing computer language, or have created new computer languages, to extend conventional object oriented programming to deal with distributed processing.
SUMMARY OF THE INVENTION
In one aspect, the present invention provides a compiler (or pre-compiler) for generating code for use in distributed processing on a plurality of host computers (for example for controlling telecommunications systems) which is arranged to receive a source program written in a computing language, and to amend the source program to adapt it from single processor execution to multiple processor execution.
Conveniently, this aspect of the invention comprises a pre-compiler which can then be used with a more conventional compiler, it but will be recognised that the functionality of the invention could be incorporated directly into a re-written compiler.
Thus, in this aspect, the invention conceals from the programmer the complexities of adapting the program to operate on many different processors, reducing the time required to produce an executable program.
Conveniently, the executable program produced by the invention is a single executable program which may be distributed to all processors of the distributed computing system in identical copies. This makes it easy to add new host processors to the distributed computing system.
In the present embodiments, the source program is in an object oriented language, and is preferably in C++. C++ provides additional problems in compilation for distributed environments, since it is intended for single processor compilation and different processes communicate via shared memory pointers, which cannot operate in a multi processor environment
One particular problem which arises is in the use of so-called “virtual functions”. A virtual function is usually used to support the possibility of “inheritance”, which is often used in object oriented programming, as a way of indicating that one class of objects is a type of example of a more general class.
Virtual functions are provided in C++ by declaring a virtual function name in a (superior) class, but providing the code to execute the function in one or more inferior classes; in other words, subordinate classes which inherit the properties of the superior class.
This enables the name of a single function to be defined for all classes which are hierarchically below (and therefore inherit the behaviour of) the superior class, whilst enabling each such class to behave differently in performing the function.
Each C++ object, in a conventional, single processor C++ system, occupies a certain amount of computer memory within which the data comprised within that the object are stored. Additionally, if the object is of a class which uses virtual functions, the memory within which the object is stored will also store a pointer to a table of pointers (the “virtual pointer table” or VPTR) which, as the name implies, stores one or more pointers to the memory locations of corresponding one or more blocks of program code which implement the virtual function for the object.
Since C++ is intended as a single processor language, rather than a distributed processing language, this arrangement is usually satisfactory. However, we have realised that it is unsuitable for use in a distributed object oriented environment if it is desired to move objects between different host computers (or, more generally, different processes).
A particular aim of the present invention is therefore to provide a distributed object oriented computing system in which objects using virtual pointers may be moved or copied within the system.
In an embodiment, this is achieved by providing, on each host computer within the distributed computing system, means for reading an object; separating the data elements thereof from the virtual pointers thereof; and transmitting the data elements thereof to a further computer.
In this embodiment, each computer preferably additionally or alternatively comprises means for receiving data elements of an object from a further host computer; means for creating a new object of the same type but with dummy data locally; and means for inserting the received data values, but not virtual pointer values, into the object thus created to replace the dummy data therein.
Conveniently, in this embodiment, a compiler or precompiler

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Distributed processing does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Distributed processing, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Distributed processing will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-2508712

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.