The purpose of this book is to show that the formal specification of kernels is not only possible but also necessary if operating systems are to achieve the levels of reliability and security that is demanded of them today. Specifications of a sequence of kernels of increasing complexity are included, acting as models to enable the designer to identify and reason about the properties of the design thus making explicit that which is too often left implicit or even unknown. A considerable amount of reasoning is included, showing what can be inferred about a design; and in addition, essential properties of data structures and mechanisms are discussed and the properties of these proved. Also included as an essential aspect of the activity, are the interfaces to the hardware and the processes running on them. It is very easy to get bogged down in complexity issues when considering kernels, but this books prescriptive rather than descriptive approach shows how the kernel of an operating system can affect both the reliability and performance of these systems in a clear and concise style.