WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Extensible object-oriented file system    
United States Patent5504892   
Link to this pagehttp://www.wikipatents.com/5504892.html
Inventor(s)Atsatt; Bryan P. (Redwood City, CA); Nandkeshwar; Earsh K. (San Jose, CA); Seilnacht; Michael J. (Fremont, CA); Thakkar; Hemantkumar A. (Milpitas, CA); Turner; George R. (Sunnyvale, CA); Webster; Roger R. (San Jose, CA)
AbstractAn object-oriented file system in an object-oriented operating system includes a file system entity class that is subclassed into a volume, directory and file subclass. These classes encapsulate standard file system properties such as name, creation date, and size, as well as standard operations such as create, open, close, and property accessors. Using object-oriented programming, the class properties and operations can easily be modified and extended. Also provided is a convenient and efficient means for searching through the entities, and collecting heterogeneous sets. Further, a category of notification classes is provided for notifying clients when an entity has changed. Still further, user authentication and protection domains are used to protect against unauthorized access. Finally, a means for working with foreign file systems running under different operating systems is provided.
   














 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 5504892
Extensible object-oriented file system - US Patent 5504892 Drawing
Extensible object-oriented file system
Inventor     Atsatt; Bryan P. (Redwood City, CA); Nandkeshwar; Earsh K. (San Jose, CA); Seilnacht; Michael J. (Fremont, CA); Thakkar; Hemantkumar A. (Milpitas, CA); Turner; George R. (Sunnyvale, CA); Webster; Roger R. (San Jose, CA)
Owner/Assignee     Taligent, Inc. (Cupertino, CA)
Patent assignment
All assignments
Publication Date     April 2, 1996
Application Number     08/303,113
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     September 8, 1994
US Classification     707/103R
Int'l Classification     G06F 017/30 G06F 013/00
Examiner     Black; Thomas G.
Assistant Examiner     Alam; Hosain T.
Attorney/Law Firm     Stephens; Keith
Address
Parent Case    
Priority Data    
USPTO Field of Search     395/600 395/425 395/700 395/159 395/160 395/161 395/164 395/62 395/650 395/725
Patent Tags     extensible object-oriented file
   
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
5410691
Taylor
707/100
Apr,1995

[0 after 0 votes]
5379430
Nguyen
707/3
Jan,1995

[0 after 0 votes]
5335346
Fabbio

Aug,1994

[0 after 0 votes]
5325481
Hunt
715/809
Jun,1994

[0 after 0 votes]
5325522
Vaughn
707/1
Jun,1994

[0 after 0 votes]
5325524
Black
707/10
Jun,1994

[0 after 0 votes]
5325533
McInerney
717/107
Jun,1994

[0 after 0 votes]
5317741
Schwanke

May,1994

[0 after 0 votes]
5315703
Matheny
715/700
May,1994

[0 after 0 votes]
5315709
Alston, Jr.
707/6
May,1994

[0 after 0 votes]
5313636
Noble
707/1
May,1994

[0 after 0 votes]
5297284
Jones

Mar,1994

[0 after 0 votes]
5278946
Shimada
706/53
Jan,1994

[0 after 0 votes]
5212792
Gerety
717/100
May,1993

[0 after 0 votes]
5206951
Khoyi
719/315
Apr,1993

[0 after 0 votes]
5187786
Densmore
707/3
Feb,1993

[0 after 0 votes]
5181162
Smith
715/530
Jan,1993

[0 after 0 votes]
5151987
Abraham
714/20
Sep,1992

[0 after 0 votes]
5136705
Stubbs
714/27
Aug,1992

[0 after 0 votes]
5133075
Risch
707/201
Jul,1992

[0 after 0 votes]
5125091
Staas, Jr.
718/101
Jun,1992

[0 after 0 votes]
5119475
Smith
715/866
Jun,1992

[0 after 0 votes]
5093914
Coplien
717/129
Mar,1992

[0 after 0 votes]
5075848
Lai

Dec,1991

