A Brief Introduction to Operating Systems
Allen B. Downey
Think OS is an introduction to Operating Systems for programmers.
In many computer science programs, Operating Systems is an advanced topic. By the time students take it, they usually know how to program in C, and they have probably taken a class in Computer Architecture. Usually the goal of the class is to expose students to the design and implementation of operating systems, with the implied assumption that some of them will do research in this area, or write part of an OS.
This book is intended for a different audience, and it has different goals. I developed it for a class at Olin College called Software Systems.
Most students taking this class learned to program in Python, so one of the goals is to help them learn C. For that part of the class, I use Griffiths and Griffiths, Head First C, from O'Reilly Media. This book is meant to complement that one.
Few of my students will ever write an operating system, but many of them will write low-level applications in C, and some of them will work on embedded systems. My class includes material from operating systems, networks, databases, and embedded systems, but it emphasizes the topics programmers need to know.
This book does not assume that you have studied Computer Architecture. As we go along, I will explain what we need.
If this book is successful, it should give you a better understanding of what is happening when programs run, and what you can do to make them run better and faster.