WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Integrated remote execution system for a heterogenous computer network environment    
United States Patent5442791   
Link to this pagehttp://www.wikipatents.com/5442791.html
Inventor(s)Wrabetz; Joan M. (New Hope, MN); Mason, Jr.; D. Dean (Minnetonka, MN); Gooderum; Mark P. (Bloomington, MN)
AbstractAn integrated remote execution system manages resources and provides for the distributed and remote execution of remote requests to those resources in a heterogenous computer network environment that has a plurality of resources loosely coupled to each other. The resources include at least two or more computer processors executing different operating system programs and any memory devices and subordinate programs operating together with the computer processors. Three major components are integrated into a single system by providing for a common remote execution interface that is incorporated into the requesting application program to provide a single programming interface for making remote requests to the system, a separate resource management component to provide information about the various resources in the network, and a remote service routine that can be executed on any of the computer processors selected perform the remote request. The remote execution interface can have the user to determine the selection of which resources to use, or it can automatically make the selection of which resources to use. The resource management component utilizes a hybrid model for managing resources in the network that includes a resource information database that is publish-based and a query module that is query-based. The remote service routine receives the remote requests from the remote execution interface which initiated the remote request and forks a separate remote execution control process for each remote request that actually initiates and performs the remote service in response to the remote request.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5442791
Integrated remote execution system for a heterogenous computer network

     environment - US Patent 5442791 Drawing
Integrated remote execution system for a heterogenous computer network environment
Inventor     Wrabetz; Joan M. (New Hope, MN); Mason, Jr.; D. Dean (Minnetonka, MN); Gooderum; Mark P. (Bloomington, MN)
Owner/Assignee     Aggregate Computing, Inc. (Minneapolis, MN)
Patent assignment
All assignments
Publication Date     August 15, 1995
Application Number     08/242,141
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     May 12, 1994
US Classification     719/330 709/202 709/226 709/229
Int'l Classification     G06F 009/44 G06F 013/14 G06F 015/16
Examiner     Kriess; Kevin A.
Assistant Examiner     Chavis; John Q.
Attorney/Law Firm     Patterson & Keough
Address
Parent Case     This application is a continuation of application Ser. No. 07/861,271, now abandoned, filed Mar. 31, 1992.
Priority Data    
USPTO Field of Search     395/200 395/650 395/700
Patent Tags     integrated remote execution heterogenous computer network environment
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5218699
Brandle

Jun,1993

[0 after 0 votes]
5126932
Wolfson
709/202
Jun,1992

[0 after 0 votes]
5031089
Liu
709/226
Jul,1991

[0 after 0 votes]
4951192
Chase, Jr.
717/149
Aug,1990

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed is:

1. An integrated system for providing resource management and distributed remote execution services in a heterogenous computer network environment having a plurality of resources loosely coupled to each other in the network environment, the resources including at least two or more computer processors executing different operating system programs, each different operating system program having a set of kernel programs unique to that operating system program and a unique file space, and any memory devices and subordinate programs operating together with the computer processors, at least some of the resources being available to perform remote execution services, the integrated system comprising:

a plurality of interface means, each of the plurality of interface means operably integrated with a unique one of a plurality of requestors in the network environment without requiring the set of kernel programs of the operating system program associated with that requester to be modified and recompiled, each of the plurality of interface means for issuing both a resource query and a resource request for a remote execution service, the resource query including one or more query parameters specifying a set of resources that can satisfy the resource request, the resource request including information necessary to perform the remote execution service;

database means operably connected to the network environment for storing one or more items of information about the resources in the network environment, the items of information stored in the database means being available to the plurality of requestors in the network environment and including one or more items of dynamic information;

agent means operating on at least one of the computer processors for periodically collecting across more than one file space the one or more items of dynamic information about one or more computer processor and any other resources operating together with the computer processors that are available to perform remote execution services and providing the items of information to the database means;

resource query means operably associated with the database means for receiving a resource query for a remote execution service from any one of the plurality of interface means, analyzing the database means to determine which of the resources in the network environment match the query parameters and are available to satisfy the resource request, and returning to the interface means a list of resources which can be used to satisfy the resource request; and

a remote execution service means operating on each of the computer processors that is available to perform remote execution services without requiring the set of kernel programs of the operating system program associated with that requester to be modified and recompiled, each remote execution service means for receiving the resource request for the remote execution service from the interface means, performing the remote execution service and returning any results from the remote execution service to the interface means,

such that one or more computer processors are chosen by the requestor as the resources to which to send the resource request in order to perform the remote execution services based upon the list of resources provided by the resource query means.

2. The integrated system of claim 1 wherein the query parameters include:

a set of resource requirements for the resource request; and

a scheduling policy for determining how the list of resources should be ordered by the resource query means.

3. The integrated system of claim 1 wherein multiple resource requests are sent to one or more computer processors using the list of resources generated in response to a single resource query.

4. The integrated system of claim 1 where the computer processors selected as the resources to perform the remote execution service are determined automatically by the interface means using a predetermined criteria.

5. The integrated system of claim 1 wherein the requestor in the network is an application program executing on one of the computer processors and wherein the computer processors selected as the resources to perform the remote execution service are determined by the application program.

6. The integrated system of claim 1 wherein the items of information about the resources are stored as one or more property-value pairs for each resource and wherein the integrated system further comprises:

resource definition database means operably connected to the database means and the resource query means for storing a strongly typed value for each property defined for a resource that together comprise the property-value pair for that property for that resource.

7. The integrated system of claim 1 wherein the remote execution service means includes:

first means executing on the computer processor for receiving the resource requests from the interface means and monitoring the status of the resource requests; and

second means operably initiated by the first means for each resource request for performing the remote execution service in response to the resource request.

8. The integrated system of claim 7 wherein the second means is capable of responding to and initiating one or more control directives between the second means and the interface means.

9. The integrated system of claim 8 further comprising:

third means capable of performing interactive input/output between the interface means and the remote execution service.

10. The integrated system of claim 1 wherein the operating system programs are different versions of Unix-based operating system programs.

11. A system for managing requests for remote execution services in a heterogenous computer network environment having a plurality of resources loosely coupled to each other in the network environment, the resources including at least two or more computer processors executing different operating system programs, each different operating system program having a set of kernel programs unique to that operating system program and a unique file space, and any memory devices and subordinate programs operating together with the computer processors, at least some of the resources being available to perform remote execution services, the system comprising:

a plurality of interface means, each of the plurality of interface means operably integrated with a unique one of a plurality of requestors in the network environment without requiring the set of kernel programs of the operating system program associated with that requester to be modified and recompiled, each of the plurality of interface means for issuing a resource query for a remote execution service, the resource query including one or more query parameters specifying a set of resources that can satisfy the resource request, the query parameters including:

a set of resource requirements for the resource request; and

a scheduling policy for determining how the list of resources should be ordered;

database means operably connected to the network environment for storing one or more items of information about the resources in the network environment, the items of information stored in the database means being available to the plurality of requestors in the network environment;

agent means operating on at least one of the computer processors for periodically collecting across more than one file space the one or more items of dynamic information about one or more computer processor and any other resources operating together with the computer processors that are available to perform remote execution services and providing the items of information to the database means; and

resource query means operably associated with the database means for receiving a resource query for a remote execution service from any one of the plurality of interface means, analyzing the database means to determine which of the resources in the network environment match the query parameters and are available to satisfy the resource request, and returning to the interface means a list of resources which can be used to satisfy the resource request in an order specified by the scheduling policy,

such that one or more computer processors are selected by the requestor as the resources to which to send the resource request in order to perform the remote execution services based upon the list of resources provided by the resource query means.

12. The system of claim 11 where the computer processors selected as the resources to perform the remote execution service are determined automatically by the interface means using a predetermined criteria.

13. The system of claim 11 wherein the requestor in the network is an application program executing on one of the computer processors and wherein the computer processors selected as the resources to perform the remote execution service are determined by the application program.

14. The system of claim 11 wherein the items of information about the resources are stored as one or more property-value pairs for each resource and wherein the integrated system further comprises:

resource definition database means operably connected to the database means and the resource query means for storing a strongly typed value for each property defined for a resource that together comprise the property-value pair for that property for that resource.

