Abstract

To gain broader acceptance, Persistent Programming Languages (PPL) need a better integration of the transaction paradigm. Much like database systems, computations should all run in the context of a transaction; the transactional properties should be applied to all objects irrespective of their type and lifetime, and they must be enforced automatically via safe and efficient mechanisms. This requires lock managers that can cope with the requirement for automated locking in a PPL. This paper reports our design and implementation of such lock managers and the accompanying machinery that a PPL must incorporate to automate locking. Our innovative ingredients for an efficient lock management recipe are a close collaboration with the memory manager of the PPL and the sharing of lock data structures of equal value between locked objects. Sharing such lock values has numerous benefits: it makes the space consumption of locking negligible and independent of the number of locks, which frees transactions of any restriction on the volume of locks that they can use; it eliminates the need for expensive book-keeping of locks by transactions; and it enables the use of both non-blocking synchronization and memorization techniques for whole locking operations. These features combine to achieve fast lock acquisition for the non-blocking cases (6 RISC instructions), and make releasing locks practically free. The impact of lock management techniques and automated locking strategy on the performance of a PPL are analysed based on measurements of various lock managers integrated into PJama, a JavaTM Virtual Machine (JVM) which provides orthogonal persistence. Copyright © 2000 John Wiley & Sons, Ltd.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call