[0 after 0 votes]
5060276
Morris
382/151
Oct,1991

[0 after 0 votes]
5050090
Golub
700/217
Sep,1991

[0 after 0 votes]
5041992
Cunningham
345/641
Aug,1991

[0 after 0 votes]
4953080
Dysart
707/103R
Aug,1990

[0 after 0 votes]
4891630
Friedman
345/156
Jan,1990

[0 after 0 votes]
4885717
Beck
717/125
Dec,1989

[0 after 0 votes]
4821220
Duisberg
703/2
Apr,1989

[0 after 0 votes]
5321841
East
718/107
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
 


Having thus described our invention, what we claim as new, and desire to secure by Letters Patent is:

1. A client-extensible object oriented file system in an object oriented operating system, comprising:

(a) at least one file device for storing and retrieving information;

(b) a processor attached to the file device and having a memory, comprising;

(c) a file system entity base class comprising

member functions for storing and retrieving a plurality of file system entity property attributes including a name, a creation time, and a modification time;

member functions for retrieving a file system entity property attribute representing a physical size allocated;

member functions for retrieving a file system entity property attribute representing a file system entity kind; and

member functions for retrieving a file system entity property attribute representing a home file system kind;

(d) a client-subclassable file class, derived from the file system entity base class and having file member functions and attributes for defining and managing file objects created from the file class, including having means for storing and retrieving information from the file device;

(e) a client-subclassable directory class, derived from the file system entity base class and having directory member functions and attributes for defining and managing directory objects created from the directory class, including a member function for creating a file object from the file class and for associating the created file object with a directory object created from the directory class;

(f) a client-subclassable volume class, derived from the directory class, having volume member functions for controlling the file device;

(g) wherein the file class, the directory class, and the volume class are subclassable in response to a client subclassing request to derive subclasses to supplement functionality of the file system, and wherein member functions of the file class, directory class, and volume class are invocable in response to client invocation requests and attributes of file objects, directory objects, and volume objects are accessible in response to client access requests.

2. The object oriented file system as recited in claim 1, wherein a file object created from the file class comprises a means for packaging a foreign file from a foreign file system into a format compatible with the object oriented file system before transporting the foreign file to the object oriented file system, and for unpackaging the foreign file back into a format of the foreign file system when transporting the foreign file back to the foreign file system.

3. The object oriented file system as recited in claim 2, wherein the file object further comprises a means function for packaging the property attributes into a format compatible with a foreign file system before transporting the file object to the foreign file system, and a means for unpackaging the property attributes back into a format of the object oriented file system when transporting the file object back from the foreign file system.

4. A client-extensible object oriented file system in an object oriented operating system, comprising:

(a) at least one file device for storing and retrieving information;

(b) a processor attached to the file device and having a memory, comprising:

(c) a file system entity base class including

an attribute representing whether the file system entity object is packaged for a foreign file system by having information associated with the file system entity object formatted for the foreign file system and by including properties of the file when in the context of the foreign file system;

(d) a client-subclassable file class, derived from the file system entity base class and having file member functions and attributes for defining and managing file objects created from the file class, including having means for storing and retrieving information from the file device;

(e) a client-subclassable directory class, derived from the file system entity base class and having directory member functions and attributes for defining and managing directory objects created from the directory class, including a member function for creating a file object from the file class and for associating the created file object with a directory object created from the directory class;

(f) a client-subclassable volume class, derived from the directory class, having volume member functions for controlling the file device;

(g) wherein the file class, the directory class, and the volume class are subclassable in response to a client subclassing request to derive subclasses to supplement functionality of the file system, and wherein member functions of the file class, directory class, and volume class are invocable in response to client invocation requests and attributes of file objects, directory objects, and volume objects are accessible in response to client access requests.
 Description Submit all comments and votes
 


FIELD OF INVENTION

The present invention relates to file systems for computer operating systems. Specifically the present invention relates to an object-oriented file system.

BACKGROUND OF THE INVENTION

