Applied last set of changes. (?)
This commit is contained in:
parent
e0b43b64ad
commit
03d09271bc
1 changed files with 45 additions and 31 deletions
|
@ -1510,25 +1510,36 @@ complexity by providing logical undos, and by leaving lock management
|
||||||
to higher-level code. This separates write-back and concurrency
|
to higher-level code. This separates write-back and concurrency
|
||||||
control policies from data structure implementations.
|
control policies from data structure implementations.
|
||||||
|
|
||||||
Camelot made a number of important
|
Camelot made a number of important contributions, both in system
|
||||||
contributions, both in system design, and in algorithms for
|
design, and in algorithms for distributed transactions~\cite{camelot}.
|
||||||
distributed transactions~\cite{camelot}. It leaves locking to application level code,
|
It leaves locking to application level code, and updates data in
|
||||||
and updates data in place. (Argus uses shadow copies to provide
|
place. (Argus uses shadow copies to provide atomic updates.) Camelot
|
||||||
atomic updates.) Camelot provides two logging modes: redo only
|
provides two logging modes: physical redo-only (no-steal, no-force)
|
||||||
(no-steal, no-force) and undo/redo (steal, no-force). It uses
|
and physical undo/redo (steal, no-force). Because Camelot does not
|
||||||
facilities of Mach to provide recoverable virtual memory. It
|
support logical undo, concurrent operations must be implemented
|
||||||
supports Avalon, which uses Camelot to provide a
|
similarly to those built with Argus. Camelot is similar to \yad in
|
||||||
higher-level (C++) programming model; Camelot provides a lower-level
|
that its low-level C interface is designed to enable multiple
|
||||||
C interface that enables other programming models as well. It provides a limited form of closed nested transactions
|
higher-level programming models, such as Avalon's C++ interface or an
|
||||||
where parents are suspended while children are active. Camelot also
|
early version of RVM. However, like other distributed programming
|
||||||
provides mechanisms for distributed transactions and transactional
|
models, Camelot focuses on a particular class of distributed
|
||||||
RPC. Although Camelot does allow applications to provide their own lock
|
transactions. Therefore, it hard-codes assumptions regarding the
|
||||||
managers, implementation strategies for concurrent operations
|
structure of nested transactions, consensus algorithms, communication
|
||||||
in Camelot are similar to those
|
mechanisms, and so on.
|
||||||
built using Argus since Camelot does not provide logical undo. Camelot focuses
|
|
||||||
on distributed transactions, and hard-codes
|
%It uses
|
||||||
assumptions regarding the structure of nested transactions, consensus
|
%facilities of Mach to provide recoverable virtual memory. It
|
||||||
algorithms, communication mechanisms, and so on.
|
%supports Avalon, which uses Camelot to provide a
|
||||||
|
%higher-level (C++) programming model; Camelot provides a lower-level
|
||||||
|
%C interface that enables other programming models as well. It provides a limited form of closed nested transactions
|
||||||
|
%where parents are suspended while children are active. Camelot also
|
||||||
|
%provides mechanisms for distributed transactions and transactional
|
||||||
|
%RPC. Although Camelot does allow applications to provide their own lock
|
||||||
|
%managers, implementation strategies for concurrent operations
|
||||||
|
%in Camelot are similar to those
|
||||||
|
%built using Argus since Camelot does not provide logical undo. Camelot focuses
|
||||||
|
%on distributed transactions, and hard-codes
|
||||||
|
%assumptions regarding the structure of nested transactions, consensus
|
||||||
|
%algorithms, communication mechanisms, and so on.
|
||||||
|
|
||||||
More recent transactional programming schemes allow for multiple
|
More recent transactional programming schemes allow for multiple
|
||||||
transaction implementations to cooperate as part of the same
|
transaction implementations to cooperate as part of the same
|
||||||
|
@ -1549,25 +1560,28 @@ concurrently with their children~\cite{omtt}.
|
||||||
QuickSilver is a distributed transactional operating system. It
|
QuickSilver is a distributed transactional operating system. It
|
||||||
provides a transactional IPC mechanism, and
|
provides a transactional IPC mechanism, and
|
||||||
allows varying degrees of isolation, both to support legacy code, and
|
allows varying degrees of isolation, both to support legacy code, and
|
||||||
to implement servers that require special isolation properties. It
|
to implement servers that require special isolation properties.
|
||||||
supports transactions over durable and volatile state, and includes a
|
%It
|
||||||
number of different commit protocols. Its shared logging facility does not
|
%supports transactions over durable and volatile state, and includes a
|
||||||
|
%number of different commit protocols.
|
||||||
|
Interestingly, its shared logging facility does not
|
||||||
hard-code log format or recovery algorithms, and supports a number
|
hard-code log format or recovery algorithms, and supports a number
|
||||||
of interesting optimizations such as distributed
|
of interesting optimizations such as distributed
|
||||||
logging~\cite{recoveryInQuickSilver}. The QuickSilver project found
|
logging~\cite{recoveryInQuickSilver}. QuickSilver's logging mechanism
|
||||||
that transactions meet the demands of most
|
is general enough to support \yad.
|
||||||
|
|
||||||
|
The QuickSilver project showed that transactions meet the demands of most
|
||||||
applications, provided that long-running transactions do not exhaust
|
applications, provided that long-running transactions do not exhaust
|
||||||
system resources, and that flexible concurrency control policies are
|
system resources, and that flexible concurrency control policies are
|
||||||
available. In QuickSilver, nested transactions would
|
available. Nested transactions are
|
||||||
be most useful when a series of program invocations
|
particularly useful when a series of program invocations
|
||||||
form a larger logical unit~\cite{experienceWithQuickSilver}.
|
form a larger logical unit~\cite{experienceWithQuickSilver}.
|
||||||
|
|
||||||
Clouds is an object-oriented, distributed transactional operating
|
Clouds is an object-oriented, distributed transactional operating
|
||||||
system. It uses shared abstract
|
system. It uses shared abstract types~\cite{sharedAbstractTypes} and
|
||||||
types~\cite{sharedAbstractTypes} to provide concurrency control
|
per-object atomicity specifications to provide concurrency control
|
||||||
among the objects in the system~\cite{clouds}. With the aid of
|
among the objects in the system~\cite{clouds}. These formalisms could
|
||||||
per-method atomicity specifications, it provides higher concurrency
|
be used during the design of high-concurrency \yad operations.
|
||||||
than QuickSilver, but is not designed for legacy applications.
|
|
||||||
|
|
||||||
\subsection{Data Structure Frameworks}
|
\subsection{Data Structure Frameworks}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue