Operating systems is an essential course in computer science curriculum, which helps students to develop a mental model of how computer operating systems work. The internal mechanisms and processes of an operating system (OS) are often complex, non-deterministic and intangible which makes them difficult for students to understand. One such concept is central processing unit (CPU) scheduling. CPU scheduling forms the basis of the multiprogramming in an OS.
In practice, OS courses involve classroom lectures describing high-level abstractions of the concepts, and students complete programming assignments to apply the material in a more concrete way. Depending on the programming assignments, this approach may leave students with only a theoretical understanding of OS ideas, which may be different from the actual way these concepts are implemented in an OS. What many students require is a practical knowledge of OS implementation to supplement the high-level presentations of concepts taught in class or presented in a textbook.
To bridge the gap between the operating system theory and practical implementation, this research describes the development of an interactive simulation to present the theories involved in CPU scheduling in visualizations and simulations. This thesis discusses a prototype interactive tutoring system (ITS) named as Sched-ITS. The tool covers all the important algorithms of CPU scheduling such as first-come, first-serve (FCFS), round robin (RR), shortest job first (SJF), shortest remaining time first (SRTF), priority with pre-emption, and priority without pre-emption.
Sched-ITS also provides graphical visualization of how context switches occur during CPU scheduling in a real operating system. Sched-ITS makes use of the JavaFX framework for visualization and Perf-tool for tracing an OS’s scheduling activities. It presents scheduling activities of background processes as well as pre-defined or user-defined processes. Sched-ITS can display scheduling order changes for different algorithms for the same set of processes in a Linux operating system.