Transparent consistent active replication of multithreaded application programs
First Claim
1. A system for executing threads in replicas of an application program within a computing environment, using the active replication strategy, in which resources are shared between threads in a replica, wherein said shared resources comprise either data or code sections for manipulating said data, comprising:
- means for communicating to multiple replicas the claims of shared resources by threads in a replica; and
means for ordering shared resource claims to be granted to threads in multiple replicas corresponding to the order in which claims for the resources were communicated, ordered and delivered through said means for communicating the order of claiming;
wherein a thread within a replica is suspended upon claiming a shared resource until said claim is communicated to all of said replicas; and
wherein said thread suspension is suppressed if said shared resource claim has already been communicated to all of the replicas.
3 Assignments
0 Petitions
Accused Products
Abstract
A method and system for transparent consistent active replication of multithreaded application programs is described. At each replica, control messages that contain mutex ordering information indicating the order in which threads in the replicas claim mutexes are multicast, and the control messages are delivered using a multicast group communication protocol that delivers the messages in an order that determines the order in which the operating system'"'"'s thread library grants the claims of mutexes to the threads in the replicas. Because the replicas receive the same messages in the same source order, the corresponding threads in the different replicas are granted their corresponding claims to the corresponding mutexes in the same order, maintaining strong replica consistency.
-
Citations
60 Claims
-
1. A system for executing threads in replicas of an application program within a computing environment, using the active replication strategy, in which resources are shared between threads in a replica, wherein said shared resources comprise either data or code sections for manipulating said data, comprising:
-
means for communicating to multiple replicas the claims of shared resources by threads in a replica; and means for ordering shared resource claims to be granted to threads in multiple replicas corresponding to the order in which claims for the resources were communicated, ordered and delivered through said means for communicating the order of claiming; wherein a thread within a replica is suspended upon claiming a shared resource until said claim is communicated to all of said replicas; and wherein said thread suspension is suppressed if said shared resource claim has already been communicated to all of the replicas. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 45, 46, 47, 48, 49, 50, 51, 52)
-
-
36. A system executing a multithreaded application program within a computing environment in which replicas of said program are created using the active replication strategy, comprising:
-
a computer configured for executing said replicas; and programming associated with said computer for carrying out the operations of, suspending a thread that claims a shared resource, in response to programming of functions contained in a consistent multithreading library; communicating the order of the claims of the shared resources by the threads in the replicas, in response to the operation of a multicast group communication protocol; and granting access to shared resources, and activating suspended threads, in response to said ordering of shared resource claims when said resources are available, in response to resource granting functions; wherein multicasting of a claim request can be suppressed if a given replica has already received the same claim for the same shared resource by the same thread. - View Dependent Claims (37, 38, 39, 40, 41, 42, 43, 44)
-
-
53. A method of identically ordering accesses to corresponding shared resources by corresponding threads in different replicas of an actively replicated multithreaded application program, comprising:
-
invoking a claim on a shared resource by a thread in a replica in preparation for accessing said shared resource; suspending execution of said thread invoking said resource claim; multicasting a message to communicate information about said resource claim by said thread in said replica to all of the replicas; ordering and delivering said information about said resource claims by said multicast; granting access to said resource, when available, to a thread in response to the order in which said information is delivered to the replicas; and releasing said resource, by said thread granted said resource, after said thread has completed accessing said shared resource. - View Dependent Claims (54, 55, 56, 57, 58, 59, 60)
-
Specification