Visual OS: An Object-Oriented Approach to Teaching Operating System Concepts
James Hill, Institute for Software Integrated Systems, Vanderbilt University
Aniruddha Gokhale, Institute for Software Integrated Systems, Vanderbilt University
An operating system can be viewed as an assembly of numerous interacting components, each providing a distinct functionality, such as CPU scheduling, disk scheduling, virtual memory and paging, collaborating to efficiently manage the hardware and resources of a computer system. Understanding the features of these components and the interplay between them can be a non-trivial task, in particular, for undergraduate students in Computer Science studying Operating Systems. To aid in their understanding of the OS dynamics, a number of aids including textbooks, journals and simulators exist. Although these aids suffice to understand simple OS concepts, some algorithms, such as paging, synchronization and process control, and their interactions are too complex to understand without a way to visualize their separation of concerns, and provide individual focus for better understanding.
This paper provides three contributions to using object-oriented technology to build and teach operating systems educational tools. First, we describe the design architecture of Visual OS, which is our OS educational tool that incorporates visualization and an object-oriented patterns-based approach to teaching operating systems. Second, we describe a programming assignment using Visual OS in a senior level OS class at Vanderbilt University. Lastly, we describe our experience using Visual OS.