Estudo de Caso - TinyOS
Sistema Operacional projetado para dispositivos sem fio de baixo consumo de energia (sistemas embarcados/nós sensores)
Open Source – Licença BSD
Redes de sensores, computação ubíqua
Suporte a diferentes plataformas de hardware, microcontroladores, unidades flash e chipes de rádio
Escrito em nesC, uma extensão da linguagem C
Restrições de memória e bateria
Baseado em componentes
Orientado a eventos
E/S Assíncrona (Não-blocante)
I/O Bound (Eventos - Tempo Real – Alta concorrência)
Redes de Sensores
Consiste em sensores autônomos (nós) distribuidos espacialmente para monitorar condições físicas ou ambientais
Cada nó possui, tipicamente, um transceiver de rádio com antena, um microcontrolador, um circuito eletrônico e uma fonte de energia
Linguagem nesC
Usada para criar aplicações para a plataforma TinyOS
Construída como uma extensão da linguagem C
Características:
Componentes encapsulam estado e interagem entre si através de interfaces bem definidas, mas sem herança e alocação dinâmica
Sem ponteiros
Interfaces descrevem papéis ou serviços, e são bidirecionais
nesC distingue o código assíncrono daquele que não pode rodar em um contexto de interrupções
O compilador verifica constructs propensos à erros (Tarefas e Eventos)
Detecção de condições de corrida em tempo de compilação
Facilita a otimização de código pelo compilador (Function Inlining)
Sistema Baseado em Componentes
Sistema composto de componentes funcionais e lógicos com interfaces bem definidas
Nível de abstração maior que Objetos (POO)
Modularidade e Reusabilidade
Sistema Orientado a Eventos
Durante a operação, executa reativamente à eventos concorrentes
Handlers que tratam interrupções de hardware
Eventos
Restrições de Memória
Apenas 400 bytes
Tarefas x Threads
Whole-Program compiling e Inlining
Somente declarações estáticas de variáveis (nesC)
possui apenas uma