PDF de programación - Tecnología de sistemas de tiempo real

Imágen de pdf Tecnología de sistemas de tiempo real

Tecnología de sistemas de tiempo realgráfica de visualizaciones

Publicado el 15 de Octubre del 2018
466 visualizaciones desde el 15 de Octubre del 2018
431,5 KB
34 paginas
Creado hace 16a (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>_In Ejemplo: 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
  • Links de descarga
http://lwp-l.com/pdf13886

Comentarios de: Tecnología de sistemas de tiempo real (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad