Atomic actions in concurrent systems (fault-tolerance, control)
Pankaj Jalote · 1985
The concept of an indivisible sequence of actions has been in use to design concurrent systems. An atomic action is an activity, possibly consisting of many steps performed by many processors, that appears primitive and indivisible to any activity outside the atomic action. The aim of the thesis is to show that atomicity is fundamental to programming concurrent systems and to demonstrate that many different concurrency control schemes which have appeared in many different contexts have actually the same goal: to provide a mechanism that ensures atomicity of system activities. A formal model of atomic actions is presented. Actions are specified in terms of their state transformation sequences. Atomic actions are specified as restricted state transformation sequences. Backward and forward recoverability of actions is defined for this model. It is shown that if an action is backward recoverable (or forward recoverable) then it is necessarily an atomic action. A notation is proposed to use atomic actions for fault tolerance in a system of communicating sequential processes. The technique provides a construct to implement atomic actions, which is used to support the different recovery schemes in a complementary manner. An implementation is proposed which employs local compile-time and run-time checking of the forward and backward recovery schemes. A new protocol is proposed to implement atomic actions in database systems. The protocol employs preventive and corrective measures to ensure the atomicity of transactions in a database system.