15. A system for servicing distributed remote execution requests in a heterogenous computer network environment having a plurality of resources loosely coupled to each other in the network environment, the resources including at least two or more types of computer processors, each different operating system program having a set of kernel programs unique to that operating system program and a unique file space, and any memory devices and subordinate programs operating together with the computer processors, at least some of the resources being available to perform remote execution services in response to the remote execution requests, the integrated system comprising:

a plurality of interface means, each of the plurality of interface means operably integrated with a unique one of a plurality of requestors in the network environment without requiring the set of kernel programs of the operating system program associated with that requester to be modified and recompiled, each of the plurality of interface means for issuing a resource request for a remote execution service, the resource request including information necessary to perform the remote execution service; and

a remote execution service means operating on each of the computer processors that is available to perform remote execution services without modifying the operating system program associated with that computer processor, each remote execution service means for receiving a resource request for a remote execution service from one or more of the plurality of interface means, performing the remote execution service and returning any results from the remote execution service to the interface means, the remote execution service means including:

first means executing on the computer processor for receiving the resource requests from the interface means and monitoring the status of the resource requests; and

second means operably initiated by the first means for each resource request for performing the remote execution service in response to the resource request.

16. The system of claim 15 wherein the second means is capable of responding to and initiating one or more control directives between the second means and the interface means.

17. The system of claim 16 further comprising:

third means capable of performing interactive input/output between the interface means and the remote execution service.

18. An integrated method for providing resource management and distributed remote execution services in a heterogenous computer network environment having a plurality of resources loosely coupled to each other in the network environment, the resources including at least two or more computer processors executing different operating system programs, each different operating system program having a set of kernel programs unique to that operating system program and a unique file space, and any memory devices and subordinate programs operating together with the computer processors, at least some of the resources being available to perform remote execution services, the method comprising the steps of:

(a) for each of the computer processors that is available to perform remote execution services, performing the steps of:

(a1) periodically collecting one or more items of information about that computer processor and the other resources operating together with that computer processors, and

(a2) periodically providing the items of information to a resource information database operably connected to the network environment for storing the items of information about the resources in the network environment;

(b) for each of a plurality of requestors in the network environment that can utilize a remote execution service, using a remote execution interface that is separate from the operating system program associated with the requestor and does not require the kernel programs of the operating system to be modified and recompiled to perform the steps of:

(b1) issuing a resource query for a remote execution service, the resource query including one or more query parameters specifying a set of resources that can satisfy the resource request, and

(b2) issuing a resource request for the remote execution service to one or more selected computer processors, the resource request including information necessary to perform the remote execution service;

(c) in a computer processor operably associated with the resource information database, performing the steps of:

(c1) receiving a resource query for a remote execution service from an application program from any of the plurality of requestors,

(c2) analyzing the database to determine which of the resources in the network environment match the query parameters and are available to satisfy the resource request, and

(c3) returning to the remote execution interface a list of available resources which can be used to satisfy the resource request; and

(d) for each of the selected computer processors that is to perform the remote execution service, using a remote execution service that is separate from the operating system program associated with the resource and does not require the kernel programs of the operating system to be modified and recompiled to perform the steps of:

(d1) receiving the resource request for the remote execution service from the remote execution interface,

(d2) performing the remote execution service, and

(d3) returning any results from the remote execution service to the remote execution interface,

such that one or more selected computer processors are chosen by the requestor as the resources to which to send the resource request in order to perform the remote execution services based upon the list of resources generated by analyzing the resource information database.

19. The integrated method of claim 18 wherein the query parameters include:

a set of resource requirements for the resource request; and

a scheduling policy for determining how the list of resources should be ordered by the resource query means.

20. The integrated method of claim 18 wherein multiple resource requests are sent to one or more computer processors using the list of resources generated in response to a single resource query.

21. The integrated method of claim 18 where the selected computer processors are determined automatically by the remote execution interface using a predetermined criteria.

22. The integrated method of claim 18 wherein the requestor in the network is an application program executing on one of the computer processors and wherein the selected computer processors selected are determined by the application program.

23. The integrated method of claim 18 wherein the items of information about the resources are stored as one or more property-value pairs for each resource in a resource definition database associated with the resource information database.

24. The integrated method of claim 18 wherein step (d) is accomplished by the steps of:

executing a first program on the selected computer processor to receive the resource requests from the remote execution interface and monitor the status of the resource requests; and

executing a second program for each resource request that is initiated by the first program to perform the remote service in response to the resource request.

