Anda di halaman 1dari 34

dit

UPM

Tecnologa de sistemas de
tiempo real
Juan Antonio de la Puente
DIT/UPM

Copyright 2007, Juan Antonio de la Puente

Motivacin

2007 Juan Antonio de la Puente

Los mtodos, las herramientas y la tecnologa que se


usan para construir otros tipos de sistemas no sirven para
los sistemas de tiempo real
no son suficientemente fiables
slo contemplan el tiempo de respuesta medio, no el peor
no garantizan los requisitos temporales

Las plataformas de desarrollo y ejecucin suelen ser


diferentes
es difcil hacer pruebas en la plataforma de ejecucin
es difcil medir los tiempos con precisin

25/9/07

Tecnologa de software

Diseo de sistemas de tiempo real

2007 Juan Antonio de la Puente

El diseo de un sistema tiene varios aspectos


funcional: relacin entre valores de entrada y de salida
concurrente: actividades concurrentes, sincronizacin,
comunicacin
temporal: requisitos temporales
arquitectnico: componentes, relaciones entre ellos

Cada aspecto se expresa mejor con un tipo de notacin.


Por ejemplo:
Simulink para el aspecto funcional
UML (con perfiles especficos) para el diseo detallado de
componentes
AADL (Analysable Architecture Description Language) para los
aspectos de concurrencia y arquitectura

25/9/07

Tecnologa de software

2007 Juan Antonio de la Puente

Ejemplo: Simulink

25/9/07

Tecnologa de software

Ejemplo: AADL
system
CDU_Processor_Software.Impl
p_CDU_Display_Manager : process
CDU_Display_Manager.Impl
<rate>
<ndo>_to_<destcpm>_<sw>_Out_Socket
thread
<vm>_<rate>
<ndo>_from_<srccpm>_<sw>_In_Group

<ndo>_to_<destcpm>_<sw>_Out
<rate>

p_CDU_IO_Manager : process
CDU_IO_Manager.Impl
<rate>
<ndo>_to_<destcpm>_<sw>_Out_Socket
thread
<vm>_<rate>

2007 Juan Antonio de la Puente

thread
<vm>_<rate>
<ndo>_from_<srccpm>_<sw>_In

<ndo>_from_<srccpm>_<sw>_In
<ndo>_from_<srccpm>_<sw>_In_Group

<ndo>_from_<srccpm>_<sw>_In_Group

<ndo>_from_<srccpm>_<sw>_In

p_Communications_Manager : process
Communications_Manager.Impl
<rate>
<rate>
thread
thread
<vm>_<rate>
<vm>_<rate>
<rate>
thread
<vm>_<rate>

<ndo>_from_<srccpm>_<sw>_In
<ndo>_from_<srccpm>_<sw>_In_Group
<ndo>_from_<srccpm>_<sw>_In
<ndo>_from_<srccpm>_<sw>_In_Group

<rate>

<ndo>_to_<destcpm>_<sw>_Out
<ndo>_to_<destcpm>_<sw>_Out_Socket
<ndo>_to_<destcpm>_<sw>_Out_Socket
<ndo>_to_<destcpm>_<sw>_Out
p_Flight_Manager : process
Flight_Manager.Impl
<rate>
thread
<ndo>_to_<destcpm>_<sw>_Out_Socket
<vm>_<rate>

<rate>
thread
<vm>_<rate>

<ndo>_from_<srccpm>_<sw>_In_Group
<ndo>_from_<srccpm>_<sw>_In

25/9/07

<ndo>_to_<destcpm>_<sw>_Out

thread
<vm>_<rate>

Tecnologa de software

<rate>
thread
<vm>_<rate>

<rate>
thread
<vm>_<rate>
<ndo>_to_<destcpm>_<sw>_Out

2007 Juan Antonio de la Puente

Ejemplo: UML

25/9/07

Tecnologa de software

Arquitectura global

aplicacin
2007 Juan Antonio de la Puente

lenguaje de programacin
mquina simblica
sistema operativo

llamadas al sistema
+ lenguaje de mquina
lenguaje de mquina

hardware

25/9/07

Tecnologa de software

Desarrollo cruzado

2007 Juan Antonio de la Puente

fuentes

compilador

Plataforma de ejecucin

25/9/07

montador

RTS
lib

RTS
lib

Plataforma de desarrollo

objetos

depurador

simulador

ejecutable

programa
cargado

monitor

Tecnologa de software

Lenguajes de programacin

2007 Juan Antonio de la Puente

Un lenguaje de programacin de sistemas de tiempo real


debe facilitar la realizacin de sistemas
concurrentes,
fiables,
con un comportamiento temporal analizable

Hay varias clases de lenguajes de inters para STR:


Lenguajes ensambladores
flexibles y eficientes, pero costosos y poco fiables

Lenguajes secuenciales (Fortran, C, C++)


necesitan un SO para concurrencia y tiempo real

Lenguajes concurrentes (Ada, Java, ...)


concurrencia y tiempo real incluidos en el lenguaje
25/9/07

Tecnologa de software

2007 Juan Antonio de la Puente

Es un lenguaje muy utilizado para programacin de


sistemas
Es un lenguaje
estructurado, con bloques
sin tipado fuerte
muy flexible (pero a veces poco seguro)

No tiene integrada la concurrencia ni el tiempo real


se consigue invocando servicios del sistema operativo de forma
explcita

No facilita la descomposicin en mdulos ni la


programacin con objetos
se puede hacer con C++
extensin de C para programar con objetos
no se suele usar en STR por problemas de fiabilidad

25/9/07

Tecnologa de software

Ejemplo: tarea peridica


void periodic () {
struct timespec next, period;

2007 Juan Antonio de la Puente

if (clock_gettime (CLOCK_MONOTONIC, &next) != 0) error();


period.tv_sec = 0;
period.tv_nsec = 10.0E6; /* 10 ms */
while (1) {
if (clock_nanosleep (CLOCK_MONOTONIC, TIMER_ABSTIME,
&next, 0) != 0) error();
accin peridica
next = next + period;
}
}

25/9/07

Tecnologa de software

10

Ada

2007 Juan Antonio de la Puente

Es un lenguaje diseado especficamente para


sistemas de tiempo real empotrados
concurrencia
tiempo real
acceso al hardware e interrupciones

Es un lenguaje descendiente de Pascal


estructura en bloques
fuertemente tipado

Est pensado para construir sistemas grandes y


cambiantes

25/9/07

paquetes (mdulos) y esquemas genricos


extensin de tipos con herencia
biblioteca jerrquica
interfaces normalizadas con otros lenguajes (C, Fortran)
Tecnologa de software

11

Ada 2005

2007 Juan Antonio de la Puente

Es la versin actual de Ada


La norma define
un ncleo comn para todas las implementaciones
(core language)
unos anexos especializados para

programacin de sistemas
sistemas de tiempo real
sistemas de alta integridad
sistemas distribuidos
sistemas de informacin
clculo numrico

Los anexos definen


paquetes de biblioteca
mecanismos de implementacin

No aaden sintaxis ni vocabulario al lenguaje

25/9/07

Tecnologa de software

12

2007 Juan Antonio de la Puente

Ejemplo: tarea peridica


use Ada.Real_Time;
task body Periodic is
Period
: constant Time_Span := Milliseconds(10);
Next_Time :
Time
:= Clock;
begin
-- iniciacin
loop
delay until Next_Time;
-- accin peridica
Next_Time := Next_Time + Period;
end loop;
end Periodic;

25/9/07

Tecnologa de software

13

Novedades en Ada 2005

Mejor soporte para sistemas de tiempo real

2007 Juan Antonio de la Puente

perfil de Ravenscar
relojes y temporizadores de tiempo de ejecucin
nuevos mtodos de planificacin del procesador

Mejoras en la programacin mediante objetos


interfaces

Mejoras en la estructura de los programas y en las


reglas de visibilidad de las declaraciones
Mejoras en la biblioteca estndar
Otras mejoras en el lenguaje

25/9/07

Tecnologa de software

14

2007 Juan Antonio de la Puente

Perfiles para sistemas crticos

El documento Guide for the use of the Ada programming


language in high-integrity systems define subconjuntos
seguros de Ada para aplicaciones crticas

