Abstract Operating System (AOS) is a simulation-based high-level teaching tool for teaching operating systems courses that runs in user-space, as well as a browser-based visual interface to interact with the AOS. Trial-and-error as well as immediate feedback are hallmarks of effective learning, especially in computer science, so a simplified but conceptually accurate operating system will likely provide large benefits. We built a virtual operating system that exposes clean interfaces for users to plug in their own algorithms for system processes such as memory allocation or process scheduling. Because our operating system is entirely ran in user-space, we can provide a complete picture of the current state of the system, and we can use any language for authoring the algorithms in question, though for our proof of concept we chose Python.
The simulation consists of the following components:
- An abstract operating system in Python, including simulated physical memory, memory management, abstract processes and schedulers
- A simple, script-like language to flexibly define process behaviour (i.e. how much work a process does, and how much resources it attempts to acquire) and resource acquisition
- A TOML-based scenario configuration file that defines the system state, including process spawning, simulated hardware specification, and resource availability
- A visualization written in React, a library that supports declarative rendering techniques, and d3.js, a target-independent library for rendering visualizations, primarily using SVG for display of information.