Você está na página 1de 92

Wireless sensor networks:

Sistemas operativos de nodos sensores

Mster en Ciencia y Tecnologa Informtica Sistemas Operativos Avanzados Curso 2010-2011


Soledad Escolar Daz sescolar@arcos.inf.uc3m.es

Datos de contacto
Soledad Escolar Daz
Profesor Ayudante Dpto. de Informtica Arquitectura y Tecnologa de Computadores (ARCOS) Despacho: 2.2.C.09 Mail: sescolar@arcos.inf.uc3m.es Web: http://www.arcos.inf.uc3m.es/~sescolar

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Contenidos
Parte I: Introduccin Parte II: Plataformas de hardware Parte III: Sistemas operativos Parte IV: Abstracciones de los sistemas operativos Parte V: Lneas de investigacin y desafos Trabajos propuestos Referencias
Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Contenidos
Parte I:
Introduccin Wireless Sensor Networks (WSN) Historia antigua/moderna Elementos de una WSN Caractersticas Aplicaciones Tipos de despliegues Funcionamiento tpico de una WSN
Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Introduccin
Una red de sensores (del ingls, Wireless Sensor Network) es un sistema distribuido donde parte de sus nodos (nodos sensores) son capaces de interactuar con el entorno fsico
Interactuar: lectura/actuacin sobre el medio Wireless Sensor and Actuator Networks (WSAN)

Nodos sensores son dispositivos electrnicos, autnomos, distribuidos geogrficamente alrededor de un fenmeno para monitorizarlo, con capacidades de: sensing, cmputo, almacenamiento y comunicacin inalmbrica

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Elementos de una WSN (I)


S M
Nodo sensor: sensor (S) + mote (M)

S M S M S M

S M

S M G
A PC (estacin base), LAN, Internet

S M

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Elementos de una WSN (II)


Nodos sensores:
Placa de sensores (S):
Variables medioambientales:
e.g. luz, temperatura, humedad, presin, concentracin de polen.
S S S M M M S S

M G

S M

Qumicos:
e.g. C02, oxgeno, ozono.

Acsticos:
e.g. ruido, ultrasonido.

etc.

Mote (M):
Radio controlador
Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Elementos de una WSN (III)


Gateway:
Dos funciones:
Pasarela de comunicaciones entre la WSN y el exterior Reprogramador de nodos sensores
S S M S S S M M M S S

G
A PC (estacin base), LAN, Internet

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Elementos de una WSN (IV)


Una estacin base:
Dispositivo de mayor capacidad (ej. PC, porttil) para el almacenamiento, anlisis y procesamiento de los datos procedentes de los nodos
S S S M M M S S

S S

M G

Estacin base

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Historia antigua
Proyecto Distributed Sensor Networks (DSN) Dcada de los aos 80 DARPA (Defense Advanced Research Projects Agency) de EEUU Sound Surveillance System (SOSUS) Red de boyas sumergidas instaladas en las costas de los EEUU durante la Guerra Fra para la deteccin de submarinos Considerada la primera red de sensores
http://en.wikipedia.org/wiki/SOSUS

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

La ley de Bell (1972): aparecer una nueva tecnologa cada diez aos Proyecto Smart Dust (1998): cmo empaquetar en una mote de1mm3 un dispositivo sensorial autnomo (Dr. Kristofer Pister, Universidad de California, Berkeley) La primera mote: Ren (1999) El primer sistema operativo para nodos sensores: TinyOS (2002) Wireless Sensor Networks, la primera de las 10 tecnologas emergentes que cambiarn el mundo (MIT Journal, 2003)

log (people per computer)

Historia moderna

year

Source: http://robotics.eecs.berkeley.edu/ ~pister/SmartDust/BlowDust.htm

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Caractersticas
Redes ad-hoc, sin infraestructura de red Redes formadas por miles, millones de pequeos dispositivos de bajo coste Despliegue en terrenos inhspitos, de difcil acceso:
e.g. volcanes, glaciares, ocanos, bosques

Nodos autnomos y cooperantes, pensados para operar de manera desatendida un largo perodo de tiempo Nodos muy restringidos en cmputo, comunicacin, almacenamiento y energa Tpicamente redes inalmbricas (aunque tambin cableadas) Caractersticas especficas de comunicacin:
bajo throughput de datos, bajo consumo, topologas dinmicas (nodos mviles)
Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Aplicaciones medioambientales
Objetivo: Monitorizacin medioambiental
No intrusiva No necesidad de infraestructuras Conocimiento preciso y actualizado
Source: http://www.biologie.uni-hamburg.de

Ej: Great Duck Island


Mainwaring et al., 2002; Szewczyk et al., 2004

Source: http://envisense.org/glacsweb/

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Automatizacin de edificios
Objetivo: automatizacin de tareas para el confort y seguridad en el hogar Desde edificios inteligentes hasta u-cities Ubiquitous cities Ej. Songdo City (Korea) New Songdo City finalizar en 2014
$25 billones Smart-cards, RFID, WSNs, etc. http://www.youtube.com/watch?v= V2uzo-xzta0
Source: http://www.songdo.com/ The most profound technologies are those that disappear. They weave themselves into the fabric of everyday life until they are indistinguishable from it., Mark Weiser. Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Monitorizacin de infraestructuras
Objetivo:
cuantificar el grado en que los materiales se desgastan as como sus defectos estructurales

Ej. Sustainable bridges


Source: http://www.sustainablebridges.net/

Proyecto europeo del 6PM Emplean sensores cableados para monitorizar puentes de ferrocarriles [Krger and Grosse, 2004]
31/03/2011

Redes de sensores inalmbricas: visin de los sistemas operativos