SPARK es un lenguaje que permite el uso de tcnicas de


anlisis esttico
subconjunto de Ada + anotaciones

El perfil de Ravenscar define un subconjunto seguro de la


parte concurrente de Ada, y los correspondientes servicios
de sistema operativo

25/9/07

Tecnologa de software

15

Java

2007 Juan Antonio de la Puente

Es un lenguaje pensado para construir sistemas


distribuidos

basado en objetos dinmicos


con concurrencia integrada en el lenguaje
bibliotecas de clases (APIs) muy tiles
pensado para que el cdigo objeto sea porttil
interpretado por una mquina virtual (JVM)
write once, run everywhere

La definicin original no es adecuada para tiempo real

25/9/07

la planificacin de actividades concurrentes no est bien definida


los mecanismos de sincronizacin son inadecuados
la gestin dinmica de memoria introduce indeterminismo
la medida del tiempo no es suficientemente precisa
otros problemas con excepciones y concurrencia

Tecnologa de software

16

Java para tiempo real

2007 Juan Antonio de la Puente

Real-Time Specification for Java (RTSJ)

basada en un mquina virtual extendida para STR


hay una implementacin de referencia (TimeSys)
y otras comerciales (por ejemplo, Jamaica)
investigacin: Java para sistemas de alta integridad (HIJA)

Los compiladores y las mquinas virtuales para Java de


tiempo real no estn todava completamente maduros
lo ms complicado es la gestin de memoria y la recogida de
basura

25/9/07

Tecnologa de software

17

2007 Juan Antonio de la Puente

Ejemplo: tarea peridica


public class Periodic extends RealTimeThread {
public Periodic() {
super();
setReleaseParameters (
new PeriodicParameters (
new AbsoluteTime ( 0,0),
/* start */
new RelativeTime (10,0),
/* period */
...)
);
}
public void run() {
while (true) {
actividad peridica
waitForNextPeriod ();
}
}
}
25/9/07

Tecnologa de software

18

Lenguajes sncronos

2007 Juan Antonio de la Puente

Se basan en un modelo matemtico sencillo

los sucesos son instantneos


las acciones tambin
puede haber sucesos y reacciones simultneos
se puede efectuar un anlisis formal del comportamiento temporal

Ejemplos
Esterel
Lustre, Signal
Statecharts

Se compilan a autmatas realizados en lenguajes de


programacin secuenciales (C, Ada sin concurrencia)

25/9/07

Tecnologa de software

19

2007 Juan Antonio de la Puente

Ejemplo en Esterel

module periodic;
input Millisecond;
every 10 Millisecond do
accin periodica
end every;
end module;

25/9/07

Tecnologa de software

20

Sistemas operativos

2007 Juan Antonio de la Puente

Los sistemas operativos convencionales no son adecuados


para realizar sistemas de tiempo real
no tienen un comportamiento determinista
no permiten garantizar los tiempos de respuesta
algunos de ellos son poco fiables

Un sistema operativo de tiempo real (SOTR) debe soportar

25/9/07

concurrencia: procesos ligeros (hebras o threads)


temporizacin: medida de tiempos y ejecucin peridica
planificacin determinista: gestin del procesador y otros recursos
dispositivos de E/S: acceso a recursos de hardware e
interrupciones

Tecnologa de software

21

2007 Juan Antonio de la Puente

POSIX

Es un conjunto de normas IEEE/ISO que definen


interfaces de sistemas operativos

Permiten desarrollar software porttil y reutilizable


(Portable Operating System Interface)

Las normas definen servicios que se pueden incluir o no


en un sistema operativo particular

Adems se definen perfiles de aplicacin con conjuntos de


servicios estndar

Hay interfaces para C, Ada, y otros lenguajes

25/9/07

Tecnologa de software

22

Normas POSIX

IEEE 1003.1 (2004)

2007 Juan Antonio de la Puente

interfaz bsica para C similar a UNIX


incluye extensiones de tiempo real y hebras (threads)

IEEE 1003.5 (1999)


interfaces para Ada

IEEE 1003.13 (1998)


Perfiles para sistemas de tiempo real

25/9/07

Tecnologa de software

23

POSIX para sistemas de tiempo real


