Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/781131.781133acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
Article

The nesC language: A holistic approach to networked embedded systems

Published: 09 May 2003 Publication 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.]]
[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.]]
[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.]]
[4]
F. Boussinot and R. de Simone. The ESTEREL Language. Proceedings of the IEEE, 79(9):1293--1304, Sept. 1991.]]
[5]
H. de Bruin. BCOOPL: A Langage for Controlling Component Interactions. Journal of Supercomputing, 2002. Accepted for publication.]]
[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.]]
[7]
D. L. Detlefs, K. R. M. Leino, G. Nelson, and J. B. Saxe. Extended static checking. Technical Report #159, Palo Alto, USA, 1998.]]
[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.]]
[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.]]
[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.]]
[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.]]
[12]
S. P. Harbison. Modula-3. Prentice Hall, 1991.]]
[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.]]
[14]
A. Herbert. An ANSA Overview. IEEE Network, 8(1):18--23, 1994.]]
[15]
M. Herlihy. A methodology for implementing highly concurrent data objects. ACM Transactions on Programming Languages and Systems, 15(5):745--770, November 1993.]]
[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.]]
[17]
N. C. Hutchinson and L. L. Peterson. Design of the phx-kernel. In Proceedings of SIGCOMM '88, pages 65--75, Aug. 1988.]]
[18]
IEEE Standard 1076-2002. VHDL Language Reference Manual.]]
[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.]]
[20]
International Organisation for Standardization. Ada 95 Reference Manual, Jan. 1995.]]
[21]
ISO/IEC International Standard 10746-3. ODP Reference Model: Architecture, 1995.]]
[22]
M. Jones. What really happened on mars rover pathfinder. The Risks Digest, 19(49).]]
[23]
B. W. Kernighan and D. M. Ritchie. The C Programming Language, Second Edition. Prentice Hall, 1988.]]
[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.]]
[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.]]
[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.]]
[27]
N. Leveson and C. S. Turner. An investigation of the therac-25 accidents. IEEE Computer, 26(7):18--41, July 1993.]]
[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.]]
[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.]]
[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.]]
[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.]]
[32]
Microsoft C# Language Specification. Microsoft Press. ISBN 0-7356-1448-2.]]
[33]
Microsoft. Windows CE. http://www.microsoft.com.]]
[34]
OLE2 Programmer's Reference, Volume One. Microsoft Press, 1994.]]
[35]
J. Mitchell. Mesa language manual. Technical Report CSL-79-3, Xerox PARC, 1979.]]
[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.]]
[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.]]
[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.]]
[39]
R. H. B. Netzer. Race condition detection for debugging shared-memory parallel programs. Technical Report CS-TR-1991-1039, 1991.]]
[40]
Object Management Group. Common Object Request Broker Architecture. Available at http://www.omg.org.]]
[41]
Object Management Group. CORBA Component Model (CCM) Specification. Available at http://www.omg.org.]]
[42]
QNX Software Systems, Ltd, Kanata, Ontatio, Canada. http://www.qnx.com.]]
[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.]]
[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.]]
[45]
Sun Microsystems. Enterprise Java Beans. Available at http://java.sun.com/ejb.]]
[46]
SunSoft. Sun Workshop 5.0 Collection: Chapter 5, Lock Analysis Tool, 2000.]]
[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.]]
[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.]]
[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.]]
[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.]]
[51]
Wind River Systems, Inc, Alameda, CA, USA. http://www.vxworks.com.]]
[52]
N. Wirth. Programming in Modula-2. Springer Verlag, 1992.]]
[53]
N. Wirth and M. Reiser. Programming in Oberon - Steps Beyond Pascal and Modula. Addison-Wesley, 1992. ISBN 0-201-56543-9.]]

Cited By

View all
  • (2024)End-To-End Latency of Cause-Effect Chains: A TutorialACM Transactions on Embedded Computing Systems10.1145/3703630Online publication date: 11-Nov-2024
  • (2024)Jacdac: Service-Based Prototyping of Embedded SystemsProceedings of the ACM on Programming Languages10.1145/36564058:PLDI(692-715)Online publication date: 20-Jun-2024
  • (2024)VESTA: Power Modeling with Language Runtime EventsProceedings of the ACM on Programming Languages10.1145/36564028:PLDI(621-646)Online publication date: 20-Jun-2024
  • Show More Cited By

Index Terms

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

    Recommendations

    Comments

    Information & Contributors

    Information

    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
    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]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 09 May 2003

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. C
    2. TinyOS
    3. components
    4. concurrency
    5. data races
    6. first-order
    7. modules
    8. nesC
    9. programming languages

    Qualifiers

    • Article

    Conference

    PLDI03
    Sponsor:

    Acceptance Rates

    PLDI '03 Paper Acceptance Rate 28 of 131 submissions, 21%;
    Overall Acceptance Rate 406 of 2,067 submissions, 20%

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)49
    • Downloads (Last 6 weeks)6
    Reflects downloads up to 09 Nov 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)End-To-End Latency of Cause-Effect Chains: A TutorialACM Transactions on Embedded Computing Systems10.1145/3703630Online publication date: 11-Nov-2024
    • (2024)Jacdac: Service-Based Prototyping of Embedded SystemsProceedings of the ACM on Programming Languages10.1145/36564058:PLDI(692-715)Online publication date: 20-Jun-2024
    • (2024)VESTA: Power Modeling with Language Runtime EventsProceedings of the ACM on Programming Languages10.1145/36564028:PLDI(621-646)Online publication date: 20-Jun-2024
    • (2022)A Fully Authenticated Diffie-Hellman Protocol and Its Application in WSNsIEEE Transactions on Information Forensics and Security10.1109/TIFS.2022.317353617(1986-1999)Online publication date: 2022
    • (2022)Tinkertoy: Build Your Own Operating Systems for IoT DevicesIEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems10.1109/TCAD.2022.319890741:11(4028-4039)Online publication date: 1-Nov-2022
    • (2022)SBIs: Application Access to Safe, Baremetal Interrupt Latencies2022 IEEE 28th Real-Time and Embedded Technology and Applications Symposium (RTAS)10.1109/RTAS54340.2022.00015(82-94)Online publication date: May-2022
    • (2022)Component Framework for Multiprocessor Real-Time Operating Systems2022 IEEE 20th International Conference on Embedded and Ubiquitous Computing (EUC)10.1109/EUC57774.2022.00026(112-119)Online publication date: Dec-2022
    • (2022)poST: A Process-Oriented Extension of the IEC 61131-3 Structured Text LanguageIEEE Access10.1109/ACCESS.2022.315760110(35238-35250)Online publication date: 2022
    • (2021)Blockchain-based identity and authentication scheme for MQTT protocolProceedings of the 2021 3rd International Conference on Blockchain Technology10.1145/3460537.3460549(73-81)Online publication date: 26-Mar-2021
    • (2020)Dynamic Task-based Intermittent Execution for Energy-harvesting DevicesACM Transactions on Sensor Networks10.1145/336028516:1(1-24)Online publication date: 4-Feb-2020
    • Show More Cited By

    View Options

    Get Access

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media