computer architecture, programming language, and
operating system becomes difficult. To overcome the
previous difficulty, we propose a methodology for stu-
dents to learn systems-level details with a tool called
MMVM. Unlikely existing researches and software
systems, our methodology is based on the implemen-
tation of a virtual machine instead of using existing
ones. We conducted a preliminary evaluation in terms
of learning in which we offer 15 under/graduate stu-
dents to implement a virtual machine. As a result,
we found two observations. Firstly, all students could
implement a disassembler for all programs, the kinds
of them varies from just invoking printf to using func-
tions, arguments and control statements (e.g., for, if)
and system calls, generating various kinds of 8086’s
instruction. Secondly, all students could execute 8 of
9 programs in the virtual machine and only one stu-
dent executed all of them. Through these observa-
tions, we realized that students could learn system-
level details such as assembly language, computer ar-
chitecture, and operating systems as real skills. This
is because if they did not understand these details,
they could not finish to implement a disassembler and
a virtual machine. Thereby we can claim that our
methodology could address the two problems men-
tioned in this paper: lack of experiences and compre-
hensive understanding in system-level details, leading
to improving students’ knowledge and skills.
REFERENCES
Armbrust, M., Fox, A., Griffith, R., Joseph, A. D., Katz,
R., Konwinski, A., Lee, G., Patterson, D., Rabkin, A.,
Stoica, I., and Zaharia, M. (2010). A view of cloud
computing. Commun. ACM, 53(4):50–58.
Atkin, B. and Sirer, E. G. (2002). Portos: An educational
operating system for the post-pc environment. In Pro-
ceedings of the 33rd SIGCSE Technical Symposium
on Computer Science Education, SIGCSE ’02, pages
116–120, New York, NY, USA. ACM.
Black, M. D. (2009). Build an operating system from
scratch: A project for an introductory operating sys-
tems course. In Proceedings of the 40th ACM Tech-
nical Symposium on Computer Science Education,
SIGCSE ’09, pages 448–452, New York, NY, USA.
ACM.
Black, M. D. and Komala, P. (2011). A full system x86
simulator for teaching computer organization. In
Proceedings of the 42Nd ACM Technical Symposium
on Computer Science Education, SIGCSE ’11, pages
365–370, New York, NY, USA. ACM.
Brylow, D. (2008). An experimental laboratory environ-
ment for teaching embedded operating systems. In
Proceedings of the 39th SIGCSE Technical Sympo-
sium on Computer Science Education, SIGCSE ’08,
pages 192–196, New York, NY, USA. ACM.
Committee, T. (1995). Tool interface standard (tis) exe-
cutable and linking format (elf) specification version
1.2.
Dall, C. and Nieh, J. (2014). Teaching operating systems
using code review. In Proceedings of the 45th ACM
Technical Symposium on Computer Science Educa-
tion, SIGCSE ’14, pages 549–554, New York, NY,
USA. ACM.
Gondow, K., Fukuyasu, N., and Arahori, Y. (2010). Mieru-
compiler: Integrated visualization tool with ”horizon-
tal slicing” for educational compilers. In Proceedings
of the 41st ACM Technical Symposium on Computer
Science Education, SIGCSE ’10, pages 7–11, New
York, NY, USA. ACM.
Intel (1990). 8086 16-bit microprocessor. http://www.ece.
cmu.edu/
∼
ece740/f11/lib/exe/fetch.php?media=wiki:
8086-datasheet.pdf.
Intel (2018). Intel 64 and ia-32 architecture soft-
ware developer’s manual. https://software.
intel.com/sites/default/files/managed/39/c5/
325462-sdm-vol-1-2abcd-3abcd.pdf.
John Lions (1977). Lions’ Commentary on Unix 6th Edi-
tion. Peer to Peer Communications/ Annabook.
Oracle Corporation and/or its affiliates (2010). Posix system
calls. https://docs.oracle.com/cd/E19048-01/chorus4/
806-3328/index.html.
Russell, S. and Norvig, P. (2009). Artificial Intelligence: A
Modern Approach. Prentice Hall Press, Upper Saddle
River, NJ, USA, 3rd edition.
Skrien, D. (2001). Cpu sim 3.1: A tool for simulating com-
puter architectures for computer organization classes.
J. Educ. Resour. Comput., 1(4):46–59.
Tanenbaum, A. S. and Woodhull, A. S. (2005). Operat-
ing Systems Design and Implementation (3rd Edition).
Prentice-Hall, Inc., Upper Saddle River, NJ, USA.
Warford, J. S. and Okelberry, R. (2007). Pep8cpu: A pro-
grammable simulator for a central processing unit. In
Proceedings of the 38th SIGCSE Technical Sympo-
sium on Computer Science Education, SIGCSE ’07,
pages 288–292, New York, NY, USA. ACM.
Zeng, H., Yourst, M., Ghose, K., and Ponomarev, D. (2009).
Mptlsim: A cycle-accurate, full-system simulator for
x86-64 multicore architectures with coherent caches.
SIGARCH Comput. Archit. News, 37(2):2–9.
CSEDU 2020 - 12th International Conference on Computer Supported Education
340