25. The integrated method of claim 18 wherein the second program is capable of responding and initiating one or more control directives between the selected computer processor and the remote execution interface.

26. The integrated method of claim 18 wherein step (d) further comprises the step of:

executing a third program for a selected resource request that is initiated by the first program to perform interactive input/output between the selected computer processor and the remote execution interface.

27. The integrated method of claim 18 wherein the operating system programs are different versions of Unix-based operating system programs.

28. A method for managing distributed remote execution services in a heterogenous computer network environment having a plurality of resources loosely coupled to each other in the network environment, the resources including at least two or more computer processors executing different operating system programs, each different operating system program having a set of kernel programs unique to that operating system program and a unique file space, and any memory devices and subordinate programs operating together with the computer processors, at least some of the resources being available to perform remote execution services, the method comprising the steps of:

(a) for each of the computer processors that is available to perform remote execution services, performing the steps of:

(a1) periodically collecting one or more items of dynamic information about that computer processor and the other resources operating together with that computer processors, and

(a2) periodically providing the items of dynamic information to a resource information database operably connected to the network environment for storing the items of information about the resources in the network environment from more than one file space;

(b) for each of a plurality of requestors in the network environment that can utilize a remote execution service, issuing a resource query for a remote execution service, the resource query including one or more query parameters specifying a set of resources that can satisfy the resource request, the query parameters including:

a set of resource requirements for the resource request; and

a scheduling policy for determining how the list of resources should be ordered;

(c) in a computer processor operably associated with the resource information database, performing the steps of:

(c1) receiving a resource query for a remote execution service from an application program from any of the plurality of requestors,

(c2) analyzing the database to determine which of the resources in the network environment match the query parameters and are available to satisfy the resource request, and

(c3) returning to the remote execution interface a list of available resources which can be used to satisfy the resource request in an order specified by the scheduling policy,

such that one or more selected computer processors are chosen by the requestor as the resources to which to send the resource request in order to perform the remote execution services based upon the list of resources generated by analyzing the resource information database.

29. The method of claim 28 wherein multiple resource requests are sent to one or more computer processors using the list of resources generated in response to a single resource query.

30. The method of claim 28 where the selected computer processors are determined automatically by the remote execution interface using a predetermined criteria.

31. The method of claim 28 wherein the requestor in the network is an application program executing on one of the computer processors and wherein the selected computer processors selected are determined by the application program.

32. The method of claim 28 wherein the items of information about the resources are stored as one or more property-value pairs for each resource in a resource definition database associated with the resource information database.

33. A method for servicing distributed remote execution requests in a heterogenous computer network environment having a plurality of resources loosely coupled to each other in the network environment, the resources including at least two or more computer processors executing different operating system programs, each different operating system program having a set of kernel programs unique to that operating system program and a unique file space, and any memory devices and subordinate programs operating together with the computer processors, at least some of the resources being available to perform remote execution services in response to the remote execution requests, the method comprising the steps of:

(a) for each of a plurality of requestors in the network environment comprised of an application program executing on one of the computer processors that can utilize a remote execution service, using a remote execution interface that is separate from, but compiled with, the application program to issue a resource request for the remote execution service to one or more selected computer processors, the resource request including information necessary to perform the remote execution service; and

(b) for each of the selected computer processors that is to perform the remote execution service, executing a first program on the selected computer processor separate from the operating system program and does not require the kernel programs of the operating system to be modified and recompiled for that computer processor to control communication with the remote execution interface that has sent the resource request to perform the steps of:

(b1) receiving the resource request for the remote execution service from the remote execution interface, and

(b2) monitoring the status of the remote execution service; and

(c) for each of the selected computer processors that is to perform the remote execution service, executing a second program separate from the operating system program and does not require the kernel programs of the operating system to be modified and recompiled for that computer processor that is initiated by the first program to perform the remote execution service in response to the resource request and return any results to the remote execution interface.

34. The method of claim 33 wherein the second program is capable of responding and initiating one or more control directives between the selected computer processor and the remote execution interface.

35. The method of claim 33 further comprises the step of:

(d) executing a third program for a selected resource request that is initiated by the first program to perform interactive input/output between the selected computer processor and the remote execution interface.