As will be understood by those skilled in the art, Object-Oriented Programming (OOP) techniques involve the definition, creation, use and destruction of "objects". These objects are software entities comprising data elements and routines, or functions, which manipulate the data elements. The data and related functions are treated by the software as an entity that can be created, used and deleted as if it were a single item. Together, the data and functions enable objects to model virtually any real-world entity in terms of its characteristics, which can be represented by the data elements, and its behavior, which can be represented by its data manipulation functions. In this way, objects can model concrete things like people and computers, and they can also model abstract concepts like numbers or geometrical designs.

A full discussion of the object-oriented terms, notation and diagrams used in this disclosure is provided in "Object-Oriented Analysis and Design", edited by Grady Booch, and published by Benjamin Cummings, 1994. A brief overview of the Booch notation is shown in FIG. 5 with a class 22 being denoted by an amorphous blob, and a utility procedure 24 by a shadowed amorphous blob. A class category 26 is denoted by a rectangle, and contains a collection of related classes. A parameterized class 28 is denoted by an amorphous blob with a rectangle for the formal arguments 30, and an instantiated parameterized class 32 is denoted by an amorphous blob with a rectangle for the actual arguments 34. Relationships between the classes are denoted by an association line 36, inheritance arrow 38, "has a" solid circle line 40, and "uses" open circle line 42. Links between calling 43 and called 45 objects are denoted by an order:message arrow 44 and an object/value open circle arrow 46. Also shown is the symbols for denoting class properties 48 and the naming convention 50. The visibility of the called object 45 in relation to the calling object 43 is depicted by the letters G, P, F, and L, enclosed in a square 51 and representing Global, Parameter, Field ("part of" relationship), and Local respectively.

Provided bellow are definitions of some object oriented terms used in this disclosure:

base class the most abstract class of a framework from which all other classes are derived.

super class a class from which other classes are derived.

subclass a class that is derived from one or more super classes.

abstract class A class that defines abstract behavior and is used only as a super class for other subclasses, where the subclasses implement the abstract behavior. No instances are derived from an abstract class.

pure virtual method A method of an abstract class that must be overridden and implemented in a subclass.

concrete class A class that is complete in its implementation and may therefore have instances. A concrete class can also be a super class to other subclasses.

primitive type A data simple data type such as an integer, unsigned integer, long, character, etc.

extended type A complex data type such as an object.

Objects are defined by creating "classes" which are not objects themselves, but which act as templates that instruct the compiler how to construct an actual object. A class may, for example, specify the number and type of data variables and the steps involved in the functions which manipulate the data. An object is actually created in the program by means of a special function called a "constructor" which uses the corresponding class definition and additional information, such as arguments provided during object creation, to construct the object. Likewise objects are destroyed by a special function called a "destructor". Objects may be used by manipulating their data and invoking their functions.

The principle benefits of object-oriented programming techniques arise out of three basic principles; encapsulation, polymorphism and inheritance. More specifically, objects can be designed to hide, or encapsulate, all, or a portion of, the internal data structure and the internal functions. During program design, a program developer can define objects in which all or some of the data variables and all or some of the related functions are considered "private" or for use only by the object itself. Other data or functions can be declared "public" or available for use by other programs. Access to the private variables by other programs can be controlled by defining public functions for an object which access the object's private data. The public functions form a controlled and consistent interface between the private data and the "outside" world. Any attempt to write program code which directly accesses the private variables causes the compiler to generate an error during program compilation which error stops the compilation process and prevents the program from being run.

Polymorphism is a concept which allows objects and functions which have the same overall format, but which work with different data, to function differently in order to produce consistent results. For example, an addition function may be defined as variable A plus variable B (A+B) and this same format can be used whether the A and B are numbers, characters or dollars and cents. However, the actual program code which performs the addition may differ widely depending on the type of variables that comprise A and B. Polymorphism allows three separate function definitions to be written, one for each type of variable (numbers, characters and dollars). After the functions have been defined, a program can later refer to the addition function by its common format (A+B) and, during compilation, the C++ compiler will determine which of the three functions is actually being used by examining the variable types. The compiler will then substitute the proper function code. Polymorphism allows similar functions which produce analogous results to be "grouped" in the program source code to produce a more logical and clear program flow.

