- Prove that the basic two-phase locking protocol guarantees conflict serializability of schedules. (Hint: Show that if a serializability graph for a schedule
has a cycle, then at least one of the transactions participating in the schedule
does not obey the two-phase locking protocol.)
- Modify the data structures for multiple-mode locks and the algorithms for
read_lock(X), write_lock(X), and unlock(X) so that upgrading and downgrading of locks are possible. (Hint: The lock needs to check the transaction id(s)
that hold the lock, if any.
- Prove that strict two-phase locking guarantees strict schedules.
- Prove that the wait-die and wound-wait protocols avoid deadlock and
starvation.