Curt Schimmel — Unix Systems for Modern Architectures: Symmetric Multiprocessing and Caching for Kernel Programmers — Addison-Wesley, 1994, 396 pp. ISBN 0-201-6338-8
Schimmel proposes an introduction to cache hierarchies and their different technologies and the problems and complexities they incur for an operating system. The book starts off by presenting and comparing the various cache architectures—physical vs virtual caches, mostly. Another part is dedicated to the various locks and exclusion mechanisms such as spin locks, semaphores, etc., that may be found in Unix-type systems. He finishes with cache consistency problems for multiprocessors.
This book is meant for Unix-type system kernel programmers, but it may be beneficial to anyone interested in multi-threaded and multi-core programming; an unavoidable topic for the near future. However, the text is somewhat aged as the biggest Intel CPU considered is the classic Pentium. While the principles presented still apply, I would have liked to see a rejuvenated version to consider the newer multi-core architectures as well as the newer versions of Unix itself, such as BSD and maybe the other dominant Unix-like system, Linux.