Servicios de tiempo real

2007 Juan Antonio de la Puente

Relojes precisos y temporizadores


Seales de tiempo real
Planificacin por prioridades

Servicios de hebras (threads)


Hebras
Mutex y variables de condicin

25/9/07

Tecnologa de software

24

2007 Juan Antonio de la Puente

Perfiles de aplicacin

Definen subconjuntos de servicios para distintos tipos de


aplicaciones

POSIX 13 : Perfiles para sistemas de tiempo real


PSE50 : sistema de tiempo real mnimo
sin gestin de memoria, ficheros ni terminal
slo threads (no procesos pesados)

PSE51 : controlador de tiempo real


tiene sistema de ficheros y terminal

PSE52 : sistema de tiempo real dedicado


tiene gestin de memoria y procesos pesados

PSE53 : sistema de tiempo real generalizado


sistema completo con todo tipo de servicios

25/9/07

Tecnologa de software

25

Ejemplos de SOTR

2007 Juan Antonio de la Puente

LynxOS
pSOS
QNX
VxWorks
RTEMS
RT-Linux
MaRTE OS Universidad de Cantabria
perfil POSIX PSE50
para sistemas empotrados en PCx86

Open Ravenscar Kernel (ORK) DIT/UPM


ncleo de SOTR para el lenguaje Ada y procesadores SPARK/PC

25/9/07

Tecnologa de software

26

Hardware

El hardware puede tener un comportamiento temporal


imprevisible
el uso de memorias cache produce una gran variacin en los
tiempos de ejecucin de los programas

2007 Juan Antonio de la Puente

un solucin es bloquear zonas de cache para tareas crticas


a veces se puede modelar la cache

otros mecanismos de aceleracin producen variaciones an


mayores
segmentacin (pipe-lining)
ejecucin especulativa
son difciles de modelar

Tendencias
paralelismo (multicore systems)
integracin masiva (system on a chip)

25/9/07

Tecnologa de software

27

Sistemas distribuidos

2007 Juan Antonio de la Puente

Para poder asegurar un comportamiento temporal


correcto hay que acotar los tiempos de transmisin
retardo entre la aplicacin y el software de comunicaciones
retardo en tampones de transmisin y recepcin
tiempo de transmisin en la red

Hay que usar protocolos con tiempo de transmisin


acotado en todos los niveles
acceso al medio: paso de testigo, prioridades, TDMA, etc.
niveles superiores: tiempo de espera acotado
conflicto con tolerancia de fallos: retransmisiones por fallos

25/9/07

Tecnologa de software

28

2007 Juan Antonio de la Puente

Ejemplos (1)

aplicacin

aplicacin

aplicacin

C / libc

Ada / RTS

Ada/C
y RTS/bibliotecas

VxWorks

ORK

MaRTE OS

computador
PowerPC

computador
SPARC

computador
Ix86

sistema operativo
de tiempo real

25/9/07

ncleo
de tiempo real

Tecnologa de software

29

Ejemplos (2)

2007 Juan Antonio de la Puente

sistema de control

25/9/07

sistema de control
(ejecutivo cclico)

RT Java

ensamblador

RTSJ VM

microcontrolador

computador
Ix686

mquina desnuda

mquina virtual
de Java

Tecnologa de software

30

2007 Juan Antonio de la Puente

Ejemplos (3)

aplicaciones
convencionales

aplicaciones
de tiempo real

lenguajes
convencionales

Ada/C + RTS

Linux

RT Linux
XtratuM
computador
Ix686

nano-ncleo con varias mquinas virtuales

25/9/07

Tecnologa de software

31

Ejemplos (4)
application

application

2007 Juan Antonio de la Puente

middleware

middleware

protocol
stack
drivers

protocol
stack
RT kernel

drivers

hardware

RT kernel
hardware

network

25/9/07

Tecnologa de software

32

2007 Juan Antonio de la Puente

Resumen

La tecnologa de software convencional no es adecuada,


en general, para desarrollar sistemas de tiempo real

En el curso usaremos algunos lenguajes de programacin


para ilustrar los conceptos ms importantes de los STR
Ada 2005
RT Java
C / POSIX

25/9/07

Tecnologa de software

33