Abstract
The word "semaphore" describes both a structure used in computing to manage concurrency and a signal used by trains and naval vessels to transmit information and prevent collisions. In this paper, we present a series of activities which help students build intuition about concurrency by managing "railway semaphores" using an open source train simulation game.
The increasing importance of multi-core computers and computing clusters makes concurrency an especially important topic in both operating systems and systems programming courses. Students often struggle to understand semaphores and concurrency problems. One reason for this is that these subjects are often presented as abstract mathematical objects which are hard to visualize. Using simulation to make these ideas more concrete can improve understanding and increase engagement in the course.
- Akimoto, N., de Cheng, J., An educational game for teaching and learning concurrency, Proceedings of the 1st international conference on knowledge economy and development of science and technology, 34--39, 2003.Google Scholar
- Bedy, M., Carr, S., Huang, X., Shene, C., A visualization system for multithreaded programming, SIGCSE Bulletin, 32, (1), 1--5, 2000. Google ScholarDigital Library
- Bi, Y., Beidler, J., A visual tool for teaching multithreading in Java, Journal of Computing Sciences in Colleges, 22, (6), 156--163, 2007. Google ScholarDigital Library
- Burns, A., Davies, G., Pascal-FC: A language for teaching concurrent programming, SIGPLAN Notices, 23, (1), 58--66, 1988. Google ScholarDigital Library
- Bynum, W. L., Camp. T., After you, Alfonse: a mutual exclusion toolkit, SIGCSE Bulletin, 28, (1), 170--174, 1996. Google ScholarDigital Library
- Christopher, W. A., Procter, S. J., Anderson, T. E., The Nachos instructional operating system, Proceedings of the USENIX Winter Conference, 481--490, 1993. Google ScholarDigital Library
- Donaldson, J. L., Teaching operating systems in a virtual machine environment, SIGCSE Bulletin, 19, (1), 206--211, 1987. Google ScholarDigital Library
- Higginbotham, C. W., Morelli, R., A system for teaching concurrent programming, Proceedings of the Twenty-Second SIGCSE Technical Symposium on Computer Science Education, 309--316, 1991. Google ScholarDigital Library
- Holland, D. A., Lim, A. T., Seltzer, M. I., A new instructional operating system, Proceedings of the 33rd SIGCSE technical symposium on computer science education, 111--115, 2002. Google ScholarDigital Library
- Hoskey, A., Simple OS: A component-based operating system simulator in the spirit of the little man, Journal of Computing Sciences in Colleges, 117--124, 2013 Google ScholarDigital Library
- Kolikant, Y. B., Ben-Ari, M., Pollack, S., The anthropology semaphores, Proceedings of the 5th annual SIGCSE/SIGCUE ITiCSE conference on innovation and technology in computer science education, 21--24, 2000. Google ScholarDigital Library
- OpenTTD developers, OpenTTD Wiki, http://wiki.openttd.org, retrieved April 2014.Google Scholar
- OpenTTD developers, OpenTTD Wiki, http://wiki.openttd.org/signals/, retrieved April 2014.Google Scholar
- Pfaff, B., Romano, A., Back, G., The pintos instructional operating system kernel, Proceedings of the 40th ACM technical symposium on computer science education, 453--457, 2009. Google ScholarDigital Library
- Reese, D., Using multiplayer games to teach interprocess communication mechanisms, SIGCSE Bulletin, 32, (4), 45--47, 2000. Google ScholarDigital Library
Recommendations
Semaphores revisited with MMS
The objective of this article is to realize an in-depth study of MMS semaphores. This article is not a tutorial on MMS semaphores although it does explain to some extent how MMS semaphores behave and can be utilized. What we are trying to achieve is a ...
Run-time detection of potential deadlocks for programs with locks, semaphores, and condition variables
PADTAD '06: Proceedings of the 2006 workshop on Parallel and distributed systems: testing and debuggingConcurrent programs are notorious for containing errors that are difficult to reproduce and diagnose. A common kind of concurrency error is deadlock, which occurs when some threads are permanently blocked. This paper defines a run-time notion of ...
Comments