Software Tools for Low-Level Software and Operating Systems Classes

Low-level software is a particularly challenging topic to learn. In this paper, we present a framework and an application that makes the task of understanding system level software and hardware simpler. Traditional analysis tools, such as profilers and debuggers, are either too difficult to use in these situations, or are simply not available. Hardware interactions, which are typical of low level software, make the challenge of understanding even more complicated. The tools we have built provide a view into the workings of such systems in both a simulation environment and on real hardware. The motivation for our framework, and the visualization tools that use it, is the teaching of an undergraduate level operating systems course. We discovered while teaching this course that many students struggled with the low-level environment and concepts of the course. We decided then to develop a set of applications and utilities to help students understand the inner working of the systems they were dealing with.

[1]  Todd R. Andel,et al.  Developing a virtualization platform for courses in networking, systems administration and cyber security education , 2009, SpringSim '09.

[2]  Fabrice Bellard,et al.  QEMU, a Fast and Portable Dynamic Translator , 2005, USENIX ATC, FREENIX Track.

[3]  Mike Hibler,et al.  Composable multi-level debugging with Stackdb , 2014, VEE '14.

[4]  Matt Bishop,et al.  Virtual Machine Introspection: Observation or Interference? , 2008, IEEE Security & Privacy.

[5]  Jun Wang,et al.  Manifold: A parallel simulation framework for multicore systems , 2014, 2014 IEEE International Symposium on Performance Analysis of Systems and Software (ISPASS).

[6]  Nicholas Nethercote,et al.  Valgrind: a framework for heavyweight dynamic binary instrumentation , 2007, PLDI '07.

[7]  Luca Benini,et al.  VirtualSoC: A Full-System Simulation Environment for Massively Parallel Heterogeneous System-on-Chip , 2013, 2013 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum.

[8]  Luca Benini,et al.  Full system simulation of many-core heterogeneous SoCs using GPU and QEMU semihosting , 2012, GPGPU-5.

[9]  Kevin P. Lawton Bochs: A Portable PC Emulator for Unix/X , 1996 .

[10]  Tal Garfinkel,et al.  A Virtual Machine Introspection Based Architecture for Intrusion Detection , 2003, NDSS.

[11]  Fan Yile Utilizing the Virtualization Technology in Computer Operating System Teaching , 2016, 2016 Eighth International Conference on Measuring Technology and Mechatronics Automation (ICMTMA).

[12]  Bryan D. Payne,et al.  Simplifying virtual machine introspection using LibVMI. , 2012 .

[13]  Phillip H. Jones,et al.  A project-based embedded systems design course using a reconfigurable SoC platform , 2015, 2015 IEEE International Conference on Microelectronics Systems Education (MSE).

[14]  Milan Klement,et al.  Models of integration of virtualization in education: Virtualization technology and possibilities of its use in education , 2017, Comput. Educ..

[15]  Jason Nieh,et al.  Experiences teaching operating systems using virtual platforms and linux , 2005 .

[16]  Dalibor Dobrilovic,et al.  Using Virtualization Software in Operating Systems Course , 2006, 2006 International Conference on Information Technology: Research and Education.

[17]  Niels Provos,et al.  Improving Host Security with System Call Policies , 2003, USENIX Security Symposium.

[18]  Greg Cooper DTrace: dynamic tracing in oracle Solaris, Mac OS X, and free BSD by Brendan Gregg and Jim Mauro , 2012, SOEN.

[19]  Jeremy Andrus,et al.  Teaching operating systems using android , 2012, SIGCSE '12.

[20]  Brendan Gregg,et al.  Dtrace: Dynamic Tracing in Oracle Solaris, Mac OS X and Freebsd , 2011 .

[21]  Xuxian Jiang,et al.  Stealthy malware detection through vmm-based "out-of-the-box" semantic view reconstruction , 2007, CCS '07.