Operating Systems: Principles and Practice (Second Edition) Volume II: Concurrency by Thomas Anderson and Michael Dahlin