The third principle which underlies object-oriented programming is inheritance, which allows program developers to easily reuse pre-existing programs and to avoid creating software from scratch. The principle of inheritance allows a software developer to declare classes (and the objects which are later created from them) as related. Specifically, classes may be designated as subclasses of other base classes. A subclass "inherits" and has access to all of the public functions of its base classes just as if these function appeared in the subclass. Alternatively, a subclass can override some or all of its inherited functions or may modify some or all of its inherited functions merely by defining a new function with the same form (overriding or modification does not alter the function in the base class, but merely modifies the use of the function in the subclass). The creation of a new subclass which has some of the functionality (with selective modification) of another class allows software developers to easily customize existing code to meet their particular needs.

Although object-oriented programming offers significant improvements over other programming concepts, program development still requires significant outlays of time and effort, especially if no pre-existing classes are available for modification. Consequently, a prior art approach has been to provide a program developer with a set of pre-defined, interconnected classes which create a set of objects and additional miscellaneous routines that are all directed to performing commonly-encountered tasks in a particular environment. Such pre-defined classes and libraries are typically called "application frameworks" and essentially provide a pre-fabricated structure for a working application.

For example, an application framework for a user interface might provide a set of pre-defined graphic interface objects which create windows, scroll bars, menus, etc. and provide the support and "default" behavior for these graphic interface objects. Since application frameworks are based on object-oriented techniques, the pre-defined classes can be used as base classes and the built-in default behavior can be inherited by developer-defined subclasses and either modified or overridden to allow developers to extend the framework and create customized solutions in a particular area of expertise. This object-oriented approach provides a major advantage over traditional programming since the programmer is not changing the original program, but rather extending the capabilities of the original program. In addition, developers are not blindly working through layers of code because the framework provides architectural guidance and modeling and, at the same time, frees the developers to supply specific actions unique to the problem domain.

There are many kinds of application frameworks available, depending on the level of the system involved and the kind of problem to be solved. The types of frameworks range from high-level application frameworks that assist in developing a user interface, to lower-level frameworks that provide basic system software services such as communications, printing, file systems support, graphics, etc. Commercial examples of application frameworks include MacApp (Apple), Bedrock (Symantec), OWL (Borland), NeXT Step App Kit (NEXT), and Smalltalk-80 MVC (ParcPlace).

While the application framework approach utilizes all the principles of encapsulation, polymorphism, and inheritance in the object layer, and is a substantial improvement over other programming techniques, there are difficulties which arise with the prior art application frameworks. Typically, application frameworks generally consist of one or more object "layers" on top of a procedure based operating system and even with the flexibility of the object layer, it is still often necessary to directly interact with the underlying operating system by means of awkward and inefficient procedure calls. In the same way that an application framework provides the developer with prefab functionality for an application program, a system framework, such as that included in a preferred embodiment, can provide a prefab functionality for system level services which developers can modify or override to create customized solutions, thereby avoiding the procedural calls necessary with the prior art application frameworks. For the commercial or corporate developer, systems integrator, or OEM, this means all of the advantages that have been illustrated for a framework, such as MacApp, can be leveraged not only at the application level for such things as text and user interfaces, but also at the system level, for services such as printing, graphics, multi-media, networking, I/O, and, as described herein, file systems.

A major part of computer operating systems is the system responsible for handling information stored in files. There are file systems designed for single processor systems such as Macintosh Hierarchical File System (HFS) and MS-DOS, or multiple processor distributed file systems such as AppleShare, Sun Network File System (NFS), or UNIX file system. A distributed file system is normally a super set of a single processor file system, that is, a distributed file system normally has all the features and capabilities of a single processor system except that it is distributed over several computers using a n