next up previous
Next: Transaction Models Up: No Title Previous: No Title

Concurrency Control

In our discussion of mutual exclision so far, we have considered atomic access to a single object. What if we wish to atomically access multiple objects. For instance, what if we wish to atomically remove an item from the input buffer and put it in the echo buffer? The high-level constructs such as monitors and path expressions do not give users of shared objects flexibility in defining the unit of atomicity. They expect the programmer of a shared object to be define the unit of atomicity. But the programmer does not know which other objects may be accessed concurrently (by users) with the object he is programming. Low-level mechanisms such as semaphores are not not bound to a particular object, and thus can be used to provide multi-object atomicity. But techniques of using them are needed to ensure deadlocks are prevented.

Ensuring multi-object consistency is called concurrency control. A variety of concurrency models defining different notions of consistency have been proposed. These models have been developed in the context of database management systems, operating systems, CAD tools, collaborative software engineering, and collaboration systems. We will focus here on the classical database models and the relatively newer operating system models.

Concurrency control does not address both aspects of process coordination - it addresses mutual exclusion but not synchronization. However, in this field, ensuring mutual exclusion is called synchronization, which should not be confused with the producer-consumer synchronization we have seen so far.



Prasun Dewan
Thu Mar 7 11:07:08 EST 2002