Вы находитесь на странице: 1из 30

Diseo de Sistemas de Tiempo Real

Objetivos

Repasaremos algunos conceptos de ingeniera de software y su aplicacin a sistemas de tiempo real Introduciremos brevemente el mtodo HRT-HOOD Analizaremos los lenguajes de programacin y sistemas operativos ms adecuados para realizar sistemas de tiempo real

Motivacin
Los mtodos y herramientas que se usan para construir otros tipos de sistemas no sirven para el software de tiempo real
no son suficientemente fiables slo contemplan el tiempo de respuesta medio, no el peor no se 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

Niveles de abstraccin
Los mtodos de diseo de software comprenden una serie de transformaciones desde los requisitos iniciales hasta el cdigo ejecutable Normalmente se consideran distintos niveles de abstraccin en la descripcin de un sistema:
Especificacin de requisitos Diseo arquitectnico Diseo detallado Codificacin Pruebas

Cuanto ms precisa sea la notacin empleada en cada nivel mejor ser la calidad del sistema final

Ciclo de desarrollo secuencial

abstraccin

anlisis

pruebas de sistema pruebas de integracin diseo detallado realizacin tiempo pruebas de unidades

diseo arquitectnico

Caractersticas
Se descompone en una secuencia de etapas
Hay que completar cada etapa antes de empezar la siguiente

Las pruebas se llevan a cabo despus de la realizacin


Muchos errores se encuentran slo al final Volver atrs es muy costoso A veces se hace sin documentar y de forma poco rigurosa

Es mejor utilizar un proceso iterativo


Veremos uno centrado en la etapa de diseo Se trata de validar todos los aspectos que se pueda en la etapa de diseo del sistema Prestaremos especial atencin a la validacin del comportamiento temporal

HRT-HOOD
HRT-HOOD
Hard Real-Time Hierarchical Object-Oriented Design desarrollado por Burns & Wellings en1994

Es un mtodo de diseo estructurado, basado en objetos, para sistemas de tiempo real estricto
derivado de HOOD (Hierarchical Object-Oriented Design) estndar en la Agencia Europea del Espacio (ESA)

Principios
abstraccin descomposicin jerrquica ocultamiento de informacin anlisis temporal

Proceso de desarrollo iterativo


Definicin de requisitos

Diseo de la arquitectura lgica Diseo de la arquitectura fsica y anlisis temporal Diseo detallado Codificacin y clculo de tiempos de ejecucin Pruebas y medida de tiempos

Restricciones

Restricciones

Caractersticas
Elementos en cada nivel de abstraccin
Compromisos: propiedades que ya no se cambiarn Obligaciones que se dejan para niveles inferiores

En el diseo se van transformando las obligaciones en compromisos


Este proceso est sujeto a restricciones impuestas por el entorno de ejecucin

Dos niveles de diseo arquitectnico


Modelo lgico - compromisos independientes del entorno Modelo fsico - compromisos dependientes del entorno

UML
UML
Unified Modeling Language desarrollado por Booch, Rumbaugh y Jacobson

Notacin basada en objetos con diversos aspectos


clases y objetos casos de uso comportamiento paquetes estructura del software estructura fsica

UML es un lenguaje, no un mtodo Se estn desarrollando variantes para STR

Elementos de HRT-HOOD
Un sistema se disea como una jerarqua de objetos abstractos
un objeto se caracteriza por sus operaciones y su comportamiento (abstraccin y ocultamiento de informacin) cada objeto se puede descomponer en otros de ms bajo nivel modelo de objetos simple, sin herencia
apropiado para sistemas de tiempo real

Se puede analizar el comportamiento temporal si el entorno de ejecucin es conocido y predecible


los objetos tienen atributos temporales las relaciones entre objetos estn restringidas para asegurar que el diseo se puede analizar

Objetos y relaciones
El objeto parent contiene los objetos child_1 y child_2
datos

T
T

parent
child_1

op1 op2

op
excepcin T

uncle parent usa uncle child_1 usa child_2 y uncle child_1.op implementa parent.op1 child_2.op implementa parent.op2

child_2

op

Tipos de objetos
Pasivos
no controlan cundo se ejecutan sus operaciones no invocan operaciones de otros objetos espontneamente

Protegidos
pueden controlar cundo se ejecutan sus operaciones no invocan operaciones de otros objetos espontneamente

