Systems and methods for sharing resources in a multi-user environment
First Claim
1. A client-server database system comprising:
- a database server storing a database;
a database engine for performing database operations on said database in response to requests from clients, said database engine including an interface for receiving said requests;
at least one stored procedure, operably coupled to said database engine, for invoking a pre-defined sequence of operations of the database engine, said at least one stored procedure having a data object shared concurrently by said clients; and
a surrogate mutex for providing nested mutual exclusive access of said data object to a particular client in response to multiple, nested requests by said particular client for mutual exclusive access, said surrogate mutex encapsulating a system mutex from an operating system which does not support nested mutual exclusive access.
3 Assignments
0 Petitions
Accused Products
Abstract
Multi-user system includes a server connected to one or more workstations or "clients" through a computer network. System provides concurrent access to shared resources (e.g., common data structures residing on the server), but without the disadvantage attendant with conventional mutual exclusive (mutex) primitives. Specifically, the system provides a "nested mutex" mechanism, so that user program code can acquire and release mutexes without concern for deadlocking and without special processing for testing a particular mutex condition or state. At the same time, the system prevents other threads or processes from accessing the shared resource in a manner which would violate concurrency.
202 Citations
29 Claims
-
1. A client-server database system comprising:
-
a database server storing a database; a database engine for performing database operations on said database in response to requests from clients, said database engine including an interface for receiving said requests; at least one stored procedure, operably coupled to said database engine, for invoking a pre-defined sequence of operations of the database engine, said at least one stored procedure having a data object shared concurrently by said clients; and a surrogate mutex for providing nested mutual exclusive access of said data object to a particular client in response to multiple, nested requests by said particular client for mutual exclusive access, said surrogate mutex encapsulating a system mutex from an operating system which does not support nested mutual exclusive access. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. In a client-server database system including a server maintaining a database and a plurality of clients, a method for providing nested mutual exclusive access to a data object specified by a shared stored procedure, said shared stored procedure comprising user-specified data manipulation statements for instructing said server to perform a predefined sequence of operations on said database, the method comprising the steps of:
-
allocating within storage a surrogate mutex including a record describing access to a data object specified by said shared stored procedure and shared concurrently by said plurality of clients, said record having an identifier field for storing an identity of a client, having a mutex field for accessing a system mutex from an operating system that does not allow nested mutual exclusive access, and having a count field for storing how many times said client has requested access to said data object; receiving at least one request from a particular client to access said data object; and for each said at least one request from said particular client to access said data object, performing one of the following; storing an identity of said particular client in said identifier field, storing a pointer to a system mutex that does not allow nested mutual exclusive access in said mutex field, storing a value of 1 in said count field, and granting said particular client access to said data object if said identifier field indicates no client has access to said data object, placing said particular client in a sleep state until said identifier field indicates no other client has access to said data object if said identifier field does not specify said particular client, and incrementing said count field if said identifier field specifies said particular client. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
-
-
22. A computer program product for providing nested mutual exclusive access to a data object specified by a shared stored procedure in a client-server database system including a server maintaining a database and a plurality of clients, said computer program product comprising:
a computer readable storage medium storing a computer program, said computer program comprising; code that allocates within storage a record describing access to a data object specified by said shared stored procedure storing user-specified data manipulation statements for instructing said server to perform a predefined sequence of data manipulation operations on said database and shared concurrently by said plurality of clients, said record having an identifier field for storing an identity of a client, having a mutex field for accessing a system mutex which does not support nested mutual exclusive access, and having a count field for storing how many times said client has requested access to said data object; code that receives at least one request from a particular client to access said data object; and code that for each said at least one request from said particular client to access said data object, performs one of the following; stores an identify of said particular client in said identifier field, stores in said mutex field a pointer to a system mutex that does not allow nested mutual exclusive access, stores a value of 1 in said count field, and granting said particular client access to said data object if said identifier field indicates no client has access to said data object, places said particular client in a sleep state until said identifier field indicates no other client has access to said data object if said identifier field does not specify said particular client, and increments said count field if said identifier field specifies said particular client. - View Dependent Claims (23, 24, 25, 26, 27, 28, 29)
Specification