Prev Next

Logical State

Orec contains Logical State
Version number (always odd) Value from the heap, version from orec
Pointer to transaction, which contains entry for this address If transaction committed: new value/version, else: old value/version
Pointer to transaction with no entry for this address One orec serving multiple memory locations: use value from the heap, version from another entry mapped to the same orec

Consistent snapshot guaranteed by:

 do {
    orec := orec_of (addr);
    directly compute logical state based on orec
 } while (orec_of (addr) != orec);

12