WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Server impersonation of client processes in an object based computer operating system    
United States Patent5187790   
Link to this pagehttp://www.wikipatents.com/5187790.html
Inventor(s)East; Jeffrey A. (Aptos, CA); Walker; James J. (Redmond, WA); Jenness; Steven M. (Redmond, WA); Ozur; Mark C. (Redmond, WA); Kelly, Jr.; James W. (Redmond, WA)
AbstractIn a multitasking, multiuser computer system, a server process temporarily impersonates the characteristics of a client process when the client process preforms a remote procedure call on the server process. Each process has an identifier list with a plurality of identifiers that characterize the process. The server process generates a new identifier list which is either the same as the client process's list, or is the union of the server's and the client's lists. Each object in the system can have an access control list which defines the identifiers that a process must have in order to access the object. The operation system has access checking software for enabling a selected process access to a specified object when the identifers for the process match the list of identifiers in the access control list of the specified object. The server can therefore access all objects accessible to the client while the server is working for the client. The server can restore its original identifier list after completing the services that it performs for the client.



 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 5187790
Server impersonation of client processes in an object based computer

     operating system - US Patent 5187790 Drawing
Server impersonation of client processes in an object based computer operating system
Inventor     East; Jeffrey A. (Aptos, CA); Walker; James J. (Redmond, WA); Jenness; Steven M. (Redmond, WA); Ozur; Mark C. (Redmond, WA); Kelly, Jr.; James W. (Redmond, WA)
Owner/Assignee     Digital Equipment Corporation (Maynard, MA)
Patent assignment
All assignments
Publication Date     February 16, 1993
Application Number     07/873,359
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     April 21, 1992
US Classification     719/316 718/107
Int'l Classification     G06F 009/44 G06F 009/00
Examiner     Clark; David L.
Assistant Examiner     Fagan; Matthew C.
Attorney/Law Firm     Flehr, Hohbach, Test, Albritton & Herbert
Address
Parent Case     This is a continuation of application Ser. No. 07/373,878 filed Jun. 29, 1989, now abandoned.
Priority Data    
USPTO Field of Search     395/650 395/725 364/DIG. 1 364/DIG. 2
Patent Tags     server impersonation client object based computer operating
   
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
5136712
Perazzoli, Jr.
718/104
Aug,1992

[0 after 0 votes]
5129083
Cutler
707/103R
Jul,1992

[0 after 0 votes]
5129084
Kelly, Jr.
718/104
Jul,1992

[0 after 0 votes]
5057996
Cutler
718/106
Oct,1991

[0 after 0 votes]
4901231
Bishop
707/205
Feb,1990

[0 after 0 votes]
4849877
Bishop
709/226
Jul,1989

[0 after 0 votes]
4825354
Agrawal
707/10
Apr,1989

[0 after 0 votes]
4809160
Mahon
726/4
Feb,1989

[0 after 0 votes]
4800488
Agrawal
709/225
Jan,1989

[0 after 0 votes]
4714996
Gladney
707/203
Dec,1987

[0 after 0 votes]
4713753
Boebert
711/164
Dec,1987

[0 after 0 votes]
4656579
Bachman
711/147
Apr,1987

[0 after 0 votes]
4621321
Boebert
707/8
Nov,1986

[0 after 0 votes]
4584639
Hardy
726/2
Apr,1986

[0 after 0 votes]
4525780
Bratt
711/163
Jun,1985

[0 after 0 votes]
4455602
Baxter, III
710/5
Jun,1984

[0 after 0 votes]
4135240
Ritchie
711/164
Jan,1979

[0 after 0 votes]
4701840
Boebert
726/4
Dec,1969

[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. In a computer system, having

memory means for storing data and data structures;

a multiplicity of objects comprising data structures stored in said memory means; each of a multiplicity of said objects having an associated access control list for limiting access to said each object, each access control list including a list of entries, wherein each entry includes a conjunction of one or more identifiers required to access said each object; and

a multiplicity of processes running concurrently on said computer system; said processes including at least one server process and plurality of client processes; each of said processes having an associated identifier list denoting a set of identifiers;

a method of operating said computer system comprising the steps of:

one of said at least one server process responding to requests by one of said plurality of client processes by performing tasks on behalf of the requesting client process;

said one server process impersonating said requesting client process by adopting a set of identifiers to replace said identifier list associated with said one server process, wherein said adopted set of identifiers is said identifiers in the identifier list associated with said requesting client process when said one server process is responding to a first request by said requesting client process, and wherein said adopted set of identifiers is the union of said identifiers in said identifier list associated with said requesting client process and said identifiers in said identifier list associated with said one server process when said one server process is responding to a second request by said requesting client process; and

said one server process initiating access to a specified one of said multiplicity of objects, said system enabling access by said one server process to said one specified object when said adopted set of identifiers match the identifiers of at least one entry in said one specified object's access control list.

2. A method of operating a computer system as set forth in claim 1, further including the steps of

storing the identifier list of said one server process that was replaced by said adopted set of identifiers, and later restoring said stored identifier list to said one server process after said one server process finishes performing said tasks on behalf of said requesting client process.

3. In a computer system having

memory means for storing data and data structures;

a multiplicity of objects comprising data structures stored in said memory means; each of a multiplicity of said objects having an associated access control list for limiting access to said each object, each access control list including a list of entries, wherein each entry includes a conjunction of one or more identifiers required to access said each object; and

a multiplicity of processes running concurrently on said computer system; said processes including a plurality of server processes and a plurality of client processes; each of said processes having an associated identifier list denoting a set of identifiers;

a method of operating said computer system comprising the steps of:

each respective server process responding to requests by respective ones of said plurality of client processes by performing tasks on behalf of the respective requesting client process; and

each respective server process, prior to performing said tasks on behalf of the respective requesting client process, impersonating said respective requesting client process by adopting a set of identifiers to replace said identifier list associated with said respective server process; wherein at least a first one of said plurality of server processes, in response to a first request by said respective requesting client process, adopts a set of identifiers comprising the identifiers in the identifier list associated with said respective requesting client process;

wherein at least a second one of said plurality of server processes, in response to a second request by said respective requesting client process, adopts a set of identifiers comprising the union of said identifiers in said identifier list associated with said respective requesting client process and said identifiers in said identifier list associated with said second server process; and

each respective server process initiating access to a respective one of said multiplicity of objects, said system enabling access by said respective server process to said one respective object when said set of identifiers adopted by said respective server process match the identifiers of at least one entry in said one respective object's access control list.

4. A method of operating a computer system as set forth in claim 3, further including the steps of:

storing the identifier list of said respective server process that was replaced by said adopted set of identifiers, and later restoring said stored identifier list to said respective server process after said respective server process finishes performing said tasks on behalf of said respective requesting client process.

5. A computer system, comprising:

memory means for storing data and data structures;

a multiplicity of objects comprising data structures stored in said memory means;

a multiplicity of processes running concurrently on said computer system; each of said multiplicity of processes including characteristic denoting means for denoting a set of identifiers; said multiplicity of processes including at least one server process and a plurality of client processes;

each of a multiplicity of said objects having an associated access control list for limiting access to said each object, each object's access control list including a list of entries, wherein each entry includes a conjunction of one or more identifiers required to access said each object;

access checking means, coupled to said memory means and said multiplicity of processes, for enabling access by any one of said processes to a specified one of said multiplicity of objects when said set of identifiers in the characteristic denoting means of said one process match the identifiers of one of said entries in said specified object's access control list; and

impersonation means, responsive to requests from one of said client processes, for generating an adopted set of identifiers to replace said set of identifiers denoted by the characteristic denoting means of one of said at least one server process, said impersonation means including first means for generating said adopted set of identifiers by replacing said one server process' set of identifiers with said set of identifiers denoted by the characteristic denoting means of said requesting client process, and second means for generating said adopted set of identifiers by replacing said server process' set of identifiers with the union of said identifiers denoted by the characteristic denoting means of said requesting client process and said identifiers denoted by the characteristic denoting means of said one server process;

said one server process including means, coupled to said access checking means, for performing tasks on behalf of said requesting client process including accessing ones of said multiplicity of objects using the adopted set of identifiers generated by said impersonation means;

said impersonation means utilizing one of said first means and second means for generating said adopted set of identifiers in accordance with the tasks to be performed by said one server process on behalf of said requesting client process.

6. The computer system set forth in claim 5, further including:

restoration means for storing said set of identifiers of said one server process replaced by said impersonation means, and for restoring said stored set of identifiers to said one server process after said one server process finishes performing said tasks on behalf of said requesting client process.

7. A computer system, comprising:

memory means for storing data and data structures;

a multiplicity of objects comprising data structures stored in said memory means;

a multiplicity of processes running concurrently on said computer system; each of said multiplicity of processes including characteristic denoting means for denoting a set of identifiers; said multiplicity of processes including at least one server process and a plurality of client processes;

each of a multiplicity of said objects having an associated access control list for limiting access to said each object, each object's access control list including a list of entries, wherein each entry includes a conjunction of one or more identifiers required to access said each object;

access checking means, coupled to said memory means and said multiplicity of processes, for enabling access by any one of said processes to a specified one of said multiplicity of objects when said set of identifiers in the characteristic denoting means of said one process match the identifiers of one of said entries in said specified object's access control list;

each of a multiplicity of said objects, comprising impersonation objects, having means for denoting said plurality of identifiers denoted by a specified one of said processes;

impersonation object generating means, responsive to requests from one of said client processes, for creating an impersonation object denoting the set of identifiers denoted in the characteristic denoting means of said one client process; and

impersonation means for generating an adopted set of identifiers to replace said set of identifiers denoted by the characteristic denoting means of one of said at least one server process, wherein said adopted set of identifiers generated by said impersonation means is said set of identifiers denoted in said created impersonation object when said one server process is responding to a first request by said one client process, and wherein said adopted set of identifiers generated by said impersonation means is the union of said identifiers denoted by the characteristic denoting means of said one client process and said identifiers denoted by the characteristic denoting means of said one server process when said one server process is responding to a second request by said one client process;

said one server process including means, coupled to said access checking means, for performing tasks on behalf of said one client process including accessing specified ones of said multiplicity of objects using the adopted set of identifiers generated by said impersonation means;

wherein the adopted set of identifiers generated by said impersonation means is selected in accordance with each request from said requesting client process.

8. The computer system set forth in claim 7, further including:

restoration means for storing said set of identifiers of said one server process replaced by said impersonation means, and for restoring said stored set of identifiers to said one server process after said one server process finishes performing said tasks on behalf of said one client process.

9. A computer system, comprising:

memory means for storing data and data structures;

a multiplicity of objects comprising data structures stored in said memory means; each object having an associated access control list for limiting access to said each object, each access control list including a list of entries, wherein each entry includes a conjunction of one or more identifiers required to access said each object;

a multiplicity of processes running concurrently on said computer system; each of said multiplicity of processes including characteristic denoting means for denoting a set of identifiers; said multiplicity of processes including a plurality of server processes and a plurality of client processes;

access checking means, coupled to said memory means and said multiplicity of processes, for enabling access by any one of said processes to a specified one of said multiplicity of objects when said set of identifiers in the characteristic denoting means of said one process match the identifiers of one of said entries in said specified object's access control list;

each server process including means, coupled to said access checking means, for responding to requests from one of said client processes by performing tasks on behalf of said requesting client process, said tasks including accessing ones of said multiplicity of objects;

impersonation means, coupled to said plurality of server processes, for generating an adopted set of identifiers to replace said set of identifiers denoted by the characteristic denoting means of a specified one of said server processes, said impersonation means including first means for generating said adopted set of identifiers by replacing said specified one server process' set of identifiers with said set of identifiers denoted by the characteristic denoting means of said requesting client process, and second means for generating said adopted set of identifiers by replacing said one server process' set of identifiers with the union of said identifiers denoted by the characteristic denoting means of said requesting client process and said identifiers denoted by the characteristic denoting means of said specified one server process;

said specified one server process accessing ones of said multiplicity of objects using the adopted set of identifiers generated by said impersonation means;

said impersonation means utilizing one of said first means and second means for generating said adopted set of identifiers in accordance with each request from said requesting client process.

10. The computer system set forth in claim 9, further including:

restoration means for storing said set of identifiers of said specified one server process replaced by said impersonation means, and for restoring said stored set of identifiers to said specified one server process after said specified one server process finishes performing said tasks on behalf of said requesting client process.
 Description Submit all comments and votes
 


This application is related to the application entitled RPC BASED COMPUTER SYSTEM USING TRANSPARENT CALLBACKS AND ASSOCIATED METHOD, in the name of Mark Ozur et al., Ser. No. 07/830,730, filed Feb. 4, 1992, which is a continuation of Ser. No. 07/374,100, filed on the same date as this application, and is hereby incorporated by reference.

The present invention relates generally to multitasking digital computer systems and particularly to methods and systems for managing the data structures used by a multitasking digital computer system.

BACKGROUND OF THE INVENTION

Large computer systems generally allow many users to simultaneously use a single computer's resources. Such systems are herein called multitasking digital computer systems. Such computers include virtually all mainframe computers and most minicomputers.

One of the primary jobs of the operating system for a multitasking computer system is to support and keep track of the operations of a multiplicity of users who are running numerous concurrent processes. Thus the computer's operating system must have data structures which represent the status of each user. Such status information includes the memory and other resources being used by each user process.

If every user process were completely independent, had its own dedicated resources, and there were no concerns about which resources each process could use, operating systems could be relatively simple. However, in actuality, computer resources are shared and many user processes need to access commonly used or owned resources. In fact, each user may generate a number of execution threads which run simultaneously and which need to be able to share resources and to communicate with other ones of the user's threads.

Another concern in multitasking computer systems is security and data integrity. Ideally, the computer system should provide an access security system which enables each user to control the extent or amount of sharing of information that belongs to the user. Further, the system should provide several types of protection. For example, when multiple processes are allowed access to a resource, the identity of each process which attempts to access the resource should be tested to determine if that particular process is authorized to access the resource. The system of access control should also provide limited "visibility" of computer resources so that an unauthorized user cannot obtain information about another user by repeated attempts to access resources with various names. In addition, to protect data integrity, the system must protect against simultaneous accesses by different authorized processes.

Yet another concern of multitasking operating systems is clearing the system of "objects" (i.e., files and data structures) which are no longer needed by any of the systems users. Ideally, the system should also be able to automatically deallocate resources, such as input/output devices, no longer needed by a process.

SUMMARY OF THE INVENTION

In summary, the present invention is an object based operating system for a multitasking computer system. The present invention, which is also called an object based architecture, is "object based" because it provides objects which represent the architecture or interrelationships of the system's resources. The present invention provides an extensible, yet rigorous framework for the definition and manipulation of object data structures.

Objects, generally, are data structures which store information about the user processes running in the system, and which act as gateways to using the system's resources. Resources, generally, include sets of information, physical devices such as a tape drive, and various programs or "operations". Such resources are not available to a user unless the user has explicit permission to use that resource. More specifically, access to certain objects is required in order to use the corresponding resources of the computer system.

A multiplicity of processes run concurrently in the computer system, including at least one server process and a plurality of client processes. Each process has a list of identifiers that represent the process' object access rights.

Each object has an access control list, which is list of identifiers, for use in determine which processes can access that object. Access control software in the computer's operating system compares the identifier list of a process requesting access to a specified object with the object's access control list, and allows the requested access when the process' identifier list matches at least one of the identifiers in the specified object's access control list.

For the purpose of facilitating server/client remote procedure calls, the operating system includes special software that enables a server process to "impersonate" a client process. When one of the client processes calls a server process, the impersonation software generates an adopted set of identifiers to temporarily replace the server process' usual list of identifiers. The impersonation software has two modes of operation. In one mode, the adopted set of identifiers is generated by replacing the server process' list of identifiers with the list of identifiers of the requesting client process. In the second mode, the adopted set of identifiers is generated by replacing said server process' list of identifiers with the union of the requesting client process' identifiers and the server process' list of identifiers.

After receiving the adopted set of identifiers, the server process performs tasks on behalf of the requesting client process, including accessing various objects using the adopted set of identifiers generated by said impersonation software.

BRIEF DESCRIPTION OF THE DRAWINGS

Additional objects and features of the invention will be more readily apparent from the following detailed description and appended claims when taken in conjunction with the drawings, in which:

FIG. 1 is a block diagram of a computer with a multitasking operating system.

FIG. 2 is a block diagram of the virtual memory spaces of several concurrently running user processes.

FIG. 3 is a block diagram showing how data structure objects in the system are organized in a three level hierarchy.

FIG. 4 is a block diagram showing the hierarchical relationship between a user object, a job, the processes for a job, and the execution threads for a process.

FIG. 5 is a block diagram showing the range of objects visible to a particular execution thread.

FIG. 6 is a block diagram of the container directory and object container data structures at one level of the three level hierarchy shown in FIG. 3. FIG. 6A is a more detailed diagram of the process level container directory for a process.

FIG. 7 is a block diagram of an object ID.

FIG. 8 is a block diagram of the data structure of an object.

FIG. 9 is a block diagram an object type descriptor.

FIG. 10 is a block diagram of the process for adding a new object type to the system by creating an object type descriptor for the new object type.

FIG. 11 is a block diagram showing the reference pointers for a specified object.

FIG. 12 is a flow chart of the process for creating a reference ID for a specified object.

FIG. 13 is a flow chart of the process for deleting an object ID.

FIG. 14 is a flow chart of the process for transferring an object from one object container to another object container.

FIG. 15 is a flow chart of the process for transferring an object container to a specified container directory.

FIG. 16 is a flow chart of the process for conditionally creating a specified object.

FIG. 17 is a block diagram of the access control list for an object and a execution thread which is attempting to access the object.

FIG. 18 is a block diagram of the data structures for privileged operation objects.

FIG. 19 is a block diagram of the data structures for allocating a set of objects to a thread, process, job or user.

FIG. 20 is a block diagram of the data structures for implementing user defined waitable objects.

FIG. 21 is a block diagram of the data structures for a server thread impersonating the characteristics of a client thread.

FIG. 22 is a flow chart of the impersonation process.

DESCRIPTION OF THE PREFERRED EMBODIMENT

Referring to FIG. 1, a computer system 100 in accordance with the present invention includes a high speed central processing unit (CPU) 102 which concurrently runs several processes 104-110. The CPU 102 may be either a single powerful processor or may contain multiple processors. As is standard in multitasking computer systems, each process has its own virtual memory space which is mapped partially into high speed primary memory 112 and partially into lower speed secondary memory 114 by a virtual memory manager 116. More generally, each process 104-110 is allocated a certain portion of computer's resources, including selected peripheral devices such as terminals 120-122 and other input/output devices 124 and 126. Other types of resources which are allocated to selected ones of the processes include specified sets of data and data structures in the system's memory 112-114.

The set of software which controls the computer's operation and the allocation of resources to the processes 104-110 running the computer is called the operating system 130. For the purposes of the present discussion it can be assumed that the operating system 130 is resident in primary memory 112, although certain infrequently used portions of the operating system may be swapped out to secondary memory by the memory manager 116.

One feature of the present invention is that the computer system 100 can serve as a "computer server" to one or more client computers 132. Client computers 132, coupled to the CPU 102 by a bus interface 134, can send tasks to the computer system 100 for execution. The computer system 100 is a mainframe or other high performance computer system which can execute tasks in a relatively short period of time compared to the client computers 132. The operating system 130 of the present invention includes a mechanism for setting up a process in the computer system 100 which adopts the "profile" or characteristics of the process in the client computer which is being served.

Referring to FIG. 2, there is shown a block diagram of the virtual memory spaces of several concurrently running user processes 104-108. The virtual memory space of every process includes a portion 140 which can be accessed by "user mode" programs as well as "kernel mode" programs, and a portion 142-144 which can be accessed only by "kernel mode" programs. The kernel mode portion 142-144 includes two sets of software called "the kernel" 142 and "the executive" 144.

As shown in FIG. 2, the portion of the virtual memory space which comprises the kernel mode portion 142-144 is common to all user processes running in the computer system. In other words, a predefined portion of the address space of every user process is occupied by the operating system 130 and its data structures. The user mode portion of each user process 140 occupies a distinct virtual memory space.

"Kernel mode" is a mode of operation used only by kernel and executive software routines. Only kernel mode routines can access the data structures used to control the operation of the computer system and to define the system resources allocated to each user process.

When a user mode program 145 in a user process 104 creates an object, or performs any one of a number of operations on an object, the user process calls a kernel mode routine 146 in the kernel mode portion 142-144 of its address space to perform the necessary operations. When the kernel mode routine 146 completes the necessary operations on the kernel mode data structures, it returns control to the user mode program 145.

The kernel 142 is the "lowest layer" of the operating system 130 which interacts most directly with the computer's hardware 148. The kernel 142 synchronizes various activities, implements multiprocessing capabilities, dispatches execution threads, and provides services to device drivers for handling interrupts.

The executive 144, which also runs in kernel mode, implements system services, memory management, user-level object support, the computer's file system, network access, and device drivers. The executive defines "system policy", such as the rules which govern the visibility of user accessible objects.

OBJECT ARCHITECTURE

The object architecture of the present invention is a set of data structures and procedures which controls the use of user definable objects.

GLOSSARY

To clarify the following discussion, the following definitions are provided.

"Objects" are data structures used to hold information that is used by the operating system and which must be protected from unauthorized access by users of the system. While users cannot themselves "define" objects, they can ask the operating system to create specified objects on their behalf. The resultant objects are system data structures that are accessible by the user through system routines which protect the integrity of those objects. For instance, a "process object" is a type of object used in the present invention to store the information needed by the operating system to keep track of the status of a particular user process. "User accessible objects" are objects used by user processes, and will be referred to herein simply as "objects."

"Kernel objects" are a distinct set of data abstractions used by the system's kernel and are called kernel objects in order to distinguish them from the regular objects which are part of the object architecture of the present invention.

A "user" is herein defined to mean a person or other entity recognized by the computer system as being authorized to create processes and to use resources in the computer system.

A "job" represents the current set of system resources being used by a particular user.

A "process" is the entity to which a virtual memory address space is assigned, and is the entity to which process-level objects are assigned. There can be multiple processes in a job. Whenever a job is created, a "top level" process is created for that job. Any process, including the top level process, can cause the creation of additional processes, called subprocesses or child processes. Any process which creates another process is referred to as a parent process.

A "thread", also called an "execution thread", is the entity which actually executes programs and thus provides a stream of execution (sometimes called a context state). It is the schedulable entity which executes program steps and consumes resources. More technically, a thread is a system defined object that executes a program that is resident in a process' address space. A thread contains a machine state that consists of the computer's register contents, a program counter, and other privileged information needed to cause the thread to execute a program. Each process many create a number of execution threads which run "simultaneously" and which can share resources and communicate with one another. Multiple threads can run simultaneously when multiple CPUs are available. On a single CPU system the operating system makes the threads appear to run simultaneously. All resource limitation data structures for a thread belong to the thread's process.

An "object container" is a data structure for storing pointers to objects. It is essentially a table which is used to keep track of a set of objects.

A "container directory" is a data structure for storing pointers to a set of object containers. Thus a container directory is a table used to keep track of a set of object containers.

OBJECT HIERARCHY

Referring to FIG. 3, the object architecture of the present inventi