Operating system for use with computer networks incorporating one or more data processors linked together for parallel processing and incorporating improved dynamic binding and/or load-sharing techniques
First Claim
Patent Images
1. A data processing system comprising:
- one or more data processors having a local memory and executing coded instructions written in a program code language native to that data processor; and
a store containing a collection of independent program code segments available to and shared by all the data processors in the system if more than one, the program code segments being written for a virtual processor using a predefined, virtual processor program code language different from the native program code language of the or each of the data processors, each independent program code segment in the collection constituting an individual program tool individually selectable and individually loadable, independent of other program code segments in the collection, into the local memory of each data processor for the purpose of executing data processing tasks allocated to that processor;
the one or more data processors each including;
a selector individually selecting from the collection of independent program code segments only specific ones of the program code segments from the collection required by the data processor for the execution of a current task allocated to the data processor;
a loader individually loading only the selected program code segments from the collection into the local memory of the data processor;
a translator translating the selected program code segments from the virtual processor program code language into the native program code language of the data processor in question to provide a plurality of translated program code segments; and
a binder binding the translated program code segments into an executable task to be performed by the data processor,wherein only the selected program code segments required for execution of the task are translated and bound into the executable task just at the time of loading the selected program code segments into the local memory of the data processor or during the execution of the task by the data processor.
1 Assignment
0 Petitions
Accused Products
Abstract
A data processing system is disclosed incorporating one or more processors linked together in a network and capable of parallel processing using a plurality of individual code segments common to all the data processors in the system but written for a virtual processor in a virtual processor code language which is different from that of all the data processors in the system. The code segments form unique autonomous tools common to all the processors in the system and are selected, translated and bound into a complete executable task by each individual processor at the time of loading or execution of a task by the respective processor.
-
Citations
19 Claims
-
1. A data processing system comprising:
-
one or more data processors having a local memory and executing coded instructions written in a program code language native to that data processor; and a store containing a collection of independent program code segments available to and shared by all the data processors in the system if more than one, the program code segments being written for a virtual processor using a predefined, virtual processor program code language different from the native program code language of the or each of the data processors, each independent program code segment in the collection constituting an individual program tool individually selectable and individually loadable, independent of other program code segments in the collection, into the local memory of each data processor for the purpose of executing data processing tasks allocated to that processor; the one or more data processors each including; a selector individually selecting from the collection of independent program code segments only specific ones of the program code segments from the collection required by the data processor for the execution of a current task allocated to the data processor; a loader individually loading only the selected program code segments from the collection into the local memory of the data processor; a translator translating the selected program code segments from the virtual processor program code language into the native program code language of the data processor in question to provide a plurality of translated program code segments; and a binder binding the translated program code segments into an executable task to be performed by the data processor, wherein only the selected program code segments required for execution of the task are translated and bound into the executable task just at the time of loading the selected program code segments into the local memory of the data processor or during the execution of the task by the data processor. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A data processing system comprising:
-
a plurality of data processors connected as nodes in a network of processors performing data processing tasks in parallel, each processor having a local memory and executing coded instructions written in a program code language native to that data processor; and a store containing a collection of independent program code segments available to and shared by all the data processors in the system, the program code segments being written for a virtual processor using a predefined virtual processor program code language different from the native program code language of the data processors in the system, each independent program code segment constituting an individual program tool individually selectable and individually loadable, independent of other program code segments in the collection, into the local memory of each respective data processor for the purpose of executing data processing tasks allocated to that data processor; each of the data processors including; a selector individually selecting from the collection of independent program code segments only specific ones of the code segments required by the data processor for the execution of a current task allocated to the data processor; a loader individually loading only the selected code segments from the collection to the local memory of the processor; a translator translating the selected program code segments from the virtual processor program code language into the native program code language of the data processor in question to provide a plurality of translated program code segments; and a binder binding the translated program code segments into the executable task to be performed by the data processor; wherein only the selected program code segments required for execution of the task are translated and bound into the executable task just at the time of loading the selected program code segments into the local memory of the data processor or during the execution of the task by the data processor, and wherein the network performs an allocation process in which each of the data processors in the network, upon being allocated a process, decides at the time that the process is allocated whether that one processor or a neighboring processor in the network is better able at that process allocation time to perform the process, and if the one processor decides that the one processor is better able at that process allocation time to perform the process than any of the neighboring processors, the one processor performs the process, and if the one processor decides that one of the neighboring processors is better able at that process allocation time to perform the process, the one processor reallocates the process to the one neighboring processor. - View Dependent Claims (8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A data processing system comprising:
-
a plurality of data processors, connected as nodes in a network, performing parallel processing tasks allocated to those processors, each processor having a local memory and executing coded instructions written in a program code language native to that data processor; and a store containing a collection of independent program code segments available to and shared by all the data processors in the system, each code segment constituting an individual program tool individually selectable and individually loadable, independent of other program code segments in the collection, into the local memory of each respective data processor, and bindable when so loaded with other individual selected and individually loaded program tools to form a task executable jointly by two or more of those processors, each of the data processors includes; a selector individually selecting from the collection of independent program code segments only specific ones of the program code segments from the collection required by the data processor for the joint execution of a current task jointly allocated to the data processor and another data processor in the network; a loader individually loading only the selected program code segments from the collection into the local memory of the data processor; and a binder binding only the individually selected program code segments into the task to be jointly executed by the data processor and another data processor, the selected program code segments being bound into a task executable jointly by both data processors only at the time of loading the selected code segments into the local memory of both data processors or during execution of the task by both data processors.
-
-
18. A method of processing data in an electronic data processor executing coded instructions written in a program code language native to that data processor, comprising the steps of:
-
providing a collection of independent program code segments written for a virtual processor using a predefined virtual processor program code language different from the native program code language of the data processor, each of the independent code segments in the collection constituting an individual program tool individually selectable and individually loadable, independent of other program code segments in the collection, into the local memory of the data processor, and bindable when so loaded with other such individually selected and loaded tools to form a task executable by the processor; instructing the data processor to execute a task; electronically selecting from the collection of independent code segments only specific ones of the program code segments required by the processor to perform the task; electronically loading only the selected program code segments into the local memory of the processor; electronically translating the selected code segments from the virtual processor program code language into the native program code language of the data processor; binding the translated program code segments into a task executable by the data processor; and executing the task in accordance with the translated and bound code segments, wherein the translating and binding of only the selected code segments required for execution of the task into the executable task takes place just at the time of loading the selected program code segments into the local memory of the data processor or at the time of execution of the task by the data processor.
-
-
19. A method of processing data in a data processing system including a plurality of electronic data processors each having a local memory and executing coded instructions written in its own native program code language, the data processors performing processes in parallel, comprising the steps of:
-
providing a collection of independent program code segments accessible to and shared by all the data processors in the system and enabling the data processors to perform data processing tasks allocated to them, each program code segment constituting an individual program tool individually selectable and individually loadable, independent of other program code segments in the collection, into the local memory of a respective one of the processors, and bindable by the one processor with other such individually selected and individually loaded program tools to form a task executable jointly by two or more of those processors; instructing two or more of the data processors jointly to perform a task; selecting from the collection of independent program code segments only those program code segments needed by the two or more data processors for the joint execution of an allocated task; loading the selected program code segments into the respective local memories of the two or more data processors; binding the selected program code segments into a task executable by the data processors and in accordance with the jointly allocated task; and the two or more data processors jointly executing the task; where the binding of the selected code segments into the task executable jointly by the two or more data processors takes place only at the time of loading the selected program code segments into the respective local memories of the two or more processors or during execution of the task by the two or more data processors.
-
Specification