skip to main content
article

Self-contained development environments

Published:06 April 2020Publication History
Skip Abstract Section

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.

References

  1. Fabrice Bellard. 2005. QEMU, a fast and portable dynamic translator.. In USENIX Annual Technical Conference, FREENIX Track, Vol. 41. 46. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Andrew Black, Stéphane Ducasse, Oscar Nierstrasz, Damien Pollet, Damien Cassou, and Marcus Denker. 2009. Pharo by Example. Square Bracket Associates. http://pharobyexample.orgGoogle ScholarGoogle Scholar
  3. 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 ScholarGoogle Scholar
  4. Grzegorz Czajkowski. 2000. Application Isolation in the Java Virtual Machine. In Conference on Object-oriented Programming, Systems, Languages, and Applications (OOPSLA). Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. Adele Goldberg and David Robson. 1983. Smalltalk-80: the language and its implementation. Addison-Wesley Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. Serial ATA Working Group. 2003. "Serial ATA: High Speed Serialized AT Attachment. Technical Report. http:://www.serialata.orgGoogle ScholarGoogle Scholar
  10. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. Galen Hunt and Jim Larus. 2007. Singularity: Rethinking the Software Stack. Operating Systems Review 41 (April 2007), Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Dan Ingalls. 1981. Design Principles Behind Smalltalk. BYTE Magazine (Aug. 1981), 286–298.Google ScholarGoogle Scholar
  13. Stephen Kell. 2013. The Operating System: Should There Be One?. In Workshop on Programming Languages and Operating Systems (PLOS). Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle Scholar
  15. Kevin P Lawton. 1996. Bochs: A portable pc emulator for Unix/x. Linux Journal 1996, 29es (1996). Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. LinuxFoundation 2017. LinuxFoundation. https://www.linuxfoundation. org/2017-linux-kernel-report-landing-page/ .Google ScholarGoogle Scholar
  17. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. Stefan Marr, Benoit Daloze, and Hanspeter Mössenböck. 2016. Crosslanguage Compiler Benchmarking: Are We Fast Yet?. In Dynamic Languages Symposium (DLS). Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Gordon Matzigkeit and Yoshinori K Okuji. 1999. the GNU GRUB manual.Google ScholarGoogle Scholar
  20. Minix 2018. Minix Repository. https://www.openhub.net/p/minix3Google ScholarGoogle Scholar
  21. Eliot Miranda. 2011. The Cog Smalltalk Virtual Machine. In Workshop on Virtual Machines and Intermediate Languages (VMIL).Google ScholarGoogle Scholar
  22. James G Mitchell, William Maybury, and Richard E Sweet. 1978. Mesa language manual. Technical Report. Xerox Res. Cent.Google ScholarGoogle Scholar
  23. Oscar Nierstrasz, Stéphan Ducasse, and Damien Pollet. 2009. Squeak by example. Lulu.com. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Yoshinori K Okuji, Bryan Ford, Erich Stefan Boleyn, and Kunihiro Ishiguro. 2006. The multiboot specification. Version 0.6 95 (2006), 173.Google ScholarGoogle Scholar
  25. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. 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 ScholarGoogle Scholar
  27. Filip Pizlo, Lukasz Ziarek, Ethan Blanton, Petr Maj, and Jan Vitek. 2010. Highlevel Programming of Embedded Hard Real-Time Devices. In EuroSys Conference. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  29. Dennis M Ritchie, Brian W Kernighan, and Michael E Lesk. 1988. The C programming language. Prentice Hall Englewood Cliffs. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Tom Saulpaugh and Charles A Mirho. 1999. Inside the JavaOS operating system. Addison-Wesley.Google ScholarGoogle Scholar
  31. Andrew S. Tanenbaum and Herbert Bos. 2014. Modern Operating Systems (4th ed.). Prentice Hall. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Andrew S Tanenbaum and Albert S Woodhull. 1987. Operating systems: design and implementation. Vol. 2. Prentice-Hall. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  34. Niklaus Wirth. 1989. From Modula to Oberon: The Programming Language Oberon. ETH, Eidgenössische Technische Hochschule Zürich 111 (1989).Google ScholarGoogle Scholar
  35. Niklaus Wirth. 2012. Programming in MODULA-2. Springer Science & Business Media.Google ScholarGoogle Scholar

Index Terms

  1. Self-contained development environments

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 53, Issue 8
        DLS '18
        August 2018
        100 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/3393673
        Issue’s Table of Contents
        • cover image ACM Conferences
          DLS 2018: Proceedings of the 14th ACM SIGPLAN International Symposium on Dynamic Languages
          October 2018
          100 pages
          ISBN:9781450360302
          DOI:10.1145/3276945

        Copyright © 2018 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 6 April 2020

        Check for updates

        Qualifiers

        • article
      • Article Metrics

        • Downloads (Last 12 months)8
        • Downloads (Last 6 weeks)0

        Other Metrics

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader