cs.DC cs.DS
Efficient Partial Snapshot Implementations. In this work, we propose the lambda scanner snapshot, a variation of the snapshot object, which supports any fixed amount of 0 lambda leq n different SCAN operations being active at any given time. Whenever lambda is equal to the number of processes n in the system, the lambda scanner object implements a multi scanner object, while in case that lambda is equal to 1 , the lambda scanner object implements a single scanner object. We present the lambda Snap snapshot object, a wait free lambda scanner snapshot implementation that has a step complexity of O( lambda) for UPDATE operations and O( lambda m) for SCAN operations. The space complexity of lambda Snap is O( lambda m) . lambda Snap provides a trade off between the step space complexity and the maximum number of SCAN operations that the system can afford to be active on any given point in time. The low space complexity that our implementations provide makes them more appealing in real system applications. Moreover, we provide a slightly modified version of the lambda Snap implementation, which is called partial lambda Snap , that is able to support dynamic partial scan operations. In such an object, processes can execute modified SCAN operations called PARTIAL SCAN that could obtain a part of the snapshot object avoiding to read the whole set of components. In this work, we first provide a simple single scanner version of lambda Snap , which is called 1 Snap . We provide 1 Snap just for presentation purposes, since it is simpler than lambda Snap . The UPDATE in 1 Snap has a step complexity of O(1) , while the SCAN has a step complexity of O(m) . This implementation uses O(m) CAS registers.