  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.
