Publicado el 15 de Octubre del 2018
557 visualizaciones desde el 15 de Octubre del 2018
431,5 KB
34 paginas
Creado hace 17a (25/09/2007)
ditdit
UPM
Tecnología de sistemas de
tiempo real
Juan Antonio de la Puente
DIT/UPM
Copyright © 2007, Juan Antonio de la Puente
Motivación
Los métodos, las herramientas y la tecnología que se
usan para construir otros tipos de sistemas no sirven para
los sistemas de tiempo real
– no son suficientemente fiables
– sólo contemplan el tiempo de respuesta medio, no el peor
– no garantizan los requisitos temporales
Las plataformas de desarrollo y ejecución suelen ser
diferentes
– es difícil hacer pruebas en la plataforma de ejecución
– es difícil medir los tiempos con precisión
25/9/07
Tecnología de software
1
t
e
n
e
u
P
a
l
i
t
e
d
o
n
o
n
A
n
a
u
J
7
0
0
2
©
Diseño de sistemas de tiempo real
El diseño de un sistema tiene varios aspectos
– funcional: relación entre valores de entrada y de salida
– concurrente: actividades concurrentes, sincronización,
comunicación
– temporal: requisitos temporales
– arquitectónico: componentes, relaciones entre ellos
Cada aspecto se expresa mejor con un tipo de notación.
Por ejemplo:
– Simulink para el aspecto funcional
– UML (con perfiles específicos) para el diseño detallado de
componentes
– AADL (Analysable Architecture Description Language) para los
aspectos de concurrencia y arquitectura
25/9/07
Tecnología de software
2
t
e
n
e
u
P
a
l
i
t
e
d
o
n
o
n
A
n
a
u
J
7
0
0
2
©
Ejemplo: Simulink
25/9/07
Tecnología de software
3
t
e
n
e
u
P
a
l
©
i
t
e
d
o
n
o
n
A
n
a
u
J
7
0
0
2
Ejemplo: AADL
25/9/07
Tecnología de software
4
t
e
n
e
u
P
a
l
i
t
e
d
o
n
o
n
A
n
a
u
J
7
0
0
2
©
systemCDU_Processor_Software.Implp_CDU_Display_Manager : processCDU_Display_Manager.Impl<ndo>_to_<destcpm>_<sw>_Out_Socket<ndo>_to_<destcpm>_<sw>_Out<rate>thread<vm>_<rate><rate>thread<vm>_<rate>p_Communications_Manager : processCommunications_Manager.Impl<rate>thread<vm>_<rate><rate>thread<vm>_<rate><rate>thread<vm>_<rate><rate>thread<vm>_<rate><rate>thread<vm>_<rate><rate>thread<vm>_<rate><rate>thread<vm>_<rate><rate>thread<vm>_<rate><rate>thread<vm>_<rate>p_Flight_Manager : processFlight_Manager.Implp_CDU_IO_Manager : processCDU_IO_Manager.Impl<ndo>_to_<destcpm>_<sw>_Out<ndo>_to_<destcpm>_<sw>_Out<ndo>_to_<destcpm>_<sw>_Out<ndo>_from_<srccpm>_<sw>_In<ndo>_to_<destcpm>_<sw>_Out<ndo>_to_<destcpm>_<sw>_Out_Socket<ndo>_to_<destcpm>_<sw>_Out_Socket<ndo>_to_<destcpm>_<sw>_Out_Socket<ndo>_to_<destcpm>_<sw>_Out_Socket<ndo>_from_<srccpm>_<sw>_In<ndo>_from_<srccpm>_<sw>_In<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_Group<ndo>_from_<srccpm>_<sw>_In_Group<ndo>_from_<srccpm>_<sw>_In_Group<ndo>_from_<srccpm>_<sw>_In_Group<ndo>_from_<srccpm>_<sw>_InEjemplo: UML
25/9/07
Tecnología de software
5
t
e
n
e
u
P
a
l
i
t
e
d
o
n
o
n
A
n
a
u
J
7
0
0
2
©
Arquitectura global
aplicación
máquina simbólica
sistema operativo
hardware
lenguaje de programación
llamadas al sistema
+ lenguaje de máquina
lenguaje de máquina
25/9/07
Tecnología de software
6
t
e
n
e
u
P
a
l
©
i
t
e
d
o
n
o
n
A
n
a
u
J
7
0
0
2
Desarrollo cruzado
fuentes
compilador
objetos
montador
RTS
lib
RTS
lib
Plataforma de desarrollo
depurador
simulador
ejecutable
Plataforma de ejecución
monitor
programa
cargado
25/9/07
Tecnología de software
7
t
e
n
e
u
P
a
l
i
t
e
d
o
n
o
n
A
n
a
u
J
7
0
0
2
©
Lenguajes de programación
Un lenguaje de programación de sistemas de tiempo real
debe facilitar la realización de sistemas
– concurrentes,
– fiables,
– con un comportamiento temporal analizable
Hay varias clases de lenguajes de interés 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
Tecnología de software
8
t
e
n
e
u
P
a
l
i
t
e
d
o
n
o
n
A
n
a
u
J
7
0
0
2
©
C
t
e
n
e
u
P
a
l
i
t
e
d
o
n
o
n
A
n
a
u
J
7
0
0
2
©
Es un lenguaje muy utilizado para programación 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
explícita
No facilita la descomposición en módulos ni la
programación con objetos
– se puede hacer con C++
» extensión de C para programar con objetos
» no se suele usar en STR por problemas de fiabilidad
25/9/07
Tecnología de software
9
Ejemplo: tarea periódica
void periodic () {
struct timespec next, period;
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();
acción periódica
next = next + period;
}
}
25/9/07
Tecnología de software
10
t
e
n
e
u
P
a
l
©
i
t
e
d
o
n
o
n
A
n
a
u
J
7
0
0
2
Ada
Es un lenguaje diseñado específicamente 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
– paquetes (módulos) y esquemas genéricos
– extensión de tipos con herencia
– biblioteca jerárquica
– interfaces normalizadas con otros lenguajes (C, Fortran)
t
e
n
e
u
P
a
l
i
t
e
d
o
n
o
n
A
n
a
u
J
7
0
0
2
©
25/9/07
Tecnología de software
11
Ada 2005
Es la versión actual de Ada
La norma define
– un núcleo común para todas las implementaciones
(core language)
– unos anexos especializados para
t
e
n
e
u
P
a
l
i
t
e
d
o
n
o
n
A
n
a
u
J
7
0
0
2
©
» programación de sistemas
» sistemas de tiempo real
» sistemas de alta integridad
» sistemas distribuidos
» sistemas de información
» cálculo numérico
– Los anexos definen
» paquetes de biblioteca
» mecanismos de implementación
No añaden sintaxis ni vocabulario al lenguaje
25/9/07
Tecnología de software
12
Ejemplo: tarea periódica
use Ada.Real_Time;
task body Periodic is
Period : constant Time_Span := Milliseconds(10);
Next_Time : Time := Clock;
begin
-- iniciación
loop
delay until Next_Time;
-- acción periódica
Next_Time := Next_Time + Period;
end loop;
end Periodic;
25/9/07
Tecnología de software
13
t
e
n
e
u
P
a
l
©
i
t
e
d
o
n
o
n
A
n
a
u
J
7
0
0
2
Novedades en Ada 2005
Mejor soporte para sistemas de tiempo real
– perfil de Ravenscar
– relojes y temporizadores de tiempo de ejecución
– nuevos métodos de planificación del procesador
Mejoras en la programación mediante objetos
– interfaces
Mejoras en la estructura de los programas y en las
reglas de visibilidad de las declaraciones
Mejoras en la biblioteca estándar
Otras mejoras en el lenguaje
25/9/07
Tecnología de software
14
t
e
n
e
u
P
a
l
i
t
e
d
o
n
o
n
A
n
a
u
J
7
0
0
2
©
Perfiles para sistemas críticos
El documento Guide for the use of the Ada programming
language in high-integrity systems define subconjuntos
seguros de Ada para aplicaciones críticas
SPARK es un lenguaje que permite el uso de técnicas de
análisis estático
– 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
Tecnología de software
15
t
e
n
e
u
P
a
l
©
i
t
e
d
o
n
o
n
A
n
a
u
J
7
0
0
2
Java
Es un lenguaje pensado para construir sistemas
distribuidos
– basado en objetos dinámicos
– con concurrencia integrada en el lenguaje
– bibliotecas de clases (APIs) muy útiles
– pensado para que el código objeto sea portátil
» interpretado por una máquina virtual (JVM)
» “write once, run everywhere”
La definición original no es adecuada para tiempo real
– la planificación de actividades concurrentes no está bien definida
– los mecanismos de sincronización son inadecuados
– la gestión dinámica de memoria introduce indeterminismo
– la medida del tiempo no es suficientemente precisa
– otros problemas con excepciones y concurrencia
t
e
n
e
u
P
a
l
i
t
e
d
o
n
o
n
A
n
a
u
J
7
0
0
2
©
25/9/07
Tecnología de software
16
Java para tiempo real
Real-Time Specification for Java (RTSJ)
– basada en un máquina virtual extendida para STR
– hay una implementación de referencia (TimeSys)
– y otras comerciales (por ejemplo, Jamaica)
– investigación: Java para sistemas de alta integridad (HIJA)
Los compiladores y las máquinas virtuales para Java de
tiempo real no están todavía completamente maduros
– lo más complicado es la gestión de memoria y la recogida de
basura
t
e
n
e
u
P
a
l
©
i
t
e
d
o
n
o
n
A
n
a
u
J
7
0
0
2
25/9/07
Tecnología de software
17
Ejemplo: tarea periódica
public class Periodic extends RealTimeThread {
public Periodic() {
super();
setReleaseParameters (
new PeriodicParameters (
new AbsoluteTime ( 0,0),
new RelativeTime (10,0),
...)
);
}
/* start */
/* period */
public void run() {
while (true) {
actividad periódica
waitForNextPeriod ();
}
}
}
25/9/07
Tecnología de software
18
t
e
n
e
u
P
a
l
©
i
t
e
d
o
n
o
n
A
n
a
u
J
7
0
0
2
Lenguajes síncronos
Se basan en un modelo matemático sencillo
– los sucesos son instantáneos
– las acciones también
– puede haber sucesos y reacciones simultáneos
– se puede efectuar un
Comentarios de: Tecnología de sistemas de tiempo real (0)
No hay comentarios