Activos
pueden controlar cundo se ejecutan sus operaciones pueden invocar operaciones de otros objetos espontneamente

Cclicos
sus operaciones se ejecutan a intervalos regulares

Espordicos
sus operaciones se ejecutan cuando ocurre un suceso externo o interno

Diseo de sistemas y lenguajes de programacin


El diseo debe tener en cuenta lo que se puede hacer en los niveles de abstraccin inferiores Los lenguajes de programacin proporcionan la notacin bsica para la realizacin de los diseos La eleccin de un lenguaje es importante desde el punto de vista de la eficiencia y la fiabilidad del sistema
tambin tiene que ver con la productividad de la programacin un programa se escribe una vez, pero se lee y se modifica muchas durante las etapas de mantenimiento la vida til de los sistemas empotrados puede ser muy larga

Lenguajes de programacin
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, Pascal, C, C++)


necesitan un SO para concurrencia y tiempo real

Lenguajes concurrentes (Modula, Ada, Java, ...)


concurrencia y tiempo real incluidos en el lenguaje

C
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

Ada
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


paquetes (mdulos) y esquemas genricos extensin de tipos con herencia biblioteca jerrquica interfaces normalizadas con otros lenguajes (C, Fortran)

Ada 95
Es la versin actual normalizada 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 distribuidos sistemas de informacin clculo numrico fiabilidad y seguridad

Los anexos definen


paquetes de biblioteca mecanismos de implementacin

No aaden sintaxis ni vocabulario al lenguaje

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 subconjunto / extensin de Ada que permite el uso de tcnicas de anlisis esttico El perfil de Ravenscar define un subconjunto seguro de la parte concurrente de Ada, y los correspondientes servicios de sistema operativo

Java
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


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

Java para tiempo real


Hay varias propuestas de modificaciones para usar Java en sistemas de tiempo real
NIST Requirements for Real-Time Extensions to Java (1999)
no modificar la sintaxis, coexistencia con aplicaciones convencionales

Java Real-time Experts Group (Sun & otros)


Real-Time Specification for Java (2000) basada en un mquina virtual extendida para STR

Real-Time Java Working Group (J-Consortium)


Real-Time Core Specification basada en una mquina virtual separada para STR

Todava no hay compiladores ni mquinas virtuales para Java de tiempo real

Sistemas operativos
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


concurrencia: procesos ligeros (threads) con memoria comn temporizacin: medida de tiempos y ejecucin peridica planificacin determinista
ej.: prioridades fijas con desalojo

dispositivos de E/S: acceso a recursos de hardware e interrupciones

Arquitectura de software y SO (1)

Programas de usuario Sistema operativo

Programa de aplicacin con componentes de sistema operativo

Hardware

Hardware

Aplicacin convencional

Sistema empotrado

Arquitectura de software (2)

programa de aplicacin ncleo de ejecucin (run-time system) sistema operativo de tiempo real hardware

Arquitectura con sistema operativo de tiempo real

Arquitectura de software (3)

aplicaciones convencionales programa de aplicacin ncleo de ejecucin (run-time system) hardware SO convencional

programa de tiempo real RTS

ncleo de tiempo real hardware

Arquitectura con mquina desnuda

Arquitectura con mquina virtual

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

Normas POSIX
POSIX 1, 1a POSIX 1b,1d,1j POSIX 1c POSIX 1e POSIX 1f POSIX 1g POSIX 1h POSIX 5,5a,5b POSIX 13 POSIX 21 Interfaz bsica similar a UNIX Extensiones de tiempo real Procesos ligeros (threads) Seguridad NFS Servicios de red (sockets, XTI) Tolerancia de fallos Interfaces para Ada Perfiles para sistemas de tiempo real Comunicaciones de tiempo real

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

Ejemplos de SOTR
LynxOS pSOS QNX VRTX VxWorks RTEMS RT-Linux Marte Universidad de Cantabria
perfil POSIX PSE50 para sistemas empotrados en PCx86

Open Ravenscar Kernel (ORK) DIT/UPM


ncleo de SOTR para Ada / Ravenscar

Resumen
Los mtodos y herramientas convencionales no son adecuados para desarrollar sistemas de tiempo real HRT-HOOD es un mtodo de diseo bien adaptado a este tipo de sistemas En el curso usaremos algunos lenguajes de programacin para ilustrar los conceptos ms importantes de los STR
C / POSIX Ada 95 RT Java

Вам также может понравиться