|
|
|
| United States Patent | 5202971 |
| Link to this page | http://www.wikipatents.com/5202971.html |
| Inventor(s) | Henson; Larry W. (Austin, TX);
Shaheen-Gouda; Amal A. (Austin, TX);
Smith; Todd A. (Austin, TX) |
| Abstract | A conventional single node operating system is provided with a distributed
file management system (DFS) with a plurality of nodes and a plurality of
files. The DFS uses the UNIX operating system tree structure employing
inodes (data structure containing administrative information for each
file) to manage the local files and surrogate inodes (s.sub.-- inode) to
manage access to files existing on another node. In addition, the DFS uses
a lock table to manage the lock status of files. The method which
implements the DFS locking of records and files involves the following
steps. If the file is a local file, then the UNIX operating system
standard file locking is used. However, if a remote file is to be locked,
the UNIX operating system LOCKF and FCNTL system calls are intercepted and
an remote process call (RPC) DFS.sub.-- LOCK.sub.-- CONTROL is executed.
The server node receives the remote process call and carries out the lock
request. The request could entail locking a single record, a set of
records or the whole file. The server then acknowledges receipt of the RPC
by sending a signal while the client surrogate inode is waiting for a
reply from the DFS.sub.-- LOCK.sub.-- CONTROL RPC. The client confirms the
reception of the lock and sends an acknowledgement to the remote server.
The server updates the lock table after receiving the acknowledgement from
the client surrogate inode. If the server does not confirm the reception
of DFS.sub.-- LOCK.sub.-- CONTROL's acknowledgement, then DFS.sub.--
LOCK.sub.-- CONTROL updates the lock table. |
|
|
|
Title Information  |
|
|
|
|
|
Drawing from US Patent 5202971 |
|
|
System for file and record locking between nodes in a distributed data
processing environment maintaining one copy of each file lock |
|
|
|
|
|
| Publication Date |
April 13, 1993 |
|
|
|
|
|
| Filing Date |
December 17, 1990 |
|
|
|
|
|
|
|
|
|
|
|
| Parent Case |
This is a continuation of Ser. No. 07/014,891, filed Feb. 13, 1987, now
abandoned. |
|
|
|
|
|
|
|
|
|
|
|
|
|
Title Information  |
|
|
References  |
|
|
| *references marked with an asterisk below are user-added references |
|
U.S. References |
|
|
| Add a new US reference: |
| | Reference | Relevancy | Comments | Reference | Relevancy | Comments | 4887204 Johnson 707/10 Dec,1989 |      Your vote accepted [0 after 0 votes] | | 4868866 Williams, Jr. 707/9 Sep,1989 |      Your vote accepted [0 after 0 votes] | | 4858116 Gillett, Jr. 711/155 Aug,1989 |      Your vote accepted [0 after 0 votes] | | 4819159 Shipley 714/19 Apr,1989 |      Your vote accepted [0 after 0 votes] | | 4805106 Pfeifer 710/200 Feb,1989 |      Your vote accepted [0 after 0 votes] | | 4751702 Beier 714/13 Jun,1988 |      Your vote accepted [0 after 0 votes] | | 4742450 Duvall 719/310 May,1988 |      Your vote accepted [0 after 0 votes] | | 4720784 Radhakrishnan 710/107 Jan,1988 |      Your vote accepted [0 after 0 votes] | | 4719569 Ludemann 710/241 Jan,1988 |      Your vote accepted [0 after 0 votes] | | 4716528 Crus 710/200 Dec,1987 |      Your vote accepted [0 after 0 votes] | | 4714992 Gladney 707/206 Dec,1987 |      Your vote accepted [0 after 0 votes] | | 4698752 Goldstein 707/8 Oct,1987 |      Your vote accepted [0 after 0 votes] | | 4663748 Karbowiak 370/224 May,1987 |      Your vote accepted [0 after 0 votes] | | 4633392 Vincent 710/104 Dec,1986 |      Your vote accepted [0 after 0 votes] | | 4621321 Boebert 707/8 Nov,1986 |      Your vote accepted [0 after 0 votes] | | 4590468 Stieglitz 340/825.5 May,1986 |      Your vote accepted [0 after 0 votes] | | 4577272 Ballew 714/15 Mar,1986 |      Your vote accepted [0 after 0 votes] | | 4574350 Starr 710/200 Mar,1986 |      Your vote accepted [0 after 0 votes] | | 4480304 Carr 710/200 Oct,1984 |      Your vote accepted [0 after 0 votes] | | 4476528 Matsumoto 707/1 Oct,1984 |      Your vote accepted [0 after 0 votes] | | 4439830 Chueh 711/164 Mar,1984 |      Your vote accepted [0 after 0 votes] | | 4400771 Suzuki 711/151 Aug,1983 |      Your vote accepted [0 after 0 votes] | | 4399504 Obermarck 710/200 Aug,1983 |      Your vote accepted [0 after 0 votes] | | 4358823 McDonald 714/11 Nov,1982 |      Your vote accepted [0 after 0 votes] | | 4313161 Hardin 711/151 Jan,1982 |      Your vote accepted [0 after 0 votes] | | 4214304 Shimizu 711/152 Jul,1980 |      Your vote accepted [0 after 0 votes] | | |
|
|
|
|
U.S. References |
|
|
Foreign References |
|
|
|
|
|
|
Foreign References |
|
|
Other References |
|
|
|
|
|
|
Other References |
|
|
|
|
|
References  |
|
|
|
|
|
| Market Size |
|
Estimate the gross annual revenues of the relevant market
sector:
|
| | |
| |
|
|
| Market Share |
|
Estimate the percentage of the relevant market sector this invention will capture:
|
| | |
| |
|
|
| Reasonable Royalty |
|
What percentage of gross sales should the inventor or assignee be paid?
|
| | |
| |
|
|
|
Public's "Guesstimation" of Royalty Value
|
| Market Size | N/A | [No votes] | | x | Market Share | N/A | [No votes] | | x | Reasonable Royalty | N/A | [No votes] |
| | N/A | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
Market Review  |
|
|
Technical Review  |
|
|
Claims  |
|
|
We claim:
1. A method for locking at least one range of a file residing at a first
node of a data processing system, said method comprising:
maintaining, in memory at said first node, information describing said at
least one locked range of said file, said information used to service at
least one locking request from at least one process located in at least
one second node;
moving, from said first node, said information to reside in memory at one
of said at least one second node when each of said at least one process
resides at said one of said at least one second node; and
servicing, at said one of said at least one second node, a subsequent lock
request, performed by any process residing at the one of said at least one
second node, using said moved information.
2. A method for locking at least one range of a file residing at a first
node of a data processing system, said method comprising:
maintaining, in memory at said first node, information describing said at
least one locked range of said file, said information used to service at
least one locking request from at least one process located in at least
one second node;
moving, from said first node, said information to reside in memory at one
of said at least one second node when each of said at least one process
resides at said one of said at least one second node;
servicing, at said one of said at least one second node, a subsequent lock
request, performed by any process residing at the one of said at least one
second node, using said moved information and;
moving, from said one of said at least one second node, said moved
information to reside in memory at said first node when at least one
operation performed at a different node than said one of said at least one
second node requires the use of the information describing said at least
one locked range of said file.
3. A method for locking at least one range of a file residing at a first
node of a data processing system, said method comprising:
creating information that resides in memory at at least one second node and
that describes said at least one locked range of said file, said
information used to service at least one locking request from at least one
process located in at least one second node; and
servicing, at said one of said at least one second node, a subsequent lock
request, performed by any process residing at the one of said at least one
second node, using said information only when each of said at least one
process resides at said one of said at least one second node.
4. A method for locking at least one range of a file residing at a first
node of a data processing system, said method comprising:
creating information that resides in memory at at least one second node and
that describes said at least one locked range of said file, said
information used to service at least one locking request from at least one
process located in said at least one second node;
servicing, at said at least one second node, a subsequent lock request,
performed by any process residing at the one of said at least one second
node, using said information when each of said at least one process
resides at said one of said at least one second node; and
storing, in memory at said first node, said information when at least one
operation performed at a different node than said one of said at least one
second node requires use of said information describing said at least one
locked range of said file.
5. A system, in a data processing system, for locking at least one range of
a file residing at a first node of said data processing system, said
system comprising:
a data structure, at said first node, describing said at least one range of
said file, said data structure being used to service at least one locking
request from at least one process located in at least one second node;
means for moving, from said first node, said data structure to reside at
one of said at least one second node when each of said at least one
process resides at said one of said at least one second node; and
means for servicing, at said one of said at least one second node, a
subsequent lock request, performed by any process residing at the one of
said at least one second node, using said moved data structure.
6. A system in a data processing system, for locking at least one range of
a file residing at a first node of said data processing system, said
system comprising:
a data structure, at said first node, describing said at least one locked
range of said file, said data structure used to service at least one
locking request from at least one process located in at least one second
node;
first means for moving, from said first node, said data structure to reside
at one of said at least one second node when each of said at least one
process resides at said one of said at least one second node;
means for servicing, at said one of said at least one second node, a
subsequent lock request, performed by any process residing at the one of
said at least one second node, using said moved data structure; and
second means for moving, from said one of said at least one second node,
said moved data structure to said first node when at least one operation
performed at a different node than said one of said at least one second
node requires the use of the data structure describing said at least one
locked range of said file.
7. A system, in a data processing system, for locking at least one range of
a file residing at a first node of said data processing system, said
system comprising:
a data structure, which resides at one of said at least one second node,
describing said at least one locked range of said file, said data
structure used to service at least one locking request from at least one
process located in at least one second node; and
means for servicing, at said one of said at least one second node, a
subsequent lock request, performed by any process residing at the one of
said at least one second node, using said data structure residing at said
one of said at least one second node when each of said at least one
process resides at said one of said at least one second node.
8. A system, in a data processing system, for locking at least one range of
a file residing at a first node of said data processing system, said
system comprising:
a data structure, which resides at one of said at least one second node,
describing said at least one locked range of said file, said data
structure used to service at least one locking request from at least one
process located in at least one second node;
means for servicing, at said one of said at least one second node, a
subsequent lock request, performed by any process residing at the one of
said at least one second node, using said data structure when each of said
at least one process resides at said one of said at least one second node;
and
means for storing, in said first node, said data structure when at least
one operation performed at a different node than said one of said at least
one second node requires the use of the data structure describing said at
least one locked range of said file.
9. A method for locking a range of bytes of a file residing at a first node
of a data processing system, said method comprising:
sending a message from a second node to the first node requesting a lock on
the range of bytes of the file residing in storage at said first node;
sending notification from the first node to the second node that the lock
is available; and
releasing the lock at the first node when a confirmation of said sent
notification is not received by said first node from said second node.
10. A system for locking a range of bytes of a file residing at a first
node and accessible by processes located at a least one second node, said
system comprising:
a first message from the second node to the first node requesting a lock;
means for sending notification from the fist node to the second node that
the lock is available; and
means for releasing the lock at the first node when a confirmation of said
sent notification is not received by said first node from said second
node.
11. A method for locking at least one range of a file residing at a first
node of a data processing system, said method comprising:
intercepting, in one of a at least one second node, any file locking system
operation that is being applied to said file from an application running
in one of the at least one second node;
invoking a remote procedure call in said one of the at least one second
node;
processing said remote procedure call in said first node;
returning to said one of the at least one second node information
describing the state of the locks of the file; and
using said information, which resides in memory of said one of the at least
one second node, to perform said locking system operation in said one of
the at least one second node.
12. The method of claim 11 further comprising the step of intercepting, in
one of the at least one second node, at least one subsequent file locking
system call that is being applied to said file from an application running
in said one of the at least one second node, and using said information,
which resides in said one of the at least one second node, to perform said
at least one subsequent file locking system call in said one of the at
least one second node.
13. A method of providing file locks in a distributed data processing
system of the type having a plurality of nodes and a plurality of files
physically residing at different ones of said nodes and a distributed file
management system with a plurality of inodes comprising administrative
information for each of said plurality of files and a plurality of
surrogate inodes; said plurality of inodes including a server inode, at a
server node, including access control means for a local file or a portion
of said local file of said plurality of files and said plurality of
surrogate inodes including a client surrogate inode, at a client node,
corresponding to said server inode providing remote access control means
for said local file, said remote access control means including locking
means for locking said server inode to secure said local file or said
portion of said local file, said method of providing file locks including:
unlocking said surrogate inode at said client node in response to said
remote access control means locking said local file or said portion of
said local file,
sending a remote procedure call for obtaining a lock on said local file or
said portion of said local file by means of said remote access control
means from said client node to said server node subsequent to said step of
unlocking said surrogate inode, and
controlling the grant of a lock in response to said remote procedure call.
14. The method for locking said local files from a local node in a
distributed data processing system as recited in claim 13 further
including the steps of:
requesting an unlock of said local file from said server node; and
unlocking said local file.
15. The method for locking said local files from a local node in a
distributed data processing system as recited in claim 13 wherein said
step of controlling the grant of a lock further includes
locking said local file of said portion of said local file by means of said
remote access control means, wherein said method further includes the step
of:
locking said inode of said server node subsequent to said step of locking
said local file of said portion of said local file by means of said remote
access control means.
16. The method of providing file locks in a distributed data processing
system as recited in claim 13 further including locking said local files
from said server node including the steps of:
requesting a lock on said local file from said server node, and
locking said local file by means of said remote access control means.
17. The method of providing file locks in a distributed data processing
system as recited in claim 16, wherein said step of requesting a lock
further includes
intercepting a remote procedure call from said server node to said client
node of said distributed data processing system, and
transmitting said remote procedure call to said client node subsequent to
said step of locking said local file by means of said remote access
control means.
18. The method for locking said local files from a local node in a
distributed data processing system as recited in claim 17, wherein said
step of controlling the grant of a lock further includes
locking said local file of said portion of said local file by means of said
remote access control means, wherein said method further comprising the
step of:
locking said inode of said server node subsequent to said step of locking
said local file of said portion of said local file by means of said remote
access control means. |
|
|
|
|
Claims  |
|
|
Description  |
|
|
CROSS REFERENCE TO RELATED APPLICATIONS
This application is related in subject matter to the following applications
filed concurrently herewith and assigned to a common assignee:
Application Ser. No. 07/014,899, now U.S. Pat. No. 4,897,781, filed by A.
Chang, G. H. Neuman, A. A. Shaheen-Gouda, and T. A. Smith for A System And
Method For Using Cached Data At A Local Node After Re-opening A File At A
Remote Node In A Distributed Networking Environment.
Application Ser. No. 07/014,884, now abandoned filed by D. W. Johnson, L.
W. Henson, A. A. Shaheen-Gouda, and T. A. Smith for Negotiating
Communication Conventions Between Nodes In A Network.
Application Ser. No. 07/014,897, now U.S. Pat. No. 4,887,204, filed by D.
W. Johnson, G. H. Neuman, C. H. Sauer, A. A. Shaheen-Gouda, and T. A.
Smith for A System and Method For Accessing Remote Files In A Distributed
Networking Environment.
Application Ser. No. 07/014,900, now U.S. Pat. No. 5,175,892, filed by D.
W. Johnson, A. A. Shaheen-Gouda, T. A. Smith for Distributed File Access
Structure Lock.
Application Ser. No. 07/014,892, now U.S. Pat. No. 5,001,628, filed by D. W
Johnson, L. K. Loucks, C. H. Sauer, and T. A. Smith for Single System
Image Uniquely Defining An Environment for Each User In A Data Processing
System.
Application Ser. No. 07/014,888, now U.S. Pat. No. 5,133,053, filed by D.
W. Johnson, L. K. Loucks, A. A. Shaheen-Gouda for Interprocess
Communication Queue Location Transparency.
Application Ser. No. 07/014,889, now U.S. Pat. No. 5,151,989, filed by D.
W. Johnson, A. A. Shaheen-Gouda, and T. A. Smith for Directory Cache
Management In A Distributed Data Processing System.
The disclosures of the foregoing co-pending applications are incorporated
herein by reference.
DESCRIPTION
1. Field of the Invention
This invention generally relates to improvements in operating systems for a
distributed data processing system and, more particularly, to an operating
system for a multi-processor system interconnected by a local area network
(LAN) or a wide area network (WAN). IBM's System Network Architecture
(SNA) may be used to construct the LAN or WAN. The operating system
according to the invention permits the accessing of files by processors in
the system, no matter where those files are located in the system. The
preferred embodiment of the invention is disclosed in terms of a preferred
embodiment which is implemented in a version of the UNIX.sup.1 operating
system; however, the invention could be implemented in other and different
operating systems.
.sup.1 Developed and licensed by AT&T. UNIX is a registered trademark of
AT&T in the U.S.A. and other countries.
2. Background of the Invention
Virtual machine operating systems are known in the prior art which make a
single real machine appear to be several machines. These machines can be
very similar to the real machine on which they are run or they can be very
different. While many virtual machine operating systems have been
developed, perhaps the most widely used is VM/370 which runs on the IBM
System/370. The VM/370 operating system creates the illusion that each of
several users operating from terminals has a complete System/370 with
varying amounts of disk and memory capacity.
The physical disk devices are managed by the VM/370 operating system. The
physical volumes residing on disk are divided into virtual volumes of
various sizes and assigned and accessed by users carrying out a process
called mounting. Mounting defines and attaches physical volumes to a
VM/370 operating system and defines the virtual characteristics of the
volumes such as size, security and ownership.
Moreover, under VM/370 a user can access and use any of the other operating
systems running under VM/370 either locally on the same processor or
remotely on another processor. A user in Austin can use a function of
VM/370 called "passthru" to access another VM/370 or MVS/370 operating
system on the same processor or, for example, a processor connected into
the same SNA network and located in Paris, France. Once the user has
employed this function, the files attached to the other operating system
are available for processing by the user.
There are some significant drawbacks to this approach. First, when the user
employs the "passthru" function to access another operating system either
locally or remotely, the files and operating environment that were
previously being used are no longer available until the new session has
been terminated. The only way to process files from the other session is
to send the files to the other operating system and effectively make
duplicate copies on both disks. Second, the user must have a separate
"logon" on all the systems that are to be accessed. This provides the
security necessary to protect the integrity of the system, but it also
creates a tremendous burden on the user. For further background, the
reader is referred to the text book by Harvey M. Deitel entitled An
Introduction to Operating Systems, published by Addison-Wesley (1984), and
in particular to Chapter 22 entitled "VM: A Virtual Machine Operating
System". A more in depth discussion may be had by referring to the text
book by Harold Lorin and Harvey M. Deitel entitled Operating Systems,
published by Addison-Wesley (1981), and in particular to Chapter 16
entitled "Virtual Machines".
The invention to be described hereinafter was implemented in a version of
the UNIX operating system but may be used in other operating systems
having characteristics similar to the UNIX operating system. The UNIX
operating system was developed by Bell Telephone Laboratories, Inc., for
use on a Digital Equipment Corporation (DEC) minicomputer but has become a
popular operating system for a wide range of minicomputers and, more
recently, microcomputers. One reason for this popularity is that the UNIX
operating system is written in the C programming language, also developed
at Bell Telephone Laboratories, rather than in assembly language so that
it is not processor specific. Thus, compilers written for various machines
to give them C capability make it possible to transport the UNIX operating
system from one machine to another. Therefore, application programs
written for the UNIX operating system environment are also portable from
one machine to another. For more information on the UNIX operating system,
the reader is referred to UNIX.sup.TM System, User's Manual, System V,
published by Western Electric Co., January, 1983. A good overview of the
UNIX operating system is provided by Brian W. Kernighan and Rob Pike in
their book entitled The Unix Programming Environment, published by
Prentice-Hall (1984). A more detailed description of the design of the
UNIX operating system is to be found in a book by Maurice J. Bach, Design
of the Unix Operating System, published by Prentice-Hall (1986).
AT&T Bell Labs has licensed a number of parties to use the UNIX operating
system, and there are now several versions available. The most current
version from AT&T is version 5.2. Another version known as the Berkeley
version of the UNIX operating system was developed by the University of
California at Berkeley. Microsoft, the publisher of the popular MS-DOS and
PC-DOS operating systems for personal computers, has a version known under
their trademark as XENIX. With the announcement of the IBM RT PC.sup.2
(RISC (reduced instruction set computer) Technology Personal Computer) in
1985, IBM Corp. released a new operating system called AIX.sup.3 (Advanced
Interactive Executive) which is compatible at the application interface
level with AT&T's UNIX operating system, version 5.2, and includes
extensions to the UNIX operating system, version 5.2. For more description
of the AIX operating system, the reader is referred to AIX Operating
System Technical Reference, published by IBM Corp., First Edition
(November, 1985).
.sup.2 RT and RT PC are registered trademarks of IBM Corporation.
.sup.3 AIX is a trademark of IBM Corporation.
The invention is specifically concerned with distributed data processing
systems characterized by a plurality of processors interconnected in a
network. As actually implemented, the invention runs on a plurality of IBM
RT PCs interconnected by IBM's Systems Network Architecture (SNA), and
more specifically SNA LU 6.2 Advanced Program to Program Communication
(APPC). SNA uses as its link level Ethernet.sup.4, a local area network
(LAN) developed by Xerox Corp., or SDLC (Synchronous Data Link Control). A
simplified description of local area networks including the Ethernet local
area network may be found in a book by Larry E. Jordan and Bruce Churchill
entitled Communications and Networking for the IBM PC, published by Robert
J. Brady (a Prentice-Hall company) (1983). A more definitive description
of communications systems for computers, particularly of SNA and SDLC, is
to be found in a book by R. J. Cypser entitled Communications Architecture
for Distributed Systems, published by Addison-Wesley (1978). It will,
however, be understood that the invention may be implemented using other
and different computers than the IBM RT PC interconnected by other
networks than the Ethernet local area network or IBM's SNA.
.sup.4 Ethernet is a trademark of Xerox Corporation.
As mentioned, the invention to be described hereinafter is directed to a
distributed data processing system in a communication network. In this
environment, each | | |