36. The system of claim 1 wherein the remote execution service means includes means for instantiating the remote execution service if necessary prior to performing the remote execution service.

37. The system of claim 15 wherein the remote execution service means includes means for instantiating the remote execution service if necessary prior to performing the remote execution service.

38. The method of claim 18 further comprising the step of:

(d1a) instantiating the remote execution service if necessary prior to performing the remote execution service.
 Description Submit all comments and votes
 


TECHNICAL FIELD

The present invention relates generally to networked computer processing systems and, more particularly, to an integrated remote execution system for managing resources and remote requests for those resources in a heterogenous computer network environment, and for providing for the distributed and remote execution of tasks in a heterogenous computer network environment.

PRIOR ART

Networked computer processing systems allow several processors or workstations to communicate with each other in a loosely coupled environment where the processors generally do not share a common memory. For a general background on networked computer processing systems, reference is made to Stevens, W., Unix.RTM. Network Programming, Prentice Hall (1990), Chpts 1 and 4, pgs. 1-10 and 171-196.

The first network environments only allowed for the sharing of information or files among processors in the network. As network environments became more popular due to the decreased cost and increased performance of personal computers and workstations, a need to take advantage of the potential for parallel and distributed processing of programs on the network was recognized. The first response to this need was the development of a remote execution capability as part of a common operating system program that was running on all of the computers in the network. This type of remote execution service, known as kernel-level remote execution service, allowed for the remote instantiation, invocation and termination of an entire process under the direct control of an application program using various internal operating system routines. Examples of kernel-level remote execution services in the prior art include: Walker, B., Popek, G., English, E., Kline, C., Theil, A., "The Locus Distributed Operating System", Proc. of the 9th ACM Symposium on Operating System Principles, Dec. 1983, pgs. 49-70. Schantz, R., Thomas, R., and Bono, G., "The Architecture of the Cronus Distributed Operating System", Proc. of the 6th Int'l Conf. on Distributed Operating Systems, May, 1986, pgs. 250-259. Acetta, M., Baron, R., Bolosky, W., Golub, D., Rashid, R., Tevanian, A., and Young, M., "MACH: A New Kernal Foundation for UNIX Development", Proc. USENIX 1986 Summer Tech. Conf. and Exhibition, June, 1986, pgs. 93-112.

Although the various types of kernel-level of remote execution services fulfilled the need for remote execution of processes in a network, they were necessarily restricted to a network environment where all of the computer processors were executing an identical operating system program. As network environments became larger and more complicated, it became apparent that there was also a need to provide for remote execution capabilities in a network environment where not all of the processors were the same and where the processors were not executing the exact same operating system program. For purposes of the present invention, a network environment where all of the processors connected to the network are executing identical operating system programs will be referred to as a homogenous network environment. In contrast, a network environment where different processors are executing different operating system programs, or even different versions of the same operating system program, will be referred to as a heterogenous network environment. Because the operating system programs in a heterogenous network environment are necessarily different, a heterogenous network environment cannot use the same type of kernel-level solution for establishing a remote execution service in a heterogenous network as was used to establish a remote execution service in a homogenous network.

In response to the need for remote execution services in a heterogenous network environment, two different types of services have been developed: application-level remote execution services and remote procedure call services. Application-level remote execution services operate above the operating system and, therefore, do not need to modify any internal operating system routines in order to implement the remote execution of processes, including all of the steps of instantiating, executing, and finally terminating those processes. Examples of application-level remote execution services include: Shoch, J., and Hupp, J., "The `Worm` Programs--Early Experience with a Distributed Computation", Comm. of the ACM, Vol. 25, No. 3, March, 1982, pgs. 172-180; Nichols, D., "Using Idle Workstations in a Shared Computing Environment", Comm. of the ACM, Vol. 11, No. 5, May, 1987, pgs. 5-12; Hewlett Packard Corp., "Task Broker for Networked Environments based on the Unix.RTM. Operating System", Product Brochure, May, 1990, the BSD rsh command Unix Programmer's Manual, 4.2 BSD Virtual VAX-II Version, March, 1984 , and the Sun rex command Sun Microsystems, Inc., Sun OS Reference Manual, Part No. 800-3827-b, March, 1990, pg. 2064. In contrast, the remote procedure call service, or rpc facility, only allows for the remote execution of certain specially designed procedures that have previously been instantiated on a remote processor in the network. Examples of rpc facilities include: the Sun rpc command Sun Microsystems, Inc., NetWork Programming Guide, Part No. 800-3850-10, March, 1990. Chpts. 2-7 and the NCS rpc command Kong, M., Dineen, T., Leach, P., Martin, E., Mishkin, N., Pato, J., and Wyant, G., Network Computing Systems Reference Manual, Prentice Hall, Englewood Cliffs, N.J. (1990).

