Teaching Operating Systems with Tracing
A set of open-source courses for students and software practitioners
Robert N. M. Watson and George V. Neville-Neil
We have observed a decline in the teaching of operating systems fundamentals in a period where it is becoming more important, in large part due to a lack of contemporary and re-usable material, and training for people to teach operating systems. Where such courses still exist they work with toys rather than real systems, avoid interesting micro-architectural elements required to achieve performance on contemporary systems, omit coverage of the features developers are most likely to engage with e.g., multi-threading, multi-core hardware, and networking. Finally, and perhaps most importantly, they fail to teach suitable experimental methodology to allow developers to evaluate whether their performance work is effective.
It is our belief that giving students the ability to observe, at run time, the inner workings of a complex system, such as the FreeBSD Operating System, provides them with a clearer understanding of how such systems ought to work in theory, how they actually work in practice, and how to design experiments to tell the difference between the two.
These courses are applicable to both University students and practitioners of software engineering.
The preferred text for the course is The Design and Implementation of the FreeBSD Operating System, 2nd Ed.
The material contained herein is shared under a permissive, open-source license with the intent that it is widely adopted.
Note that the practitioner course requires the Metropolitan Beamer theme to be installed before the slides can be compiled.