An operating system is probably the most important part of the body of soft ware which goes with any modem computer system. Its importance is reflected in the large amount of manpower usually invested in its construction, and in the mystique by which it is often surrounded. To the non-expert, the design and construction of operating systems has often appeared an activity impenetrable to those who do not practise it. I hope this book will go some way toward dispelling the mystique, and encourage a greater general under standing of the principles on which operating systems are constructed. The material in the book is based on a course of lectures I have given for the past few years to undergraduate students of computer science. The book is therefore a suitable introduction to operating systems for students who have a basic grounding in computer science, or for people who have worked with computers for some time. Ideally the reader should have a knowledge of pro gramming and be familiar with general machine architecture, common data structures such as lists and trees, and the functions of system software such as compilers, loaders and editors. It will also be helpful if he or she has had some experience of using a large operating system, seeing it, as it were, from the outside.