Abstract
Operating systems are traditionally implemented in low- level, performance-oriented programming languages. These languages typically rely on minimal runtime support and provide unfettered access to the underlying hardware. Tra- dition has benefits: developers control the resources that the operating system manages and few performance bottle- necks cannot be overcome with clever feats of programming. On the other hand, this makes operating systems harder to understand and maintain. Furthermore, those languages have few built-in barriers against bugs. This paper is an ex- periment in side-stepping operating systems, and pushing functionality into the runtime of high-level programming languages. The question we try to answer is how much sup- port is needed to run an application written in, say, Smalltalk or Python on bare metal, that is, with no underlying oper- ating system. We present a framework named NopSys that allows this, and we validate it with the implementation of CogNos a Smalltalk virtual machine running on bare x86 hardware. Experimental results suggest that this approach is promising.
- Fabrice Bellard. 2005. QEMU, a fast and portable dynamic translator.. In USENIX Annual Technical Conference, FREENIX Track, Vol. 41. 46. Google ScholarDigital Library
- Andrew Black, Stéphane Ducasse, Oscar Nierstrasz, Damien Pollet, Damien Cassou, and Marcus Denker. 2009. Pharo by Example. Square Bracket Associates. http://pharobyexample.orgGoogle Scholar
- Microsoft Corporation. 2000. Microsoft Extensible Firmware Initiative FAT32 File System Specification. Technical Report. http://download.microsoft. com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/ fatgen103.docGoogle Scholar
- Grzegorz Czajkowski. 2000. Application Isolation in the Java Virtual Machine. In Conference on Object-oriented Programming, Systems, Languages, and Applications (OOPSLA). Google ScholarDigital Library
- D. Engler, M. Kaashoek, and J. Toole 1995. Exokernel: An Operating System Architecture for Application-level Resource Management. In Symposium on Operating Systems Principles (SOSP). Google ScholarDigital Library
- Daniel Frampton, Stephen Blackburn, Perry Cheng, Robin Garner, David Grove, J. Eliot Moss, and Sergey Salishev. 2009. Demystifying Magic: High-level Low-level Programming. In International Conference on Virtual Execution Environments (VEE). Google ScholarDigital Library
- Adele Goldberg and David Robson. 1983. Smalltalk-80: the language and its implementation. Addison-Wesley Google ScholarDigital Library
- Michael Golm, Meik Felser, Christian Wawersich, and Jürgen Kleinöder. 2002. The JX Operating System. In USENIX Annual Technical Conference (ATC). http://dl.acm.org/citation.cfm?id=647057.713870 Google ScholarDigital Library
- Serial ATA Working Group. 2003. "Serial ATA: High Speed Serialized AT Attachment. Technical Report. http:://www.serialata.orgGoogle Scholar
- Thomas Hallgren, Mark Jones, Rebekah Leslie, and Andrew Tolmach. 2005. A Principled Approach to Operating System Construction in Haskell. In International Conference on Functional Programming (ICFP). Google ScholarDigital Library
- Galen Hunt and Jim Larus. 2007. Singularity: Rethinking the Software Stack. Operating Systems Review 41 (April 2007), Google ScholarDigital Library
- Dan Ingalls. 1981. Design Principles Behind Smalltalk. BYTE Magazine (Aug. 1981), 286–298.Google Scholar
- Stephen Kell. 2013. The Operating System: Should There Be One?. In Workshop on Programming Languages and Operating Systems (PLOS). Google ScholarDigital Library
- S.E. Knudsen. 1983. Medos 2, a Modula 2 Oriented Operating System for the Personal Computer Lilith. https://books.google.com.ar/books?id= sSYBjwEACAAJGoogle Scholar
- Kevin P Lawton. 1996. Bochs: A portable pc emulator for Unix/x. Linux Journal 1996, 29es (1996). Google ScholarDigital Library
- LinuxFoundation 2017. LinuxFoundation. https://www.linuxfoundation. org/2017-linux-kernel-report-landing-page/ .Google Scholar
- Anil Madhavapeddy, Richard Mortier, Charalampos Rotsos, David Scott, Balraj Singh, Thomas Gazagnaire, Steven Smith, Steven Hand, and Jon Crowcroft. 2013. Unikernels: Library Operating Systems for the Cloud. In Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS). Google ScholarDigital Library
- Stefan Marr, Benoit Daloze, and Hanspeter Mössenböck. 2016. Crosslanguage Compiler Benchmarking: Are We Fast Yet?. In Dynamic Languages Symposium (DLS). Google ScholarDigital Library
- Gordon Matzigkeit and Yoshinori K Okuji. 1999. the GNU GRUB manual.Google Scholar
- Minix 2018. Minix Repository. https://www.openhub.net/p/minix3Google Scholar
- Eliot Miranda. 2011. The Cog Smalltalk Virtual Machine. In Workshop on Virtual Machines and Intermediate Languages (VMIL).Google Scholar
- James G Mitchell, William Maybury, and Richard E Sweet. 1978. Mesa language manual. Technical Report. Xerox Res. Cent.Google Scholar
- Oscar Nierstrasz, Stéphan Ducasse, and Damien Pollet. 2009. Squeak by example. Lulu.com. Google ScholarDigital Library
- Yoshinori K Okuji, Bryan Ford, Erich Stefan Boleyn, and Kunihiro Ishiguro. 2006. The multiboot specification. Version 0.6 95 (2006), 173.Google Scholar
- Krzysztof Palacz, Jan Vitek, Grzegorz Czajkowski, and Laurent Daynès. 2002. Incommunicado: efficient communication for Isolates. In Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA). Google ScholarDigital Library
- Rob Pike, David L. Presotto, Sean Dorward, Bob Flandrena, Ken Thompson, Howard Trickey, and Phil Winterbottom. 1995. Plan 9 from Bell Labs. Computing Systems 8, 2 (1995), 221–254.Google Scholar
- Filip Pizlo, Lukasz Ziarek, Ethan Blanton, Petr Maj, and Jan Vitek. 2010. Highlevel Programming of Embedded Hard Real-Time Devices. In EuroSys Conference. Google ScholarDigital Library
- Filip Pizlo, Lukasz Ziarek, and Jan Vitek. 2009. Real time Java on resourceconstrained platforms with Fiji VM. In Workshop on Java Technologies for Real-Time and Embedded Systems (JTRES). 110–119. Google ScholarDigital Library
- Dennis M Ritchie, Brian W Kernighan, and Michael E Lesk. 1988. The C programming language. Prentice Hall Englewood Cliffs. Google ScholarDigital Library
- Tom Saulpaugh and Charles A Mirho. 1999. Inside the JavaOS operating system. Addison-Wesley.Google Scholar
- Andrew S. Tanenbaum and Herbert Bos. 2014. Modern Operating Systems (4th ed.). Prentice Hall. Google ScholarDigital Library
- Andrew S Tanenbaum and Albert S Woodhull. 1987. Operating systems: design and implementation. Vol. 2. Prentice-Hall. Google ScholarDigital Library
- David Ungar and Randall B. Smith. 1987. Self: The Power of Simplicity. In Conference Proceedings on Object-oriented Programming Systems, Languages and Applications (OOPSLA). Google ScholarDigital Library
- Niklaus Wirth. 1989. From Modula to Oberon: The Programming Language Oberon. ETH, Eidgenössische Technische Hochschule Zürich 111 (1989).Google Scholar
- Niklaus Wirth. 2012. Programming in MODULA-2. Springer Science & Business Media.Google Scholar
Index Terms
- Self-contained development environments
Recommendations
Self-contained development environments
DLS 2018: Proceedings of the 14th ACM SIGPLAN International Symposium on Dynamic LanguagesOperating systems are traditionally implemented in low- level, performance-oriented programming languages. These languages typically rely on minimal runtime support and provide unfettered access to the underlying hardware. Tra- dition has benefits: ...
The Kaya OS project and the μMPS hardware emulator
Ideally, the most meaningful learning experience for students in an undergraduate OS course would be to develop fully-functional OS's on their own. This can be accomplished using μmps, a hardware emulator for a pedagogically undergraduate-appropriate ...
File system virtual appliances: Portable file system implementations
File system virtual appliances (FSVAs) address the portability headaches that plague file system (FS) developers. By packaging their FS implementation in a virtual machine (VM), separate from the VM that runs user applications, they can avoid the need ...
Comments