A Flexible and Broad Operating System Project
Robert Earl Lowe · 2024
A course in operating systems is uniquely challenging to plan and execute effectively largely because operating systems are complex and class time is precious. Traditional approaches vary in how they balance theory and practice, with the typical course focusing on the development of a small-scale operating system project. One disadvantage of this approach is that it tends to focus deeply on one type of operating system architecture and does not provide adequate breadth of exploration. This paper presents a project and course approach which seeks to correct this problem. Students study an existing monolithic kernel while producing their own microkernel system by adapting and redesigning code. The system is flexible enough to provoke discussion of both Unix-like systems and the Microsoft Windows system. Finally, while fully successful students will see and edit virtually all of the system, each assignment is a stand-alone assignment which invites the student to write and test a specific aspect of the system, with all other parts provided as precompiled modules. Each assignment provides a module which is seen and tested as part of the larger enclosing system and include experiments which are executed on a complete system. This paper concludes with a study that compares approaches showing the efficacy of this project.