TinyOS is an open source operating system designed for wireless sensor networks. It uses a component-based architecture and event-driven execution model to achieve low power consumption and memory footprint. TinyOS programs are built by wiring together components that provide and use interfaces to communicate through events and commands. It also uses a non-preemptive task scheduler and static memory allocation to improve efficiency for energy constrained sensor nodes. The nesC language extends C to support TinyOS's programming model and execution model.