The primary differences between an application-level remote execution service and an rpc facility are found in the ways in which the execution of remote tasks are managed, especially the kinds of tasks which can be remotely executed and the degree to which each service is or is not tailored specifically for remote invocation. Basically, the rpc facility is easy to use in terms of invoking the remote execution of a task; however, much of the flexibility in terms of what type of tasks can be performed by the rpc facility is sacrificed in order to make the rpc facility easy to use. Each rpc procedure is generally a relatively short or standardized procedure, that is specially coded to allow for the remote invocation of that procedure on other processors on the network. The rpc procedures cannot be remotely instantiated or terminated as only the processor on which the procedure was to be executed can perform the steps for installing or instantiating the rpc procedure, as well as the steps for terminating that procedure. As a result, the rpc facility is generally limited to providing those types of standardized procedures that would be invoked by many different users on the network as one part of an entire process being executed by those users. Unlike the rpc facility, a remote execution service can operate on potentially any type of process, rather than just a specially designed rpc procedure. Unfortunately, present remote execution services are difficult to use, and there is no standardization of usage from one application program to another. Thus, although the marketplace for distributed applications is maturing to the point where there are a growing number of applications that could take advantage of the distributed processing capabilities of a heterogenous computer network, there presently are no distributed computing tools that can easily and intelligently implement a seamless and transparent remote execution service in a heterogenous computer network environment.

Although prior art remote execution services have operated somewhat effectively in a homogenous network environment, they have been difficult to implement effectively in a heterogeneous network environment. Among the problems which make remote execution difficult in a heterogenous network environment are the fact that the prior art systems are not location transparent and do not support a high level of operating system semantics. Location transparency refers to whether a requestor must know the location or identity of the remote resource being accessed. Unlike prior art homogenous networks, prior art remote execution services for heterogeneous network environments have required the requestor to know the location (e.g., network identification) of the resource being requested. This requirement imposes additional burdens on a user trying to execute a request for a remote resource. For example, in most prior art heterogenous networks, the requestor is assigned a specific remote resource in the form of an idle processor in the network; however, if a local user logs onto this idle processor, the remote execution request may be automatically killed, and it is then up to the requestor to find another idle processor and start the remote execution request all over again. Prior art remote execution services for heterogenous networks also lack the ability to support operating system semantics (i.e., the ability to execute some or all of the operating system calls and routines) because such systems must run on more than one type of operating system program. Unlike prior art homogenous networks that make direct use of the operating system program, the inability of a remote execution service in a heterogenous network limits the ability of the remote execution service to monitor and control the remote execution of requests, for example.

As the advantages of parallel processing on a network were being realized, a need was also recognized for managing the various resources within a network in order to increase the utilization of those resources. In response to the need to manage the various resources in the network, a variety of resource managers have been developed for efficiently managing and scheduling the use of the resources by requestors in a network. Examples of such resource managers include: U.S. Pat. Nos. 4,951,192 and 5,031,089; Stumm, M. "The Design and Implementation of a Decentralized Scheduling Facility for a Workstation Cluster", 2nd IEEE Conf. on Computer Workstations, Vol. CH-24, No. 41, pgs. 12-22 (1988); and Davis, M., Schreier, L. and Wrabetz, J., "A Processing Architecture for Survivable Command, Control and Communication", Proceedings of MILCOM 87, Washington, D.C. (1987).

As used within this patent, the term resource refers to any physical or logical entity in the network about which attribute or state information may be collected or stored. Resources would typically include the computer processors connected to the network, and any of the memory devices such as main memory or disk drives of each computer processor, as well as any subordinate software programs that can execute on that computer processor. For example, a resource might be a math co-processor on one of the workstations in the network, a particular software package, or a disk drive capable of storing files of a certain size. The term requestor will be used to refer to any physical or logical entity that is making a request for a resource in the network. Typically, this will be an application program executing on a computer processor on behalf of a user or a system management routine; although a requestor might also be an operating system routine executing on a computer processor, or even a remote procedure call or a daemon or agent process.

Generally, one of two models has been used for prior art resource managers--distributed control vs. centralized control. In a distributed control model, each requestor is provided with the intelligence to select and schedule the resources required by that requestor. In a centralized control model, each requestor submits a request to a central control program which evaluates the requests and assigns resources in the network to satisfy those requests. Within each model, two general paradigms have been used to acquire information about the resources in the network--the publish paradigm vs. the query paradigm. In resource managers that use the publish paradigm, each resource periodically publishes or broadcasts information about that resource to all other requestors in the network; whereas in resource managers that use the query paradigm, each requestor requests information about a resource only at the time that the requestor needs to make use of that resource. Unfortunately, neither of these paradigms provides an adequate solution to all of the problems confronted by a resource manager. While the publish paradigm is more efficient in terms of the amount of time a requestor must spend in order to select a resource because all of the resource information is available locally, the publish paradigm can dramatically increase network traffic and cannot guarantee that the information about a resource is current. In contrast, the query paradigm is less efficient at the time a request is made because each resource must be queried for its current status; however, once obtained, the status information is current and there is less traffic generated on the network.

Resource management is more difficult in a heterogenous network environment because of the lack of standardization of the resources that are available in such a network and because of the lack of an intelligent allocation mechanism. By its nature, a heterogenous network will necessarily have resources with different capabilities and requirements. As a result, additional information about each resource is required in order to determine whether that resource is available to respond to a request. Regardless of which model is used, prior art resource managers generally have a very rudimentary system for acquiring information about resources. In addition, prior art resource managers use one or more types of fixed allocation mechanisms for assigning resources to requests with no ability for individual requestors in such systems to request resources based on an allocation paradigm other than the fixed allocation mechanism. Consequently, the utilization of the resources in a heterogenous network environment is usually an unpredictable function of how well the requests in the system match up with what the fixed allocation mechanism expects those requests to be at any given time.

Even if prior art remote execution services and resource managers could be effectively implemented for a heterogenous network environment, which they have not, a major factor causing the underutilization of computing resources in a heterogenous network is that remote execution services and resource management are treated as separate problems in the prior art. As a result, there is little, if any, coordination and integration between the process of managing the resources in a computer network and the process of implementing the remote execution of requests to those resources. This lack of coordination and integration forces the users to assume almost all of the management and control over decisions regarding management and selection of resources and the use of remote execution services in a heterogenous network environment. This eliminates the opportunity for truly location independent use of resources. It also forces the users to interface with two separate systems in order to make and execute a request for a remote resource. The result is that unsophisticated users cannot access the entire resource power of the network without understanding both the concepts of networking and distributed execution on remote resources and the myriad of different tools needed to find and use those resources. Even when a user can navigate through the maze required to find and use a remote resource, it is not uncommon for the computer overhead associated with a remote request to take anywhere between several seconds to a minute or more of computer time. The magnitude of this computer overhead limits the ability of a requestor to make a remote request if the request does not involve a large task that can effectively offset the time lost due to the computer overhead. In other words, if it will take longer for a requestor to set up a remote request than it would for the requestor to execute that request locally, there is no advantage to making the remote request. When the computer overhead associated with making a remote request is combined with the additional programming effort required to understand and implement distributed execution on a heterogenous network, the result is that users do not take full advantage of the potential power of the network and the various resources in the network are significantly underulitized.

Consequently, there is a need for an integrated solution to resource management and remote execution in a heterogenous computer network environment that provides seamless and transparent access to all of the resources in the network in such a way that the user can easily interface with the system and that the overhead associated with making and executing remote requests is decreased. In addition, there is a need for a system for providing remote execution services in a heterogenous computer network environment that can overcome the problems with prior art systems and more closely emulate the features and advantages of remote execution services that are available for homogenous computer network environments. In a heterogenous network environment, it is also imperative to provide a system for managing remote execution services that is able to make individualized and intelligent decisions about dynamically allocating remote resources to requests for remote execution services.

SUMMARY OF INVENTION

The present invention is an integrated r