skip to main content
10.1145/781131.781133acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
Article

The nesC language: A holistic approach to networked embedded systems

Authors Info & Claims
Published:09 May 2003Publication History

ABSTRACT

We present nesC, a programming language for networked embedded systems that represent a new design space for application developers. An example of a networked embedded system is a sensor network, which consists of (potentially) thousands of tiny, low-power "motes," each of which execute concurrent, reactive programs that must operate with severe memory and power constraints.nesC's contribution is to support the special needs of this domain by exposing a programming model that incorporates event-driven execution, a flexible concurrency model, and component-oriented application design. Restrictions on the programming model allow the nesC compiler to perform whole-program analyses, including data-race detection (which improves reliability) and aggressive function inlining (which reduces resource consumption).nesC has been used to implement TinyOS, a small operating system for sensor networks, as well as several significant sensor applications. nesC and TinyOS have been adopted by a large number of sensor network research groups, and our experience and evaluation of the language shows that it is effective at supporting the complex, concurrent programming style demanded by this new class of deeply networked systems.

References

  1. J. Aldrich, C. Chambers, and D. Notkin. Architectural Reasoning in ArchJava. In European Conference on Object Oriented Programming (ECOOP), June 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. F. Bachmann, L. Bass, C. Buhrman, S. Cornella-Dorda, F. Long, J. Robert, R. Seacord, and K. Wallnau. Volume II: Technical Concepts of Component-Based Software Engineering, 2nd Edition. Technical Report CMU/SEI-2000-TR-008, Carnegie Mellon Software Engineering Institute, May 2000.]]Google ScholarGoogle ScholarCross RefCross Ref
  3. A. Benveniste, P. L. Guernic, and C. Jacquemot. Synchronous programming with events and relations: the SIGNAL language and its semantics. Science of Computer Programming, 16(2):103--149, Sept. 1991.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. F. Boussinot and R. de Simone. The ESTEREL Language. Proceedings of the IEEE, 79(9):1293--1304, Sept. 1991.]]Google ScholarGoogle ScholarCross RefCross Ref
  5. H. de Bruin. BCOOPL: A Langage for Controlling Component Interactions. Journal of Supercomputing, 2002. Accepted for publication.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. R. Deline and M. Fahndrich. Enforcing High-level Protocols in Low-Level Software. In Proceedings of the ACM SIGPLAN '01 Conference on Programming Language Design and Implementation, pages 59--69, June 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. D. L. Detlefs, K. R. M. Leino, G. Nelson, and J. B. Saxe. Extended static checking. Technical Report #159, Palo Alto, USA, 1998.]]Google ScholarGoogle Scholar
  8. J.-P. Fassino, J.-B. Stefani, J. Lawall, and G. Muller. THINK: A Software Framework for Component-based Operating System Kernels. In Proceedings of Usenix Annual Technical Conference, June 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. M. Flatt and M. Felleisen. Units: Cool modules for HOT languages. In Proceedings of the ACM SIGPLAN '98 Conference on Programming Language Design and Implementation, pages 236--248, 1998.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. B. Ford, G. Back, G. Benson, J. Lepreau, A. Lin, and O. Shivers. The Flux OSKit: A Substrate for Kernel and Language Research. In Proceedings of the Symposium on Operating Systems Principles, pages 38--51, 1997.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. N. Halbwachs, P. Caspi, P. Raymond, and D. Pilaud. The synchronous data-flow programming language LUSTRE. Proceedings of the IEEE, 79(9):1305--1320, September 1991.]]Google ScholarGoogle ScholarCross RefCross Ref
  12. S. P. Harbison. Modula-3. Prentice Hall, 1991.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. T. A. Henzinger, B. Horowitz, and C. M. Kirsch. Embedded Control Systems Development with Giotto. In Proceedings of the ACM Workshop on Languages, Compilers and Tools for Embedded Systems (LCTES), pages 64--72, June 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. A. Herbert. An ANSA Overview. IEEE Network, 8(1):18--23, 1994.]]Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. M. Herlihy. A methodology for implementing highly concurrent data objects. ACM Transactions on Programming Languages and Systems, 15(5):745--770, November 1993.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. J. Hill, R. Szewczyk, A. Woo, S. Hollar, D. E. Culler, and K. S. J. Pister. System Architecture Directions for Networked Sensors. In Architectural Support for Programming Languages and Operating Systems, pages 93--104, 2000. TinyOS is available at http://webs.cs.berkeley.edu.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. N. C. Hutchinson and L. L. Peterson. Design of the phx-kernel. In Proceedings of SIGCOMM '88, pages 65--75, Aug. 1988.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. IEEE Standard 1076-2002. VHDL Language Reference Manual.]]Google ScholarGoogle Scholar
  19. C. Intanagonwiwat, D. Estrin, R. Govindan, and J. Heidemann. Impact of network density on data aggregation in wireless sensor networks. In Proceedings of International Conference on Computing Systems (ICDCS), July 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. International Organisation for Standardization. Ada 95 Reference Manual, Jan. 1995.]]Google ScholarGoogle Scholar
  21. ISO/IEC International Standard 10746-3. ODP Reference Model: Architecture, 1995.]]Google ScholarGoogle Scholar
  22. M. Jones. What really happened on mars rover pathfinder. The Risks Digest, 19(49).]]Google ScholarGoogle Scholar
  23. B. W. Kernighan and D. M. Ritchie. The C Programming Language, Second Edition. Prentice Hall, 1988.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. E. Kohler, B. Chen, M. F. Kaashoek, R. Morris, and M. Poletto. Programming language techniques for modular router configurations. Technical Report MIT-LCS-TR-812, MIT Laboratory for Computer Science, Aug. 2000.]]Google ScholarGoogle Scholar
  25. Lab Notes: Research from the College of Engineering, UC Berkeley. Smart buildings admit their faults., 2001. http://coe.berkeley.edu/labnotes/1101.smartbuildings.html.]]Google ScholarGoogle Scholar
  26. B. W. Lampson and D. D. Redell. Experience with processes and monitors in mesa. In Proceedings of the 7th ACM Symposium on Operating Systems Principles (SOSP), pages 43--44, 1979.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. N. Leveson and C. S. Turner. An investigation of the therac-25 accidents. IEEE Computer, 26(7):18--41, July 1993.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. P. Levis and D. Culler. Maté: A Tiny Virtual Machine for Sensor Networks. In Proceedings of the ACM Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS), Oct. 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. S. R. Madden, M. J. Franklin, J. M. Hellerstein, and W. Hong. TAG: a Tiny AGgregation Service for Ad-Hoc Sensor Networks. In Proceedings of the ACM Symposium on Operating System Design and Implementation (OSDI), Dec. 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. A. Mainwaring, J. Polastre, R. Szewczyk, D. Culler, and J. Anderson. Wireless Sensor Networks for Habitat Monitoring. In Proceedings of the ACM International Workshop on Wireless Sensor Networks and Applications, Sept. 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. J. Mellor-Crummey. On-the-fly detection of data races for programs with nested fork-join parallelism. In Proc. of Supercomputing '91, pages 24--33, 1991.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Microsoft C# Language Specification. Microsoft Press. ISBN 0-7356-1448-2.]]Google ScholarGoogle Scholar
  33. Microsoft. Windows CE. http://www.microsoft.com.]]Google ScholarGoogle Scholar
  34. OLE2 Programmer's Reference, Volume One. Microsoft Press, 1994.]]Google ScholarGoogle Scholar
  35. J. Mitchell. Mesa language manual. Technical Report CSL-79-3, Xerox PARC, 1979.]]Google ScholarGoogle Scholar
  36. R. Morris, E. Kohler, J. Jannotti, and M. F. Kaashoek. The Click Modular Router. In Proceedings of the ACM Symposium on Operating Systems Principles (SOSP), pages 217--231, 1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. D. Mosberger and L. L. Peterson. Making Paths Explicit in the Scout Operating System. In Operating Systems Design and Implementation, pages 153--167, 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. A. Mycroft and R. Sharp. A Statically Allocated Parallel Functional Language. In Proceedings of the Internal Conference on Automata, Languages and Programming (ICALP), pages 37--48, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. R. H. B. Netzer. Race condition detection for debugging shared-memory parallel programs. Technical Report CS-TR-1991-1039, 1991.]]Google ScholarGoogle Scholar
  40. Object Management Group. Common Object Request Broker Architecture. Available at http://www.omg.org.]]Google ScholarGoogle Scholar
  41. Object Management Group. CORBA Component Model (CCM) Specification. Available at http://www.omg.org.]]Google ScholarGoogle Scholar
  42. QNX Software Systems, Ltd, Kanata, Ontatio, Canada. http://www.qnx.com.]]Google ScholarGoogle Scholar
  43. A. Reid, M. Flatt, L. Stoller, J. Lepreau, and E. Eide. Knit: Component composition for systems software. In Proceedings of the 4th ACM Symposium on Operating System Design and Implementation, pages 347--360, Oct. 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. S. Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T. Anderson. Eraser: A dynamic data race detector for multithreaded programs. ACM Transactions on Computer Systems, 15(4):391--411, 1997.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Sun Microsystems. Enterprise Java Beans. Available at http://java.sun.com/ejb.]]Google ScholarGoogle Scholar
  46. SunSoft. Sun Workshop 5.0 Collection: Chapter 5, Lock Analysis Tool, 2000.]]Google ScholarGoogle Scholar
  47. T. von Eicken, D. E. Culler, S. C. Goldstein, and K. E. Schauser. Active Messages: A Mechanism for Integrated Communication and Computation. In Proceedings of the International Symposium on Computer Architecture, pages 256--266, 1992.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Z. Wan, W. Taha, and P. Hudak. Event-Driven FRP. In Proceedings of the Internation Symposium on Principles of Declarative Languages (PADL), volume 2257, pages 155--172, 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. B. Warneke, M. L. andl B. Liebowitz, and K. Pister. Smart dust: Communicating with a cubic-millimeter computer. IEEE Computer Magazine, pages 44--51, January 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. K. Whitehouse and D. Culler. Calibration as Parameter Estimation in Sensor Networks. In Proceedings of the ACM International Workshop on Wireless Sensor Networks and Applications, Sept. 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. Wind River Systems, Inc, Alameda, CA, USA. http://www.vxworks.com.]]Google ScholarGoogle Scholar
  52. N. Wirth. Programming in Modula-2. Springer Verlag, 1992.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. N. Wirth and M. Reiser. Programming in Oberon - Steps Beyond Pascal and Modula. Addison-Wesley, 1992. ISBN 0-201-56543-9.]] Google ScholarGoogle ScholarCross RefCross Ref

Index Terms

  1. The nesC language: A holistic approach to networked embedded systems

    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
    • Published in

      cover image ACM Conferences
      PLDI '03: Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
      June 2003
      360 pages
      ISBN:1581136625
      DOI:10.1145/781131

      Copyright © 2003 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: 9 May 2003

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • Article

      Acceptance Rates

      PLDI '03 Paper Acceptance Rate28of131submissions,21%Overall Acceptance Rate406of2,067submissions,20%

      Upcoming Conference

      PLDI '24

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader