This paper described the implementation and performance of Rhino, a transactional memory implemented on the SPIN operating system. By implementing Rhino as an extension dynamically loaded into the kernel address space, we avoid problems associated with traditional systems, such as double paging and user-kernel boundary crossing overhead.
We implemented three write-detection approaches (setrange, page grain logging, and page shadowing) to study their trade-offs in the extension environment. Performance measurement demonstrate that all versions of our system outperform user-space implementations. Also, among the three variations of Rhino, it was found that setrange and page diffing perform equally well for small transactions. Page grain logging performs well for large transactions.
The SPIN operating system, as well as the Rhino transactional memory service described in this paper, can be obtained via the world wide web at https://www.cs.washington.edu/research/projects/spin.