Teaching Operating Systems Concepts with Execution Visualization
We present an original approach to introduce Operating Systems concepts to Computer Engineering undergraduate students. These concepts are the basis on which students build a mental model of the whole computer in order to make important design decisions throughout their career. One major challenge in teaching operating systems is the complex, intangible, and nondeterministic nature of an actual computer system containing many cores operating in parallel.
We propose a global approach to address this challenge involving a full-scale open source operating system, a carefully designed set of experiments and novel execution visualization tools. In order to deconstruct their preconceptions, students are exposed to phenomena that seem contradictory at first glance, but are the result of the interaction between the microarchitecture, the operating system and the libraries. In the spirit of constructivism, students are invited to observe the effect of running their own programs as part of a problem solving challenge. Participants can thus observe the duration of underlying system calls and the actual scheduling performed by the operating system which is otherwise hidden. Experiments are proposed to compare the impact of design choices and to lead to improved awareness of performance implications. We describe five problem solving activities that we developed and expose the purpose of each tool used. In the context of the first semester of deployment, we evaluated the activities using a qualitative method. We conducted online surveys and a focus group, and observed a high learning satisfaction level for students. This validates the proposed approach with a high level of confidence.
Tracks concerned:
- CTPD
- CTPD›Tracing the whole hardware infrastructure, from network processors to application-specific many-core processors