Multiprogramming a 64kB Computer Safely and Efficiently

Low-power microcontrollers lack some of the hardware features and memory resources that enable multiprogrammable systems. Accordingly, microcontroller-based operating systems have not provided important features like fault isolation, dynamic memory allocation, and flexible concurrency. However, an emerging class of embedded applications are software platforms, rather than single purpose devices, and need these multiprogramming features. Tock, a new operating system for low-power platforms, takes advantage of limited hardware-protection mechanisms as well as the type-safety features of the Rust programming language to provide a multiprogramming environment for microcontrollers. Tock isolates software faults, provides memory protection, and efficiently manages memory for dynamic application workloads written in any language. It achieves this while retaining the dependability requirements of long-running applications.

[1]  Philip Levis,et al.  Maté: a tiny virtual machine for sensor networks , 2002, ASPLOS X.

[2]  Adam Chlipala,et al.  Using Crash Hoare logic for certifying the FSCQ file system , 2015, USENIX Annual Technical Conference.

[3]  Luca Cardelli,et al.  The Modula–3 type system , 1989, POPL '89.

[4]  Nicholas D. Matsakis,et al.  The rust language , 2014, HILT '14.

[5]  Philip Levis,et al.  The nesC language: a holistic approach to networked embedded systems , 2003, SIGP.

[6]  Philip Levis,et al.  The Case for Writing a Kernel in Rust , 2017, APSys.

[7]  Lars Birkedal,et al.  A region inference algorithm , 1998, TOPL.

[8]  William P. McCartney,et al.  SIMPLIFYING CONCURRENT PROGRAMMING IN SENSORNETS WITH THREADING , 2006 .

[9]  Emmanuel Baccelli,et al.  RIOT: One OS to Rule Them All in the IoT , 2012 .

[10]  Brian N. Bershad,et al.  Extensibility safety and performance in the SPIN operating system , 1995, SOSP.

[11]  Chris Hawblitzel,et al.  Safe to the last instruction: automated verification of a type-safe operating system , 2011, CACM.

[12]  Philip Levis,et al.  Experiences from a Decade of TinyOS Development , 2012, OSDI.

[13]  Martin Elsman,et al.  A Retrospective on Region-Based Memory Management , 2004, High. Order Symb. Comput..

[14]  Mani B. Srivastava,et al.  A dynamic operating system for sensor nodes , 2005, MobiSys '05.

[15]  Rebecca Smith,et al.  Design and Implementation of an Embedded Python Run-Time System , 2012, USENIX Annual Technical Conference.

[16]  David E. Culler,et al.  The nesC language: A holistic approach to networked embedded systems , 2003, PLDI.

[17]  Matt Welsh,et al.  Programming Sensor Networks Using Abstract Regions , 2004, NSDI.

[18]  Chun-Kun,et al.  Lecture Note Sel4: Formal Verification of an Os Kernel , 2022 .

[19]  Prabal Dutta,et al.  The Signpost Network: Demo Abstract , 2016, SenSys.

[20]  Helen J. Wang,et al.  SubVirt: implementing malware with virtual machines , 2006, 2006 IEEE Symposium on Security and Privacy (S&P'06).

[21]  Alexei Czeskis,et al.  Security Keys: Practical Cryptographic Second Factors for the Modern Web , 2016, Financial Cryptography.

[22]  Gyula Simon,et al.  Countersniper system for urban warfare , 2005, TOSN.

[23]  Graeme Plank,et al.  Snow Web 2.0: The Next Generation of Antarctic Meteorological Monitoring Systems? , 2012 .

[24]  Douglas T. Ross The AED free storage package , 1967, CACM.

[25]  Muneeb Ali,et al.  Protothreads: simplifying event-driven programming of memory-constrained embedded systems , 2006, SenSys '06.

[26]  Chenyang Lu,et al.  Integrating concurrency control and energy management in device drivers , 2007, SOSP.

[27]  James Cheney,et al.  Region-based memory management in cyclone , 2002, PLDI '02.

[28]  David E. Culler,et al.  System Design for a Synergistic, Low Power Mote/BLE Embedded Platform , 2016, 2016 15th ACM/IEEE International Conference on Information Processing in Sensor Networks (IPSN).

[29]  James R. Larus,et al.  Singularity: rethinking the software stack , 2007, OPSR.

[30]  Ramesh Govindan,et al.  TOSThreads: thread-safe and non-invasive preemption in TinyOS , 2009, SenSys '09.

[31]  Philip Levis,et al.  Collection tree protocol , 2009, SenSys '09.

[32]  Wei Hong,et al.  A macroscope in the redwoods , 2005, SenSys '05.

[33]  Adam Dunkels,et al.  Contiki - a lightweight and flexible operating system for tiny networked sensors , 2004, 29th Annual IEEE International Conference on Local Computer Networks.

[34]  Matt Welsh,et al.  Fidelity and yield in a volcano monitoring sensor network , 2006, OSDI '06.

[35]  David E. Culler,et al.  Ownership is theft: experiences building an embedded OS in rust , 2015, PLOS@SOSP.

[36]  Thomas Anderson,et al.  Operating Systems: Principles and Practice , 2012 .

[37]  David E. Culler,et al.  Telos: enabling ultra-low power wireless research , 2005, IPSN 2005. Fourth International Symposium on Information Processing in Sensor Networks, 2005..