PrefaceIn many computer science programs, Operating Systems is an advancedtopic. By the time students take it, they know how to program in C, andthey have probably taken a class in Computer Architecture.Usually thegoal of the class is to expose students to the design and implementation ofoperating systems, with the implied assumption that some of them will doresearch in this area, or write part of an OS.This book is intended for a different audience, and it has different goals. Ideveloped it for a class at Olin College called Software Systems.Most students taking this class learned to program in Python, so one ofthe goals is to help them learn C. For that part of the class, I use Griffithsand Griffiths,Head First C, from O’Reilly Media.This book is meant tocomplement that one.Few of my students will ever write an operating system, but many ofthem will write low-level applications in C or work on embedded systems.My class includes material from operating systems, networks, databases,and embedded systems, but it emphasizes the topics programmers need toknow.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 whatis happening when programs run, and what you can do to make them runbetter and faster.Chapter 1 explains some of the differences between compiled and inter-preted languages, with some insight into how compilers work.Recom-mended reading:Head First CChapter 1.Chapter 2 explains how the operating system uses processes to protect run-ning programs from interfering with each other.
ivChapter 0. PrefaceChapter 3 explains virtual memory and address translation. Recommendedreading:Head First CChapter 2.Chapter 4 is about file systems and data streams. Recommended reading:Head First CChapter 3.Chapter 5 describes how numbers, letters, and other values are encoded,and presents the bitwise operators.Chapter 6 explains how to use dynamic memory management, and how itworks. Recommended reading:Head First CChapter 6.