Aplicaciones sanitarias
Objetivo: diagnstico de pacientes, respuesta a desastres, rehabilitacin
http://www.youtube.com/watch?v=V_UCF 3ZENv4&feature=related

Ej. CodeBlue
Sensores que miden las constantes vitales de los pacientes desde sus hogares
Source: http://fiji.eecs.harvard.edu/CodeBlue
Redes de sensores inalmbricas: visin de los sistemas operativos

Frecuencia cardaca Saturacin de oxgeno Etc.


31/03/2011

Aplicaciones logsticas
Objetivo:
Monitorizacin de equipajes, contenedores, etc.
Localizacin exacta en cada momento del tiempo Monitorizacin de otras variables RFID: otra tecnologa adecuada

Ej: Intelligent Container


Monitorizacin y planificacin completamente automatizada de transportes
Source: http://www.intelligentcontainer.com
Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

[Behrens et al., 2006]

Tipos de despliegues
No confundir con topologa Aleatorio
e.g., instalados desde un avin Distribucin aleatoria de los nodos sobre un rea finita

Regular
e.g., mantenimiento preventivo, monitorizacin Distribucin manual y localizacin fija No necesariamente estructura geomtrica

Nodos sensores mviles


Los nodos pueden desplazarse debido a una fuerza externa (viento, agua) Pueden localizar reas interesantes

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

wakeup

Funcionamiento

sleep
Tiempo

http://www.youtube.com/watch?v=jtRv2PCeOyM
Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Contenidos
Parte II: Plataformas de hardware
Nodos sensores, placas sensoras y gateways Arquitectura hardware del nodo sensor Componentes de hardware

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Nodos sensores
Plataformas comerciales:

Eko (2010)

Plataformas de investigacin:

http://en.wikipedia.org/wiki/List_of_wireless_sensor_nodes
Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Placas sensores y gateway


Placa de sensores
Conjunto de sensores y actuadores de distinto tipo integrados en una nica placa Conectada al nodo sensor a travs del conector de expansin distinto

Foto: Sensor MTS400

Gateway
Capacidad de comunicacin inalmbrica Conexin a estacin base por cable:
USB, RS-232, TCP/IP

Doble funcin:
Programador de motes
Descarga del cdigo ejecutable en c

Pasarela WSN y estacin base


Bidireccional
Redes de sensores inalmbricas: visin de los sistemas operativos Foto: Gateway Mib520 31/03/2011

Arquitectura HW de un nodo sensor


Microcontrolador Radio Memoria flash LEDs Conector de expansin Fuente de energa

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Componentes de hardware (I)


Microcontrolador:
Arquitectura Harvard
Memoria RAM (datos)
Tpicamente 4 KBytes

Memoria ROM (programa)


Tpicamente 128 Kbytes

Baja frecuencia (7-32 Mhz) Arquitectura tpicamente RISC de 8-bits Conversor analgico-digital (ADC) Varios relojes
Temporizadores sincronizacin de tareas

Ej.
Atmega 128 de Atmel (familia Mica)

msp430 Texas Instrument (familia Telos)

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Componentes de hardware (II)


Radio:
Alcance: 75 a 100 metros outdoor Alcances mucho ms pequeos en indoor Banda de frecuencias: 2.4 Ghz (compatible con Zigbee) 933 Mhz Modulacin Consumo energtico es importante: Las radios ms nuevas poseen distintos estados con distintos consumos Ej. CC2420(Chipcon), CC1000 (Chipcon), Nrf2401 (Nordic semiconductor) http://inst.eecs.berkeley.edu/~cs150/Docume nts/CC2420.pdf

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Componentes de hardware (III)


Conector de expansin:
Con la placa de sensores 51 pines de conexin

Foto: Conector de expansin mote-placa sensora

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Componentes de hardware (IV)


Memoria flash:
Externa al microcontrolador Almacenamiento no voltil (flash EEPROM) De distintos tipos
NAND, codifica datos como 1 NOR, codifica datos como 0

Tamao tpico de almacenamiento


512 Kbytes Dividida en pginas de 264 bytes (256 til + 8 bytes de CRC)

Aplicaciones:
e.g. sistemas de ficheros, reprogramacin, etc.

e.g. At45DB de Atmel (familia Mica), Strataflash de Intel (familia Telos)


Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Componentes de hardware (V)


Batera
Tpicamente pilas 2 pilas alcalinas 1.5 voltios 2000-3000 mAh
Desde cinco das hasta aos

Fuentes alternativas de energa Estado: experimental Clulas solares, dinamos, etc.

LEDs:
Tres leds:
rojo, verde y amarillo

Funcin:
Depuracin de la aplicacin

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Contenidos
Parte III: Sistemas Operativos
Arquitectura de software Caractersticas Modelos de ejecucin y programacin Sistemas Operativos para nodos sensores Programacin de aplicaciones

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Sistemas Operativos
Los nodos sensores incluyen un microcontrolador capaz de ejecutar tareas que requieren el acceso a elementos de hardware (sensores, memoria, radio, etc.)
Dispositivos no dedicados

Necesidad de un sistema operativo de propsito general, cuyos objetivos son:


Gestionar eficientemente los recursos de hardware Facilitar la programacin de aplicaciones de alto nivel

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Arquitectura de software

Abstraction level

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Caractersticas de los SSOO (I)


Diseados especficamente teniendo en cuenta las restricciones de hardware de los nodos sensores
Los sistemas operativos diseados para otro tipo de sistemas empotrados no se adaptan a las fuertes restricciones de los nodos sensores Tamao, consumo, requisitos de las aplicaciones

Responsable de:
Gestionar el microcontrolador (tpicamente monotarea), tiempo (temporizadores) y concurrencia Gestionar el resto de dispositivos del hardware Ofrecer interfaces de acceso (APIs) a los elementos de hardware (sensores, memoria, radio, etc.) Programacin de aplicaciones Ofrecer una interfaz para la instalacin del cdigo ejecutable en el microcontrolador Ahorro de energa
Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Caractersticas de los SSOO (II)


Multiplataforma Soportan un subconjunto de las plataformas disponibles Arquitectura monoltica
Cuando se compila la aplicacin se crea una imagen indivisible compuesta por el S.O. y la propia aplicacin

Footprint (huella) de pequeo tamao Limitado por la capacidad de memoria (e.g. 4KB RAM y 128 KB ROM) Ofrecen interfaces de alto nivel (al nivel de aplicacin) y usan el interfaz de bajo nivel para acceder a los dispositivos de hardware Servicios cross-layer En realidad, no tan alto nivel. Proveen implementaciones para la gestin de red (protocolos de enrutamiento, MAC, localizacin), memoria flash (sistemas de ficheros), temporizacin (relojes de software), etc.
Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Modelos de ejecucin
Basado en eventos Basado en threads
Modelo basado en eventos
1

Modelo basado en threads


2 3

1 2 3

Pila compartida

Pila dedicada por thread

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Eventos vs. threads


Comparativa modelo de ejecucin/programacin
Paradigm Semantic Resources Control flow Programming flow Event-based Run-to-completion Shared stack State machine Unstructured, ad-hoc code, split-phase functions Asynchronous Non explicit by eventhandlers Thread-based Preemptive One stack per thread Linear Sequential

Synchronization Concurrency model

Blocking Explicitly by threads

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Ventajas e inconvenientes
Basado en eventos
Una nica pila compartida Ms eficiente en cuanto a los recursos utilizados Asncrono Flujo de ejecucin no estructurado (mquina de estados) La depuracin es complicada

Basado en threads
Flujo de ejecucin lineal Sncronos bloqueantes Una pila por thread recursos ms

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Sistemas operativos para nodos sensores


TinyOS (1.x y 2.x) Contiki Mantis LiteOS FreeRTOS NanoOS

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Sistemas Operativos
TinyOS :

[Jason Lester Hill, 2002]

Primer SO desarrollado especficamente para nodos sensores Jason Lester Hill y David Culler
Berkeley University, 2002

Quasi-estndar o estndar de facto Sistema operativo de cdigo libre


Desarrollo activo por parte de numerosos colaboradores

La primera versin fue escrita en C, y posteriormente fue reescrito ntegramente en nesC


Actualmente versin 2.1.1 Versin 1.x y 2.x no son compatibles

Multiplataforma
No soporta todas las plataformas de nodos sensores

Pequeo footprint (tamao del cdigo ejecutable)


250 bytes of ROM 16 bytes of RAM

http://www.tinyos.net
Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

TinyOS
Modelo de ejecucin basado en eventos Con algunas diferencias con respecto al modelo puro Los eventos tienen una semntica con-expulsin (preemptive) y no se encolan Qu ocurre con los eventos que se interrumpen? Se pierden
Modelo de programacin basado en componentes 1 2 3 4
Application (Configuration Component) Configuration Component D

Implementation Component A

Implementation Component C

Implementation Component B

Configuration Component F

Implementation Component E

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

nesC
nesC: networked embedded systems C Meta-lenguaje basado en C Modelo de programacin basado en componentes Caractersticas: Interfaces bidireccionales (use and provide) Componentes: separacin entre implementacin y composicin Implementacin mediante module Composicin esttica mediante configuration Wiring es la relacin de todos los componentes e interfaces implicados en una aplicacin, indicando qu componentes usan y proporcionan cada interfaz

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Componentes en nesC
Dos tipos:
Configuracin
Componentes utilizados por la aplicacin (a todos los niveles: HW, OS, y aplicacin) Relaciones entre componentes e interfaces (wiring) X.Y Z.Y
Application (Configuration Component) Configuration Component D

Implementation Component A

Implementation Component C

Implementation Component B

Implementacin o mdulo:
Implementacin del componente Interfaces que usa y proporciona este componente
Redes de sensores inalmbricas: visin de los sistemas operativos
Configuration Component F

Implementation Component E

31/03/2011

Interfaces en nesC
Prototipos de las funciones y de los eventos que usan/proporcionan los componentes:
Comandos
Similares a las funciones: ruptura de control para ejecutar el comando (funcin) y retorno a la funcin llamante Se invocan desde un nivel de abstraccin mayor a uno menor La implementacin de los comandos se proporciona en el componente de nivel inferior
app

so

Eventos
hw Para cada evento, el manejador del evento contiene la implementacin que ha de ejecutarse cuando se genera el evento Se invocan desde un nivel de abstraccin menor a uno mayor La implementacin de los eventos se proporciona en el nivel superior
Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Uso de comandos y eventos en nesC


Prototipos de las funciones y de los eventos que usan/proporcionan los componentes:
Comandos
call X.C (tipo1 arg1, tipo2 arg2,,tipon argn) Donde X es un componente de implementacin que proporciona la implementacin del comando C
app

so

Eventos
signal Y.E(tipo1 arg1,tipo2 arg2,, tipon argn) Donde Y es un componente de implementacin que proporciona la implementacin del evento E
Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

hw

Planificacin en TinyOS
2 niveles de planificacin: Eventos: funciones de alta prioridad Tareas: funciones de ms baja prioridad

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Ejemplo: Blink application


Configuration Module

Interface

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

TinyOS 2.x
Iniciativa de muchas universidades colaborando juntas (Nov, 2006) Objetivos:
Portabilidad Facilitar la construccin de aplicaciones Fiabilidad

El acceso al hardware se organiza en una arquitectura de abstraccin de hardware (HAA):


Hardware Independent Layer (HIL) Hardware Adaptation Layer (HAL) Hardware Presentation Layer (HPL)
Redes de sensores inalmbricas: visin de los sistemas operativos

[Philip Levis, David Gay, Vlado Handziski, Jan Hinrich Hauer, Ben Greenstein, Martin Turon, Jonathan Huio, Kevin Klues, Cory Sharp, Robert Szewczyk, Joe Polastre, Philip Buonadonnao, Lama Nachman, Gilman Tolleo, David Culler and Adam Wolisz, 2006]

31/03/2011

TinyOS 2.x
Implementacin de mltiples threads (TosThreads) Intento de combinar el modelo de programacin de threads en un modelo de ejecucin basado en eventos El planificador maneja una FIFO con capacidad para 255 tareas (en T1 tena capacidad para 8 tareas)
La semntica de fallos para insertar una tarea en la cola se mejora a post of a task only will fail if and only if the task has been previously posted and its
execution has not started. This semantic is achieved by locating a byte of state for every task, to test if it must post itself again or not

Secuencia de arranque e inicializacin ms ptima


Nuevas interfaces (e.g. Boot)

Gestin de la energa ms eficiente


Explota las capacidades de los componentes de HW para transitar a estados de bajo consumo

Ej. Low Power Listening


Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Low Power Listening (LPL)


Idea: reducir el tiempo en que el nodo se encuentra en estado de escucha (idle listening)
Se define un intervalo (TLPL) para realizar peridicamente el muestreo del canal Se pueden construir modelos energticos analticos

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Contiki

[Adam Dunkels, 2003]

Diseado para sistemas empotrados conectados en red, incluidos nodos sensores Adam Dunkels, Swedish Instititute of Computer Science (SICS), 2003 http://www.sics.se/contiki/ Caractersticas: Open source Modelo de ejecucin hbrido (threads y eventos) Modelo de programacin secuencial Escrito en lenguaje de programacin C Multiplataforma Soporte para menos plataformas comerciales Reprogramacin modular Footprint:
2 kilobytes de RAM y 40 kilobytes de ROM
Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Modelo de ejecucin de Contiki


Hbrido:
Threads y eventos combinados en protothreads

Estilo de programacin
Proporciona sintaxis secuencial y bloqueos condicionales

Al igual que los eventos los protothreads no requieren su propia pila


Esto reduce significativamente el gasto de memoria

Soporte multithreading como librera

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Protothreads (I)
La primera versin de Contiki usaba threads La segunda versin de Contiki incorpora los protothreads:
Protothreads are extremely lightweight stackless threads designed for severely memory constrained systems, such as small embedded systems or wireless sensor network nodes

Los protothreads en Contiki se basan en el concepto de continuacin local de Reynolds (1993) y las co-rutinas de Simon Tatham (2005) Cualquier proceso en Contiki es un protothread, el cual implementa una funcin de C Threads muy ligeros que se ejecutan sobre un kernel basado en eventos Pueden ser vistos como: Manejadores de eventos bloqueantes

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Protothreads (II)
Un protothread se basa en una continuacin local (lc), la cual usa n bytes para representar la direccin del salto relativa a una funcin de C (un puntero)
El tamao de la direccin es dependiente de la plataforma

Contiki define una serie de macros de C (directivas de pre-procesador) que permiten modificar implcitamente y de manera transparente el valor de lc Dos operaciones bsicas:
set (lc, dir) resume (lc) modificar el valor de lc a dir continuar una lc
31/03/2011

Redes de sensores inalmbricas: visin de los sistemas operativos

Macros para continuaciones locales (lc)

#define #define #define #define

LC_INIT(s) LC_RESUME(s) LC_SET(s) LC_END(s)

s = 0; switch(s) { case 0: s = __LINE__; case __LINE__: }

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Macros para protothreads (I):


http://www.sics.se/~adam/contiki/contiki-2.1-doc/a00457.html struct pt{ lc_t lc; // Un protothread define una continuacin local }; LC_INIT((pt)->lc) #define PT_INIT(pt) #define PT_THREAD(name_args) char name_args #define PT_BEGIN(pt) #define PT_END(pt) { char PT_YIELD_FLAG = 1; LC_RESUME((pt)->lc)

LC_END((pt)->lc); PT_YIELD_FLAG = 0; \ PT_INIT(pt); return T_ENDED; } #define PT_WAIT_UNTIL(pt, condition) \ do { \ LC_SET((pt)->lc); \ if(!(condition)) { \ return PT_WAITING; \ } \ } while(0) #define PT_WAIT_WHILE(pt, cond) #define PT_WAIT_THREAD(pt, thread)
Redes de sensores inalmbricas: visin de los sistemas operativos

PT_WAIT_UNTIL((pt), !(cond)) PT_WAIT_WHILE((pt), PT_SCHEDULE(thread))


31/03/2011

Macros para protothreads (II):


http://www.sics.se/~adam/contiki/contiki-2.1-doc/a00457.html
#define PT_RESTART(pt) \ do { \ PT_INIT(pt); \ return PT_WAITING; \ } while(0) #define PT_YIELD(pt) \ do { \ PT_YIELD_FLAG = 0; \ LC_SET((pt)->lc); \ if(PT_YIELD_FLAG == 0) { \ return PT_YIELDED; \ } \ } while(0) #define PT_YIELD_UNTIL(pt, cond) \ do { \ PT_YIELD_FLAG = 0; \ LC_SET((pt)->lc); \ if((PT_YIELD_FLAG == 0) || !(cond)) { \ return PT_YIELDED; \ } \ } while(0) Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Macros para procesos:


http://www.sics.se/~adam/contiki/contiki-2.1-doc/

#define #define #define #define #define #define #define #define #define #define

PROCESS_BEGIN() PT_BEGIN(process_pt) PROCESS_END() PT_END(process_pt) PROCESS_WAIT_EVENT() PROCESS_YIELD() PROCESS_WAIT_EVENT_UNTIL(c) PROCESS_YIELD_UNTIL(c) PROCESS_YIELD() PT_YIELD(process_pt) PROCESS_YIELD_UNTIL(c) PT_YIELD_UNTIL(process_pt, c) PROCESS_WAIT_UNTIL(c) PT_WAIT_UNTIL(process_pt, c) PROCESS_WAIT_WHILE(c) PT_WAIT_WHILE(process_pt, c) PROCESS_EXIT() PT_EXIT(process_pt) PROCESS_THREAD(name, ev, data) \ static PT_THREAD(process_thread_##name(struct pt *process_pt, \ process_event_t ev, \ process_data_t data)) #define PROCESS_NAME(name) extern struct process name

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Contiki: una aplicacin sencilla


static PT_THREAD(example(struct pt *pt)) { PT_BEGIN(pt); while(1) { PT_WAIT_UNTIL(pt, counter == 1000); printf("Threshold reached\n"); counter = 0; } PT_END(pt); } Un protothread

static char example(struct pt *pt) { switch(pt->lc) { case 0: while(1) { pt->lc = 12; case 12: if(!(counter == 1000)) return 0; printf("Threshold reached\n"); counter = 0; } } pt->lc = 0; return 2; } Redes de sensores inalmbricas: visin de los sistemas operativos

Una lc (cdigo final)

31/03/2011

Contiki: Blink application


blink.c PROCESS (main, main) AUTOSTART_PROCESSES(&main) PROCESS_THREAD(main, ev, data) { static struct etimer t0; PROCESS_BEGIN(); while(1){ etimer_set(&t0, 1*CLOCK_SECOND) PROCESS_WAIT_EVENT(); if (ev==PROCESS_EVENT_TIMER) { leds_toggle(LEDS_RED); } } PROCESS_END(); } process.h
#define PROCESS_THREAD(name, ev, data) static PT_THREAD( process_thread_##name( struct pt process_pt, process_event_t ev, process_data_t data)) #define PROCESS_BEGIN()PT_BEGIN(process_pt) #define PROCESS_END() PT_END(process_pt)

pt.h
#define PT_INIT(pt) pt->lc = 0 #define PT_BEGIN(pt)switch(pt->lc){\ case 0: #define PT_EXIT() pt->lc = 0: \ return 2; #define PT_WAIT_UNTIL(pt, c) pt->lc = __LINE__; \ case __LINE__: \ if (!(c)) return 0; #define PT_END(pt) } pt->lc = 0;

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Mantis

MultimodAl networked of In-situ Sensors (MANTIS) Universidad de Colorado (2003) Sistema operativo escrito en C de cdigo abierto basado en POSIX Facilidad de programacin Multi-threading Planificador basado en prioridades Multiplataforma Mica2, MicaZ y Telos Footprint: 500 bytes RAM y 14 KB ROM Ventajas: Procesos largos no bloquean el sistema Modelo de programacin ms sencillo que modelo basado en eventos Inconvenientes:

S. Bhatti, J. Carlson, H. Dai, J. Deng, J. Rose, A. Sheth, B. Shucker, C. Gruenwald, A. Torgerson, R. Han

Arquitectura de MANTIS http://mantisos.org/index/tiki-index.php.html

Sobrecarga debida a los intercambios de contexto Mayor consumo de memoria debido a la existencia de mltiples pilas
Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Mantis: una aplicacin sencilla


#include #include #include #include <inittypes.h> led.h dev.h com.h simple_send.c

void start(void){ uint16_t delay; uint8_t value; comBuf send_pkt; value=dev_get(DEV_MICA2_LIGHT); mos_led_toggle(0); send_pkt.data[0]=VALUE; send_pkt.size = 1; com_send(IFACE_RADIO, &send_pkt); }

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Resumen
Modelos de ejecucin:
Basado en eventos:
TinyOS : eventos y tareas Modelo basado en eventos
1

Modelo basado en threads


2 3

1 2 3

Basado en threads:
Mantis: prioridades LiteOS: multithread

Hbrido:
Contiki: protothreads Un protothread manejador de bloqueante es un evento Pila compartida Pila dedicada por thread

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Modelos de programacin
Modelo 1: TinyOS 1.x (eventos)
1: module MyApp { 2: uses interface { interfaces } 3: provides interface {StdControl,}} 4: implementation{ 5: command StdControl.init(){ } 6: command StdControl.start(){ 7: // call command // post task 8: } 9: command StdControl.stop(){ } 10: event interfaceUsed.event(){ } 11:}

Modelo 2: TinyOS 2.x (eventos)


1: module MyApp { 2: uses interface {Boot, . } 3: provides interface { interfaces} 4: } 5: implementation{ 6: event Boot.booted(){ 7: // call command // post task 8: } 9: event interfaceUsed.event(){ } 10:}

Modelo 3: Contiki (protothreads)


1: PROCESS(PROCESS1, PROCESS1); 2: PROCESS(PROCESS2, PROCESS2); 3: AUTOSTART_PROCESS (&PROCESS1,&PROCESS2); 5: PROCESS_THREAD(PROCESS1,ev,data){ 6: PROCESS_BEGIN(); 7: // C code & Contiki Interface 8: PROCESS_END(); 9: } 10: PROCESS_THREAD(PROCESS2,ev,data){}

Modelo 4: Mantis (threads/prioridades)


1: 2: 3: 4: 5: 6: 7: void start (void) { // C code with MANTIS interface } // Threads void x(void{ // C code & MANTIS interface }

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Contenidos
Parte IV: Capas de abstraccin de los sistemas operativos
Arquitecturas portables NOSA
http://opensource.gsfc.nasa.gov/projects/osal/

Capa de abstraccin del S.O.


http://rts.eit.uni-kl.de/fileadmin/publication_files/SERNA_SAC10.pdf

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Motivacin

Application development is still one of the main hurdles to a wide


adoption of WSN technology. [] The need for appropriate high-level programming abstractions, capable to simplify the programming chore without sacrificing efficiency, has been long recognized.
Programming Wireless Sensor Networks: Fundamental Concepts and State of the Art Luca Mottola and Gian Pietro Picco ACM Computing Surveys, February 2010

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Orgenes de problemas
Complejidad inherente al hardware:
Recursos limitados de HW y energa Heterogeneidad de los dispositivos Nmero creciente de plataformas

Desarrollo de aplicaciones:
Ad-hoc, bottom-up, fuertemente acopladas Programacin cercana al sistema operativo Portabilidad de aplicaciones reducida

Ausencia de estndares y arquitecturas abiertas:


Protocolos de red y desarrollo de aplicaciones Especficas de un escenario y/o plataforma particular
Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Motivacin
Especficamente, los SSOO diseados para nodos sensores:
Exportan tanto la interfaz del hardware como la del propio SO
o Lmite incierto entre HW/SW

No existen herramientas de alto nivel (lenguajes de programacin especficos, metalenguajes, capas de abstraccin) sobre el SO:
o Las aplicaciones usan el mismo LP que el SO subyacente o Incremento de la complejidad

Heterogeneidad de los modelos de ejecucin/programacin


o Modelos de ejecucin: basado en eventos, basado en threads o Acoplamiento entre modelo de ejecucin y paradigmas de programacin

El tamao reducido de los nodos impide tener la generalidad y las abstracciones esperadas en el nivel del SO
Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Arquitecturas portables de nodo sensor

[S. Escolar , J. Carretero, 2006]

Diseo, implementacin y evaluacin de una arquitectura software centrada en nodo sensor que soporte el desarrollo de aplicaciones genricas y portables que puedan ser fcilmente transportadas a plataformas heterogneas, incrementando as la productividad.

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Arquitectura actual
App 1 App 1 App 1

SO WNS 1

SO WSN 2

SO WSN n

Mote 1

Mote 2

Mote 3

Mote m

Sensorboard 1

Sensorboard 2

Sensorboard l

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Arquitectura propuesta
Aplicacin 1

OSAL

SO WNS 1

SO WSN 2

SO WSN n

Mote 1

Mote 2

Mote 3

Mote m

Sensorboard 1

Sensorboard 2

Sensorboard l

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Objetivos de la arquitectura Objetivos:


portabilidad, mnima sobrecarga, productividad
SO WNS 1 Aplicacin 1 OSAL

SO WSN 2

SO WSN n

Mote 1

Mote 2

Mote 3

Mote m

Sensorboard 1

Sensorboard 2

Sensorboard l

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Caractersticas de la arquitectura (1/2)


Arquitectura centrada en nodo sensor (node-centric)
Definir el comportamiento de los nodos individuales
SO WNS 1 Mote 1 Mote 2 Aplicacin 1 OSAL

SO WSN 2

SO WSN n

Mote 3

Mote m

Sensorboard 1

Sensorboard 2

Sensorboard l

Formalizacin matemtica usando teora de conjuntos


Organizar los componentes fundamentales y sus relaciones Facilitar la definicin de arquitecturas portables

Enfoque Model Driven Architecture (MDA)


Definicin de aplicaciones independientes de la plataforma Definicin de un proceso de transformacin Generacin de aplicaciones especficas
Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Caractersticas de la arquitectura (2/2)


Aplicacin 1

Multiplataforma
SO WNS 1

OSAL

SO WSN 2

SO WSN n

Diseo multicapa
Mote 1 Mote 2 Mote 3 Mote m

Reusabilidad
Hardware Sistema Operativo
Sensorboard 1 Sensorboard 2 Sensorboard l

Abstracciones de programacin de aplicaciones portables:


Operating System Abstraction Layer (OSAL) Capa de Aplicacin

Generacin de cdigo en tiempo de compilacin

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Caractersticas de la arquitectura (2/2)


Aplicacin 1

Multiplataforma
SO WNS 1

OSAL

SO WSN 2

SO WSN n

Diseo multicapa
Mote 1 Mote 2 Mote 3 Mote m

Reusabilidad
Hardware Sistema Operativo
Sensorboard 1 Sensorboard 2 Sensorboard l

Abstracciones de programacin de aplicaciones portables:


Operating System Abstraction Layer (OSAL) Capa de Aplicacin

Generacin de cdigo en tiempo de compilacin

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Implementacin de OSAL
Aplicacin (APP) Sensor Node Open Services Abstraction Layer (SN-OSAL) API de SN-OSAL SN-OSAL Translation Engine
pre-compilador de SN-OSAL (osalc) Scripts de traduccin (mappers)

osal2tinyos1x

osal2tinyos2x Sistema Operativo (O)

osal2contiki

TinyOS 1.x

TinyOS 2.x Hardware (H)

Contiki ESB SKY


31/03/2011

Familia Mica

Familia Telos

Redes de sensores inalmbricas: visin de los sistemas operativos

Interfaz de SN-OSAL
La interfaz de SN-OSAL se compone de:
1. 2. 3. Primitivas o servicios de alto nivel que gestionan operaciones bsicas sobre los dispositivos fsicos de los nodos sensores Constructores del lenguaje Espacio de nombres y palabras reservadas

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Interfaz de SN-OSAL: Primitivas


30 primitivas que homogeneizan los servicios comunes ofrecidos por los sistemas operativos de nodos sensores
Basado en POSIX
Facilitar la programacin

Clasificadas por funcionalidad:


E/S: CPU: Comunicacin: Almacenamiento : Procesos y planificacin: Depuracin: sensores y actuadores sistema de reloj y temporizadores envo y recepcin de datos sistema de ficheros gestin de procesos operaciones sobre LEDs

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Ejemplo: primitivas SN-OSAL


I/O
int8_t osal_io_open (unsigned char device); int8_t osal_io_read (int8_t desc, uint16_t data);

Gestin del tiempo


int8_t osal_timer_start(int8_t num,int8_t granularity,uint8_t frequency); int8_t osal_timer_stop (int8_t desc);

Comunicacin
int8_t osal_net_send (uint8_t address, void *data, uint8_t length); int8_t osal_net_getId ();

Leds
void osal_led_on (uint8_t led); void osal_led_off (uint8_t led);

Procesos y planificacin
osal_task* osal_task_current(); int8_t osal_task_exit();

Sistema de ficheros
int8_t osal_fs_open (char *filename, uint8_t mode) int8_t osal_fs_read (uint8_t fd, char *buffer, int8_t length)

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

T:SN-OSALI
SN-OSALI
osal_led_on(LED_RED)

OIj
TinyOS 2.x
call Leds.Led0On() call Leds.Led1Off()

TinyOS 1.x
call Leds.redOn()

Contiki
leds_on(LEDS_RED) leds_off(LEDS_GREEN)

osal_led_off(LED_GREEN) call Leds.greenOff() desc=osal_timer_start(*, SEC,ONE_SAMPLE) desc=osal_timer_start(*, SEC, REPEAT_SAMPLE) osal_io_open(TEMP) osal_io_close(TEMP) osal_io_read(TEMP,*) osal_net_getId() osal_net_send(*,*,*)

call TimerX.start( call TimerX.startOneShot( etimer_set(&tx, TIMER_ONE_SHOT, \1*1000) \1*1000) \1*CLOCK_SECOND) call TimerX.start( TIMER_ONE_SHOT, \1) call TempControl.init() call TempControl.stop() call TempControl.start() call Temp.getData() TOS_LOCAL_ADDRESS if (call SendX.send( \1,\3,\2 )==SUCCESS){ osal_radio_busy=TRUE;} // go into a loop call TimerX.startPeriodic( etimer_set(&tX, \1*1000) \1*CLOCK_SECOND) temperature_sensor.activate() temperature_sensor.deactivate()

call Temperature.read() data=temperature_sensor.value(0) TOS_NODE_ID if (call AMSendX.send( \1,\2,\3 )==SUCCESS){ osal_radio_busy=TRUE;} node_id rimebuf_clear() rimebuf_copyfrom(\2,\3) addr.u8[0]=addr.u8[1]=(\1) Y_send(X_conn,&addr)

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

SN-OSAL Translation Engine


Proceso de transformacin (TP)
TP(APPSN-OSAL) = K J H G(APPSN-OSAL) si SO= {T1, T2} K J G(APPSN-OSAL) si SO = {Contiki}

donde:
1. Compilacin de la aplicacin APPSN-OSAL
G : SN-OSALI SN-OSALI

2. Obtencin de abstracciones: componentes, wirings e interfaces


H : APPSN-OSAL {C,W, OIi , }, i = {T1, T2}

3. Obtencin de los eventos


J : APPSN-OSAL {E, }

4. Generacin de cdigo (mappers)


K : APPSN-OSAL {APPo }, i = {T1, T2, Contiki}
i

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Sensor Node Domain Specific Language (SN-DSL)


Motivacin:
Desacoplar el lenguaje de programacin del sistema operativo Ocultar el modelo de ejecucin y programacin exhibido por los SSOO
Proporcionar abstracciones para escribir aplicaciones usando SN-OSAL: TinyOS (nesC): interfaces, componentes, wirings, eventos Contiki (C): macros protothreads, callbacks, primitivas bloqueantes

Definir un espacio de nombres global y nico y un conjunto de servicios homogneos

Lenguaje especfico de dominio


Metalenguaje del lenguaje de programacin C

Define la sintaxis y la semntica de las aplicaciones


Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Sintaxis y semntica de SN-DSL


Sintaxis:
Espacio de nombres o alfabeto de SN-DSL Reglas de escritura
Formalizacin mediante gramtica capaz de generar SN-DSL

Semntica:
Modelo de ejecucin/programacin basado en eventos Bloques de programacin:
Funcin principal (main) Entidades de ejecucin Tareas (TinyOS) o protothreads (Contiki) Manejadores de eventos

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

VisualOSAL
VisualOSAL es un entorno de desarrollo grfico de aplicaciones de alto nivel construidas sobre SN-OSAL
VisualOSAL

Capa de Aplicacin (APP)


WSN ARQUITECTURA

Caractersticas:
Guiar el proceso completo de desarrollo de aplicaciones Permitir especificar aplicaciones de manera visual:
o

Los elementos del lenguaje SN-DSL se substituyen por notacin grfica para especificar de manera sencilla e intuitiva aplicaciones de alto nivel

Generar cdigo en distintos niveles de abstraccin y etapas de desarrollo: o Cdigo portable (XML) o Cdigo independiente (SN-DSL) o Cdigo especfico de la plataforma (SO)

Prototipo en desarrollo
Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Contenidos
Parte V: Lneas futuras de investigacin,
tendencias y desafos Lneas futuras de investigacin Tendencias Desafos
Energa Herramientas de desarrollo, APIs de programacin Simulacin Integracin con otras tecnologas de red
Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Desafos (I)
Complejidad inherente al hardware:
Recursos limitados de HW y energa
Bsqueda de fuentes alternativas de energa

Heterogeneidad de los dispositivos Nmero creciente de plataformas

Desarrollo de aplicaciones:
Ad-hoc, bottom-up, fuertemente acopladas Programacin cercana al sistema operativo
No existen lenguajes de programacin por encima de los sistemas operativos

Portabilidad de aplicaciones reducida Simulacin de aplicaciones

Ausencia de estndares y arquitecturas abiertas:


Protocolos de nivel de red y aplicacin API estndar de programacin/ Metodologa de desarrollo/ Arquitectura de software
Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Desafos (II)
Integracin de las WSN con otras tecnologas de red
Internet (6lowpan) Middleware de comunicaciones Escalabilidad, heterogeneidad, etc. Seguridad

Simulacin de aplicaciones de redes de sensores


Depuracin de aplicaciones en un entorno PC

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Roadmap de tecnologas bsicas

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Tendencias
Mercado de RFID y WSN hasta 2010

31/03/2011

NOTA:
USN: Ubiquitous Sensor Networks
Redes de sensores inalmbricas: visin de los sistemas operativos 16/11/2010

Lneas futuras de investigacin


Lneas futuras de investigacin y estimacin en el tiempo

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Lista de trabajos
Sistemas operativos:
Ahorro de energa en los sistemas operativos Contiki y TinyOS Estado del arte de otros sistemas operativos diseados para redes de sensores: LiteOS, nanoOS

OSAL:
osal2mantis: portar OSAL al sistema operativo mantis osal2<wsn-os> Introducir primitivas de ahorro de energa en OSAL

Redes y comunicacin
Anlisis del consumo de energa del protocolo MAC 802.15.4 Diseo e implementacin de un protocolo de enrutamiento de paquetes basado en rboles B Integracin de una WSN con Internet (6lowpan)
Desarrollos en TinyOS y Contiki
Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Bibliografa (I)
[1] Sensors everywhere. Fundacin Vodafone. (online: http://vodafone.es/fundacion/fundacion.vodafone.es/VSharedClient/FundacionVodafon e/PDF/LibroSensors.pdf) [2] Introduccin a las redes de sensores (online: http://www.arcos.inf.uc3m.es/~sescolar/index_files/presentacion/wsn.pdf) [3] System architecture for wireless sensor networks by Jason Lester Hill [4] The nesC language: A holistic approach to networked embedded systems by David Gay, Philip Levis, Robert von Behren, Matt Welsh, Eric Brewer, David Culler. [5] TinyOS programming by Phillip Levis (online: http://www.tinyos.net/tinyos2.x/doc/pdf/tinyos-programming.pdf) [6] Contiki - a Lightweight and Flexible Operating System for Tiny Networked Sensors by Adam Dunkels , Bjrn Grnvall , Thiemo Voigt [7] Mantis os: An embedded multithreaded operating system for wireless micro sensor platforms by Shah Bhatti , James Carlson , Hui Dai , Jing Deng , Jeff Rose , Anmol Sheth , Brian Shucker , Charles Gruenwald , Adam Torgerson , Richard Han [8] Protothreads: Simplifying event-driven programming of memory-constrained embedded systems. Adam Dunkels, Oliver Schmidt, Thiemo Voigt, and Muneeb Ali.
Redes de sensores inalmbricas: visin de los sistemas operativos 31/03/2011

Bibliografa (II)
[9] T2: A Second Generation OS For Embedded Sensor Networks (2006) by Philip Levis, David Gay, Vlado Handziski, Jan-Hinrich Hauer, Ben Greenstein, Martin Turon, Jonathan Huio, Kevin Klues, Cory Sharp, Robert Szewczyk, Joe Polastre, Philip Buonadonnao, Lama Nachman, Gilman Tolleo, David Culler, and Adam Wolisz. [10] Versatile low power media access for wireless sensor networks by Joseph Polastre, Jason Hill and David Culler [11] Flexible Hardware Abstraction for Wireless Sensor Networks (2005) by Vlado Handziski, Joseph Polastrey, Jan-Hinrich Hauer, Cory Sharpy, Adam Wolisz and David Culler [12] Low Power Listening. (online: http://www.tinyos.net/tinyos-2.x/doc/html/tep105.html) [13] IEEE 802.15.4 (online: http://www.ieee802.org/15/pub/TG4.html) [14] Zigbee Alliance (online: www.zigbee.org) [15] Operating System Abstraction Layer (online: http://opensource.gsfc.nasa.gov/projects/osal/index.php) [16] An operating system abstraction layer for portable applications in wireless sensor networks by Ramon Serna Oliver, Ivan Shcherbakov, Gerhard Fohler [17] Wireless sensor networks: a survey by I. F. Akyildiz , W. Su , Y. Sankarasubramaniam , E. Cayirci [18] Directed Diffusion: A scalable and robust communication paradigm for sensor networks by Chalermek Intanagonwiwat , Ramesh Govindan , Deborah Estrin

Redes de sensores inalmbricas: visin de los sistemas operativos

31/03/2011

Wireless sensor networks:


Sistemas operativos

Mster en Ciencia y Tecnologa Informtica Sistemas Operativos Avanzados Curso 2010-2011


Soledad Escolar Daz sescolar@arcos.inf.uc3m.es

Você também pode gostar