Está en la página 1de 411

SISTEMAS DE TIEMPO REAL

Optativa de 2 ciclo
Ingeniera Informtica
Ingeniera de Telecomunicacin
Ingeniera Industrial
J os Luis Villarroel Salcedo
Departamento de Informtica e Ingeniera de Sistemas
Centro Politcnico Superior
Universidad de Zaragoza
NDICE
Introduccin 1
Nociones sobre concurrencia 13
Medida y control del tiempo 48
Planificacin cclica 86
Planificacin basada en prioridades: RMS 131
Planificacin basada en prioridades: DMS 199
Planificacin basada en prioridades: EDF 225
Manejadores de dispositivos 253
Tolerancia a fallos. Excepciones 267
Programacin secuencial. Ada95 287
Programacin concurrente. Ada95 330
Medida y control del tiempo en Ada95 362
Programacin de bajo nivel. Ada95 382
Excepciones en Ada95 399
SISTEMAS DE TIEMPO REAL
1
SISTEMAS DE TIEMPO REAL
INTRODUCCIN
SISTEMAS DE TIEMPO REAL
2
DEFINICIN
Un sistema de Tiempo Real es un sistema informtico que:
Interacciona con su entorno fsico
Responde a los estmulos del entorno dentro de un plazo de tiempo
determinado
No basta con que las acciones del sistema sean correctas, sino que,
adems, tienen que ejecutarse dentro de un intervalo de tiempo
determinado.
Los sistemas tiempo real suelen estar integrados en un sistema de
ingeniera ms general, en el que realizan funciones de control y/o
monitorizacin:
SISTEMAS EMPOTRADOS
(embedded systems)
SISTEMAS DE TIEMPO REAL
3
CLASES
Sistemas de Tiempo Real:
Crticos (hard real-time systems):
los plazos de respuesta deben respetarse siempre estrictamente.
una sola respuesta tarda a un suceso externo puede tener consecuencias
fatales.
Acrticos (soft real-time systems):
se pueden tolerar retrasos ocasionales en la respuesta a un suceso.
Sistemas Interactivos (no de tiempo real):
No tienen plazos de respuesta explcitos
SISTEMAS DE TIEMPO REAL
4
EJ EMPLO
Robot mvil de inspeccin
SISTEMAS DE TIEMPO REAL
5
EJ EMPLO
Varias tareas:
Control automtico de velocidad y posicin (50 ms)
Lectura del lser y evitacin de obstculos (100 ms)
Toma de imgenes y procesamiento (1 s)
Reconocimiento de objetos
Lectura de matrculas
Comunicacin con la consola
Recepcin de rdenes
Envo de imgenes y otros datos
...
SISTEMAS DE TIEMPO REAL
6
CARACTERISTCAS
Determinismo Temporal
Acciones en intervalos de tiempo determinados
Es fundamental que el comportamiento temporal de los STR sea
determinista
no hay que confundirlo con la necesidad de que sea eficiente
el sistema debe responder correctamente en todas las situaciones
hay que prever el comportamiento en el peor caso posible
Fiabilidad y seguridad
Un fallo en un sistema de control puede hacer que el sistema
controlado se comporte de forma peligrosa o antieconmica
Es importante asegurar que si el sistema de control falla lo haga de
forma que el sistema controlado quede en un estado seguro => hay
que tener en cuenta los posibles fallos o excepciones en el diseo
SISTEMAS DE TIEMPO REAL
7
CARACTERISTCAS
Concurrencia
Los componentes del sistema controlado funcionan simultneamente
El sistema de control debe atenderlo y generar las acciones de control
simultneamente
Dos opciones
Sistema monoprocesador
Computadores multiprocesador o sistemas con varios computadores
Un computador ejecuta sus acciones de forma secuencial RAPIDEZ
se puede hacer que el computador ejecute sus acciones de forma
aparentemente simultnea
La programacin de sistemas concurrentes es compleja
SISTEMAS DE TIEMPO REAL
8
CARACTERSTICAS
Interaccin con dispositivos fsicos
Los sistemas empotrados interaccionan con su entorno mediante
diversos tipos de dispositivos que normalmente no son convencionales
(teclados, impresoras, ...): convertidores A/D y D/A, entradas y salidas
digitales, ... (interfases con sensores, actuadores, perifricos
especiales, ...)
Los componentes del software que controlan el funcionamiento de
estos dispositivos (manejadores, "drivers") son, en general,
dependientes del sistema concreto
SISTEMAS DE TIEMPO REAL
9
PROGRAMACIN
Actualmente existen dos alternativas:
Lenguajes secuenciales (C, C++, ...) + sistema operativo de tiempo real
Los lenguajes secuenciales dependen de un sistema operativo para las
funciones de concurrencia y temporizacin
Lenguajes concurrentes (Ada95, ...)
Las funciones de concurrencia y tiempo real forman parte del lenguaje
SISTEMAS DE TIEMPO REAL
10
SISTEMAS OPERATIVOS
Los sistemas operativos convencionales no son adecuados para tiempo
real:
No tienen comportamiento determinista
No permiten garantizar los tiempos de respuesta
Un sistema operativo de tiempo real debe soportar:
concurrencia: procesos ligeros con memoria comn
temporizacin: medida de tiempos y ejecucin peridica
planificacin: expulsiva con prioridades, y acceso a recursos con
herencia de prioridad
manejo de dispositivos E/S: acceso a recursos de hardware e
interrupciones
Ejemplos: VxWorks, LynxOS, QNX, RTEMS, RT-Linux, ....
SISTEMAS DE TIEMPO REAL
11
POSIX
Portable Operating System Interface + X
Conjunto de normas IEEE/ISO que definen servicios que pueden ofrecer
los sistemas operativos
Normas bsicas, con interfaces para C
Interfaces para Ada y otros lenguajes
Perfiles de aplicacin
SISTEMAS DE TIEMPO REAL
12
PROGRAMACIN
Ada95
Se desarroll especficamente para sistemas empotrados por encargo del
DoD(Ministerio de Defensa de EEUU) --> Ada 83
Revisin 1995 --> Ada95
Soporta tecnologas de software avanzadas
descomposicin, abstraccin, reutilizacin
programacin orientada a objetos
Incluye concurrencia, tiempo real, acceso a recursos de bajo nivel y potente
tratamiento de excepciones
Se utiliza ampliamente en todo tipo de sistemas de tiempo real (no slo
militares), especialmente en Europa
Transportabilidad, Legibilidad, Eficiencia, Seguridad (chequeos compilador)
Anexos especializados (aplicaciones distribuidas, sistemas de informacin,
...)
SISTEMAS DE TIEMPO REAL
13
SISTEMAS DE TIEMPO REAL
NOCIONES SOBRE
CONCURRENCIA
SISTEMAS DE TIEMPO REAL
14
PROCESOS CONCURRENTES
Procesos concurrentes: Se dice que dos o ms procesos son
concurrentes si pueden ejecutarse en paralelo, de forma que alguno de
ellos comience a ejecutarse antes que termine algn otro.
Programa concurrente: Es un programa que especifica dos o ms
procesos concurrentes o, de forma equivalente, un programa cuya
ejecucin se realiza segn varios flujos de control que avanzan en
paralelo.
Paralelismo virtual
Monoprocesador: Un nico procesador va alternando la ejecucin de
los diversos procesos (entrelazado)
Paralelismo real
Multiprocesador: Cada proceso se ejecuta en un procesador diferente.
Zona de memoria comn (datos comunes).
Sistema distribuido: Multiprocesador sin memoria compartida.
SISTEMAS DE TIEMPO REAL
15
PROCESOS PESADOS Y LIGEROS
Los sistemas operativos suelen soportar procesos "pesados"
Espacios de memoria totalmente independientes
Algunos sistemas operativos tienen procesos "ligeros" (threads)
Tienen acceso al mismo espacio de memoria
El entrelazado, comunicacin y sincronizacin entre threads es ms
eficiente
Se necesitan mecanismos para evitar las interferencias entre los threads.
Nos centraremos en procesos ligeros:
threads o tareas
SISTEMAS DE TIEMPO REAL
16
ESTADOS DE UN PROCESO

nuevo
activo
ejecucin
preparado
terminado
espera
kernel
En un sistema con N procesadores,
slo puede haber N procesos en ejecucin
SISTEMAS DE TIEMPO REAL
17
NCLEO DE TIEMPO REAL
Los procesos concurrentes se ejecutan con ayuda de un ncleo de
ejecucin (run-time kernel)
El ncleo se encarga de la creacin, terminacin y entrelazado de los
procesos
El ncleo puede tomar varias formas:
Ncleo desarrollado como parte de la aplicacin
ejemplo: ejecutivo cclico
Ncleo del entorno de ejecucin del lenguaje
ejemplo: lenguaje Ada95
Ncleo de un sistema operativo de tiempo real
ejemplo: VxWorks, LynxOS, RTEMS, RT-Linux, QNX, ...
SISTEMAS DE TIEMPO REAL
18
Ejemplo: control de temperatura y nivel
T: temperatura
H: nivel de lquido
C: ajuste del calefactor
V: ajuste de la vlvula
Periodo de muestreo deseado:
Temperatura: 5 s
Nivel: 1 s
T H
V
C
SISTEMAS DE TIEMPO REAL
19
Ejemplo: Ejecutivo cclico (C)

voi d CONTROL_DE_TEMPERATURA( voi d) {
TEMPERATURA T ;
AJ USTE_DE_CALEFACTOR C ;
MEDI R( &T) ;
CALCULAR_ACCI ON( T, &C) ;
GENERAR( C) ;
MOSTRAR( T) ;
}
voi d CONTROL_DE_NI VEL( voi d) {
ALTURA H ;
AJ USTE_DE_VALVULA V ;
MEDI R( &H) ;
CALCULAR_ACCI ON( H, &V) ;
GENERAR( V) ;
MOSTRAR( H) ;
}
voi d EJ ECUTI VO_CI CLI CO( voi d) {
i nt i ;
f or ( i = 0; 1; i =( i +1) %5 ) {
CONTROL_DE_NI VEL( ) ;
i f ( i ==0)
CONTROL_DE_TEMPERATURA( ) ;
- - esper ar hast a 1 s
}
}
SISTEMAS DE TIEMPO REAL
20
Ejemplo: Tareas en Ada95

pr ocedur e SI STEMA_DE_CONTROL i s
t ask CONTROL_DE_TEMPERATURA ;
t ask CONTROL_DE_NI VEL ;
t ask body CONTROL_DE_TEMPERATURA i s
T: TEMPERATURA ;
C: AJ USTE_DE_CALEFACTOR ;
begi n
l oop
MEDI R( T) ;
CALCULAR_ACCI ON( T, C) ;
GENERAR( C) ;
MOSTRAR( T) ;
- - esper ar hast a 5 seg
end l oop ;
end CONTROL_DE_TEMPERATURA ;
t ask body CONTROL_DE_NI VEL i s
H: ALTURA ;
V: AJ USTE_DE_VALVULA ;
begi n
l oop
MEDI R( H) ;
CALCULAR_ACCI ON( H, V) ;
GENERAR( V) ;
MOSTRAR( H) ;
- - esper ar hast a 1 seg
end l oop ;
end CONTROL_DE_NI VEL ;
begi n - - SI STEMA_DE_CONTROL
nul l ;
end SI STEMA_DE_CONTROL ;
SISTEMAS DE TIEMPO REAL
21
Ejemplo: Threads en POSIX

#i ncl ude <pt hr ead. h>
pt hr ead_at t r _t at r i but os ;
pt hr ead_t t hr ead_T, t hr ead_H ;
voi d CONTROL_TEMP( voi d) {
TEMPERATURA T ;
AJ USTE_DE_CALEFACTOR C ;
whi l e( 1) {
MEDI R( &T) ;
CALCULAR_ACCI ON( T, &C) ;
GENERAR( C) ;
MOSTRAR( T) ;
- - esper ar hast a 5 s
}
}
voi d CONTROL_NI VEL( voi d) {
ALTURA H ;
AJ USTE_DE_VALVULA V ;
whi l e( 1) {
MEDI R( &H) ;
CALCULAR_ACCI ON( H, &V) ;
GENERAR( V) ;
MOSTRAR( H) ;
- - esper ar hast a 1 s
}
}
. . . . . .
SISTEMAS DE TIEMPO REAL
22
Ejemplo: Threads en POSIX

. . . . .
voi d mai n( ) {
voi d *r esul t ;
/ * pr epar ar at r i but os por def ect o */
pt hr ead_at t r _i ni t ( &at r i but os) ;
/ * cr ear l os t hr eads */
pt hr ead_cr eat e( &t hr ead_T, &at r i but os,
( voi d *) CONTROL_TEMP, voi d) ;
pt hr ead_cr eat e( &t hr ead_H, &at r i but os,
( voi d *) CONTROL_NI VEL, voi d) ;
/ * bl oquea el pr ogama pr i nci pal */
/ * hast a que t er mi nen l os t hr eads */
pt hr ead_j oi n( t hr ead_T, &r esul t ) ;
pt hr ead_j oi n( t hr ead_H, &r esul t ) ;
exi t ( - 1) ; / * nunca se ej ecut ar */
}
SISTEMAS DE TIEMPO REAL
23
ENTRELAZADO
Entrelazado y operaciones atmicas
Posibles ejecuciones:
(P1; P2; Q1; Q2)
(P1; Q1; P2; Q2)
(Q1; P1; P2; Q2)
...
Pr oceso P ;
x, y: ent er o ;
P1: x: =1 ;
P2: y: =x+2 ;
f i n P ;
Pr oceso Q ;
z, u: ent er o ;
Q1: z: =3 ;
Q2: u: =z+1 ;
f i n Q ;
SISTEMAS DE TIEMPO REAL
24
ENTRELAZADO
Cada instruccin de alto nivel: varias instrucciones cdigo mquina.
Por ejemplo: x := y + z ;
copiar y, r1
copiar z, r2
sumar r1, r2
copiar r2, x
Operaciones atmicas.
SISTEMAS DE TIEMPO REAL
25
COMPETENCIA / EXCLUSIN MUTUA
Dos procesos compiten cuando comparten:
un recurso
una variable
El acceso al recurso o a la variable debe ser en exclusin mutua.
Regin crtica: secuencia de instrucciones que deben ejecutarse en
exclusin mutua
SISTEMAS DE TIEMPO REAL
26
COMPARTICIN DE UN RECURSO
Ejemplo: dos procesos (P y Q) comparten una cinta magntica.
l i br e: = t r ue;
pr oceso P; pr oceso Q;
pr i nci pi o pr i nci pi o
r epet i r r epet i r
r epet i r nada; r epet i r nada;
hast a l i br e; hast a l i br e;
l i br e: = f al se; l i br e: = f al se;
usar ci nt a; usar ci nt a;
l i br e: = t r ue; l i br e: = t r ue;
ot r as cosas; ot r as cosas;
f i n r epet i r ; f i n r epet i r ;
f i n ; f i n ;
SISTEMAS DE TIEMPO REAL
27
COMPARTICIN DE UNA VARIABLE
Ejemplo: dos procesos (acumulador y escritor) comparten una variable n.
n : ent er o : = 0;
pr oceso acumul ador ;
pr i nci pi o
r epet i r
esper ar i mpul so;
n: =n+1;
f i n r epet i r ;
f i n;
pr oceso escr i t or ;
pr i nci pi o
r epet i r
esper ar 1 hor a;
escr i bi r n;
n: =0;
f i n r epet i r ;
f i n;
SISTEMAS DE TIEMPO REAL
28
COMPARTICIN DE UNA VARIABLE
Posibles trazas:
(escribir n; n:=0; n:=n+1)
(escribir n; n:=n+1; n:=0) --> Prdida de pulso
(n:=n+1; escribir n; n:=0)
n := n + 1 ;
copiar n, r1
sumar r1, 1 / (escritor) n:=0;
copiar r1, n => Prdida de la puesta a cero de n
Pb: entrelazado de las instrucciones en el acceso a la variable comn.
Solucin en ambos casos: garantizar el acceso en exclusin mutua al
elemento compartido.
SISTEMAS DE TIEMPO REAL
29
REGIN CRTICA
Se garantiza que dos procesos no estarn ejecutando a la vez una misma
regin crtica
Ejemplo: dos procesos (P y Q) comparten una cinta magntica.
n : compar t i da ent er o : = 0;
pr oceso acumul ador ;
pr i nci pi o
r epet i r
esper ar i mpul so;
r egi on n hacer
n: =n+1;
f i n;
f i n r epet i r ;
f i n;
pr oceso escr i t or ;
pr i nci pi o
r epet i r
esper ar 1 hor a;
r egi on n hacer
escr i bi r n;
n: =0;
f i n;
f i n r epet i r ;
f i n;
SISTEMAS DE TIEMPO REAL
30
REGIN CRTICA
Ejemplo: dos procesos (P y Q) comparten una cinta magntica.
v : compar t i da bool ean;
pr oceso P;
pr i nci pi o
r epet i r
r egi on v hacer
usar ci nt a;
f i n;
ot r as cosas;
f i n r epet i r ;
f i n ;
pr oceso Q;
pr i nci pi o
r epet i r
r egi on v hacer
usar ci nt a;
f i n;
ot r as cosas;
f i n r epet i r ;
f i n ;
SISTEMAS DE TIEMPO REAL
31
REGIN CRTICA: REALIZACIN
Varias posibles realizaciones:
Mutex (semforo binario)
POSIX, VxWorks, RTEMS, ...
Monitor
Protected (Ada95)
Aplicacin tiempo real: tareas + ncleo
El ncleo es el que ejecuta las primitivas de exclusin mutua
El ncleo no puede ser expulsado
El ncleo es el que decide qu tarea est en el procesador en cada
momento
SISTEMAS DE TIEMPO REAL
32
MUTEX
Es una variable booleana
Las operaciones signal y wait son atmicas.
Los semforos tienen asociada una cola de procesos suspendidos en
espera.
Los semforos son gestionados por el ncleo de ejecucin
S : mut ex : = val or _i ni ci al ;
wai t ( S) :
si S = t r ue, S : = f al se
si no, suspender el pr oceso
si gnal ( S) :
si hay pr ocesos esper ando,
pasar uno de el l os a pr epar ado
si no, S : = t r ue
SISTEMAS DE TIEMPO REAL
33
MUTEX
La exclusin mutua puede asegurarse con un semforo binario, inicializado
a uno (true)
mut ex: mut ex_semaphor e : = 1 ;
pr oceso P1;
pr i nci pi o
r epet i r
Wai t ( mut ex) ;
<secci n cr t i ca>
Si gnal ( mut ex)
<secci n no cr t i ca>
f i n r epet i r ;
f i n P1 ;
pr oceso P2;
pr i nci pi o
r epet i r
Wai t ( mut ex) ;
<secci n cr t i ca>
Si gnal ( mut ex)
<secci n no cr t i ca>
f i n r epet i r ;
f i n P2 ;
CUIDADO: si un proceso olvida liberar
el mutex, el recurso queda bloqueado
SISTEMAS DE TIEMPO REAL
34
MONITOR (protected Ada95)
No se puede acceder a las variables definidas en un monitor salvo a travs
de los procedimientos definidos en l.
El nmero de procesos que pueden ejecutar a la vez procedimientos de un
monitor est limitado a uno => exclusin mutua en el acceso a las
variables
pr ot ect ed cont ador i s
pr ocedur e i ncr ement o ;
pr ocedur e escr i be_bor r a ;
pr i vat e
n: i nt eger : = 0 ;
end ;
pr ot ect ed body cont ador i s
pr ocedur e i ncr ement o i s
begi n
n : = n+1 ;
end ;
pr ocedur e escr i be_bor r a i s
begi n
escr i bi r ( n) ;
n : = 0 ;
end ;
end ;
SISTEMAS DE TIEMPO REAL
35
MONITOR
Pueden programarse mediante mutex
/ * f i cher o cont ador . c */
#i ncl ude cont ador . h
#i ncl ude <semaphor e. h>
/ * var i abl es pr i vadas del moni t or */
st at i c semaphor e mut ex_cont ador ;
st at i c i nt n = 0 ;
voi d i ncr ement a( voi d) {
wai t ( mut ex_cont ador ) ;
n: =n+1;
si gnal ( mut ex_cont ador ) ;
}
voi d escr i be_bor r a( voi d) {
wai t ( mut ex_cont ador ) ;
escr i bi r ( n) ;
n: =0;
si gnal ( mut ex_cont ador ) ;
}
/ * f i cher o cont ador . h */
voi d i ncr ement a( voi d) ;
voi d escr i be_bor r a( voi d) ;
SISTEMAS DE TIEMPO REAL
36
EXCLUSIN MUTUA E INTERRUPCIONES
Las rutinas de servicio de interrupciones (ISR) se ejecutan en concurrencia
con el resto de procesos.
Exclusin mutua => inhibir interrupciones
st at i c i nt n = 0 ;
voi d r ut i na_i nt er r upci on( voi d) {
n: =n+1;
}
voi d escr i be_bor r a( voi d) {
i nhi bi r _i nt er r upci on( ) ;
escr i bi r ( n) ;
n: =0;
act i var _i nt er r upci on( ) ;
}
SISTEMAS DE TIEMPO REAL
37
COOPERACION / COMUNICACION
Interacciones ms directas entre procesos que cooperan en la realizacin
de alguna tarea.
Cooperacin => intercambio de datos
Comunicacin asncrona:
buzones
semforos.
Comunicacin sncrona:
cita
cita extendida.
SISTEMAS DE TIEMPO REAL
38
BUZON
Comunicacin asncrona
Un proceso P produce y enva una secuencia de datos a otro proceso C
que los recibe y consume. Los datos son transmitidos en porciones
discretas denominadas mensajes.
Es posible que P produzca un mensaje cuando C no est en disposicin
de recibirlo. Para evitar que P espere se introduce un rea de
almacenamiento de mensajes donde P puede colocar sus mensajes hasta
que C los lea: BUZON.
P C B
SISTEMAS DE TIEMPO REAL
39
BUZON
Restricciones:
El proceso emisor no puede exceder la capacidad finita del buzn. Si el
buzn est lleno el emisor espera para depositar su mensaje.
El proceso receptor no puede consumir mensajes ms deprisa de lo
que se producen. Si el buzn est vaco el proceso receptor espera a
que un mensaje sea depositado.
Manejo de buzones:
B es memoria compartida por varios procesos (emisor y receptor) =>
exclusin mutua en el acceso => un buzn es una regin crtica.
Es posible que un buzn tenga varios procesos emisores y varios
receptores.
var B : buf f er max of T
send( M, B) r ecei ve( M, B)
SISTEMAS DE TIEMPO REAL
40
BUZN
La poltica de manejo de un buzn puede ser:
Si al enviar un mensaje el buzn est lleno:
el emisor espera hasta que haya espacio
el emisor espera, con un tiempo mximo
el mensaje se descarta
se descarta otro mensaje (p.ej. el ms antiguo)
Si al solicitar un mensaje el buzn est vaco:
el receptor espera hasta que haya mensaje
el receptor espera, con un tiempo mximo
se le indica que no hay mensaje y puede continuar
SISTEMAS DE TIEMPO REAL
41
BUZONES EN POSIX Y VXWORKS
Algunos sistemas ofrecen paquetes de manejos de buzones con
posibilidades adicionales:
Colas de mensajes en POSIX
Consulta del nmero de mensajes pendientes
Opcin de no bloqueo al enviar o al recibir
Si hay varios receptores esperando se les atiende por prioridad
Mensajes con 32 prioridades
Colas de mensajes en VxWorks
Consulta del nmero de mensajes pendientes
Opcin de no bloqueo y de tiempo mximo de espera al enviar o al recibir
Si hay varios receptores esperando se les atiende por prioridad o por orden
FIFO
Mensajes con 2 prioridades: normal o urgente
SISTEMAS DE TIEMPO REAL
42
SEMFORO
Si los mensajes no encierran ninguna informacin el buzn se denomina
SEMAFORO.
No interesa el contenido de los mensajes sino solamente su nmero => el
semforo es un contador de mensajes.
Sintaxis:
Las operaciones signal y wait son atmicas.
Cola de procesos suspendidos en espera.
Los semforos son gestionados por el ncleo de ejecucin
S : semaphor e : = val or _i ni ci al ;
wai t ( S) :
si S > 0, S : = S - 1
si no, suspender el pr oceso
si gnal ( S) :
si hay pr ocesos esper ando,
pasar uno de el l os a pr epar ado
si no, S : = S + 1
SISTEMAS DE TIEMPO REAL
43
SEMFORO
El problema de
hacer cuadernillos:
pr ogr ama GRAPAR_HOJ AS ;
var S: semaphor e;
pr oceso AMONTONAR;
pr i nci pi o
r epet i r
coger una hoj a de cada mont n ;
dej ar el gr upo de hoj as en l a mesa ;
si gnal ( S) ;
hast a que se acaben l as hoj as;
f i n ;
pr oceso GRAPAR ;
pr i nci pi o
r epet i r
wai t ( S) ;
t omar un gr upo de l a mesa ;
gr apar l o ;
hast a que se acaben l os gr upos;
f i n ;
pr i nci pi o
i ni t ( S, 0) ;
f i n ;
SISTEMAS DE TIEMPO REAL
44
CITA
Una cita supone:
Una sincronizacin de dos procesos
Un intercambio de informacin
La cita es un mecanismo no simtrico: un proceso ejerce de llamador y
otro de aceptador de la llamada.
El intercambio de informacin
puede ser bidireccional (Ada)
o unidireccional (OCCAM).
Proceso Aceptador
Proceso Llamador
envo datos
respuesta
aceptacin de la llamada
SISTEMAS DE TIEMPO REAL
45
CITA EXTENDIDA
Cita extendida (rendez-vous de Ada): es una cita en la que el proceso
aceptador ejecuta un cdigo en la aceptacin:
Procesamiento datos recibidos
Preparacin datos a enviar
Sintaxis (proceso aceptador):
Proceso llamador ( llamada procedimiento):
ent r y NOMBRE_ENT ( DEC_PARAMETROS) ;

accept NOMBRE_ENT( DEC_PARAMETROS) do
cdi go de l a ci t a ext endi da;
end NOMBRE_ENT;
P_ACEPTADOR. NOMBRE_ENT( PARAMETROS) ;
SISTEMAS DE TIEMPO REAL
46
CITA EXTENDIDA
pr ocedur e BAR i s
t ask CLI ENTE ;
t ask CAMARERO i s
ent r y COBRAR ( DI NERO: i n out i nt eger ) ;
end CAMARERO ;
t ask body CLI ENTE i s
MONEDERO: i nt eger : = 100 ;
begi n
- - t omar una consumi ci n ;
CAMARERO. COBRAR ( MONEDERO) ;
- - hacer ot r as cosas ;
end CLI ENTE ;
t ask body CAMARERO i s
PRECI O: i nt eger : = 50 ;
begi n
- - at ender cl i ent es ;
accept COBRAR( DI NERO: i n out i nt eger ) do
begi n
DI NERO : = DI NERO - PRECI O ;
end COBRAR ;
- - hacer ot r as cosas ;
end CAMARERO ;
begi n nul l ; end BAR ;
BAR: El camarero y
los clientes
SISTEMAS DE TIEMPO REAL
47
SELECCIN NO DETERMINISTA
BAR: El camarero mejorado
t ask CAMARERO i s
ent r y SERVI R ( _) ;
ent r y COBRAR ( _) ;
end CAMARERO ;
t ask body CAMARERO i s
begi n
l oop
sel ect
accept SERVI R ( _) do
. . .
end SERVI R ;
or
accept COBRAR ( _) do
. . .
end COBRAR ;
end sel ect ;
end l oop ;
end CAMARERO ;
t ask C1 ;
t ask body C1 i s
begi n
. . .
CAMARERO. SERVI R ( _) ;
. . .
CAMARERO. COBRAR ( _) ;
. . .
end C1 ;
SISTEMAS DE TIEMPO REAL
48
SISTEMAS DE TIEMPO REAL
MEDIDA Y CONTROL DEL
TIEMPO
SISTEMAS DE TIEMPO REAL
49
INTRODUCCION
Caracterstica ms importante de un sistema tiempo real: capacidad para
ejecutar sus acciones en intervalos de tiempo bien definidos.
Por este motivo es fundamental disponer de mecanismos adecuados para:
medir el tiempo
controlar la duracin de las acciones del sistema
Ms concretamente hace falta:
Mecanismos para medir el tiempo: relojes y temporizadores
Mecanismos para activar tareas en instantes determinados
Mecanismos para reconocer fallos en los plazos de ocurrencia de
ciertos eventos: timeouts
Mecanismos para especificar y asegurar los plazos de ejecucin de las
acciones: planificadores de tiempo real
SISTEMAS DE TIEMPO REAL
50
INTRODUCCIN
Adems un sistema tiempo real es un sistema concurrente, compuesto por
procesos. Desde el punto de vista del tiempo, principalmente dos tipos de
procesos:
Procesos peridicos: son aquellos
que se activan regularmente en
instantes de tiempo separados por
un perodo de tiempo determinado.
Procesos espordicos: son aquellos
que se activan de forma irregular,
cada vez que se producen ciertos
eventos externos.
pr oceso P;
cada T r epet i r
act i vi dad;
f i n r epet i r ;
f i n P;
pr oceso P;
r epet i r
esper ar E ;
act i vi dad;
f i n r epet i r ;
f i n P;
SISTEMAS DE TIEMPO REAL
51
TIEMPO
El tiempo es una magnitud fsica fundamental, cuya unidad en el SI es
el segundo.
Se necesitan dos tipos de medidas:
Tiempo absoluto
Tiempo relativo o intervalos de tiempo
El tiempo absoluto necesita un sistema de referencia
escala de tiempo
con un origen que se denomina poca
Un sistema de tiempo real para medir el paso del tiempo puede:
Acceder a un sistema de referencia externo (p.e. Seal UTC del GPS)
Utilizar un reloj de hardware interno que proporciona una aproximacin del
paso del tiempo en el entorno
Utilizar un reloj interno + sincronizaciones con sistema de referencia
externo
SISTEMAS DE TIEMPO REAL
52
TIEMPO
Sistemas de referencia estndar
Astronmicos
Tiempo universal (UT0):Tiempo solar en el meridiano Greenwich
UT1, UT2: correcciones por el desplazamiento polar y por variaciones de la
velocidad de rotacin de la Tierra
Atmicos
Tiempo Atmico Internacional (IAT): Basado en un reloj atmico de cesio
Tiempo Universal Coordinado (UTC): Reloj IAT sincronizado con UT2
mediante la adicin de ticks ocasionales
SISTEMAS DE TIEMPO REAL
53
MEDIDA DEL TIEMPO
El tiempo en un computador se mide con:
Relojes
Pueden llegar a medir tiempo absoluto
Funcionan de forma continua
Temporizadores
Medida de intervalos temporales
Arranque y paro
t
t1 t2
t
[ ]
Arranque Paro
Temporizador
Reloj
t = t2-t1
SISTEMAS DE TIEMPO REAL
54
RELOJ ES
Reloj: es un mdulo (de hardware y software) que proporciona el valor del
tiempo real cuando se lee.
Un reloj est compuesto por:
Un circuito que genera impulsos peridicos
Un contador que acumula los impulsos
Un software de gestin
Lectura del tiempo
Puesta en hora
Conversin del contador en unidades de tiempo (segundos, minutos, ...)
...
Las caractersticas ms importantes de un reloj son:
Precisin (granularidad). Depende de la frecuencia de los impulsos.
Intervalo de valores. Depende de la precisin y de la capacidad del
contador.
SISTEMAS DE TIEMPO REAL
55
MEDIDA DEL TIEMPO
Unidad de tiempo: tick
El contador es de capacidad limitada
desbordamiento -> reinicio cuenta
tiempo montono, la aplicacin tiene una vida menor que el tiempo
de desbordamiento.
tiempo no montono, la aplicacin vive ms que el tiempo de
desbordamiento
tiempo
vida aplicacin (t. no montono)
Tiempo
computador
tick
SISTEMAS DE TIEMPO REAL
56
MEDIDA DEL TIEMPO
La monotona del tiempo depende de:
el tiempo de vida de la aplicacin
el tamao del contador en relacin con el tamao del tick.
Problemas del tiempo no montono
No se dispone del tiempo absoluto
No se puede mantener fecha, hora, ...
No se pueden utilizar intervalos temporales por encima del tiempo de
desbordamiento del contador del reloj
SISTEMAS DE TIEMPO REAL
57
TIPOS DE RELOJ ES
Reloj calendario
Mantenimiento de la fecha y hora de una aplicacin
No montono
Generalmente sincronizado con un sistema de referencia exterior (p.e.
UTC) puesta en hora
Horario de invierno y de verano
Reloj de tiempo real
Medida y control del tiempo
Montono o no montono
No monotona slo por desbordamiento
No puesta en hora
Generalmente de ms precisin
SISTEMAS DE TIEMPO REAL
58
EJ EMPLOS DE RELOJ ES
POSIX.1b: CLOCK_REALTIME (p.e.
VxWorks)
nmero entero de segundos (32
bits)
nmero entero de nanosegundos
(32 bits)
Resolucin en la representacin:
1ns
Granularidad
Depende de la implementacin
Como mnimo 20 ms
intervalo: 2
32
s = 136 aos
Ada95: Ada.Real_Time
Tipo abstracto de dato con
funciones de manejo y conversin
poca: arranque de la aplicacin
intervalo: igual o mayor a 50 aos
Resolucin en la representacin:
mnimo 20 s
Granularidad
Depende de la implementacin
Como mnimo 1 ms
SISTEMAS DE TIEMPO REAL
59
CLOCK_REALTIME
st r uct t i mespec {
t i me_t t v_sec ; / * segundos */
l ong t v_nsec; / * nanosegundos */
};
#i ncl ude <t i me. h>
st r uct t i mespec t s ;
/ * l eer l a hor a */
cl ock_get t i me( CLOCK_REALTI ME, &t s) ;
/ * poner en hor a */
cl ock_set t i me( CLOCK_REALTI ME, &t s) ;
/ * obt ener l a r esol uci on del r el oj */
cl ock_get r es( CLOCK_REALTI ME, &t s) ;
SISTEMAS DE TIEMPO REAL
60
Ada.Real_Time
package Ada. Real _Ti me i s
t ype Ti me i s pr i vat e;
Ti me_Fi r st : const ant Ti me;
Ti me_Last : const ant Ti me;
Ti me_Uni t : const ant : = i mpl ement at i on- def i ned- r eal - number ;
t ype Ti me_Span i s pr i vat e;
Ti me_Span_Fi r st : const ant Ti me_Span;
Ti me_Span_Last : const ant Ti me_Span;
Ti me_Span_Zer o : const ant Ti me_Span;
Ti me_Span_Uni t : const ant Ti me_Span;
Ti ck : const ant Ti me_Span;
f unct i on Cl ock r et ur n Ti me;
SISTEMAS DE TIEMPO REAL
61
EJ EMPLO DE MEDIDA DEL TIEMPO
Medida del tiempo de ejecucin de una actividad
use Ada. Real _Ti me;
declare
Ol d_Ti me, New_Ti me : Ti me;
I nt er val : Ti me_Span;
begin
Ol d_Ti me : = Cl ock;
-- actividad cuya duracin se mide
New_Ti me : = Cl ock;
I nt er val : = New_Ti me - Ol d_Ti me;
end;
SISTEMAS DE TIEMPO REAL
62
EJ EMPLO DE MEDIDA DEL TIEMPO
Tcnica de doble bucle
Slo es vlido si la secuencia de instrucciones se ejecuta de una vez
(sin ceder el procesador a otras tareas o al ncleo)
declare
T0, T1, T2 : Ada. Real _Ti me. Ti me;
Execut i on_Ti me : Ada. Real _Ti me. Ti me_Span;
N : constant Posi t i ve : = . . . ;
begin
T0 : = Ada. Real _Ti me. Cl ock;
for i in 1 . . N loop
- - secuencia de instrucciones
end loop;
T1 : = Ada. Real _Ti me. Cl ock;
for i in 1 . . N loop
null;
end loop;
T2 : = Ada. Real _Ti me. Cl ock;
Execut i on_Ti me = ( ( T1 - T0) - ( T2 - T1) ) / N;
end;
SISTEMAS DE TIEMPO REAL
63
RELOJ ES CALENDARIO
Reloj calendario
Fecha
Hora oficiales
Un reloj calendario no es montono
Horario de invierno
Horario de verano
En el cambio a horario de verano el reloj se atrasa
Un reloj de estas caractersticas no se puede utilizar en tiempo real
SISTEMAS DE TIEMPO REAL
64
ACTIVACIN DE TAREAS
Mecanismos bsicos de activacin de tareas:
Por interrupcin
Tareas peridicas
Tareas espordicas
Con retardos
Tareas peridicas
Primitivas de comunicacin/sincronizacin (tareas que activan a otras
tareas)
Semforos, buzones
Cita
Tareas peridicas o espordicas
SISTEMAS DE TIEMPO REAL
65
ACTIVACIN POR INTERRUPCIN
La estructura de la aplicacin depende del hardware disponible:
La activacin es realizada directamente por el hardware
Se asocia una interrupcin a cada tarea
Tareas peridicas -> un timer (hardware) por cada tarea
Con esta aproximacin la aplicacin es dependiente del hardware:
Hardware especfico, no de propsito general
Falta de transportabilidad
Mucha eficiencia
SISTEMAS DE TIEMPO REAL
66
EJ EMPLO INTERRUPCIONES
Ada95
pr ot ect ed body I nt _i i s
pr ocedur e Handl er i s
begi n
I nt er r upt _Ocur r ed: = t r ue ;
end ;
ent r y Wai t _f or _Event when I nt er r upt _Ocur r ed i s
begi n
I nt er r upt _Ocur r ed : = f al se ;
end ;
end ;
t ask body Task_i i s
begi n
l oop
I nt _i . Wai t _f or _Event ;
Event _Pr ocessi ng ;
end l oop ;
end Task_i ;
pr ot ect ed I nt _i i s
ent r y Wai t _f or _Event ;
pr i vat e
pr ocedur e Handl er ;
I nt er r upt _Ocur r ed: bool ean : = f al se ;
end ;
SISTEMAS DE TIEMPO REAL
67
EJ EMPLO INTERRUPCIONES
VxWorks
voi d t ask ( voi d)
{
whi l e ( TRUE) {
semTake ( syncSe, WAI T_FOREVER) ;
Event _Pr ocessi ng ( ) ;
}
}
voi d I nt _Handl er ( voi d)
{
. . . ;
semGi ve ( syncSem) ;
}
SISTEMAS DE TIEMPO REAL
68
RETARDOS
Los retardos permiten controlar el tiempo de activacin de las tareas. Esta
tcnica de activacin no depende del hardware
Hardware propsito general
Transportabilidad
En Ada95 y otros lenguajes y sistemas operativos se realizan mediante la
instruccin:
delay <duracion> ; / nanosleep (<duracion>) ;
Efecto: suspende la ejecucin de la tarea durante, al menos, la duracin
especificada, a partir del momento en que se invoca.
La ejecucin puede verse retrasada durante una duracin mayor a la
especificada debido a:
Precisin del reloj menor que la precisin de la duracin especificada.
Un mtodo de planificacin que selecciona otra tarea para la ejecucin
antes que la retrasada.
SISTEMAS DE TIEMPO REAL
69
TAREAS PERIDICAS Y RETARDOS
Los retardos se pueden utilizar para realizar tareas peridicas:
Problema: deriva acumulativa. Los retrasos que se producen en cada
periodo (deriva local) se van acumulando.
t ask PERI ODI CA;
t ask body PERI ODI CA i s
PERI ODO: const ant DURATI ON : = ;
begi n
l oop
- - acci n per i odi ca
del ay PERI ODO ;
end l oop ;
end PERI ODI CA ;
SISTEMAS DE TIEMPO REAL
70
TAREAS PERIDICAS Y RETARDOS
Esquema que elimina la deriva acumulativa (no la local):
t ask body PERI ODI CA i s
PERI ODO: const ant DURATI ON : = ;
SI GUI ENTE: TI ME ;
begi n
SI GUI ENTE: = CLOCK ;
l oop
- - acci n per i odi ca
SI GUI ENTE: = SI GUI ENTE + PERI ODO ;
del ay SI GUI ENTE - CLOCK ;
end l oop ;
end PERI ODI CA ;
SISTEMAS DE TIEMPO REAL
71
TAREAS PERIDICAS Y RETARDOS
DL DL DA DA
50 ms 50 ms
delay
0.05
delay
0.05
P=50 ms
a1 a2 a3 a4
A1 A2
A3
Primera aproximacin
DL
DL
DL=0 DL
A1 A2 A3 A4
delay
0.01
delay
0.02
delay
0.03
Aproximacin buena
SISTEMAS DE TIEMPO REAL
72
TAREAS PERIDICAS Y RETARDOS
En C + VxWorks
#i ncl ude " del ays. h"
. . . .
voi d t ar ea_per i odi ca( voi d) {
st r uct t i mespec si gui ent e, i ni ci o, ahor a, t s ;
st r uct t i mespec per i odo = t o_t i mespec( 0. 05) ;
cl ock_get t i me( CLOCK_REALTI ME, &i ni ci o) ;
si gui ent e = i ni ci o ;
whi l e( 1) {
<cdi go per i di co>
si gui ent e=add_t i mespec( si gui ent e, per i odo) ;
cl ock_get t i me( CLOCK_REALTI ME, &ahor a) ;
t s = sub_t i mespec ( si gui ent e, ahor a) ;
nanosl eep( &t s, 0) ;
}
}
SISTEMAS DE TIEMPO REAL
73
DELAY UNTIL
Resuelve el problema de la no atomicidad de la instruccin:
delay SIGUIENTE - CLOCK ;
utilizando tiempo absoluto
t ask body PERI ODI CA i s
PERI ODO: const ant DURATI ON : = ;
SI GUI ENTE: TI ME ;
begi n
SI GUI ENTE: = CLOCK ;
l oop
- - acci n per i odi ca
SI GUI ENTE: = SI GUI ENTE + PERI ODO ;
del ay unt i l SI GUI ENTE ;
end l oop ;
end PERI ODI CA ;
Ada 95
SISTEMAS DE TIEMPO REAL
74
COMUNICACIN / SINCRONIZACIN
Tarea peridica con supervisor
Es posible tratar posibles prdidas de activacin con un supervisor
pr ocedur e mai n i s
. . .
t ask body super vi sor _T1 i s
begi n
SI GUI ENTE: = CLOCK ;
l oop
sel ect
T1. act i vaci on ;
el se
manej o_per di da_act i vaci on ;
end sel ect ;
SI GUI ENTE: = SI GUI ENTE
+ PERI ODO ;
del ay unt i l SI GUI ENTE ;
end l oop ;
end super vi sor _T1 ;
t ask body T1 i s
begi n
l oop
accept act i vaci on ;
t ask1 ;
end l oop ;
end T1 ;
. . .
begi n nul l ; end mai n ;
SISTEMAS DE TIEMPO REAL
75
TIME-OUT
A veces es necesario limitar el tiempo durante el cual una tarea espera que
ocurra algn evento.
Una tarea queda suspendida cuando requiere:
una operacin de entrada/salida u otro servicio del sistema operativo
una comunicacin con otra tarea
Pb: si el dispositivo o la tarea cooperante falla la tarea suspendida nunca
volver a estar activa
Solucin: Time-out, tiempo mximo en el cual la tarea quedar
suspendida
SISTEMAS DE TIEMPO REAL
76
TIME OUT
Limitacin del tiempo de espera
Sincronizacin condicional: semforo con time-out
Ejemplo: en VxWorks
Paso de mensajes: buzn con time-out
Ejemplo: en VxWorks
semTake( semaf or o, NO_WAI T) ;
semTake( semaf or o, WAI T_FOREVER) ;
semTake( semaf or o, num_t i cks) ;
msgQRecei ve( Qi d, &buf , max, NO_WAI T) ;
msgQRecei ve( Qi d, &buf , max, WAI T_FOREVER) ;
msgQRecei ve( Qi d, &buf , max, num_t i cks) ;
msgQSend( Qi d, &buf , l on, NO_WAI T, pr i o) ;
msgQSend( Qi d, &buf , l on, WAI T_FOREVER, pr i o) ;
msgQSend( Qi d, &buf , l on, num_t i cks, pr i o) ;
SISTEMAS DE TIEMPO REAL
77
TIME OUT
Limitar el tiempo de ejecucin de una accin
si se supera el tiempo mximo, puede ser necesaria una accin de
recuperacin
Ejemplo: Watchdogs en VxWorks
voi d r ecuper a( i nt par amet r o) {
pr i nt f ( Wat chdog expi r ado\ n) ;
}
voi d t ar ea1( voi d) {
WDOG_I D mi wdog ;
. . .
mi wdog = wdCr eat e( ) ;
. . .
wdSt ar t ( mi wdog, t i cks, r ecuper a, par am) ;
<cdi go vi gi l ado>
wdCancel ( mi wdog) ;
. . .
}
SISTEMAS DE TIEMPO REAL
78
PLANIFICACION
Adems de la limitacin del tiempo de espera aparecen otras restricciones
que afectan al tiempo de ejecucin de sus actividades:
Periodicidad
Tiempo de respuesta ante un evento
Completar el trabajo antes de un plazo

Cmo planificar la ejecucin de las actividades de forma que se


satisfagan las restricciones temporales?
SISTEMAS DE TIEMPO REAL
79
PLANIFICACIN
Marco temporal de una tarea: es el conjunto de atributos temporales
asociados.
Tiempo de activacin: ta
Periodo de ejecucin: P T; o separacin mnima: S
Retardo: r ; retardo mximo: R
J itter: variacin en r
Tiempo de cmputo: c ; id. mximo: C
Tiempo de ejecucin transcurrido: e
Tiempo de finalizacin: tf
Tiempo de respuesta: d
Plazo de respuesta: D (deadline)
Tiempo lmite: tl
r e
d
D
P
activacin
k
activacin
k+1 comienzo fin
a
t (k)
l
t (k)
f
t (k)
t (k+1)
a
c
1
c =c
1
c
2
c
3
+ +
c
2
c
3
SISTEMAS DE TIEMPO REAL
80
PLANIFICACIN
Las restricciones temporales ms comunes se refieren al plazo de
respuesta de las tareas.
Desde este punto de vista, podemos distinguir tres clases de tareas:
Tareas de tiempo real crticas. No admiten que se sobrepase el
tiempo lmite en ningn caso.
Tareas de tiempo real acrticas. Admiten que se sobrepase el tiempo
lmite ocasionalmente.
Tareas interactivas. No tienen plazo de respuesta estricto, aunque el
tiempo de respuesta debe ser lo ms corto posible.
SISTEMAS DE TIEMPO REAL
81
PLANIFICACIN
Objetivo: Planificar el uso de los recursos del sistema (en particular, el
procesador), para poder garantizar los requisitos temporales de las tareas
Un mtodo de planificacin consta de:
Un algoritmo de planificacin, que determina el orden de acceso de las
tareas a los recursos del sistema
Un mtodo de anlisis que permite calcular el comportamiento temporal
del sistema
Para comprobar que los requisitos estn garantizados en todos los casos
Se estudia siempre el peor caso
Es necesario conocer la duracin de las tareas en el peor caso
SISTEMAS DE TIEMPO REAL
82
PLANIFICACION
Mtodos:
Planificacin esttica off-line
Planificacin cclica
Planificacin basada en prioridades
Prioridades estticas
Prioridad al ms frecuente (Rate monotonic)
Prioridad al ms urgente (Deadline monotonic)
Prioridades dinmicas
Proximidad del plazo de respuesta (Earliest deadline first)
Prioridad al de menor holgura (Least Laxity First)
SISTEMAS DE TIEMPO REAL
83
PLANIFICACION CICLICA
Ejecutivo cclico: estructura de control o programa cclico que entrelaza
de forma explcita la ejecucin de diversos procesos peridicos en un
nico procesador.
El entrelazado es fijo.
Planificacin cclica: especificacin del entrelazado de varios procesos
peridicos durante un periodo de tiempo (ciclo principal) de tal forma que
su ejecucin cclica garantiza el cumplimiento de los plazos de los
procesos
Ejemplo: cuatro procesos (plazo = periodo) (C,P,D)
A=(1,10,10), B=(3,10,10), C=(2,20,20), D=(8,20,20)
A B C D1 A B D2
0 6 10 14 20
SISTEMAS DE TIEMPO REAL
84
PRIORIDADES
Son un mecanismo elemental para planificar la ejecucin de un conjunto
de tareas.
La prioridad es un atributo de las tareas normalmente ligado a su
importancia relativa en el conjunto de tareas.
Planificacin por prioridades: en cada momento se ejecuta la tarea ms
prioritaria de entre todas las ejecutables (preparadas).
Planificacin expulsiva: se abandona inmediatamente la ejecucin de la
tarea en ejecucin cuando otra ms prioritaria pasa al estado preparada
para ejecucin.
La prioridad de una tarea puede ser:
Esttica: la prioridad permanece constante a lo largo de la existencia
de la tarea.
Dinmica: la prioridad puede variar en funcin del estado o modo de
funcionamiento del sistema.
SISTEMAS DE TIEMPO REAL
85
PRIORIDADES
Ejemplo:
T1 = (5,20,20)
T2 = (10,40,40)
T3 = (40,80,80)
Prio(T1) >Prio(T2) >Prio(T3)
T1
T2
T3
0 10 20 30 40 50 60 70 80
fin T3
SISTEMAS DE TIEMPO REAL
86
SISTEMAS DE TIEMPO REAL
PLANIFICACION CCLICA
SISTEMAS DE TIEMPO REAL
87
MODELO DE TAREAS
Consideraremos inicialmente un modelo de tareas simple:
Conjunto de tareas esttico
Todas las tareas son peridicas
Las tareas son independientes entre s
Se conoce el tiempo de ejecucin mximo de cada tarea C
i
Cada tarea tiene un plazo de respuesta D
i
T
i
Despus veremos como incorporar tareas espordicas
SISTEMAS DE TIEMPO REAL
88
PLAN PRINCIPAL
Ejecutivo cclico: estructura de control o programa cclico que entrelaza
de forma explcita la ejecucin de diversos procesos peridicos en un
nico procesador.
El entrelazado es fijo y est definido en el denominado plan principal
que es construido antes de poner en marcha el sistema
Plan principal: especificacin del entrelazado de varios procesos
peridicos durante un perodo de tiempo (ciclo principal) de tal forma que
su ejecucin cclica garantiza el cumplimiento de los plazos de los
procesos
La duracin del ciclo principal es igual al mnimo comn mltiplo de los
perodos de los procesos
M = mcm (T
i
)
se supone tiempo entero (p.e. Nmero de ticks)
el comportamiento temporal del sistema se repite cada ciclo principal
SISTEMAS DE TIEMPO REAL
89
PLANES SECUNDARIOS
Cada plan principal es dividido en uno o ms planes secundarios o
marcos (frames) que se ejecutarn de forma secuencial.
Cada comienzo/fin de un marco en el ejecutivo cclico se sincroniza con el
reloj. Son puntos donde se fuerza la correccin del tiempo real.
Por simplicidad, en la prctica, la duracin de todos los marcos es la
misma. A esta duracin se le denomina ciclo secundario.
Si las acciones definidas en un marco acaban antes de que concluya el
ciclo secundario el ejecutivo cclico espera (p.e. en un delay)
Si las acciones definidas en un marco no han acabado al terminar el
ciclo secundario, se produce un error: desbordamiento de marco.
Si la duracin de una accin es superior al ciclo secundario debe ser
descompuesta en subacciones
SISTEMAS DE TIEMPO REAL
90
EJ EMPLO
Cuatro procesos (plazo = periodo) (C,T,R)
A=(1,10,10), B=(3,10,10), C=(2,20,20), D=(8,20,20)
Plan principal:
Ciclo principal: 20 ms
Ciclo secundario: 10 ms
A B C D1 A B D2
0 6 10 14 20
SISTEMAS DE TIEMPO REAL
91
EJ EMPLO
Ejecutivo cclico:
pr ocedur e cycl i c_execut i ve_1 i s
t ype f r ame_i ndex i s mod 2 ;
i nt er val : const ant : = 0. 01 ;
next _t i me: t i me : = cl ock ;
f r ame_number : f r ame_i ndex : = 1 ;
begi n
l oop
f r ame_number : = f r ame_number + 1 ;
case f r ame_number i s
when 0 => A; B; C; D1;
when 1 => A; B; D2;
end case
next _t i me : = next _t i me + i nt er val ;
i f cl ock > next _t i me t hemf r ame_over r un ; end i f ;
del ay unt i l next _t i me ;
end l oop ;
end cycl i c_execut i ve_1 ;
SISTEMAS DE TIEMPO REAL
92
EJ EMPLO (C+VxWorks)
Ejecutivo cclico:
#i ncl ude "del ays. h
voi d mai n ( voi d) {
st r uct t i mespec next ;
st r uct t i mespec i nt er val = t o_t i mespec( 0. 01) ;
i nt f r ame_number = 1 ;
cl ock_get t i me( CLOCK_REALTI ME, &next ) ;
whi l e( 1) {
f r ame_number = ( f r ame_number + 1) %2 ;
swi t ch ( mar co) {
case 0: A; B; C; D1; br eak ;
case 1: A; B; D2; br eak ;
}
next = add_t i mespec( next , i nt er val ) ;
del ay_unt i l ( next ) ;
}
}
voi d delay_until( TS t s) {
TS ahor a, r est o ;
cl ock_get t i me( CLOCK_REALTI ME, &ahor a) ;
r est o = sub_t i mespec( t s, ahor a) ;
nanosl eep( &r est o, 0) ;
}
SISTEMAS DE TIEMPO REAL
93
PROPIEDADES
No hay concurrencia en la ejecucin
Cada ciclo secundario es una secuencia de llamadas a procedimientos
No se necesita un ncleo de ejecucin multitarea
Los procedimientos pueden compartir datos
No se necesitan mecanismos de exclusin mutua como los semforos o
monitores
SISTEMAS DE TIEMPO REAL
94
DETERMINACION DE LOS CICLOS
Sea un conjunto de procesos peridicos {P
i
/ i = 1..n}, con requisitos
temporales representados por ternas (C
i
, T
i
, D
i
).
Ciclo principal:
M = mcm (T
i
)
Ciclo secundario
m min(D
i
)
m max(C
i
)
k: M =km
i: m+ (m - mcd(m,T
i
)) D
i
garantiza que entre el instante de activacin de cada proceso y su
plazo lmite exista un marco o ciclo secundario completo
m - mcd(m,T
i
) es el retraso mximo entre la activacin de un proceso y
el comienzo del siguiente marco
esta condicin incluye a la primera
SISTEMAS DE TIEMPO REAL
95
EJ EMPLO
Considrese tres procesos
P C T D
E 1 14 14
F 2 20 20
G 3 22 22
Ciclo principal
M = mcm(14,20,22) = 1540
Ciclo secundario
m min(14,20,22) => m = 1..14
m max(1,2,3) => m = 3..14
k: 1540 =km=> m = 4,5,7,10,11,14
m+ (m - mcd(m,T
i
)) D
i
=> m = 4,5,7
SISTEMAS DE TIEMPO REAL
96
EJ EMPLO
para m = 4
i Ti mcd(m,Ti) retraso m+retraso Di
1 14 2 2 6 < 14
2 20 4 0 4 < 20
3 22 2 2 6 < 22
E
F
G
m =4
6
14
6
22
4
20
SISTEMAS DE TIEMPO REAL
97
EJ EMPLO
para m = 10
i Ti mcd(m,Ti) retraso m+retraso Di
1 14 2 8 18 > 14 NO
E
F
G
m =10
14
18
14
28 42 56
0
SISTEMAS DE TIEMPO REAL
98
INCLUSIN DE PROCESOS PERIODICOS
En cada ciclo principal se tienen n
cs
= M/m ciclos secundarios
En cada plan principal se tienen n
ei
= M/T
i
ejecuciones de cada proceso
P
i
Hay que definir la secuencia de procesos de cada marco:
x
:{P
ik
,P
jl
,..,P
rs
}
La ejecucin k-sima de un proceso P
i
caracterizado por ternas (C
i
, T
i
, D
i
)
podr ser incluida en los marcos j-simos que comienzan despus de la
activacin de P
ik
y terminan antes del deadline de P
ik
:
Para que la ejecucin k-sima de P
i
pueda ser incluida en la secuencia de
procesos
x
del marco x, debe quedar suficiente tiempo libre en el marco:
(k 1)T
i
(j 1)m
jm (k 1)T
i
+ D
i
C
i
m C
l
l ,P
l

x

SISTEMAS DE TIEMPO REAL


99
PLANIFICACIN
Objetivo: asignacin de procesos (o subprocesos) a los marcos de forma
que se cumplan los requisitos temporales
Planteamiento: bsqueda en el espacio de estados
Estado: asignacin parcial
Algoritmo: bsqueda en profundidad con retroceso
se pretende encontrar una nica solucin
Guiado de la bsqueda: heursticas
sobre el siguiente proceso a asignar
primero el ms urgente o el ms frecuente
primero el de tiempo de proceso ms grande
si varios marcos cumplen las condiciones:
el primer marco que cumpla las condiciones
el marco con menor tiempo de cmputo libre
SISTEMAS DE TIEMPO REAL
100
EJ EMPLO: PLANIFICACIN
Conjunto de procesos a planificar:
Proceso C T D
P1 2 8 8
P2 3 8 8
P3 1 6 6
P4 2 12 12
Ciclo principal: M = mcm(6,8,12) = 24
Nmero de ejecuciones a planificar
n
e1
= M/8 = 3
n
e2
= M/8 = 3
n
e3
= M/6 = 4
n
e4
= M/12 = 2
SISTEMAS DE TIEMPO REAL
101
EJ EMPLO: PLANIFICACIN
Ciclo secundario
m min(6,8,12) => m = 1..6
m max(1,2,3) => m = 3..6
k: 24 =km=> m = 3,4,6
m+ (m - mcd(m,T
i
)) D
i
=> m = 3,4
posibles_m = {4,3}
SISTEMAS DE TIEMPO REAL
102
EJ EMPLO: PLANIFICACIN
Ordenacin procesos: primero el ms urgente
Proceso C T D n
P1 1 6 6 4
P2 3 8 8 3
P3 2 8 8 3
P4 2 12 12 2
Se intenta planificar primero para m=4 (la complejidad del problema
disminuye con el nmero de marcos)
Un planificacin consta de 6 marcos consecutivos
SISTEMAS DE TIEMPO REAL
103
EJ EMPLO: PLANIFICACION
P
ik
puede ir en el marco j si:
(k 1)T
i
(j 1)m
jm (k 1)T
i
+ D
i
P1
P11 P12 P13 P14
0 4 8 12 16 20 24
P2
P21
0 4 8 12 16 20 24
P22 P23
P3
P31
0 4 8 12 16 20 24
P32 P33
P4
P41
0 4 8 12 16 20 24
P42
SISTEMAS DE TIEMPO REAL
104
EJ EMPLO: PLANIFICACIN
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1 2
2
2
2
2
2
2
2
2 2
2
2
2
2
2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1 2
2
2
2
2
2
2
2
2 2
2
2
2
2
2
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
1
1
1
1
2
2
2
3
3
3 4
4
SISTEMAS DE TIEMPO REAL
105
PARTICIN DE PROCESOS
Hay casos en que un conjunto de procesos que no es planificable:
Si el tiempo de cmputo de uno es mayor que el plazo de algn otro:
C
i
>D
k
=> No existe valor de m que cumpla a la vez:
m min(D
i
)
m max(C
i
)
Si para una ejecucin de un proceso no queda ningn marco con
suficiente tiempo libre
Solucin: descomponer el proceso demasiado largo P
i
=(C
i
,T
i
,D
i
) en varios
subprocesos P
ij
=(C
ij
,T
ij
,D
ij
):
T
ij
=T
i
; D
ij
=D
i
C
i1
+C
i2
+C
i3
+... = C
i
no partir secciones crticas
relacin de precedencia en cada una de las ejecuciones a mantener
en la planificacin: P
i1
P
i2
P
i3
...
SISTEMAS DE TIEMPO REAL
106
RELACIONES DE PRECEDENCIA
Sean P
i1
y P
i2
dos procesos entre los que existe una relacin de
precedencia P
i1
P
i2
,
En la ordenacin de los procesos para su inclusin en la planificacin
se mantiene el orden de precedencia (los dos subprocesos tienen las
mismas restricciones temporales)
Para incluir la ejecucin k-sima de P
i2
, P
i2k
, en la planificacin:
obtener los valores {j,...,j+h}de los marcos donde puede ser incluida a
partir de:
Debido al orden de inclusin P
i1k
ya ha sido incluida en el marco j+l
{j,...,j+h}. El conjunto de marcos donde puede ser incluida se reduce a
{j+l,...,j+h}
A los elementos de {j+l,...,j+h}se aplica la condicin
C
i 2
m C
l
l ,P
l

(k 1)T
i
(j 1)m
jm (k 1)T
i
+ D
i
SISTEMAS DE TIEMPO REAL
107
EJ EMPLO: PARTICIN DE PROCESOS
Conjunto de procesos a planificar:
Proceso C T D
P1 2 6 6
P2 2 8 8
P3 8 24 20
Ciclo principal
M = mcm(6,8,24) = 24
Ciclo secundario
m min(6,8,20) => m = 1..6
m max(2,2,8) => no hay ningn m que lo cumpla
Es preciso partir el proceso P3 en varios subprocesos con tiempo de
cmputo menor que 6 unidades de tiempo
Particin en P31 P32 con igual tiempo de cmputo, 4 unidades
SISTEMAS DE TIEMPO REAL
108
EJ EMPLO: PARTICIN DE PROCESOS
Conjunto de procesos a planificar:
Proceso C T D
P1 2 6 6
P2 2 8 8
P31 4 24 20
P32 4 24 20
Ciclo principal
M = mcm(6,8,24) = 24
Nmero de ejecuciones a planificar
n
e1
= M/6 = 4
n
e2
= M/8 = 3
n
e31
= M/24 = 1
n
e32
= M/24 = 1
SISTEMAS DE TIEMPO REAL
109
EJ EMPLO: PARTICIN DE PROCESOS
Ciclo secundario
m min(6,8,20) => m = 1..6
m max(2,2,4) => m = 4..6
k: 24 =km=> m = 4,6
m+ (m - mcd(m,T
i
)) D
i
=> m = 4
Unica posibilidad de planificacin m=4
Ordenacin de procesos: primero el ms urgente manteniendo
relaciones de precedencia
Misma tabla anterior P1 P2 P31 P32
Un planificacin consta de 6 marcos consecutivos: M = 6m
SISTEMAS DE TIEMPO REAL
110
EJ EMPLO: PARTICIN DE PROCESOS
1
1
1
1
1
1
1
1
2
2
2
1
1
1
1
2
2
2
31
1
1
1
1
2
2
2
1
1
1
1
2
2
2
31
1
1
1
1
2
2
2
31
32
SISTEMAS DE TIEMPO REAL
111
PARTICIN CON SECCIONES CRTICAS
Si es preciso partir algn proceso en subprocesos, no deben partirse las
secciones crticas con objeto de preservar la exclusin mutua
Ejemplo:
Planificar la ejecucin de los siguientes procesos:
P C T D
P1 20 100 100
P2 25 150 150
P3 90 300 300
Dichos procesos acceden a una seccin crtica comn tal y como
muestra el siguiente esquema:
15 15
15
15 5
10
20
40
P1
P2
P3
SISTEMAS DE TIEMPO REAL
112
PARTICIN CON SECCIONES CRTICAS
Ciclo principal
M = mcm(100,150,300) = 300
Nmero de ejecuciones a planificar
n
e1
= M/100 = 3 ; n
e2
= M/150 = 2 ; n
e3
= M/300 = 1
Ciclo secundario
m min(100,150,300) => m = 1..100
m max(20,25,90) => m = 90..100
k: 300 =km=> m = 100
m+ (m - mcd(m,T
i
)) D
i
=> m = 100
Posibles valores de m = {100}
Ordenacin procesos: primero el ms urgente
Misma ordenacin que en el enunciado
Un planificacin consta de 3 marcos consecutivos
SISTEMAS DE TIEMPO REAL
113
PARTICIN CON SECCIONES CRTICAS
No existe planificacin porque no
queda ningn marco donde quepa el
proceso P3
Particin de P3
Tiempo sobrante en los marcos:
55, 80, 55 ms
P31: primera seccin crtica +
segundo segmento cdigo
P32: segunda seccin crtica +
cuarto segmento cdigo
1
1
1
1
1
1
1
1
2
2
SISTEMAS DE TIEMPO REAL
114
PARTICION CON SECCIONES CRITICAS
Nueva especificacin de procesos:
P C T D
P1 20 100 100
P2 25 150 150
P31 35 300 300
P32 55 300 300
Ciclo principal
M = mcm(100,150,300) = 300
Nmero de ejecuciones a planificar
n
e1
= M/100 = 3
n
e2
= M/150 = 2
n
e31
= M/300 = 1
n
e32
= M/300 = 1
SISTEMAS DE TIEMPO REAL
115
PARTICIN CON SECCIONES CRTICAS
Ciclo secundario
m min(100,150,300) => m = 1..100
m max(20,25,35,55) => m = 55..100
k: 300 =km=> m = 60,75,100
m+ (m - mcd(m,T
i
)) D
i
=> m = 60,100
Posibles valores de m = {60,100}
Para m=100:
1
1
1
1
1
1
1
1
2
2
1
1
1
1
2
2
31
32
SISTEMAS DE TIEMPO REAL
116
PROCESOS ESPORDICOS
Proceso espordico E: atencin a eventos externos aperidicos
S
E
: separacin mnima entre eventos
D
E
: plazo lmite ( normalmente D
E
S
E
)
C
E
: tiempo de cmputo mximo
En un ejecutivo cclico los procesos espordicos pueden programarse de
dos formas:
Por muestreo peridico del evento
Por interrupcin
SISTEMAS DE TIEMPO REAL
117
ESPORADICOS POR MUESTREO
Se programa el proceso espordico como un proceso peridico que
consulta si ha llegado un evento, y en tal caso, lo procesa.
Transformamos el proceso espordico en peridico con D = T D
E
/ 2,
y lo planificamos de la forma convencional
Si el proceso peridico cumple sus plazos, cualquier evento se atiende en
su plazo D
E
T
D
E
Se consulta, y no hay evento
Hay evento, y se procesa C
E
evento
Proceso peridico
SISTEMAS DE TIEMPO REAL
118
EJ EMPLO 1
Conjunto de procesos a planificar:
Proceso C T D S
E 1 8 20
P1 3 6 6
P2 2 12 12
Proceso peridico equivalente: D = T= 4 D
E
/ 2
Proceso C T D
P
E
1 4 4
P1 3 6 6
P2 2 12 12
Ciclo principal
M = mcm(4,6,12) = 12
Ejecuciones a planificar: n
E
= M/4 = 3 ; n
1
= M/6 = 2 ; n
2
= M/24 = 1
SISTEMAS DE TIEMPO REAL
119
EJ EMPLO 1
Ciclo secundario
m min(4,6,12) => m = 1..4
m max(1,2,3) => m = 3..4
k: 12 =km=> m = 3,4
m+ (m - mcd(m,T
i
)) D
i
=> m = 4
Plan de 3 marcos de duracin m=4
E
E
E
E
E
E
1
1
E
E
E
1
1
2
SISTEMAS DE TIEMPO REAL
120
ESPORDICOS POR INTERRUPCIN
La llegada del evento produce una interrupcin, y el evento se trata
inmediatamente
Basta con reservar tiempo en cada marco para atender el mximo nmero
de eventos que pueden llegar en un marco:
E
E
res
C
S
m
C

=
SISTEMAS DE TIEMPO REAL
121
EJ EMPLO 2
Conjunto de procesos a planificar (primero el ms urgente):
Proceso C T D S
E 1 7 10
P2 3 8 8
P3 2 8 8
P4 2 12 12
Calculamos los ciclos con los peridicos
Ciclo principal
M = mcm(8,12) = 24
Nmero de ejecuciones a planificar
n
e2
= M/8 = 3
n
e3
= M/8 = 3
n
e4
= M/12 = 2
SISTEMAS DE TIEMPO REAL
122
EJ EMPLO 2
Ciclo secundario
m min(8,12) => m = 1..8
m max(2,3) => m = 3..8
k: 24 =km=> m = 3,4,6,8
m+ (m - mcd(m,T
i
)) D
i
=> m = 3,4,8
Probamos con 3 marcos de duracin m=8
En cada uno reservamos tiempo para atender un evento
C
res
=
m
S
E






C
E
SISTEMAS DE TIEMPO REAL
123
EJ EMPLO 2
E
E
E
E
E
E
P2
P2
P2
E
E
E
P2
P2
P2
P3
P3
P3
E
E
E
P2
P2
P2
P3
P3
P3
P4
P4
SISTEMAS DE TIEMPO REAL
124
PROGRAMACIN DEL EJ ECUTIVO
Mediante un ejemplo:
Cuatro procesos (plazo = periodo) (C,T,D):
A=(1,10,10), B=(3,10,10), C=(2,20,20), D=(8,20,20)
Proceso C T D
A 1 10 10
B 3 10 10
C 2 20 20
D1 2 20 20
D2 6 20 20
Planificacin:
M = 20, m=10
A B C D1 A B D2
0 6 10 14 20
SISTEMAS DE TIEMPO REAL
125
EJ ECUTIVO - 1
t ask cycl i c_execut i ve_1 ;
t ask body cycl i c_execut i ve_1 i s
i nt er val : const ant : = 0. 01 ;
next _t i me: t i me : = cl ock ;
f r ame_number : i nt eger : = 0 ;
begi n
l oop
f r ame_number : = ( f r ame_number mod 2) +1 ;
case f r ame_number i s
when 1 => A; B; C; D1;
when 2 => A; B; D2;
end case
next _t i me : = next _t i me + i nt er val ;
i f cl ock > next _t i me t hemf r ame_over r un ;
end i f ;
del ay unt i l next _t i me;
end l oop ;
end cycl i c_execut i ve_1 ;
SISTEMAS DE TIEMPO REAL
126
EJ ECUTIVO - 1
Ventajas:
Independiente del hardware: transportable, no hardware especfico, ...
Inconvenientes:
El desbordamiento de marco slo es detectado despus de acabar el
marco
Sobrecarga por la ejecucin del delay
aritmetica del tipo TIME costosa (normalmente 64 bits)
acceso al reloj costoso (p.e. en exclusin mutua con la actualizacin)
manejo de la tarea por el RTS costoso
SISTEMAS DE TIEMPO REAL
127
EJ ECUTIVO - 2
t ask cycl i c_execut i ve_2 ;
t ask body cycl i c_execut i ve_2 i s
f r ame_number : i nt eger : = 0 ;
begi n
l oop
Ti mer _Handl er . Wai t _f or _I nt er r upt ;
f r ame_number : = ( f r ame_number mod 2) +1 ;
case f r ame_number i s
when 1 => A; B; C; D1;
when 2 => A; B; D2;
end case
end l oop ;
end cycl i c_execut i ve_2 ;
SISTEMAS DE TIEMPO REAL
128
EJ ECUTIVO - 2
Ventajas:
Mayor control sobre el tiempo
No sobrecarga por manejo tiempo, lo hace el hardware
Inconvenientes:
Dependencia del hardware
No transportable
Necesidad de un timer esclavo
Qu pasa con el desbordamiento de marco?
No se detecta el desbordamiento pero el sistema puede recuperarse
SISTEMAS DE TIEMPO REAL
129
EJ ECUTIVO - 3
t ask cycl i c_execut i ve_3 i s
pr agma pr i or i t y ( syst em. pr i or i t y l ast ) ;
end cycl i c_execut i ve_3 ;
t ask act i on i s ent r y next _f r ame ; end act i on ;
t ask body cycl i c_execut i ve_3 i s
begi n
l oop
Ti mer _Handl er . Wai t _f or _I nt er r upt ;
sel ect act i on. next _f r ame ;
el se f r ame_over r un ;
end sel ect ;
end l oop ;
end cycl i c_execut i ve_3 ;
t ask body act i on i s
f r ame_number : i nt eger : = 0 ;
begi n
l oop
accept next _f r ame ;
f r ame_number : = ( f r ame_number mod 2) +1 ;
case f r ame_number i s
when 1 => A; B; C; D1;
when 2 => A; B; D2;
end case
end l oop ;
end act i on ;
SISTEMAS DE TIEMPO REAL
130
VENTAJ AS/INCONVENIENTES
Ventajas
Predictibilidad del sistema: la ejecucin est predeterminada
Al no requerirse cambios de contexto la sobrecarga introducida por el
ncleo es muy pequea
Inconvenientes
La introduccin de cualquier cambio es muy costosa (replanificacin,
reprogramacin)
Ante un conjunto de procesos no planificable, la particin de procesos
no es evidente
SISTEMAS DE TIEMPO REAL
131
PLANIFICACIN BASADA
EN PRIORIDADES:
PRIORIDAD AL MS
FRECUENTE (RMS)
SISTEMAS DE TIEMPO REAL
132
INTRODUCCION
Planificacin con asignacin de prioridades a la tarea ms frecuente
RMS/RMA: Rate Monotonic Scheduling / Analysis
Prioridades estticas
Plazo de respuesta = perodo en tarea peridicas
Es un marco terico que proporciona una base para el diseo de sistemas
de tiempo real.
Proporciona directrices para asignar prioridades
ptimas
Proporciona un marco analtico para verificar los requisitos temporales
Ayuda a identificar cuellos de botella
Permite la separacin de los aspectos temporales y funcionales
SISTEMAS DE TIEMPO REAL
133
TAREAS PERIODICAS CRITICAS
Factor de utilizacin
Es una medida de la carga del procesador.
El factor de utilizacin de una tarea T
i
es:
El factor de utilizacin total del sistema es

Se trata de encontrar mtodos que proporcionen planificaciones
admisibles con factores de utilizacin lo ms altos posible.
Con un solo procesador, el factor de utilizacin est limitado a
U 1
En general para M procesadores
U M
i
i
i
P
C
U =

= =
= =
n
i i
i
n
i
i
P
C
U U
1 1
SISTEMAS DE TIEMPO REAL
134
TAREAS PERIODICAS CRITICAS
Planificacin basada en prioridades
Consideraremos prioridades estticas y planificacin expulsiva.
Frecuentemente se asignan prioridades a las tareas segn su
"importancia".
De esta forma no se puede calcular si se pueden garantizar los plazos
o no. Puede fallar incluso con factores de utilizacin muy bajos.
Ejemplo: T C P U
T1 10 50 0.20
T2 2 10 0.20
0.40
Si hacemos p1 > p2, T2 falla.
T2
T1
a
a
a a a
fallo
0
10
20 30
fin
SISTEMAS DE TIEMPO REAL
135
TAREAS PERIODICAS CRITICAS
Prioridad al ms frecuente (RMS)
La asignacin de prioridades ms altas a las tareas ms frecuentes
(perodo ms corto) es ptima (Liu &Layland, 1973).
Por ptima se entiende que no hay ninguna otra planificacin mejor. Si
de esta forma no se obtiene un plan admisible, no se puede obtener
con ningn otro mtodo basado en prioridades estticas.
Ejemplo: T C P U
T1 10 50 0.20
T2 2 10 0.20
0.40
Hacemos ahora p2 > p1 ( P2 < P1)
--> las dos tareas terminan a tiempo
T2
T1
a
a
a a a
0
10
20 30

SISTEMAS DE TIEMPO REAL


136
CONDICIONES DE GARANTIA DE PLAZOS
Teorema 1 (Liu & Layland): En un sistema de n tareas peridicas
independientes con prioridades asignadas en orden de frecuencia, se
cumplen todos los plazos de respuesta, para cualquier desfase inicial de
las tareas, si
U
0
(n) es la utilizacin mnima garantizada para n tareas.
) ( ) 1 2 (
0
/ 1
1
n U n
P
C
U
n
n
i i
i
= =

=
...
743 . 0 ) 5 (
757 . 0 ) 4 (
779 . 0 ) 3 (
828 . 0 ) 2 (
000 . 1 ) 1 (
0
0
0
0
0
=
=
=
=
=
U
U
U
U
U
2 ln 693 . 0 ) (
0
= =

n U
lim
n
SISTEMAS DE TIEMPO REAL
137
CONDICIONES DE GARANTIA DE PLAZOS
Ejemplo:
T C P U
T1 5 20 0.25
T2 10 40 0.25
T3 20 80 0.25
0.75
La utilizacin total es 0.75 < U(3) = 0.779 => los plazos de las tres tareas
estn garantizados si: pr1 > pr2 > pr3
El 25% del tiempo de CPU utilizable en clculos sin requerimientos
temporales
SISTEMAS DE TIEMPO REAL
138
CONDICIONES DE GARANTIA DE PLAZOS
En muchos caso se pueden garantizar plazos con factores de utilizacin
mayores que U
0
(n).
Teorema 1: condicin suficiente, no necesaria
Ejemplo: T C P U
T1 5 20 0.25
T2 10 40 0.25
T3 40 80 0.50
1.00
U = 1.00 > U
0
(3) = 0.779
Los plazos de respuesta de las tareas no estn garantizados, segn el
Teorema 1
Sin embargo asignando prioridades RMA se cumplen los plazos de
respuesta
SISTEMAS DE TIEMPO REAL
139
CONDICIONES DE GARANTIA DE PLAZOS
Teorema 2 (Liu & Layland): En un sistema de n tareas peridicas
independientes con prioridades estticas, se cumplen todos los plazos de
respuesta, para cualquier desfase inicial de las tareas, si cuando se
activan todas ellas simultneamente, cada tarea acaba dentro del plazo en
su primera ejecucin.
En el ejemplo anterior:
U
1.2
= 0.50 < U
0
(2) = 0.828
Por tanto, se pueden garantizar los plazos de T1 y T2. Para comprobar si
se puede garantizar los plazos de T3 hay que aplicar el teorema 2
T1
T2
T3
0 10 20 30 40 50 60 70 80
fin T3
SISTEMAS DE TIEMPO REAL
140
CONDICIONES DE GARANTIA DE PLAZOS
Test de Tiempo de Finalizacin
El tiempo de finalizacin de una tarea T
i
(t
fi
) es:
Por lo tanto la tarea T
i
cumplir su primer plazo si:
J ustificacin:
T
i
finaliza cuando no hay ms trabajo de prioridad pr
i
pendiente. El trabajo
solicitado en el instante t, suponiendo que todas las tareas han empezado
en t=0, es:
W
i
: carga parcial de grado i en el instante t

= +

+ +

>
t C C
P
t
C
P
t
min t
i i
i
t
fi 1
1
1
1
0
...
i fi
P t

= +

+ +

=
i
j j
j i i
i
i
P
t
C C C
P
t
C
P
t
t W
1
1
1
1
1
... ) (
SISTEMAS DE TIEMPO REAL
141
CONDICIONES DE GARANTIA DE PLAZOS
Clculo del tiempo de finalizacin
Se puede usar el siguiente mtodo iterativo:
El clculo se realiza iterativamente hasta que se repite el resultado
anterior:
i i
i
k
i
k
i
k
i
C C
P
W
C
P
W
W +

+ +

+
1
1
1
1
1
...
fi
k
i
k
i
t W W = =
+1
SISTEMAS DE TIEMPO REAL
142
CONDICIONES DE GARANTIA DE PLAZOS
Ejemplo:
T C P U
T1 7 20 0.35
T2 10 40 0.25
T3 20 80 0.25
0.85
U = 0.85 > U
0
(3) = 0.779
Sin embargo, U
1,2
= 0.60 < 0.828
Las tareas T1 y T2 cumplen sus plazos.
T3 cumple su plazo? => Tiempo de finalizacin
SISTEMAS DE TIEMPO REAL
143
CONDICIONES DE GARANTIA DE PLAZOS
Clculo del tiempo de finalizacin:
80 68
68 20 10
40
68
7
20
68
68 20 10
40
61
7
20
61
61 20 10
40
44
7
20
44
44 20 10
40
37
7
20
37
37 20 10
40
20
7
20
20
20
0
6
3
5
3
6
3
5
3
4
3
3
3
2
3
3
1
3
0
3
< = = =
= +

=
= +

=
= +

=
= +

=
= +

=
= =
=
W W t
W
W
W
W
W
C W
W
fi
SISTEMAS DE TIEMPO REAL
144
CONDICIONES DE GARANTIA DE PLAZOS
Reformulacin / Generalizacin
Punto de planificacin: Los puntos de planificacin de una tarea T
i
son
todos los instantes lmite (es decir los finales de los perodos) de las tareas
de prioridad mayor o igual que T
i
que se dan antes del final de su perodo,
suponiendo que todas las tareas han comenzado simultneamente.
S
i
es el conjunto de puntos de planificacin de la tarea T
i
:
Teorema 3 (Lehoczky, Sha & Ding): En un sistema de n tareas peridicas
independientes con prioridades asignadas en orden de frecuencia, se
cumplen todos los plazos de respuesta, para cualquier desfase inicial de
las tareas, si y slo si

= = =
j
i
j i
P
P
k i j p k S .. 1 ; .. 1
1 , 1 ,
1

i
j j
j
S t
P
t
t
C
min n i i
i
SISTEMAS DE TIEMPO REAL
145
CONDICIONES DE GARANTIA DE PLAZOS
Ejemplo:
T C P U
T1 7 20 0.35
T2 10 40 0.25
T3 20 80 0.25
0.85
S1 = {20}
S2 = {20, 40}
S3 = {20, 40, 60, 80}
SISTEMAS DE TIEMPO REAL
146
CONDICIONES DE GARANTIA DE PLAZOS
t W1(t)
20 (7*1)=7
t W2(t)
20 (7*1 + 10*1)=17
t W3(t)
20 (7*1 + 10*1 + 20*1)=37
40 (7*2 + 10*1 + 20*1)=44
60 (7*3 + 10*2 + 20*1)=61
80 (7*4 + 10*2 + 20*1)=68
SISTEMAS DE TIEMPO REAL
147
TIEMPO DE CAMBIO DE CONTEXTO
Tiempo de cambio de contexto de peor caso:
C
s
=C
sa
+C
sb
C
sa
: Salvar el contexto de la tarea en ejecucin
C
sb
: Planificar y recuperar el contexto de la nueva tarea
T1
T2
C
sa
sb
C C
sa
sb
C
SISTEMAS DE TIEMPO REAL
148
TIEMPO DE CAMBIO DE CONTEXTO
As pues:
Cada vez que una tarea expulsa a una de prioridad inferior que est
activa, hay dos cambios de contexto
En el peor caso es preciso considerar dos cambios de contexto por
cada expulsin
Esto implica aadir 2C
s
al tiempo de ejecucin de cada tarea para el
anlisis
SISTEMAS DE TIEMPO REAL
149
TIEMPO DE CAMBIO DE CONTEXTO
Ejemplo:
Se supone un tiempo de cambio de contexto C
s
= 2ms
T C P U
T1 20+4 100 0.240
T2 40+4 150 0.293
T3 100+4 350 0.271
0.831
U = 0.831 > U
0
(3) = 0.779 => Test de tiempos de finalizacin:
( )
( ) ( ) ms C C C C
P
C C
P
t
ms C C C C
P
t
ms C C t
S S S f
S S f
S f
264 2 2
264
2
264
68 2 2
68
24 2
3 2
2
1
1
3
2 1
1
2
1 1
= + + +

+ +

=
= + + +

=
= + =
SISTEMAS DE TIEMPO REAL
150
TAREAS PERIODICAS CRITICAS/ACRITICAS
Cuando hay tareas acrticas podemos admitir fallos ocasionales en sus
tiempos de respuesta.
Se trata de garantizar:
Los plazos de todas las tareas (crticas y acrticas) con los tiempos de
cmputo medios.
Los plazos de las tareas crticas con los tiempos de cmputo mximos.
La planificacin con prioridades es estable: fallan primero las tareas menos
prioritarias.
Si las tareas crticas no son las ms frecuentes, se puede hacer una
transformacin de perodos.
Se puede acortar el perodo de las tareas crticas o alargar el de las
acrticas.
SISTEMAS DE TIEMPO REAL
151
TAREAS PERIODICAS CRITICAS/ACRITICAS
Ejemplo:
T c
m
C P u
m
U
T1 6 10 30 0.200 0.333
T2 8 10 40 0.200 0.250
T3 10 12 50 0.200 0.240
0.600 0.823
u
m
= 0.600 < U
0
(3) = 0.779
Se pueden garantizar los plazos de todas las tareas con los tiempos de
cmputo medios.
U = 0.823 > U
0
(3) = 0.779
U
1.2
= 0.583 < U
0
(2) = 0.828
Con los tiempos de cmputo mximos, slo se pueden garantizar T1 y T2.
Si T3 es crtica y T2 no: acortar el perodo de T3 => subir su prioridad.
SISTEMAS DE TIEMPO REAL
152
TAREAS PERIODICAS CRITICAS/ACRITICAS

T1
T2
T3
0 10 20 30 40 50
Tiempos de ejecucin medios
T1
T2
T3
0 10 20 30 40 50
fallo T3
Tiempos de ejecucin mximos
SISTEMAS DE TIEMPO REAL
153
TAREAS PERIODICAS CRITICAS/ACRITICAS
Transformacin de T3:
Descomponemos T3 en dos segmentos, T31 y T32, cuyos tiempos de
cmputo son la mitad del de T3.
Construimos una nueva tarea, T3', que cada vez que se activa ejecuta
uno de estos segmentos, alternativamente.
El perodo de la nueva tarea es P3' = P3/2 = 25
T c
m
C P u
m
U
T3' 5 6 25 0.200 0.240
T1 6 10 30 0.200 0.333
T2 8 10 40 0.200 0.250
0.600 0.823
El factor de utilizacin sigue siendo el mismo, pero ahora T3 tiene la
prioridad ms alta
SISTEMAS DE TIEMPO REAL
154
TAREAS PERIODICAS CRITICAS/ACRITICAS

T1
T2
T3'
0 10 20 30 40 50
Tiempos de ejecucin mximos, con T3 transformada
T31 T32
(9 u.)
fallo T2
SISTEMAS DE TIEMPO REAL
155
TAREAS PERIODICAS CRITICAS/ACRITICAS
El cdigo de T3' es:
wi t h Ada. Real _Ti me; use Ada. Real _Ti me;
t ask body T3_MODI FI CADA i s
PERI ODO: const ant Ti me_Span : = To_Ti me_Span( 0. 025) ;
SI GUI ENTE: TI ME : = CLOCK ;
begi n
l oop
- - acci on T31 ;
SI GUI ENTE: = SI GUI ENTE + PERI ODO ;
del ay unt i l SI GUI ENTE ;
- - acci on T32 ;
SI GUI ENTE: = SI GUI ENTE + PERI ODO ;
del ay unt i l SI GUI ENTE ;
end l oop ;
end T3_MODI FI CADA ;
SISTEMAS DE TIEMPO REAL
156
COMUNICACION ENTRE TAREAS
El anlisis de tareas con comunicaciones es un problema de gran
complejidad => simplificaciones:
las comunicaciones se restringen al modelo de clientes-servidores.
las alternativas de los servidores no pueden estar guardadas
La segunda simplificacin evita que una tarea se quede bloqueada durante
un tiempo no acotado.
Pb. clientes-servidores: INVERSION DE PRIORIDADES.
SISTEMAS DE TIEMPO REAL
157
COMUNICACION ENTRE TAREAS
Ejemplo de servidor:
/ * Var i abl e_Comun. h */
voi d I ni ci al i za_Ser vi dor ( voi d) ;
voi d Modi f i car ( t i poV Val or ) ;
t i poV Exami nar ( voi d) ;
MODIFICAR
EXAMINAR
VARIABLE_COMUN
T1
T2
pr ot ect ed Var i abl e_Comun i s
pr ocedur e Modi f i car ( Val or : i n t i poV) ;
pr ocedur e Exami nar ( Val or : out t i poV) ;
pr i vat e
Var i abl e: t i poV ;
end Var i abl e_Comun ;
t ask Var i abl e_Comun i s
ent r y Modi f i car ( Val or : i n t i poV) ;
ent r y Exami nar ( Val or : out t i poV) ;
end Var i abl e_Comun ;
SISTEMAS DE TIEMPO REAL
158
COMUNICACION ENTRE TAREAS
st at i c SEM_I D Mut ex ;
st at i c t i poV Var i abl e_Pr ot egi da ;
voi d I ni ci al i za_Ser vi dor ( voi d) {. . .
Mut ex = semMCr eat e ( . . . ) ; . . .
}
voi d Modi f i car ( t i poV Val or ) {
semTake ( Mut ex, WAI T_FOREVER) ;
Var i abl e_Pr ot egi da = Val or ;
semGi ve ( Mut ex) ; r et ur n ;
}
t i poV Exami nar ( voi d) {
t i poV Local ;
semTake ( Mut ex, WAI T_FOREVER) ;
Local = Var i abl e_Pr ot egi da ;
semGi ve ( Mut ex) ;
r et ur n Local ;
}
Con un MUTEX
de VxWorks:
SISTEMAS DE TIEMPO REAL
159
COMUNICACION ENTRE TAREAS
Ada83
t ask body Var i abl e_Comun i s
VARI ABLE: t i poV;
begi n

l oop
sel ect
accept Modi f i car ( Val or : i n t i poV) do
VARI ABLE: = Val or ;
end MODI FI CAR ;
or
accept Exami nar ( Val or : out t i poV) do
Val or : = VARI ABLE ;
end EXAMI NAR ;
or
t er mi nat e ;
end sel ect ;
end l oop ;
end Var i abl e_Comun ;
SISTEMAS DE TIEMPO REAL
160
COMUNICACION ENTRE TAREAS
Ada95
pr ot ect ed Var i abl e_Comun i s
pr ocedur e Modi f i car ( Val or : i n t i poV) i s
begi n
Var i abl e : = Val or ;
end Modi f i car ;
pr ocedur e Exami nar ( Val or : out t i poV) i s
begi n
Val or : = Var i abl e;
end Exami nar ;
end Var i abl e_Comun ;
SISTEMAS DE TIEMPO REAL
161
COMUNICACION ENTRE TAREAS
Ejemplo comunicacin entre tareas:
T=100 ms
C=20 ms
T=150 ms
C=40 ms
T=350 ms
C=100 ms
T1
T2
T3
S1
S2
10 ms
10 ms
2 ms
20 ms
SISTEMAS DE TIEMPO REAL
162
INVERSION DE PRIORIDADES
A veces una tarea puede verse retrasada por la ejecucin de otra menos
prioritaria.
Este fenmeno se denomina inversin de prioridades, y puede ocurrir
cuando hay interaccin entre tareas.
Ejemplo:
Pb.: el retraso de una tarea por inversin de prioridad puede no estar
acotado
T1
T2
T3
INVERSION DE PRIORIDAD
Ejecucin de servicios S2
SISTEMAS DE TIEMPO REAL
163
PROTOCOLOS DE COMUNICACION
Los siguientes protocolos evitan la inversin de prioridad sin lmite:
Seccin crtica no expulsable
Herencia de prioridad
Techo de prioridad
Techo de prioridad inmediato
SISTEMAS DE TIEMPO REAL
164
SECCION CRITICA NO EXPULSABLE
Un servidor ejecutando un servicio no puede perder el procesador.
Pb.: Introduce inversin de prioridad aunque la tarea ms prioritaria sea
independiente y no solicite ningn servicio.
T1
T2
T3
INVERSION DE PRIORIDAD
Ejecucin de servicios S2
SISTEMAS DE TIEMPO REAL
165
SECCION CRITICA NO EXPULSABLE
Implementacin
Kernel
Enmascaramiento interrupciones
Sin MUTEX
Elevacin de prioridad
Sin MUTEX
voi d Ser vi ci o ( . . . ) {
Nomi nal = Get _Pr i or i t y ( ) ;
Set _Pr i or i t y ( HI GH) ;
Ser vi ce_Code( ) ;
Set _Pr i or i t y ( Nomi nal ) ;
r et ur n ;
}
voi d Ser vi ci o ( . . . ) {
Mask_al l _I nt er r upt s ( ) ;
Ser vi ce_Code( ) ;
Unmask_al l _I nt er r upt s ( ) ;
r et ur n ;
}
SISTEMAS DE TIEMPO REAL
166
HERENCIA DE PRIORIDAD
Los clientes tienen prioridades estticas y los servidores dinmicas.
Est basado en las siguientes reglas:
Cuando un servidor est realizando un servicio o bloqueando a algn
cliente hereda la prioridad ms alta entre la del cliente al que esta
sirviendo y los clientes bloqueados.
Las llamadas pendientes se aceptan por orden de prioridad de clientes.
Protocolo implementado en el kernel sobre el semforo que protege el
servidor
Se produce inversin de prioridad nicamente cuando una tarea solicita un
servicio a un servidor que est ejecutando un servicio para otra tarea de
menor prioridad desde antes de la activacin.
SISTEMAS DE TIEMPO REAL
167
HERENCIA DE PRIORIDAD
Puede haber mas de un bloqueo por inversin de prioridad durante una
ejecucin.
T1
T2
T3
INVERSION DE PRIORIDAD
Ejecucin de servicios S1
Ejecucin de servicios S2
T1
T2
T3
INVERSION DE PRIORIDAD
Ejecucin de servicios S2
Bloqueo indirecto (Push-trough blocking)
SISTEMAS DE TIEMPO REAL
168
TECHO DE PRIORIDAD
Es un protocolo de herencia de prioridades con las siguientes reglas
adicionales:
El techo de prioridad de un servidor es igual a la prioridad del ms
prioritario de sus clientes potenciales.
Un cliente que intenta llamar a un servidor se bloquea si cualquier otro
servidor con techo de prioridad mayor o igual que la prioridad dinmica
del cliente est ya ejecutando un servicio para otro cliente.
Caractersticas bsicas:
Bloqueo nico: En una ejecucin de una tarea, sta slo se puede ver
bloqueada, por inversin de prioridad, durante la ejecucin de un
servicio.
Es un protocolo para sistemas monoprocesador.
SISTEMAS DE TIEMPO REAL
169
TECHO DE PRIORIDAD
BLOQUEO UNICO: Protocolo de techo de prioridad
T1
T2
T3
INVERSION DE PRIORIDAD
Ejecucin de servicios S1
Ejecucin de servicios S2
SISTEMAS DE TIEMPO REAL
170
TECHO DE PRIORIDAD INMEDIATO
Con este protocolo, una tarea que accede a un recurso hereda
inmediatamente el techo de prioridad del servidor
la prioridad dinmica de una tarea es el mximo de su prioridad bsica
y los techos de prioridad de los servidores que usa
Las propiedades son las mismas que las del protocolo del techo de
prioridad
Bloqueo nico
Es ms fcil de implementar que el protocolo bsico
Es ms eficiente (menos cambios de contexto)
Se producen ms bloqueos que en el caso del protocolo de techo de
prioridad
Comportamiento idntico de peor caso
Peor comportamiento medio
SISTEMAS DE TIEMPO REAL
171
TECHO DE PRIORIDAD INMEDIATO
Si el protocolo no est implementado en el kernel, se puede realizar
asignando a cada servidor una prioridad
p
s
=t
ps
+ 1
donde t
ps
es el techo de prioridad del servidor.
Implementacin
Elevacin prioridad
Ada83
voi d Ser vi ci o ( . . . ) {
Nomi nal = Get _Pr i or i t y ( ) ;
Set _Pr i or i t y ( Ser ver _Cei l i ng+1) ;
Ser vi ce_Code( ) ;
Set _Pr i or i t y ( Nomi nal ) ;
r et ur n ;
}
t ask ser vi dor i s
pr agma pr i or i t y ( Ser ver _Cei l i ng+1) ;
ent r y
end ser vi dor ;
SISTEMAS DE TIEMPO REAL
172
HERENCIA/TECHO DE PRIORIDAD
Ejemplo
T1
P=100
C=10
T2
P=150
C=30
T3
P=250
C=50
T4
P=300
C=30
T1
P=500
C=50
4
20
2
8
S2
S1
Tarea P C Pr Tpr
T1 100 15 5
T2 150 30 4
T3 250 50 3
T4 300 50 2
T5 500 30 1
S1 4
S2 5
SISTEMAS DE TIEMPO REAL
173
HERENCIA/TECHO DE PRIORIDAD
Techo de prioridad

techo
forzado
directo
T1
T2
T3
T4
T5
S1 S1 S1 S1
S1
S2
S2
1 2 4 4
4
2
5

SISTEMAS DE TIEMPO REAL


174
HERENCIA/TECHO DE PRIORIDAD
Herencia de prioridad

forzado
directo
T1
T2
T3
T4
T5
S1
S2
S1 S1
S1
S2
1
2
4 4
4
5

forzado
S2
5
forzado
directo
SISTEMAS DE TIEMPO REAL
175
CONDICIONES DE GARANTIA DE PLAZOS
La inversin de prioridad puede ser tenida en cuenta en el anlisis
mediante la incorporacin de un trmino denominado
tiempo de bloqueo: b
i
Tiempo de bloqueo de peor caso
Cada protocolo proporciona tiempos de bloqueo diferentes
Anlisis => clculo de los tiempos de bloqueo
tiempo de cmputo modificado
( )
i i i
B C C + =
*
SISTEMAS DE TIEMPO REAL
176
CONDICIONES DE GARANTIA DE PLAZOS
Seccin crtica no expulsable
Una tarea puede ser bloqueada como mximo por un servicio
Clculo
s
jk
servicio k usado por la tarea j
D(s
jk
) duracin del servicio
( ) ( )

=
>
jk
k
i j
j
i
s D B
MAX MAX
SISTEMAS DE TIEMPO REAL
177
CONDICIONES DE GARANTIA DE PLAZOS
Protocolo de Herencia de Prioridad
Una tarea T pude ser bloqueada como mximo por MIN(n,m) servicios
n: nmero de tareas de menor prioridad que T que la pueden bloquear
m: nmero de servidores distintos que pueden bloquear a T
B
i
: suma de todos los bloqueos (de peor caso) posibles
Para calcular B
i
hay que establecer qu servicios pueden estar en
ejecucin cuando se active T y que puedan bloquearle (bloqueo directo
o indirecto por aumento de prioridad)
Difcil de sistematizar: Algoritmo que calcula una cota superior del
tiempo de bloqueo
Condicin suficiente
SISTEMAS DE TIEMPO REAL
178
CONDICIONES DE GARANTIA DE PLAZOS
Algoritmo para calcular B
i
Ceiling(): prioridad del ms prioritario de los
clientes
D
j,k
: duracin de un servicio
( ) [ ]
( ) [ ]
( )
s
i
l
i i
m
k
i k k j
i j
s
i
n
i j
i k k j
k
l
i
B B MIN B
P S Ceiling D B
P S Ceiling D B
MAX
MAX
,
:
:
1
,
1
,
=
=
=

=
>
+ =
SISTEMAS DE TIEMPO REAL
179
CONDICIONES DE GARANTIA DE PLAZOS
Protocolo de techo de prioridad
El valor mximo del tiempo de bloqueo de una tarea T
i
, b
i
, es igual a la
duracin del servicio ms largo de los requeridos, a cualquiera de los
servidores, por tareas de prioridad inferior (pr
i
techo prioridad servidor)
Un cliente puede verse bloqueado por otro menos prioritario aunque no
llamen a servidores comunes.
El cliente de menos prioridad no se puede bloquear por otros menos
prioritarios: b
n
=0.
Protocolo de techo de prioridad inmediato
IDEM que el de techo
( ) { }
i k i j k j
k j
i
P S Ceiling P P D B
MAX
< = ,
,
,
SISTEMAS DE TIEMPO REAL
180
CONDICIONES DE GARANTIA DE PLAZOS
Teorema 4 (Sha, Rajkumar & Lehoczky): En un sistema de n tareas
peridicas con prioridades asignadas en orden de frecuencia, que se
comunican mediante servidores, se cumplen todos los plazos de
respuesta, para cualquier desfase inicial de las tareas, si
Corolario (Sha, Rajkumar & Lehoczky): Se cumple lo mismo si
Condicin suficiente ms restrictiva.
( ) 1 2 ... , 1 ,
/ 1
1
1
+ + +
i
i
i
i
i
i
P
b
P
C
P
C
n i i
( ) ( ) n U n
P
b
max
P
C
n
i
i
n i
n
i i
i
0
/ 1
1 .. 1
1
1 2 =

+
=
=

SISTEMAS DE TIEMPO REAL


181
CONDICIONES DE GARANTIA DE PLAZOS
Teorema 5 (Sha, Rajkumar & Lehoczky): En un sistema de n tareas
peridicas con prioridades asignadas en orden de frecuencia, que se
comunican mediante servidores, se cumplen todos los plazos de
respuesta, para cualquier desfase inicial de las tareas, si
Test de tiempo de finalizacin: El tiempo de finalizacin de una tarea T
i
(t
fi
) es:
En el tiempo de finalizacin de T
i
slo influye b
i
1 , 1 ,
1
+

t
b
P
t
t
C
min n i i
i
i
j j
j
S t
i

= + +

+ +

>
t b C C
P
t
C
P
t
min t
i i i
i
t
fi 1
1
1
1
0
...
SISTEMAS DE TIEMPO REAL
182
CONDICIONES DE GARANTIA DE PLAZOS
Anlisis del ejemplo
Seccin crtica no expulsable:
Tarea P C b p
T1 100 20 20 3
T2 150 40 20 2
T3 350 100 0 1
( )
( )
( ) 3 779 . 0 753 . 0
350
0
350
100
150
40
100
20
2 828 . 0 600 . 0
150
20
150
40
100
20
1 0 . 1 400 . 0
100
20
100
20
0
3
3
3
3
2
2
1
1
0
2
2
2
2
1
1
0
1
1
1
1
U
P
b
P
C
P
C
P
C
U
P
b
P
C
P
C
U
P
b
P
C
= = + + + = + + +
= = + + = + +
= = + = +
SISTEMAS DE TIEMPO REAL
183
CONDICIONES DE GARANTIA DE PLAZOS
Anlisis del ejemplo
Herencia de prioridad:
Tarea P C b tp p
T1 100 20 30 3
T2 150 40 20 2
T3 350 100 0 1
S1 3
S2 3
( )
( )
( ) 3 779 . 0 753 . 0
350
0
350
100
150
40
100
20
2 828 . 0 600 . 0
150
20
150
40
100
20
1 0 . 1 500 . 0
100
30
100
20
0
3
3
3
3
2
2
1
1
0
2
2
2
2
1
1
0
1
1
1
1
U
P
b
P
C
P
C
P
C
U
P
b
P
C
P
C
U
P
b
P
C
= = + + + = + + +
= = + + = + +
= = + = +
S1 S2
T1
T2
T3
10 2
10
-
-
20
SISTEMAS DE TIEMPO REAL
184
CONDICIONES DE GARANTIA DE PLAZOS
Anlisis del ejemplo:
Techo de prioridad:
Tarea P C b tp p
T1 100 20 20 3
T2 150 40 20 2
T3 350 100 0 1
S1 3
S2 3
( )
( )
( ) 3 779 . 0 753 . 0
350
0
350
100
150
40
100
20
2 828 . 0 600 . 0
150
20
150
40
100
20
1 0 . 1 400 . 0
100
20
100
20
0
3
3
3
3
2
2
1
1
0
2
2
2
2
1
1
0
1
1
1
1
U
P
b
P
C
P
C
P
C
U
P
b
P
C
P
C
U
P
b
P
C
= = + + + = + + +
= = + + = + +
= = + = +
SISTEMAS DE TIEMPO REAL
185
CONDICIONES DE GARANTIA DE PLAZOS
Clculo de los tiempos de finalizacin
0
240
240 240
80
80
40
3
3 3 2
2
1
1
3
2 2 1
1
2
1 1 1
=
= + +

=
= + +

=
= + =
b
ms b C C
P
C
P
t
ms b C C
P
t
ms b C t
f
f
f
SISTEMAS DE TIEMPO REAL
186
TAREAS ESPORADICAS Y APERIODICAS
Tareas que se ejecutan como respuesta a un evento => NO PERIODICAS.
Se consideran dos tipos:
Tareas aperidicas: no tienen requisitos de tiempo real crticos.
Generalmente se desea que tengan un comportamiento estadstico
adecuado, p.e. el valor del tiempo medio de respuesta est limitado.
Tareas espordicas: tienen plazo de respuesta crtico.
SISTEMAS DE TIEMPO REAL
187
TAREAS APERIODICAS
Se pueden ejecutar de varias formas:
Como tareas de segundo plano (sin requisitos de tiempo real). Solucin
ms sencilla, tiempo de respuesta medio excesivo.
Procesado directo de eventos (a alta prioridad). Tiempo de respuesta
muy bueno pero puede haber una expulsin excesiva sobre tareas de
menos prioridad que sean crticas.
Mediante servidores aperidicos. Son tareas que ejecutan las
actividades aperidicas en momentos oportunos para no perturbar a las
tareas crticas. Se van a considerar dos:
Servidor de muestreo (polling server). Tarea peridica que en cada
activacin ejecuta las actividades correspondientes a eventos aperidicos
pendientes de atender. Se debe limitar su tiempo de cmputo, tiempos de
respuesta elevados.
Servidor espordico (sporadic server). Se basa en la idea de reservar
tiempo para atender eventos aperidicos. Si queda tiempo reservado, un
evento se atiende inmediatamente (a la prioridad que le corresponda).
SISTEMAS DE TIEMPO REAL
188
TAREAS APERIODICAS

Procesado del evento
Relleno
Llegada del evento
Procesado en segundo plano
Procesado directo
Muestreo
Servidor espordico
Exceso expulsin
Periodo
tr
SISTEMAS DE TIEMPO REAL
189
SERVIDOR ESPORADICO
Varias posibles implementaciones dependiendo de la poltica de relleno.
Una de las ms sencillas est basada en:
Perodo de relleno. Igual al ritmo medio de llegada de los eventos.
Capacidad de ejecucin. Tiempo de peor caso en el procesado de un
evento.
Asignacin de prioridades. En el peor caso el servidor espordico se
comporta como una tarea peridica de perodo el tiempo de
renovacin.
tiempo renovacin
relleno
relleno
SISTEMAS DE TIEMPO REAL
190
SERVIDOR ESPORADICO
En Ada95
t ask body Spor adi c_Ser ver i s
Repl eni shment _Per i od: t i me_span : = mi l l i seconds ( . . . ) ;
Next _St ar : t i me : = cl ock ;
Ti me_St amp : t i me ;
begi n
l oop
I nt er r upt _Handl er . Wai t _f or _Event ( Ti me_St amp) ;
Act i vat i on_Ti me : = max ( Ti me_St amp, Next _St ar t ) ;
Event _Pr ocessi ng ;
Next _St ar : = Act i vat i on_Ti me + Repl eni shment _Per i od ;
del ay unt i l Next _St ar t ;
end l oop ;
end Spor adi c_Ser ver ;
SISTEMAS DE TIEMPO REAL
191
SERVIDOR ESPORADICO

pr ot ect ed body I nt er r upt _Handl er i s
pr ocedur e Handl er i s
begi n
I nt er r upt _Ocur r ed : = t r ue ;
Add ( Event _Queue, cl ock) ;
end ;
ent r y Wai t _f or _Event ( TS: out t i me) when I nt er r upt _Ocur r ed i s
begi n
Ext r act ( Event _Queue, TS) ;
i f Empt y( Event _Queue) t hen
I nt er r upt _Ocur r ed : = f al se ;
end i f ;
end ;
end ;
pr ot ect ed I nt er r upt _Handl er i s
ent r y Wai t _f or _Event ( TS: out t i me) ;
pr i vat e
pr ocedur e Handl er ;
Event _Queue : ;
I nt er r upt _Ocur r ed : bool ean : = f al se ;
end ;
SISTEMAS DE TIEMPO REAL
192
SERVIDOR ESPORADICO
En VxWorks
voi d Spor adi c_Ser ver ( voi d)
{
st r uct t i mespec Repl eni shment _Per i od = t o_t i mespec ( . . . ) ;
st r uct t i mespec Next _St ar , Ti me_St amp, Act i vat i on_Ti me ;
cl ock_get t i me ( CLOCK_REALTI ME, &Next _St ar t ) ;
whi l e ( TRUE) {
msgQRecei ve ( Event _Queue, &Ti me_St amp, . . . ) ;
Event _Pr ocessi ng ( ) ;
Act i vat i on_Ti me = max ( Ti me_St amp, Next _St ar t ) ;
Next _St ar = add_t i mespec ( Act i vat i on_Ti me, Repl eni shment _Per i od) ;
del ay_unt i l ( Next _St ar t ) ;
}
}
voi d Handl er ( voi d)
{
. . . ;
cl ock_get t i me ( CLOCK_REALTI ME, &Ti me_St amp) ;
msgQSend ( Event _Queue, Ti me_St amp, . . . ) ;
}
SISTEMAS DE TIEMPO REAL
193
TAREAS ESPORADICAS
Para poder garantizar plazos es preciso suponer una separacin mnima
entre eventos, s
i
.
Puede utilizarse un servidor espordico con una reserva c
i
(tiempo de
cmputo de la accin asociada al evento) y un intervalo de renovacin
s
i
.
Pb.: asignacin de prioridades:
Si s
i
= d
i
=> tarea peridica de perodo s
i
y con una prioridad RMA.
Si s
i
> d
i
(caso ms frecuente) => no caso RMA. Una aproximacin:
prioridad al ms urgente para tareas espordicas y prioridad RMA para
el resto. Posibilita anlisis RMA considerando tiempos adicionales de
bloqueo.
SISTEMAS DE TIEMPO REAL
194
TAREAS ESPORADICAS
Si la separacin est garantizada:
t ask body Spor adi c_Ser ver i s
begi n
l oop
I nt er r upt _Handl er . Wai t _f or _Event ;
Event _Pr ocessi ng ;
end l oop ;
end Spor adi c_Ser ver ;
SISTEMAS DE TIEMPO REAL
195
TAREAS ESPORADICAS
Rechazo de eventos que no cumplen el requisito de separacin mnima
pr ot ect ed body I nt er r upt _Handl er i s
pr ocedur e Handl er i s
begi n
Event _Ti me : = cl ock ;
i f Event _Ti me >= Rej ect i on_Ti me t hen
I nt er r upt _Ocur r ed : = t r ue ;
Rej ect i on_Ti me : = Event _Ti me + Mi ni mum_Separ at i on ;
end i f ;
end ;
ent r y Wai t _f or _Event when I nt er r upt _Ocur r ed i s
begi n
I nt er r upt _Ocur r ed : = f al se ;
end ;
end ;
SISTEMAS DE TIEMPO REAL
196
TAREAS ESPORADICAS
Ejemplo:

Tareas no peridicas:
E : servidor espordico (separacin mnima = 120 ms ; plazo = 6 ms ;
c = 5 ms)
A : servidor espordico (renovacin = 40 ms ; c = 2 ms)
T=100 ms
C=20 ms
T=150 ms
C=40 ms
T=350 ms
C=100 ms
T1
T2
T3
S1
S2
10 ms
10 ms
2 ms
20 ms
s =120 ms
d =6 ms
Ce =5 ms
Emergencia
s =40 ms
Ce =2 ms
ev. Acrticos
SISTEMAS DE TIEMPO REAL
197
TAREAS ESPORADICAS
Tarea P C b tp p
A 40 2 0+5 4
T1 100 20 20+5 3
E 120 5 0 5
T2 150 40 20 2
T3 350 100 0 1
S1 3
S2 3
SISTEMAS DE TIEMPO REAL
198
TAREAS ESPORADICAS
Tiempo de finalizacin de T3:
SE CUMPLEN LOS PLAZOS DE LAS TAREAS
( )
( )
( )
( ) 5 743 . 0 844 . 0
350
100
150
40
120
5
100
20
40
2
4 756 . 0 692 . 0
150
20
150
40
120
5
100
20
40
2
2 828 . 0 509 . 0
100
5
100
20
100
20
40
2
1 0 . 1 175 . 0
40
5
40
2
0
3
3
2
2
1
1
0
2
2
2
2
1
1
0
1 1
1
1
1
0
U
P
C
P
C
P
C
P
C
P
C
U
P
b
P
C
P
C
P
C
P
C
D C
U
P
C
P
b
P
C
P
C
U
P
C
P
C
E
E
A
A
E
E
A
A
E E
E
A
A
A
E
A
A
= > = + + + + = + + + +
= = + + + + = + + + +

= = + + + = + + +
= = + = +
ms C C
P
C
P
C
P
C
P
t
A
A
E
E
f
269
275 275 275 275
3 2
2
1
1
3
= +

=
SISTEMAS DE TIEMPO REAL
199
SISTEMAS DE TIEMPO REAL
PLANIFICACIN BASADA
EN PRIORIDADES:
PRIORIDAD AL MS
URGENTE (DMS)
SISTEMAS DE TIEMPO REAL
200
INTRODUCCIN
Planificacin con asignacin de prioridades a la tarea ms urgente
DMS/DMA: Deadline Monotonic Scheduling / Analysis
Prioridades estticas
Plazo de respuesta perodo en tarea peridicas
Nace del RMS basndose en alguno de sus conceptos
Estructura:
Tareas peridicas.
Tareas espordicas.
Comunicacin entre tareas
Plazos de respuesta arbitrarios
J itter
SISTEMAS DE TIEMPO REAL
201
TAREAS PERIDICAS
Prioridad al ms urgente (DMS)
La asignacin de prioridades ms altas a las tareas ms urgentes
(plazo de respuesta ms corto) es ptima (Leung &Whitehead, 1982).
Por ptima se entiende que no hay ninguna otra planificacin mejor. Si
de esta forma no se obtiene un plan admisible, no se puede obtener
con ningn otro mtodo basado en prioridades estticas.
Ejemplo:
T C D P
T1 6 15 15
T2 6 10 20
DMS => Pr1 < Pr2
T1
T2
0 5 10 15 20 25 30 35 40
SISTEMAS DE TIEMPO REAL
202
CONDICIONES DE GARANTA DE PLAZOS
Los test de utilizacin del procesador no sirven con el DMS.
Los test de garanta de de plazos se basan en:
En un sistema de n tareas peridicas independientes con prioridades
estticas, se cumplen todos los plazos de respuesta, para cualquier
desfase inicial de las tareas, si cuando se activan todas ellas
simultneamente, cada tarea acaba dentro del plazo en su primera
ejecucin. (Liu & Layland)
El tiempo de finalizacin y en el trabajo requerido al procesador
SISTEMAS DE TIEMPO REAL
203
CONDICIONES DE GARANTA DE PLAZOS
Test 1: En un sistema de n tareas peridicas independientes con
prioridades asignadas en orden de urgencia, se cumplen todos los plazos
de respuesta, para cualquier desfase inicial de las tareas, si:
donde
I
i
se denomina tiempo de interferencia de la tarea T
i
1 , 1 , +
i
i
i
i
D
I
D
C
n i i
j
i
j
j
i
i
C
P
D
I

=
1
1
SISTEMAS DE TIEMPO REAL
204
CONDICIONES DE GARANA DE PLAZOS
Se trata de una condicin suficiente pero no necesaria
T C D P
T1 2 3 5
T2 2 6 15
T3 4 11 20
y sin embargo T3 cumple sus plazos de respuesta:
11 12 2
15
11
2
5
11
4
6 6 2
5
6
2
3 0 2
3
2
2
3
1
1
3
3
2 1
1
2
2
1 1 1
= > =

+
=

+
= =

+ =

+
= + = +
D
C
P
D
C
P
D
C
D C
P
D
C
D I C
T1
T2
0 5 10 15 20 25 30 35 40
T3
SISTEMAS DE TIEMPO REAL
205
CONDICIONES DE GARANTA DE PLAZOS
La condicin necesaria y suficiente la da el test del tiempo de finalizacin
Test de Tiempo de Finalizacin
El tiempo de finalizacin de una tarea T
i
(t
fi
) es:
Por lo tanto la tarea T
i
cumplir su primer plazo si:
Tiempo de interferencia:
Slo se tienen en cuenta las activaciones de tareas ms prioritarias que
afectan efectivamente a la ejecucin de una tarea dada:

= +

+ +

>
t C C
P
t
C
P
t
min t
i i
i
t
fi 1
1
1
1
0
...
i fi
D t
1
1
1
1
...

+ +

=
i
i
fi fi
i
C
P
t
C
P
t
I
SISTEMAS DE TIEMPO REAL
206
CONDICIONES DE GARANTA DE PLAZOS
Ejemplo:
T C D P
T1 2 3 5
T2 2 6 15
T3 4 11 20
Mismo ejemplo anterior.
Anlisis:
Clculo del tiempo de finalizacin para T3
11 12 2
15
11
2
5
11
4
6 6 2
5
6
2
3 0 2
3 2
2
3
1
1
3
3
2 1
1
2
2
1 1 1
= > =

+ =

+
= =

+ =

+
= + = +
D C
P
D
C
P
D
C
D C
P
D
C
D I C
SISTEMAS DE TIEMPO REAL
207
CONDICIONES DE GARANTA DE PLAZOS
Tiempo de finalizacin: t
f3
11 10
10 4 2
15
10
2
5
10
10 4 2
15
8
2
5
8
8 4 2
15
4
2
5
4
4
0
3
4
3
3
3
2
3
3
1
3
0
3
< =
= +

=
= +

=
= +

=
= =
=
f
t
W
W
W
C W
W
SISTEMAS DE TIEMPO REAL
208
CONDICIONES DE GARANTA DE PLAZOS
Reformulacin
Punto de planificacin: Los puntos de planificacin de una tarea T
i
son
todos los instantes lmite (es decir los finales de los perodos) de las tareas
de prioridad mayor o igual que T
i
que se dan antes del final de su plazo de
respuesta, suponiendo que todas las tareas han comenzado
simultneamente.
S
i
es el conjunto de puntos de planificacin de la tarea T
i
:
Teorema 3 (Lehoczky, Sha & Ding): En un sistema de n tareas peridicas
independientes con prioridades asignadas en orden de urgencia, se
cumplen todos los plazos de respuesta, para cualquier desfase inicial de
las tareas, si y slo si

= = =
j
i
j i i
P
D
k i j p k D S .. 1 ; 1 .. 1 ,
1 , 1 ,
1

i
j
j
j
S t P
t
t
C
min n i i
i
SISTEMAS DE TIEMPO REAL
209
TAREAS ESPORDICAS
Caracterizadas por:
Separacin mnima entre eventos: s
i
Tiempo de cmputo: C
i
Plazo de respuesta: D
i
Tratamiento mucho ms sencillo que en el caso de RMS
En el peor caso tarea peridica de perodo s
i
y plazo de respuesta D
i
Ejemplo:
T C D P/S
T1 1 5 6
T2 2 6 8 Espordica
T3 2 7 9
T4 2 8 10 Espordica
SISTEMAS DE TIEMPO REAL
210
TAREAS ESPORADICAS
Anlisis:
por lo tanto todas las tareas cumplen sus plazos de respuesta
8 8 2
9
8
2
8
8
1
6
8
2
7 6 2
8
7
1
6
7
2
6 3 1
6
6
2
5 0 1
4 3
3
4
2
2
4
1
1
4
4
3 2
2
3
1
1
3
3
2 1
1
2
2
1 1 1
= =

+ =

+
= =

+ =

+
= =

+ =

+
= + = +
D C
P
D
C
P
D
C
P
D
C
D C
P
D
C
P
D
C
D C
P
D
C
D I C
SISTEMAS DE TIEMPO REAL
211
COMUNICACIN ENTRE TAREAS
Protocolo de techo de prioridad
Introduccin en los test de garanta de plazos del trmino de bloqueo
El valor mximo del tiempo de bloqueo de una tarea T
i
, b
i
, es igual a la
duracin del servicio ms largo de los requeridos, a cualquiera de los
servidores, por tareas de prioridad inferior (pr
i
techo prioridad
servidor)
Condicin suficiente
Condicin necesaria y suficiente (tiempo finalizacin)
j
i
j
j
i
i
C
P
D
I

=
1
1
1 , 1 , + +
i
i
i
i
i
i
D
b
D
I
D
C
n i i

= + +

+ +

>
t b C C
P
t
C
P
t
min t
i i i
i
t
fi 1
1
1
1
0
...
i fi
D t
SISTEMAS DE TIEMPO REAL
212
COMUNICACIN ENTRE TAREAS
Ejemplo:
Tarea P D C b tp p
T1 100 100 20 20 2
T2 150 90 40 10 3
T3 350 310 120 0 1
S1 3
S2 2
T1
T2
T3
S1
S2
10ms
10ms
2ms
20ms
P=100ms
D=100ms
C=20ms
P=150ms
D=90ms
C=40ms
P=350ms
D=300ms
C=100ms
SISTEMAS DE TIEMPO REAL
213
COMUNICACIN ENTRE TAREAS
Condicin suficiente:
Tiempo de finalizacin para T3:
310 320 0 20
100
310
40
150
310
120
100 80 20 40
150
100
20
90 50 10 0 40
3 3 1
1
3
2
2
3
3
1 1 2
2
1
1
2 2 2 2
= > = +

+ = +

+
= = +

+ = +

+
= = + + = + +
+ +
D b C
P
D
C
P
D
C
D b C
P
D
C
D b I C
D b I C
i i i i
310 0 120 40
150
260
20
100
260
260
3 3 2
2
1
1
0
3
< + +

= + +

=
>
t b C C
P
t
C
P
t
min t
t
f
SISTEMAS DE TIEMPO REAL
214
PLAZOS DE RESPUESTA ARBITRARIOS
Algunas aplicaciones de tiempo real pueden aceptar que los plazos de
respuesta de las tareas sean superiores a los periodos:
Una tarea puede ser reactivada antes de que la invocacin previa haya
concluido su ejecucin
Ni la asignacin de prioridades en orden de frecuencia ni la asignacin
en orden de urgencia son ptimas
Otro algoritmo de asignacin de prioridades
SISTEMAS DE TIEMPO REAL
215
PLAZOS DE RESPUESTA ARBITRARIOS
Ecuacin del tiempo de respuesta para sistemas con prioridades:
Qu ocurre si t
fi
> P
i
?
Nueva activacin de Ti
Si D
i
P
i
no importa porque la tarea no es planificable
Si D
i
> P
i
la primera ejecucin interfiere en la segunda y por lo tanto
puede tener un t
fi
mayor
NO SIRVE LA ECUACIN

= +

+ +

>
t C C
P
t
C
P
t
min t
i i
i
t
fi 1
1
1
1
0
...
SISTEMAS DE TIEMPO REAL
216
PLAZOS DE RESPUESTA ARBITRARIOS
Ejemplo
T C D P
T1 15 20 41
T2 9 40 16
0 10 20 30 40 50 60 70 80 90
T1
T2
Periodo de ocupacin nivel 2
SISTEMAS DE TIEMPO REAL
217
PLAZOS DE RESPUESTA ARBITRARIOS
Teorema (Tindell, Burns & Wellings 1994): En un conjunto de tareas
ordenadas por prioridad, el tiempo de respuesta de peor caso es:
donde:
w
i
(q) se calcula con:
hp(i) es el conjuto de tareas de mayor prioridad que la de la tarea i
Q se calcula con:
) ) ( (
,... 2 , 1 , 0
i i
Q q
fi
qP q w t
max
=
=
j
i hp j
j
i
i i i
C
P
q w
B C q q w


+ + + =
) (
) (
) 1 ( ) (
( ) { }
i i
P q q w q min Q 1 ) ( + =
SISTEMAS DE TIEMPO REAL
218
PLAZOS DE RESPUESTA ARBITRARIOS
Aplicacin al ejemplo:
q = 0
q = 1
q = 2
( ) ( ) 15
41
) (
1 9
) (
1 ) (
2
1
1
2
2 2

+ + =

+ + =
q w
q C
P
q w
q C q w
2 2
2
2
) 1 ( 16 24 ) 0 (
24 15
41
) 0 (
9 ) 0 (
P q w
w
w
+ = > =
=

+ =
2 2
2
2
) 1 ( 32 33 ) 1 (
33 15
41
) 1 (
) 1 1 ( 9 ) 1 (
P q w
w
w
+ = > =
=

+ + =
2 2
2
2
) 1 ( 48 57 ) 2 (
57 15
41
) 2 (
) 2 1 ( 9 ) 2 (
P q w
w
w
+ = > =
=

+ + =
SISTEMAS DE TIEMPO REAL
219
PLAZOS DE RESPUESTA ARBITRARIOS
q = 3
q = 4
CONDICION DE PARADA CUMPLIDA
2 2
2
2
) 1 ( 64 66 ) 3 (
66 15
41
) 3 (
) 3 1 ( 9 ) 3 (
P q w
w
w
+ = > =
=

+ + =
2 2
2
2
) 1 ( 80 75 ) 4 (
75 15
41
) 4 (
) 4 1 ( 9 ) 4 (
P q w
w
w
+ = =
=

+ + =
{ }
{ } 25 11 , 18 , 25 , 17 , 24
64 75 , 48 66 , 32 57 , 16 33 , 24
) ) ( (
2 2
4 , 3 , 2 , 1 , 0
2
=
=
= =
=
max
max
qP q w t
max
q
f
SISTEMAS DE TIEMPO REAL
220
ASIGNACIN DE PRIORIDADES
La asignacin de prioridades DMS deja de ser ptima con plazos de
respuesta arbitrarios
Audsley (1991) desarroll un algoritmo de asignacin de prioridades
estticas que es ptimo en cualquier caso:
or der ed : = number _of _t asks
r epeat
f i ni shed : = f al se
f ai l ed : = t r ue
t ask : = f i r st _t ask
r epeat
i nser t t ask at pr i or i t y or der ed
i f t ask i s schedul abl e t hen
or der ed : = or der ed - 1
f ai l ed : = f al se
f i ni shed : = t r ue
ext r act t ask
end i f
t ask : = next _t ask
unt i l f i ni shed or no_mor e_t asks
unt i l or der ed = 1 or f ai l ed
SISTEMAS DE TIEMPO REAL
221
ASIGNACIN DE PRIORIDADES
Ejemplo:
T C D P
T1 2 50 50
T2 9 40 16
T3 15 20 41
ordered = 3, task = T1 => T1 mnima prioridad
not schedulable, next_task
ordered = 3, task = T2 => T2 mnima prioridad
1 1
1 1
3
3
1
2
2
1
1 1
50 68
68 15
41
9
16
2
D t
t t
C
P
t
C
P
t
C t
f
f f f f
f
= > =
=

+ =

+ =
( ) ( ) 15
41
) (
2
50
) (
1 9
) ( ) (
1 ) (
2 2
3
3
2
1
1
2
2 2

+ + =

+ + =
q w q w
q C
P
q w
C
P
q w
q C q w
SISTEMAS DE TIEMPO REAL
222
ASIGNACIN DE PRIORIDADES
2 2
2 2
2
) 1 ( 16 26 ) 0 (
26 15
41
) 0 (
2
50
) 0 (
9 ) 0 (
P q w
w w
w
+ = > =
=

+ =
q = 0
q = 1
q = 2
2 2
2 2
2
) 1 ( 32 35 ) 1 (
35 15
41
) 1 (
2
50
) 1 (
) 1 1 ( 9 ) 1 (
P q w
w w
w
+ = > =
=

+ + =
2 2
2 2
2
) 1 ( 48 61 ) 2 (
61 15
41
) 1 (
2
50
) 1 (
) 2 1 ( 9 ) 2 (
P q w
w w
w
+ = > =
=

+ + =
SISTEMAS DE TIEMPO REAL
223
ASIGNACIN DE PRIORIDADES
q = 3
q = 4
schedulable, ordered:=ordered - 1, finished, extract (T2)
2 2
2 2
2
) 1 ( 64 70 ) 3 (
70 15
41
) 3 (
2
50
) 3 (
) 3 1 ( 9 ) 3 (
P q w
w w
w
+ = > =
=

+ + =
2 2
2 2
2
) 1 ( 80 79 ) 4 (
79 15
41
) 4 (
2
50
) 4 (
) 4 1 ( 9 ) 4 (
P q w
w w
w
+ = =
=

+ + =
{ }
{ }
2
2 2
4 , 3 , 2 , 1 , 0
2
40 29 15 , 22 , 29 , 19 , 26
64 79 , 48 70 , 32 61 , 16 35 , 26
) ) ( (
D max
max
qP q w t
max
q
f
= < =
=
= =
=
SISTEMAS DE TIEMPO REAL
224
ASIGNACIN DE PRIORIDADES
ordered = 2, task = T1 => T1 prioridad media
schedulable, ordered:=ordered - 1, finished
ordered = 1, task = T3 => T3 prioridad mxima
schedulable, ordered:=ordered - 1, finished
ordered = 0 => FIN
1 1
1
3
3
1
1 1
50 17
17 15
41
2
D t
t
C
P
t
C t
f
f f
f
= < =
=

+ =

+ =
3 3 3
20 15 D C t
f
= < = =
SISTEMAS DE TIEMPO REAL
225
SISTEMAS DE TIEMPO REAL
PLANIFICACIN BASADA
EN PRIORIDADES:
PRIORIDADES DINMICAS
- EDF -
SISTEMAS DE TIEMPO REAL
226
PRIORIDADES DINMICAS - EDF
Asignar en cada instante la prioridad ms alta al proceso cuyo plazo de
respuesta est ms prximo (Earliest Deadline First, EDF)
La prioridad de una tarea se calcula en tiempo de ejecucin
La prioridad de una tarea puede cambiar a lo largo de su ejecucin y en
diferentes activaciones
Prioridades dinmicas
T C D Activacin
T1 8 20 0
T2 4 6 6
T3 7 15 9
T1
T2
0 5 10 15 20 25
T3
SISTEMAS DE TIEMPO REAL
227
EDF
Earliest Deadline First es un mtodo de planificacin ptimo bajo las
siguientes restricciones:
Tareas independientes
Planificacin expulsiva
Sistemas monoprocesador
SISTEMAS DE TIEMPO REAL
228
BASES DEL ANLISIS
Conjunto sncrono: todas las tareas se activan por primera vez en el
mismo instante temporal
Peor caso de una tarea espordica: activacin cada separacin mnima
entre eventos = tarea peridica
Un sistema de tareas espordicas cumple sus plazos de respuesta si y
slo si su correspondiente conjunto de tareas peridicas sncronas cumple
sus plazos de respuesta
Peor caso de un conjunto de tareas peridicas: conjunto sncrono
Un sistema hbrido de tareas (espordicas y peridicas) cumplir sus
plazos de respuesta si y slo si su correspondiente conjunto de tareas
peridicas sncronas cumple sus plazos de respuesta
SISTEMAS DE TIEMPO REAL
229
FACTOR DE CARGA
Demanda de procesador
[ )

=
<
2 1
2 1
,
,
t d r t
k t t
k k
C h
[ ) [ )


=
2 1
2 1 2 1
, ,
t r t
k t t t t
k
C W h
T3
0 5 10 15 20 25
T2
T1
3 18
14
12
6
5
[ )
[ )
4
14 6 4 4
13 , 0
18 , 3
=
= + + =
h
h
La demanda slo cambia
en r
k
y en d
k
SISTEMAS DE TIEMPO REAL
230
FACTOR DE CARGA
Factor de carga
Factor de carga absoluto
[ )
[ )
1 2
,
,
2 1
2 1
t t
h
u
t t
t t

=
[ )
2 1
2 1
,
0
t t
t t
u max u
<
=
[ )
[ )
[ )
[ )
9
10
8
6
9
10
9
6 4
7
4
15
14
15
6 4 4
14 , 6
14 , 5
12 , 5
18 , 3
=
=
=
+
=
=
=
+ +
=
u
u
u
u
u
T3
0 5 10 15 20 25
T2
T1
3 18
14
12
6
5
SISTEMAS DE TIEMPO REAL
231
FACTOR DE CARGA
Teorema (Spuri, 1995): Un conjunto de tareas planificadas mediante el
algoritmo EDF cumple sus plazos de respuesta si y slo si
1 u
T3
0 5 10 15 20 25
T2
T1
3 18
14
12
6
5
fallo
SISTEMAS DE TIEMPO REAL
232
UTILIZACIN DEL PROCESADOR
Tareas peridicas, independientes, plazo de respuesta igual al perodo
Teorema (Liu&Layland 1973): En un sistema de n tareas peridicas,
sncronas, independientes, con su plazo de respuesta igual al periodo y
con prioridades asignadas mediante el algoritmo EDF, se cumplen todos
los plazos de respuesta si y slo si
En 1976 Coffman extiende el resultado para un conjunto de tareas
peridicas asncronas
1
1
=

=
n
i
i
i
T
C
U
SISTEMAS DE TIEMPO REAL
233
UTILIZACIN DEL PROCESADOR
Demostracin
[ )
( )
( )
[ )
U u
U u
T
C
t t C
T
t t
C
do hiperperio T u
T
C
T
T
T
C
T
T
U
t t
n
i
i
i
n
i
i
i
t d r t
k
T
n
i
i
i
n
i
i
i
k k
=

= = = =

= =
=
=
2 1
2 1
,
1
1 2
1
1 2
,
, 0
1
1
SISTEMAS DE TIEMPO REAL
234
DEMANDA DE PROCESADOR
Teorema: Cualquier conjunto hbrido de tareas con prioridades asignadas
mediante el algoritmo EDF cumple sus plazos de respuesta si y slo si
h(t) = h
[0,t)
en un sistema sncrono el factor absoluto de carga se da en un
intervalo de la forma [0,t)
u 1 h(t) t
( ) t t h t ,
SISTEMAS DE TIEMPO REAL
235
DEMANDA DE PROCESADOR
Clculo de la demanda
Sistema sncrono hiperperiodo = T = mcm(T
i
)

La demanda slo cambia en los plazos de respuesta


i
t D
i
i
C
T
D t
t h
i


+ = 1 ) (
{ } T e n i m D mT e e S
j i i j j
= + = = ]; , 1 [ ,...; 1 , 0 ;
SISTEMAS DE TIEMPO REAL
236
DEMANDA DE PROCESADOR
Ejemplo
T1: C=3, D=4, P=4
T2: C=2, D=18, P=20
T1: C=1, D=3, P=10
s
i
h(t)
3 1 c
3
4 4 c
1
+ c
3
8 7 c
1
+ c
3
12 10 3c
1
+ c
3
13 11 3c
1
+ 2c
3
16 14 4c
1
+ 2c
3
18 16 4c
1
+ c
2
+ 2c
3
20 19 5c
1
+ c
2
+ 2c
3
T3
0 5 10 15 20 25
T2
T1
8 4
3 23
12 16
18
20
13
20
SISTEMAS DE TIEMPO REAL
237
DEMANDA DE PROCESADOR
Teorema (Liu&Layland 1973, Spuri 1995, Ripoll&Crespo&Mok 1996): Si en
un sistema sncrono de tareas con D
i
T
i
i y prioridades asignadas
mediante el algoritmo EDF no cumple sus plazos de respuesta, entonces
existe un fallo de plazo sin tiempo libre antes.
Clculo de la demanda durante el primer intervalo de ocupacin
completa del procesador
Longitud del intervalo (L): solucin ms pequea de la ecuacin
Clculo de la demanda en los puntos
( )
( )
i
n
i
i
C
T
t
t W
x W x

=
=
1
{ } L e n i m D mT e e S
j i i j j
= + = = ]; , 1 [ ,...; 1 , 0 ;
SISTEMAS DE TIEMPO REAL
238
DEMANDA DE PROCESADOR
L
(0)
= 3 + 2 + 1 = 6
L
(1)
= W(6) = 2x3 + 1x2 + 1x1 = 9
L
(2)
= W(9) = 3x3 + 1x2 + 1x1 = 12
L
(3)
= W(12) = 3x3 + 1x2 + 2x1 = 13
L
(4)
= W(13) = 4x3 + 1x2 + 2x1 = 16
L
(5)
= W(16) = 4x3 + 1x2 + 2x1 = 16
L = 16
Ejemplo
T3
0 5 10 15 20 25
T2
T1
8 4
3 23
12 16
18
20
13
20
s
i
h(t)
3 1 c
3
4 4 c
1
+ c
3
8 7 c
1
+ c
3
12 10 3c
1
+ c
3
13 11 3c
1
+ 2c
3
16 14 4c
1
+ 2c
3
SISTEMAS DE TIEMPO REAL
239
NIVEL DE EXPULSIN
Una tarea T
j
expulsar a otra T
i
si:
Esta situacin slo se puede dar si D
j
D
i
dj di aj ai
t t t t
T
j
T
i
t
ai
t
aj
t
di
t
dj
SISTEMAS DE TIEMPO REAL
240
NIVEL DE EXPULSIN
El nivel de expulsin de una tarea T
i
se denota
i
Una tarea T
i
que puede expulsar a otra T
j
tiene un nivel de expulsin

i

j
Si suponemos EDF:
En EDF la prioridad no es una propiedad inherente a la tarea, su nivel
de expulsin si
j i j i
D D < >
SISTEMAS DE TIEMPO REAL
241
BLOQUEOS
Cundo una tarea puede sufrir un bloqueo con inversin de prioridades?
La tarea Ti est activa y dentro de una seccin crtica
La tarea Tj expulsa a la Ti (t
dj
< t
di
)
Para que esto suceda:
i
>
j
En EDF, una tarea Tj puede ser bloqueada por otra Ti de menor prioridad
slo si Ti tiene mayor nivel de expulsin que Tj (
i
>
j
)
T
j
T
i
t
ai
t
aj
t
di
t
dj
SISTEMAS DE TIEMPO REAL
242
PROTOCOLOS
En EDF son vlidos los protocolos:
Herencia de prioridades
Techo de prioridad
Aspectos a tener en cuenta:
La definicin de los protocolos es la misma que con prioridades
estticas
El clculo de los tiempos de bloqueo es el mismo que con prioridades
estticas pero atendiendo a los niveles de expulsin de las tareas, no a
su prioridad (que cambia segn la situacin)
SISTEMAS DE TIEMPO REAL
243
HERENCIA DE PRIORIDAD
Tareas peridicas que comunican mediante servidores con el protocolo
de techo de prioridad, plazo de respuesta menor o igual al periodo
Teorema (Stankovic&col 1998): En un sistema de n tareas con
prioridades asignadas mediante el algoritmo EDF, se cumplen todos los
plazos de respuesta si
Condicin suficiente, no necesaria
Tareas ordenadas por nivel de expulsin

=

+
+ =
1
1
1 ,..., 1
i
j
i
i i
j
j
D
b C
D
C
n i
SISTEMAS DE TIEMPO REAL
244
TECHO DE PRIORIDAD
Tareas peridicas que comunican mediante servidores con el protocolo
de techo de prioridad, plazo de respuesta igual al periodo
Teorema (Chen&Lin 1989): En un sistema de n tareas con prioridades
asignadas mediante el algoritmo EDF, se cumplen todos los plazos de
respuesta si
Condicin suficiente, no necesaria
1
1

+

=
n
i
i
i i
P
b C
SISTEMAS DE TIEMPO REAL
245
TECHO DE PRIORIDAD
Ejemplo:
Tarea P C b
T1 100 20 0
T2 150 40 10
T3 350 100 0
1 819 . 0
350
100
150
10 40
100
20
1
= +
+
+ =
+

=
n
i
i
i i
P
b C
T1
T2
T3
S2
5 ms
10 ms
P=100 ms
C=20 ms
P=150 ms
C=40 ms
P=350 ms
C=100 ms
SISTEMAS DE TIEMPO REAL
246
PLANIFICACIN DINMICA
Tipos de planificaciones:
Planificacin Esttica
Se realiza la planificacin antes
del tiempo de ejecucin
Se requiere un conocimiento
previo de todas las caractersticas
de las tareas el sistema
Poco coste en ejecucin
Planificacin cclica, RMS, DMS,
...
Planificacin Dinmica
Se construye el plan en tiempo de
ejecucin
Se adapta a cambios
Llegada de nuevas tareas al
sistema
Desaparicin de tareas
Cambios en el entorno
Gran coste de ejecucin
EDF permite la planificacin
dinmica
SISTEMAS DE TIEMPO REAL
247
PLANIFICACIN DINMICA
Se conocen a priori todas las tareas y sus caractersticas
Anlisis previo de planificabilidad
Todas las tareas cumplirn plazos
No se conocen las tareas y sus caractersticas. Dos aproximaciones
cuando llega el evento de activacin de una tarea:
Control de admisin. La ejecucin de la tarea se iniciar slo si pasa un
test de planificabilidad, esto es, todas las tareas del sistema incluyendo
la nueva cumpliran sus plazos. Si no pasa el test:
la activacin es rechazada
una accin correctora puede ser ejecutada
No se realiza un test de aceptacin. No se sabe a priori si una tarea
que ha comenzado su ejecucin cumplir su plazo de respuesta:
una tarea puede ser abortada
una accin correctora puede ser ejecutada
SISTEMAS DE TIEMPO REAL
248
PROGRAMACIN DE UN PLANIFICADOR
Caractersticas
Prioridades dinmicas Ada95
Las tareas se planifican ellas mismas mediante un protected
wi t h Ada. Task_I dent i f i cat i on, Ada. Task_At t r i but es, Ada. Real _Ti me ;
wi t h Ada. Dynami c_Pr i or i t i es, Syst em;
use Ada, Ada. Real _Ti me ;
pr ocedur e EDF i s
pr agma Locki ng_Pol i cy ( Cei l i ng_Locki ng) ;
pr agma Task_Di spat chi ng_Pol i cy ( Fi f o_Wi t hi n_Pr i or i t y) ;
N: const ant Posi t i ve : = . . . ;
subt ype Act i ve_Range i s Nat ur al r ange 0. . N ;
subt ype Task_Range i s Act i ve_Range r ange 1. . N ;
Hi gh: const ant Syst em. Pr i or i t y : = Syst em. Pr i or i t y Last ;
Medi um: const ant Syst em. Pr i or i t y : = Hi gh - 1 ;
Low: const ant Syst em. Pr i or i t y : = Hi gh - 2 ;
package Deadl i ne_At t r i but es i s new Task_At t r i but es( Ti me, Ti me_Last ) ;
- - Ti me_Last i s t he f ur t est t i me i nt o t he f ut ur e t he
- - i mpl ement at i on can gi ve, i t i s def i ned i n Real _Ti me
t ype Label s i s ar r ay ( Task_Range) of Task_I dent i f i cat i on. Task_I d ;
SISTEMAS DE TIEMPO REAL
249
PROGRAMACIN DE UN PLANIFICADOR
pr ot ect ed Schedul er i s
pr agma Pr i or i t y ( Hi gh) ;
pr ocedur e Regi st er ;
pr ocedur e Reschedul e ;
- - cal l ed by t asks comi ng of f del ay queue
pr ocedur e Remove ;
- - cal l ed by t asks compl et i ng t hei r execut i on
pr i vat e
Task_Label s: Label s ;
Number _Of _Tasks: Act i ve_Range : = 0 ;
Shor t est _Deadl i ne: Ti me : = Ti me_Last ;
Runni ng_Task: Task_I dent i f i cat i on. Task_I d : =
Task_I dent i f i cat i on. Nul l _Task_I d ;
end Schedul er ;
t ask t ype Wor ker i s
pr agma pr i or i t y ( Hi gh) ;
end Wor ker ;
pr ot ect ed body Schedul er i s . . .
t ask body Wor ker i s . . .
- - decl ar at i on of N Wor ker s
end EDF ;
SISTEMAS DE TIEMPO REAL
250
PROGRAMACIN DE UN PLANIFICADOR
t ask body Wor ker i s
- - i nt er nal decl ar at i ons
Per i od: Ti me_Span : = - - some val ue
Deadl i ne: Ti me_Span : = - - some val ue
Next _Rel ease: Ti me :
begi n
Schedul er . Regi st er ;
Next _Rel ease: = Cl ock + Per i od ;
Dynami c_Pr i or i t i es. Set _Pr i or i t y ( Hi gh) ;
l oop
del ay unt i l Next _Rel ease ;
Deadl i ne_At t r i but es. Set _Val ue ( Next _Rel ease+Deadl i ne) ;
Sechedul er . Reschedul e ; - - l ower s pr i or i t y f r omhi gh
- - code of appl i cat i on
Dynami c_Pr i or i t i es. Set _Pr i or i t y ( Hi gh) ;
Deadl i ne_At t r i but es. Set _Val ue ( Ti me_Last ) ;
Schedul er . Remove ; - - r et ai ns pr i or i t y at hi gh
Next _Rel ease : = Next _Rel ease + Per i od ;
end l oop ;
end Wor ker ;
SISTEMAS DE TIEMPO REAL
251
PROGRAMACIN DE UN PLANIFICADOR
pr ot ect ed body Schedul er i s
pr ocedur e Regi st er i s
begi n
Number _Of _Tasks : = Number _Of _Tasks + 1 ;
Tasks_Label s( Number _Of _Tasks) : = Task_I dent i f i cat i on. Cur r ent _t ask ;
end Regi st er ;
pr ocedur e Reschedul e i s
begi n
i f Deadl i ne_At t r i but es. Val ue < Shor t est _Deadl i ne t hen
Dynami c_Pr i or i t i es. Set _Pr i or i t y( Medi um) ;
Dynami c_Pr i or i t i es. Set _Pr i or i t y( Low, Runni ng_Task) ;
Shor t est _Deadl i ne : = Deadl i ne_At t r i but es. Val ue ;
Runni ng_Task : = Task_I dent i f i cat i on. Cur r ent _Task ;
el se
Dynami c_Pr i or i t i es. Set _Pr i or i t y( Low) ;
end i f ;
end Reschedul e ;
SISTEMAS DE TIEMPO REAL
252
PROGRAMACIN DE UN PLANIFICADOR
pr ocedur e Remove i s
begi n
Shor t est _Deadl i ne : = Ti me_Last ;
Runni ng_Task : = Task_I dent i f i cat i on. Nul l _Task_I d ;
f or T i n 1. . Number _Of _Tasks l oop
i f Deadl i ne_At t r i but es. Val ue( Task_Label s( T) ) < Shor t est _Deadl i ne t hen
Shor t est _Deadl i ne : = Deadl i ne_At t r i but es. Val ue( Task_Label s( T) ) ;
Runni ng_Task : = Task_Label s( T) ;
end i f ;
end l oop ;
i f Shor t est _Deadl i ne < Ti me_Last t hen
Dynami c_Pr i or i t i es. Set _Pr i or i t y( Medi um, Runni ng_Task) ;
end i f ;
end Remove ;
end Schedul er ;
SISTEMAS DE TIEMPO REAL
253
SISTEMAS DE TIEMPO REAL
MANEJ ADORES DE
DISPOSITIVOS
SISTEMAS DE TIEMPO REAL
254
MECANISMOS DE ENTRADA-SALIDA
Los sistemas tiempo real se conectan a los sistemas fsicos que controlan
por medio de dispositivos de entrada y salida especficos (sensores,
actuadores, etc.), que suelen requerir un tratamiento especial en cada
caso.
Esquema genrico:
SISTEMA
CONTROL
MANEJ ADOR DE DISPOSITIVO
CONTROLADOR DE
DISPOSITIVO
DISPOSITIVO
SISTEMAS DE TIEMPO REAL
255
MECANISMOS DE ENTRADA-SALIDA
Los controladores presentan como interfase al procesador un conjunto de
registros (estado, control, datos). Existen dos formas bsicas de conectar
un controlador a una cierta arquitectura:
Mediante un bus especfico de entradas-salidas:
El espacio de direccionamiento de
los controladores es diferente que el
de la memoria.
El procesador accede a los registros
mediante instrucciones de mquina
especiales:
Mediante el bus de memoria:
El espacio de direccionamiento de los
controladores es el mismo que el de
la memoria.
Los registros se comportan, a todos
los efectos, como celdas de memoria:
i n Rn, puer t o
out Rn, puer t o
mov Rn, r egi st r o
mov r egi st r o, Rn
SISTEMAS DE TIEMPO REAL
256
MECANISMOS DE ENTRADA-SALIDA
El manejo de un controlador de dispositivos:
Activacin de la operacin
Por programa
Autnoma
Exterior
Paso de los datos
Interrupcin: el controlador interrumpe al procesador cuando termina una
operacin y fuerza la ejecucin de un manejador.
DMA: acceso directo a memoria
Muestreo: el procesador interroga cada cierto tiempo al controlador sobre el
estado de la operacin.
SISTEMAS DE TIEMPO REAL
257
EJ EMPLO
Supondremos un sistema de entrada-
salida con direccionamiento en
espacio de memoria. Cada
controlador tiene dos tipos de
registros:
Registros de control y estado
(CSR). Se dividen en campos
correspondientes a operaciones o
componentes de estado.
Registros de datos (DBR).
Contienen datos que se
transmiten hacia o desde el
dispositivo.
Extrado de las transparencias de Tiempo Real de Juan
Antonio de la Puente (DIT/UPM)
Por ejemplo, el registro de control y
estado de un convertidor analgico-
digital con 64 canales de entrada
podra tener esta estructura:
Bits Funcin
0 Arranca
1-5 No utilizados
6 Interrupcin permitida
7 Terminado
8-13 Canal
14 No utilizado
15 Error
SISTEMAS DE TIEMPO REAL
258
EJ EMPLO
E C T I A
M
MUX
A/D
LCI
14 13 8 5 1 15 12 11 0
BUS DEL SISTEMA
RC 8#176562# RD 8#176560#
6 bits
12 bits
16 bits 16 bits
INTERRUPCION
Vector: 8#100#
0
1
63

SISTEMAS DE TIEMPO REAL


259
EJ EMPLO
package ADC_Devi ce_Dr i ver is
Bi t s : constant := 16;
Max_Measur e : constant : = 2**Bi t s - 1;
type Channel is range 0 . . 63;
subtype Measur ement is I nt eger range 0 . . Max_Measur e;
procedure Read ( C : Channel ;
M : out Measur ement ) ;
Conver si on_Er r or : exception;
private
for Channel ' Si ze use 6;
end ADC_Devi ce_Dr i ver ;
SISTEMAS DE TIEMPO REAL
260
EJ EMPLO
with Ada. I nt er r upt s; use Ada. I nt er r upt s;
with Ada. I nt er r upt s. Names; use Ada. I nt er r upt s. Names;
with Syst em; use Syst em;
with Syst em. St or age_El ement s; use Syst em. St or age_El ement s;
package body ADC_Devi ce_Dr i ver is
Bi t s_I n_Wor d : constant : = 16;
Wor d : constant : = 2;
type Fl ag is ( Down, Set ) ;
for Fl ag use ( Down => 0, Set => 1) ;
for Fl ag' Si ze use 1;
type Cont r ol _Regi st er is
record
St ar t : Fl ag;
I _Enabl e : Fl ag;
Done : Fl ag;
Chan : Channel ;
Er r or : Fl ag;
end record;
SISTEMAS DE TIEMPO REAL
261
EJ EMPLO
pragma Pack( Cont r ol _Regi st er ) ;
for Cont r ol _Regi st er use
record
St ar t at 0*Wor d range 0. . 0;
I _Enabl e at 0*Wor d range 6. . 6;
Done at 0*Wor d range 7. . 7;
Chan at 0*Wor d range 8. . 13;
Er r or at 0*Wor d range 15. . 15;
end record;
for Cont r ol _Regi st er ' Si ze use Bi t s_I n_Wor d;
for Cont r ol _Regi st er ' Al i gnment use Wor d;
for Cont r ol _Regi st er ' Bi t _Or der use Low_Or der _Fi r st ;
SISTEMAS DE TIEMPO REAL
262
EJ EMPLO
type Dat a_Regi st er is range 0. . Max_Measur e;
for Dat a_Regi st er ' Si ze use Bi t s_I n_Wor d;
for Dat a_Regi st er ' Al i gnment use Wor d;
Cont r ol _Reg_Addr ess : constant Addr ess: = To_Addr ess( 8#150002#) ;
Dat a_Reg_Addr ess : constant Addr ess: = To_Addr ess( 8#150000#) ;
ADC_Pr i or i t y : constant I nt er r upt _Pr i or i t y : = 31;
Cont r ol _Reg : Cont r ol _Regi st er ;
for Cont r ol _Reg' Addr ess use Cont r ol _Reg_Addr ess;
Dat a_Reg : Dat a_Regi st er ;
for Dat a_Reg' Addr ess use Dat a_Reg_Addr ess;
SISTEMAS DE TIEMPO REAL
263
EJ EMPLO
protected I nt er r upt _I nt er f ace is
entry Read ( C : Channel ; M : out Measur ement ) ;
private
entry Done ( C : Channel ; M : out Measur ement ) ;
procedure Handl er ;
pragma At t ach_Handl er ( Handl er , I NTADC) ;
pragma I nt er r upt _Pr i or i t y( ADC_Pr i or i t y) ;
I nt er r upt _Occur r ed : Bool ean : = Fal se;
Next _Request : Bool ean : = Tr ue;
end I nt er r upt _I nt er f ace;
SISTEMAS DE TIEMPO REAL
264
EJ EMPLO
protected body I nt er r upt _I nt er f ace is
entry Read ( C : Channel ; M : out Measur ement ) when Next _Request is
begin
Cont r ol _r eg : = ( St ar t => Set ,
I _Enabl e => Set ,
Done => Down,
Chan => Channel ( C) ,
Er r or => Down) ;
I nt er r upt _Occur r ed : = Fal se;
Next _Request : = Fal se;
requeue Done;
end Read;
SISTEMAS DE TIEMPO REAL
265
EJ EMPLO
procedure Handl er is
begin
I nt er r upt _Occur r ed : = Tr ue;
end Handl er ;
entry Done( C: Channel ; M: out Measur ement ) when I nt er r upt _Occur r ed is
begin
Next _Request : = Tr ue;
if Cont r ol _r eg. Done = Set and Cont r ol _r eg. Er r or = Down then
M : = Measur ement ( Dat a_Reg) ;
else
raise Conver si on_Er r or ;
end if;
end Done;
end I nt er r upt _I nt er f ace;
SISTEMAS DE TIEMPO REAL
266
EJ EMPLO
procedure Read ( C : Channel ; M : out Measur ement ) i s
begin
for I in 1. . 3 loop
begin
ADC_I nt er f ace. Read( C, M) ;
return;
exception
when Conver si on_Er r or => null;
end;
end loop;
raise Conver si on_Er r or ;
end Read;
end ADC_Devi ce_Dr i ver ;
SISTEMAS DE TIEMPO REAL
267
SISTEMAS DE TIEMPO REAL
TOLERANCIA A FALLOS.
EXCEPCIONES
SISTEMAS DE TIEMPO REAL
268
INTRODUCCIN
En un sistema Tiempo Real no es
permisible:
Finalizacin inesperada
Bloqueos
Salidas errneas
Dos aproximaciones complementarias
para obtener sistemas fiables:
Prevencin de fallos
Tolerancia a fallos
Dos tipos de fallos:
Fallos en el sistema de control
Fallos en el sistema controlado
Causas principales de fallos (sist.
control):
Errores en el desarrollo del
software
Fallos en las unidades de
procesamiento
Interferencias en el subsistema de
comunicaciones
SISTEMAS DE TIEMPO REAL
269
CONCEPTOS DE TOLERANCIA A FALLOS
FALLO ERROR FRACASO
Tipos de fallos:
Fallos transitorios (p.e. interferencias electro-magnticas)
Fallos permanentes (p.e. un error de diseo en un programa)
Fallos intermitentes (p.e. un componente sensible a la temperatura)
Un sistema evoluciona por un conjunto de estados:
Internos
Externos (apreciable desde el exterior)
SISTEMAS DE TIEMPO REAL
270
CONCEPTOS DE TOLERANCIA A FALLOS
Comportamiento
Observable
FRACASO
FALLO
Interno
ERROR
SISTEMAS DE TIEMPO REAL
271
CONCEPTOS DE TOLERANCIA A FALLOS
ERROR: Estado interno no especificado de un sistema
FRACASO: Estado externo no especificado de un sistema
Aproximaciones para conseguir un sistema fiable, esto es, sin fracasos:
Prevencin de fallos
Tolerancia a fallos
SISTEMAS DE TIEMPO REAL
272
PREVENCIN DE FALLOS
Dos fases:
Evitacin de fallos durante la construccin del sistema. Con respecto al
software:
Especificacin de requisitos rigurosa o formal
Uso de metodologas de diseo probadas
Uso de lenguajes que faciliten la modularidad y abstraccin de datos
Uso de herramientas CASE que faciliten el manejo de la complejidad del
software
Eliminacin de los fallos introducidos en el software, generalmente
mediante tests del sistema. Problemas:
Un test slo muestra la presencia de fallos, no su ausencia
No tests en condiciones reales
SISTEMAS DE TIEMPO REAL
273
TOLERANCIA A FALLOS
Diversos grados de tolerancia a fallos:
Tolerancia a fallos completa
Tolerancia con degradacin
Parada segura
Tolerancia a fallos redundancia
Redundancia: incorporacin de elementos extras (redundantes) no
necesarios en funcionamiento normal.
Redundancia esttica: los componentes redundantes operan siempre
incluso sin fallos (p.e. programacin N-versin)
Redundancia dinmica: los componentes redundantes operan cuando
hay un fallo (p.e. bloques de recuperacin, excepciones)
SISTEMAS DE TIEMPO REAL
274
PROGRAMACIN N-VERSIN
Un componente tolerante a fallos est compuesto por:
N versiones independientes de un programa con las mismas
especificaciones (N 3)
Un controlador
Independencia:
Desarrollo: diferentes lenguajes de programacin, diferentes entornos
de desarrollo, diferentes programadores
Ejecucin: las versiones no comunican entre s
Funcionamiento:
Cada diseo se comunica nicamente con el controlador
Cada diseo emite un resultado (voto)
El controlador compara los votos y elige el resultado ms votado
SISTEMAS DE TIEMPO REAL
275
PROGRAMACIN N-VERSIN
Versin 1
Versin 2 Versin 3
CONTROL
SISTEMAS DE TIEMPO REAL
276
REDUNDANCIA DINMICA
Los componentes redundantes actuan nicamente cuando se ha detectado
un fallo. Fases:
Deteccin del error
Evaluacin del dao
Recuperacin del error
Tratamiento del fallo
Deteccin del error. Dos clases de tcnicas:
Deteccin por el entorno donde se ejecuta la aplicacin ("hardware",
soporte "run-time"). Deteccin implcita.
Deteccin por la propia aplicacin mediante chequeos. Deteccin
explcita.
i f not CONDI CI ON_REQUERI DA t hen
ERROR ; end i f ;
SISTEMAS DE TIEMPO REAL
277
REDUNDANCIA DINMICA
Recuperacin del error. Dos aproximaciones diferentes:
Recuperacin hacia adelante: se intenta continuar desde un estado
errneo realizando correcciones selectivas en dicho estado.
Recuperacin hacia atrs: se restaura un estado correcto (punto de
recuperacin) anterior a la ocurrencia del error. Generalmente se
contina utilizando un procedimiento alternativo al que ha fallado.
...
ERROR
Proc. alternativo
Hacia adelante
SISTEMAS DE TIEMPO REAL
278
BLOQUES DE RECUPERACIN
Ensure {t est de acept aci on}by
{modul o pr i mar i o}
else by
{modul o al t er nat i vo}
else by
{modul o al t er nat i vo}

else by
{modul o al t er nat i vo}
else error
Pto.
recuperacin
Mod? Test
Siguiente
mdulo
Reestablece
estado
Pto.
recuperacin
si si
no
no
FRACASO
SISTEMAS DE TIEMPO REAL
279
PROBLEMAS
Problemas en la programacin N-versin y en los bloques de recuperacin:
Costos de desarrollo grandes: ambas aproximaciones requieren
algoritmos alternativos
La programacin N-versin requiere N veces los recursos de una
versin. La recuperacin del estado y la ejecucin de una alternativa,
en los bloques de recuperacin, son actividades costosas
Tolerancia a fallos del sistema de control, no del sistema controlado
No existen actualmente lenguajes de tiempo real que presenten
primitivas de soporte para estas tcnicas.
SISTEMAS DE TIEMPO REAL
280
EXCEPCIONES
Caractersticas:
Redundancia dinmica
Recuperacin hacia delante
Deteccin de un error

Levantamiento de una excepcin

Ejecucin de un manejador de la excepcin
SISTEMAS DE TIEMPO REAL
281
EXCEPCIONES
Peticin
servicio
Respuesta
normal
Excepciones
de interfase
Excepciones
de fracaso
Vuelta servicionormal
Excepciones
internas
Actividad
normal
Manejadores
de excepciones
Peticin
servicio
Respuesta
normal
Excepciones
de fracaso
Excepciones
de interfase
SISTEMAS DE TIEMPO REAL
282
DOMINIO DEL MANEJ ADOR DE UNA EXCEPCIN
Dentro de un programa puede haber varios manejadores de una misma
excepcin.
Cada uno tiene un dominio: si la excepcin se levanta en ese dominio el
manejador correspondiente se activa.
Lenguaje orientado a bloques dominio = bloque
SISTEMAS DE TIEMPO REAL
283
EXCEPCIONES. MODELOS.
Modelo de reanudacin (PEARL)
P Q
Manejador Ex
Ex
SISTEMAS DE TIEMPO REAL
284
EXCEPCIONES. MODELOS.
Modelo de terminacin (Ada, CHILL)
P Q
Manejador Ex
Ex
SISTEMAS DE TIEMPO REAL
285
PROPAGACIN DE EXCEPCIONES
Qu sucede si se levanta una excepcin en un bloque donde no existe
manejador para ella?
Dos aproximaciones:
Enlace esttico: en tiempo de compilacin se establece un enlace entre
excepcin-contexto y su manejador
Enlace dinmico: bsqueda de un manejador a lo largo de la cadena
de invocadores del bloque propagacin
SISTEMAS DE TIEMPO REAL
286
PROPAGACIN DE EXCEPCIONES
Propagacin
Propagacin
explcita
P Q R
Ei
Mi
P Q R
Mi
Mi Mi
raise
raise
Ei
SISTEMAS DE TIEMPO REAL
287
SISTEMAS DE TIEMPO REAL
PROGRAMACIN
SECUENCIAL. ADA95
SISTEMAS DE TIEMPO REAL
288
CUESTIONES BSICAS
Ada95 es un lenguaje de la familia del Pascal
Lxico:
No hay distinciones entre maysculas y minsculas.
Los identificadores pueden contener cualquier nmero de caracteres.
Puede utilizarse el carcter "_" en los identificadores para hacerlos ms
legibles:

Los comentarios empiezan con "--" y van hasta el final de la lnea
Ej empl o_de_i dent i f i cador
SISTEMAS DE TIEMPO REAL
289
TIPOS DE DATOS
Ada es un lenguaje fuertemente tipado. No se pueden copiar valores de un
tipo en variables de otro.
Creacin de tipos
Desde cero
Basndose en otros
Subtipo restriccin de un cierto tipo base.
Tipo derivado copia (posiblemente restringida) de un tipo base.
Los subtipos de un mismo tipo son compatibles. No as los derivados.
Tipos predefinidos:
integer, positive, ..., float
boolean
character
SISTEMAS DE TIEMPO REAL
290
TIPOS DE DATOS
Elementales
Access
Scalar
Discrete
Enumeration
Integer
Signed
Modular
Real
Fixed
Decimal
Ordinary
Floating
Compuestos
Array
Record
Protected
Task
SISTEMAS DE TIEMPO REAL
291
TIPOS DISCRETOS
Son los enteros, enumerables, boolean y character.
Tipos enteros
Predefinidos: integer y dos subtipos:
Es mejor usar tipos especficos:
Operaciones predefinidas con los tipos enteros: + - * / rem mod abs **
subt ype NATURAL
i s i nt eger r ange 0. . i nt eger ' l ast ;
subt ype POSI TI VE
i s i nt eger r ange 1. . i nt eger ' l ast ;
t ype I NDI CE i s r ange 0. . 128 ;
subt ype I NDI CE_POSI TI VO
i s I NDI CE r ange 1. . 128 ; - - der i vado
t ype OTRO_I NDI CE i s new I NDI CE ;
SISTEMAS DE TIEMPO REAL
292
TIPOS DISCRETOS
Tipos enumerables
Ejemplo de uso
t ype DI MENSI ON i s ( X, Y, Z) ;
t ype MAP i s ( X, Y) ;
subt ype SUPERFI CI E
i s DI MENSI ON r ange X. . Y;
t ype PROY i s new DI MENSI ON r ange X. . Y;
- - di st i nt o t i po
decl ar e
D : DI MENSI ON ;
S : SUPERFI CI E ;
P : PROY ;
begi n
D : = S ; - - l egal
S : = D ; - - l egal , puede dar pr obs.
P : = D ; - - i l egal
P : = PROY( D) ; - - l egal , conver si on
end ;
SISTEMAS DE TIEMPO REAL
293
TIPOS DISCRETOS
Tipo boolean
Las operaciones predefinidas son: not and or xor
Tambin hay operadores relacionales: = /= < <= > >=
Y un operador de pertenencia, in, que se aplica a tipos discretos:
Tipo carcter
Comprende todos los caracteres ASCII
Tambin hay tiras de caracteres.
'C' es un carcter. "C" es una tira de un solo carcter.
t ype bool ean i s ( f al se, t r ue) ;
I i n 0. . 10
X i n POSI TI VE
D i n X. . Y
SISTEMAS DE TIEMPO REAL
294
TIPOS REALES
En los sistemas de control es necesario utilizar valores reales. Hay dos
formas de representar estos valores:
Nmeros con coma flotante:
Se representan como M*R
E
Tiene una precisin relativa al tamao del nmero (M longitud finita)
Son adecuados para realizar clculos en los cuales
no se necesiten resultados exactos
Coma fija, nmeros con escala
Se representan como V*S
Tiene una precisin absoluta determinada
Son adecuados para representar valores analgicos en el computador
En Ada95 se pueden definir ambas formas de reales.
SISTEMAS DE TIEMPO REAL
295
TIPOS REALES
Coma flotante: El tipo float est predefinido, pero es mejor definir tipos
especficos:
Tipos coma fija (con escala): No hay ningn tipo de coma fija
predefinido.
Los valores del tipo ESCALA son: -100.00, -99.95,
Las operaciones predefinidas son:
Coma flotante: + - * / abs **
Coma fija: + - * / abs
Funciones matemticas en paquetes.
t ype REAL
i s di gi t s 8 r ange - 1. 0E18. . 1. 0E18;
subt ype REAL_1 i s REAL di gi t s 2;
subt ype REAL_2 i s REAL
r ange 0. 0. . 1000. 0;
t ype ESCALA
i s del t a 0. 05 r ange - 100. 00. . 100. 00;
SISTEMAS DE TIEMPO REAL
296
TIPOS ESTRUCTURADOS
Array
Agregados
MAX: const ant i nt eger : = 10;
t ype T_LECTURA
i s ar r ay ( 0. . MAX- 1) of f l oat ;
TAMAGNO: const ant i nt eger : = MAX- 1;
t ype T_CONMUTADORES i s
ar r ay ( 0. . TAMAGNO, 0. . TAMAGNO) of bool ean;
LECTURA: T_LECTURA;
CONMUTADORES: T_CONMUTADORES;
LECTURA( 1) : = 2. 5 ;
LECTURA : = ( 2. 5, 1. 0, 1. 0, 1. 0, 0. 0,
0. 0, 0. 0, 0. 0, 0. 0, 0. 0) ;
LECTURA : = ( 1 => 2. 5,
2. . 4 => 1. 0,
ot her s => 0. 0) ;
LECTURA ( 1. . 3) : = LECTURA ( 5. . 7) ;
SISTEMAS DE TIEMPO REAL
297
TIPOS ESTRUCTURADOS
Registros
Agregados
t ype T_DI A i s new i nt eger r ange 1. . 31;
t ype T_MES i s new i nt eger r ange 1. . 12;
t ype T_AGNO
i s new i nt eger r ange 1900. . 2050;
t ype FECHA i s
r ecor d
DI A: T_DI A : = 1 ;
MES: T_MES : = 1 ;
AGNO: Y_AGNO ;
end r ecor d;
decl ar e
F: FECHA;
begi n
F. AGNO : = 1990 ;
F: = ( 1, 3, 1990) ;
F: = ( AGNO => 1992, DI A => 1, MES => 4) ;
end ;
SISTEMAS DE TIEMPO REAL
298
OBJ ETOS DINMICOS
Los tipos acceso permiten acceder a objetos dinmicos.
t ype NODO;
t ype ENLACE i s access NODO;
t ype NODO i s r ecor d
VALOR: i nt eger ;
SI GUI ENTE: ENLACE ;
end r ecor d;

V: i nt eger ;
NUEVO: ENLACE;
begi n

NUEVO : = new NODO ;


NUEVO. VALOR : = V ;
NUEVO. SI GUI ENTE : = nul l ; - - por def ect o

end;
- - NUEVO. al l es l o apunt ado por el access NUEVO
SISTEMAS DE TIEMPO REAL
299
ESTRUCTURAS DE CONTROL
Secuencia
Bloques
Siempre se puede poner un bloque en lugar de una instruccin.La parte
declarativa (constantes, variables, tipos, subprogramas, paquetes y
tareas) y la de excepciones son optativas.
i nst r ucci on;
i nst r ucci on;

i nst r ucci on;


decl ar e
<par t e decl ar at i va>
begi n
<secuenci a de i nst r ucci ones>
except i on
<manej ador es de excepci ones>
end;
decl ar e
TEMP: i nt eger : = A ;
begi n
A : = B ;
B : = TEMP ;
end ;
SISTEMAS DE TIEMPO REAL
300
ESTRUCTURAS DE CONTROL
Seleccin
i f A / = 0 t hen
i f B/ A > 10 t hen
MAYOR : = t r ue ;
el se
MAYOR : = f al se ;
end i f ;
end i f ;
- - t ambi en el si f , and t hen
case ORDEN i s
when ' A' | ' a' => ACCI ON1 ;
when ' b' => ACCI ON2 ;
when ' x' . . ' z' => ACCI ON3 ;
when ot her s => nul l ;
end case ;
SISTEMAS DE TIEMPO REAL
301
ESTRUCTURAS DE CONTROL
Iteracin
f or I i n 0. . 9 l oop - - I l ocal al bucl e
A( I ) : = I ; - - no se puede modi f i car
end l oop ;
whi l e CONDI CI ON l oop
ACCI ON ;
end l oop ;
l oop
ACCI ON_1 ;
exi t when CONDI CI ON ;
ACCI ON_2 ;
end l oop ;
l oop
ACCI ON ;
end l oop ;
SISTEMAS DE TIEMPO REAL
302
SUBPROGRAMAS
Son los procedimientos y las funciones.
Modos de los parmetros: in, out e in out
Ejemplo:
Un parmetro in se compota como una constante local cuyo valor es
del parmetro real.
Un parmetro out se comporta como una variable a la que slo se le
puede asignar valor. Este valor se copia al parmetro real.
Un parmetro in out se comporta como una variable cuyo valor inicial
es del parmetro real, y cuyo valor final se vuelve a copiar al mismo.
El modo por defecto es in.
pr ocedur e CUADRATI CA ( A, B, C: i n f l oat ;
R1, R2: out f l oat ;
OK : out bool ean) ;
SISTEMAS DE TIEMPO REAL
303
SUBPROGRAMAS
Procedimientos
Se puede declarar una especificacin y despus el cuerpo, o
directamente ste.
pr ocedur e CUADRATI CA ( A, B, C: i n f l oat ;
R1, R2: out f l oat ;
OK : out bool ean) i s
z: f l oat ;
begi n
Z: = B*B - 4. 0*A*C ;
i f Z < 0. 0 or A = 0. 0 t hen
OK: = f al se;
R1 : = 0. 0 ;
R2 : = 0. 0 ;
r et ur n ;
end i f ;
OK : = t r ue ;
R1 : = ( - B + SQRT( Z) ) / ( 2. 0*A) ;
R2 : = ( - B - SQRT( Z) ) / ( 2. 0*A) ;
end CUADRATI CA;
SISTEMAS DE TIEMPO REAL
304
SUBPROGRAMAS
Los procedimientos se invocan de la forma habitual:
Hay otras formas. Ejemplos:
En Ada, todos los subprogramas son reentrantes y se pueden llamar
recursivamente.
CUADRATI CA( 1. 0, 3. 0, 2. 0, X, Y, VALE) ;
t ype AJ USTE i s ( ABI ERTO, CERRADO) ;
t ype VALVULA i s r ange 1. . 10 ;
pr ocedur e AJ USTAR( VALVULA_N: VALVULA ;
POSI CI ON: AJ USTE : = CERRADO) ;

- - l l amada nor mal


AJ USTAR( 6, ABI ERTO) ;
- - par met r o por def ect o
AJ USTAR( 3) ;
- - not aci n nombr ada
AJ USTAR( POSI CI ON => ABI ERTO ;
VALVULA_N => 9) ;

SISTEMAS DE TIEMPO REAL


305
SUBPROGRAMAS
Funciones
Son semejantes a los procedimientos
La invocacin se hace de forma habitual:
Las formas de llamadas de los procedimientos son vlidas tambin
para las funciones.
f unct i on MI NI MO ( X, Y: i nt eger )
r et ur n i nt eger i s
begi n
i f X > Y t hen
r et ur n Y;
el se
r et ur n X ;
end i f ;
end MI NI MO ;
C : = MI NI MO( A, B) ;
SISTEMAS DE TIEMPO REAL
306
GRANDES PROGRAMAS. FACILIDADES DEL LENGUAJ E
Grandes programas => Descomposicin modular
Mdulo: es un coleccin de objetos y operaciones relacionados entre s.
En Ada95 los mdulos se denominan paquetes (packages).
La estructura de mdulos del Ada95 permite utilizar algunas tcnicas que
facilitan el desarrollo de programas grandes:
Ocultamiento de informacin, tipos abstractos de datos
Compilacin separada
Reutilizacin del Software
Programacin orientada a objeto
SISTEMAS DE TIEMPO REAL
307
OCULTACIN DE LA INFORMACIN
Un paquete permite controlar la visibilidad de sus objetos. Un paquete
tiene dos partes:
Especificacin: Contiene las declaraciones y especificaciones que son
visibles fuera del paquete (define su interfase).
Cuerpo: Contiene los detalles de implementacin que no son visibles
fuera del paquete.
package nombr e_paquet e i s
- - decl ar aci ones vi si bl es
pr i vat e
- - decl ar aci on t i pos pr i vados
end nombr e_paquet e ;
package body nombr e_paquet e i s
- - codi go y dat os ocul t os
begi n
- - codi go de i ni ci al i zaci on
end nombr e_paquet e ;
SISTEMAS DE TIEMPO REAL
308
TIPOS ABSTRACTOS DE DATOS
Tipo abstracto de datos: es un tipo de datos definido nicamente por las
operaciones que se pueden efectuar con objetos del tipo.
Ada:
Especificacin: declaracin del tipo + operaciones
Cuerpo: implementacin operaciones
Tipo privado: es un tipo visible en la especificacin de un paquete pero su
implementacin est oculta. Operaciones predefinidas: asignacin,
comparaciones de igualdad y no igualdad.
Tipo privado limitado: no tiene ninguna operacin predefinida, slo se le
pueden aplicar las explcitamente definidas en la especificacin del
paquete.
SISTEMAS DE TIEMPO REAL
309
EJ EMPLO TAD COLA

package COLAS i s
t ype COLA i s l i mi t ed pr i vat e ;
pr ocedur e I NI CI AR( C: i n out COLA) ;
f unct i on VACI A( C: COLA) r et ur n bool ean ;
pr ocedur e METER( C: i n out COLA ;
E: ELEMENTO) ;
pr ocedur e SACAR( C: i n out COLA ;
E: ELEMENTO) ;
pr i vat e
t ype NODO ;
t ype ENLACE i s access NODO ;
t ype NODO i s r ecor d
CONTENI DO: ELEMENTO ;
SI GUI ENTE: ENLACE ;
end r ecor d ;
t ype COLA i s r ecor d
PRI MERO: ENLACE : = nul l ;
ULTI MO: ENLACE : = nul l ;
end r ecor d
end COLAS ;
SISTEMAS DE TIEMPO REAL
310
EJ EMPLO TAD COLA
package body COLAS i s
pr ocedur e I NI CI AR( C: i n out COLA) i s begi n end I NI CI AR;
f unct i on VACI A( C: COLA) r et ur n bool ean i s begi n end VACI A;
pr ocedur e METER( C: i n out COLA ; E: ELEMENTO) i s
NUEVO: ENLACE;
begi n
NUEVO: = new NODO' ( CONTENI DO => E, SI GUI ENTE => nul l ) ;
i f VACI A( C) t hen
C. PRI MERO: = NUEVO ;
el se
C. ULTI MO. SI GUI ENTE: = NUEVO ;
end i f ;
C. ULTI MO: = NUEVO ;
end METER ;
pr ocedur e SACAR( C: i n out COLA ; E: out ELEMENTO) i s
begi n end SACAR;
end COLAS;
SISTEMAS DE TIEMPO REAL
311
EJ EMPLO TAD COLAS

wi t h COLAS ;
pr ocedur e ej empl o i s
COLA_1: COLAS. COLA ;
COLA_2: COLAS. COLA ;
X, Y: ELEMENTO ;
begi n
COLAS. I NI CI AR ( COLA_1) ;
COLAS. I NI CI AR ( COLA_2) ;

COLAS. METER ( COLA_1, X) ;

i f not COLAS. VACI A( COLA_2) t hen


COLAS. SACAR( COLA_2, Y) ;
end i f ;

end ej empl o ;
SISTEMAS DE TIEMPO REAL
312
COMPILACIN SEPARADA
Un programa grande puede ser dividido en unidades de compilacin, que
se pueden compilar por separado:
Especificacin de paquetes
Cuerpo de paquetes (primero hay que compilar la especificacin)
Subprogramas (procedimientos y funciones)
Una de las unidades de compilacin (un procedimiento) hace el papel de
programa principal.
Ada95 no tiene un constructor especfico para el programa principal.
El procedimiento principal no tiene parmetros.
SISTEMAS DE TIEMPO REAL
313
COMPILACIN SEPARADA
La dependencia entre unidades se indica con la clusula with.
with hace visibles las declaraciones del paquete a las que se refiere.
Se puede aadir use => no es preciso anteponer el nombre del mdulo al
del objeto referenciado.
package PLANI FI CADOR i s
- - especi f i caci n
end PLANI FI CADOR ;
wi t h COLAS ; use COLAS ;
package body PLANI FI CADOR i s
- - cuer po con r ef er enci as a l as
- - oper aci ones del paquet e COLA

METER( COLA_1, X) ;

end PLANI FI CADOR ;


SISTEMAS DE TIEMPO REAL
314
REUTILIZACIN DEL SOFTWARE
Reutilizacin de componentes de software => mejora productividad y
calidad.
Tipado inconveniente. Cmo hacer colas que no dependan del tipo de
elemento? --> procedimientos, funciones o paquetes genricos
Se pueden crear ejemplares para cada tipo especfico ELEMENTO:
gener i c
t ype ELEMENTO i s pr i vat e ;
package COLAS i s
t ype COLA i s l i mi t ed pr i vat e ;

pr ocedur e METER( C: i n out COLA ; E: ELEMENTO) ;


pr i vat e

end COLAS ;
decl ar e
package COLAS_DE_ENTEROS i s new COLAS( ELEMENTO => i nt eger ) ;
use COLAS_DE_ENTEROS ;
begi n end ;
SISTEMAS DE TIEMPO REAL
315
ENTRADAS SALIDAS. ASPECTOS BSICOS
Las operaciones de entradas/salidas en Ada95 estn definidas en paquetes
estndar.
Algunos genricos permiten su instanciacin para diversos tipos.
Los paquetes estndar del Ada95 son:
Ada.Direct_IO: Paquete genrico de acceso directo a ficheros binarios
Ada.Sequential_IO: Paquete genrico de acceso secuencial a ficheros
binarios
Ada.Text_IO: Paquete para ficheros de texto y entradas-salidas por terminal.
Contiene seis paquetes genricos especficos:
Integer_IO
Float_IO
Fixed_IO
Enumeration_IO
Modular_IO
Decimal_IO
SISTEMAS DE TIEMPO REAL
316
ENTRADAS SALIDAS. ASPECTOS BSICOS
Un fichero en Ada95 es un objeto con los siguientes atributos:
Name: nombre del fichero en el sistema
Mode: IN_FILE, OUT_FILE, APPEND_FILE o INOUT_FILE.
Form: String para atributos dependientes del sistema
State: Open, Closed
Index: Posicion en el fichero
Size: Nmero de objetos almacenados en el fichero
SISTEMAS DE TIEMPO REAL
317
ENTRADAS SALIDAS. ASPECTOS BSICOS
Mode: devuelve el modo del
fichero
Form: devuelve Form
Index: devuelve el Index
Is_Open: True si el fichero est
abierto
End_of_File: True si Index
apunta al ltimo elemento
Operaciones bsicas:
Create
Delete
Open
Close
Reset
Read, Get (In_File o Inout_File)
Write, Put (Out_File,
Append_File or Inout_File)
Name: devuelve el nombre del
fichero
SISTEMAS DE TIEMPO REAL
318
FICHEROS DE ACCESO SECUENCIAL
with Ada. i o_except i ons;
generic
type el ement _t ype( <>) is private;
package Ada. Sequent i al _i o is
type f i l e_t ype is limited private;
type f i l e_mode is ( I n_Fi l e, Out _Fi l e, Append_Fi l e) ;
- - Gest i n de f i cher os
procedure cr eat e( f i l e: in out f i l e_t ype;
mode: in f i l e_mode: =out _f i l e;
name: in st r i ng: =" " ; f or m: in st r i ng: =" " ) ;
procedure open( f i l e: in out f i l e_t ype;
mode: in f i l e_mode;
name: in st r i ng; f or m: in st r i ng: =" " ) ;
procedure cl ose( f i l e: in out f i l e_t ype) ;
procedure del et e( f i l e: in out f i l e_t ype) ;
procedure r eset ( f i l e: in out f i l e_t ype;
mode: in f i l e_mode) ;
procedure r eset ( f i l e: in out f i l e_t ype) ;
function mode( f i l e: in f i l e_t ype) return f i l e_mode;
function name( f i l e: in f i l e_t ype) return st r i ng;
function f or m( f i l e: in f i l e_t ype) return st r i ng;
function i s_open( f i l e: in f i l e_t ype) return bool ean;
. . .
SISTEMAS DE TIEMPO REAL
319
FICHEROS DE ACCESO SECUENCIAL
Hay otro paquete similar para ficheros de acceso directo: Ada.Direct_IO.
Primitivas adicionales:
. . .
- - Oper aci ones de ent r ada/ sal i da
procedure r ead( f i l e: in f i l e_t ype; i t em: out el ement _t ype) ;
procedure wr i t e( f i l e: in f i l e_t ype; i t em: in el ement _t ype) ;
function end_of _f i l e( f i l e: in f i l e_t ype) return bool ean;
- - Excepci ones
. . .
private
- - Dependi ent e de l a i mpl ement aci n
end Ada. sequent i al _i o;
pr ocedur e SET_I NDEX ( FI LE, TO) ;
f unct i on I NDEX ( Fi l e) r et ur n POSI TI VE_COUNT; ;
f unct i on SI ZE ( Fi l e) r et ur n COUNT;
SISTEMAS DE TIEMPO REAL
320
FICHEROS DE TEXTO
with Ada. i o_except i ons;
package Ada. t ext _i o is
type f i l e_t ype is limited private;
type f i l e_mode is ( i n_f i l e, out _f i l e, append_f i l e) ;
- - N de col umna en una l nea y de l nea
- - en una pgi na, y f or mat os
type count is range 0. . dep_implementacin;
subtype posi t i ve_count is count range 1. . count ' l ast ;
unbounded: constant count : =0;
subtype f i el d is i nt eger range 0. . dep_implementacin;
subtype number _base is i nt eger range 2. . 16;
type t ype_set is ( l ower _case, upper _case) ;
- - Gest i n de f i cher os: cr eat e, open, cl ose, del et e, r eset , mode,
- - name, f or me i s_open son i gual es que en sequent i al _i o
- - Cont r ol de f i cher os de e/ s por def ect o
procedure set _out put ( f i l e: in f i l e_t ype) ;
function st andar d_out put return f i l e_t ype;
function cur r ent _out put return f i l e_t ype;
- - Lo mi smo par a ent r ada, con ' i nput '
. . .
SISTEMAS DE TIEMPO REAL
321
FICHEROS DE TEXTO
. . .
- - Especi f i caci n de l ongi t udes de l nea y pgi na
procedure set _l i ne_l engt h( t o: in count ) ;
procedure set _page_l engt h( t o: in count ) ;
function l i ne_l engt h return count ;
function page_l engt h return count ;
- - Lo mi smo con un par met r o f i l e
- - Cont r ol de col umnas, l neas y pgi nas
procedure new_l i ne( spaci ng: in posi t i ve_count : =1) ;
procedure ski p_l i ne( spaci ng: in posi t i ve_count : =1) ;
function end_of _l i ne return bool ean;
procedure new_page;
procedure ski p_page;
function end_of _page return bool ean;
function end_of _f i l e return bool ean;
procedure set _col ( t o: in posi t i ve_count ) ;
procedure set _l i ne( t o: in posi t i ve_count ) ;
function col return posi t i ve_count ;
function l i ne return posi t i ve_count ;
function page return posi t i ve_count ;
- - Lo mi smo con un par met r o f i l e
. . .
SISTEMAS DE TIEMPO REAL
322
FICHEROS DE TEXTO
. . .
- - Ent r ada/ sal i da de car act er es
procedure get ( i t em: out char act er ) ;
procedure put ( i t em: in char act er ) ;
- - Lo mi smo con un par met r o f i l e
- - Ent r ada/ sal i da de cadenas de car act er es
procedure get ( i t em: out st r i ng) ;
procedure put ( i t em: in st r i ng) ;
procedure get _l i ne( i t em: out st r i ng; l ast : out nat ur al ) ;
procedure put _l i ne( i t em: in st r i ng) ;
- - Lo mi smo con un par met r o f i l e
. . .
SISTEMAS DE TIEMPO REAL
323
FICHEROS DE TEXTO
Entradas-salidas de nmeros enteros: subpaquete genrico.
. . .
- - Paquet e genr i co de e/ s de ent er os
generic
type numis range <>;
package i nt eger _i o is
def aul t _wi dt h: f i el d: =num' wi dt h;
def aul t _base: number _base: =10;
procedure get ( i t em: out num; wi dt h: in f i el d: =0) ;
procedure put ( i t em: in num;
wi dt h: in f i el d: = def aul t _wi dt h;
base: in number _base: = def aul t _base) ;
- - Lo mi smo con un par met r o f i l e
procedure get ( f r om: in st r i ng;
i t em: out num;
l ast : out posi t i ve) ;
procedure put ( t o: out st r i ng;
i t em: in num;
base: in number _base: = def aul t _base) ;
end i nt eger _i o;
. . .
SISTEMAS DE TIEMPO REAL
324
FICHEROS DE TEXTO
Entradas-salidas de nmeros de tipo mdulo: subpaquete genrico.
. . .
- - Paquet e genr i co de e/ s de ent er os modul o
generic
type numis mod <>;
package modul ar _i o is
- - Lo mi smo que en I nt eger _I O
end modul ar _i o ;
. . .
SISTEMAS DE TIEMPO REAL
325
FICHEROS DE TEXTO
Entradas-salidas de nmeros coma flotante: subpaquete genrico.
. . .
- - Paquet e genr i co de e/ s de t i pos r eal es( de coma f l ot ant e)
generic
type numis digits <>;
package f l oat _i o is
def aul t _f or e: f i el d: =2;
def aul t _af t : f i el d: =num' di gi t s- 1;
def aul t _exp: f i el d: =3;
procedure get ( i t em: out num; wi dt h: in f i el d: =0) ;
procedure put ( i t em: in num; f or e: in f i el d: =def aul t _f or e) ;
- - Lo mi smo con un par met r o f i l e
procedure get ( f r om: in st r i ng; i t em: out num; l ast : out posi t i ve) ;
procedure put ( t o: out st r i ng;
i t em: in num;
af t : in f i el d: =def aul t _af t ;
exp: in f i el d: =def aul t _exp) ;
end f l oat _i o;
. . .
SISTEMAS DE TIEMPO REAL
326
FICHEROS DE TEXTO
Entradas-salidas de nmeros coma fija: subpaquete genrico.
. . .
- - Paquet e genr i co de e/ s de t i pos r eal es
- - ( de coma f i j a)
generic
type numis delta <>;
package f i xed_i o is
def aul t _f or e: f i el d: =num f or e;
def aul t _af t : f i el d: =num' af t ;
def aul t _exp: f i el d: =0;
- - Lo mi smo que en Fl oat _I O
end f i xed_i o ;
. . .
SISTEMAS DE TIEMPO REAL
327
FICHEROS DE TEXTO
Entradas-salidas de tipos enumerados: subpaquete genrico.
. . .
- - Mdul o genr i co de e/ s de t i pos def i ni dos por enumer aci n
generic
type enumis ( <>) ;
package enumer at i on_i o is
def aul t _wi dt h: f i el d: =0;
def aul t _set t i ng: t ype_set : =upper _case;
procedure get ( i t em: out enum) ;
procedure put ( i t em: in enum; wi dt h: in f i el d: = def aul t _wi dt h;
set : in t ype_set : = def aul t _set t i ng) ;
- - Lo mi smo con un par met r o f i l e
procedure get ( f r om: in st r i ng; i t em: out enum; l ast : out posi t i ve) ;
procedure put ( t o: out st r i ng; i t em: in enum;
set : in t ype_set : = def aul t _set t i ng) ;
end enumer at i on_i o;
- - Excepci ones
. . .
private
- - Dependi ent e de l a i mpl ement aci n
end Ada. t ext _i o;
SISTEMAS DE TIEMPO REAL
328
FICHEROS DE TEXTO
Los paquetes genricos de Text_IO deben ser instanciados:
wi t h Ada. Text _I O;
pr ocedur e Demo_Text _I O i s
t ype I NDEX i s r ange 0. . 100;
t ype PROBABI LI TY i s di gi t s 6 r ange 0. 0. . 1. 0;
t ype SENSOR_READI NG i s del t a 0. 01 r ange - 2. 0. . 2. 0;
t ype COI N i s ( Penny, Ni ckel , Di me, Quar t er ) ;
- - i nst ant i at i on of I / O packages
package I NDEX_I O i s new Ada. Text _I O. I nt eger _I O( I NDEX) ;
package PROBABI LI TY_I O i s new Ada. Text _I O. Fl oat _I O( PROBABI LI TY) ;
package SENSOR_I O i s new Ada. Text _I O. Fi xed_I O( SENSOR_READI NG) ;
package COI N_I O i s new Ada. Text _I O. Enumer at i on_I O( Coi n) ;
- - l et s make t he I O oper at i on di r ect l y vi si bl e
- - t o avoi d a f ul l scope speci f i cat i on
use Text _I O, I NDEX_I O, PROBABI LI TY_I O, SENSOR_I O, COI N_I O;
- - The Put and Get oper at i ons ar e now over
- - l oaded wi t h t he t ypes: Char act er , St r i ng, . . .
SISTEMAS DE TIEMPO REAL
329
FICHEROS DE TEXTO
I : I ndex : = 0;
P : Pr obabi l i t y : = 0. 0;
S : Sensor _Readi ng : = 0. 0;
C : Coi n : = Penny;
begi n
Put _Li ne( " Ent er an I ndex: " ) ;
Get ( I ) ;
Put ( " You ent er ed: " ) ; Put ( I ) ; New_Li ne;
Put _Li ne( " Ent er a Pr oabi l i t y: " ) ;
Get ( P) ;
Put ( " You ent er ed: " ) ; Put ( P) ; New_Li ne;
Put _Li ne( " Ent er a Sensor _Readi ng: " ) ;
Get ( S) ;
Put ( " You ent er ed: " ) ; Put ( S) ; New_Li ne;
Put _Li ne( " Ent er a Coi n: " ) ;
Get ( C) ;
Put ( " You ent er ed: " ) ; Put ( C) ; New_Li ne;
end Demo_Text _I O;
SISTEMAS DE TIEMPO REAL
330
SISTEMAS DE TIEMPO REAL
PROGRAMACIN
CONCURRENTE. ADA95
SISTEMAS DE TIEMPO REAL
331
ASPECTOS BSICOS
Primitivas de concurrencia en Ada95
Procesos task
Monitores protected
Comunicacin sncrona: cita extendida entry
Seleccin indeterminista select
Otros:
Requeue
Asynchronous transfert of control
SISTEMAS DE TIEMPO REAL
332
TAREAS
En Ada95:
Procesos = tareas (task)
El manejo de tareas en Ada95 es realizado por un ncleo (RTS) que
forma parte del entorno de ejecucin.
Una tarea tiene dos partes:
Especificacin: declaracin de los puntos de entrada
Cuerpo
SISTEMAS DE TIEMPO REAL
333
UN EJ EMPLO
Dos bucles de control: temperatura y nivel
Especificacin:
wi t h TI POS_BASI COS; use TI POS_BASI COS;
wi t h ENT_SAL; use ENT_SAL;
wi t h METODOS_CONTROL ;
use METODOS_CONTROL ;
pr ocedur e SI STEMA_DE_CONTROL i s
t ask CONTROL_DE_TEMPERATURA ;
t ask CONTROL_DE_NI VEL ;
SISTEMAS DE TIEMPO REAL
334
UN EJ EMPLO
t ask body CONTROL_DE_TEMPERATURA i s
T: TEMPERATURA ;
C: AJ USTE_DE_CALEFACTOR ;
begi n
l oop
- - cada per i odo de muest r eo
MEDI R( T) ;
CALCULAR_ACCI ON( T, C) ;
GENERAR( C) ; MOSTRAR( T) ;
end l oop ;
end CONTROL_DE_TEMPERATURA ;
t ask body CONTROL_DE_NI VEL i s

begi n

end CONTROL_DE_NI VEL ;


begi n - - SI STEMA_DE_CONTROL
nul l ;
end SI STEMA_DE_CONTROL ;
Cuerpo:
SISTEMAS DE TIEMPO REAL
335
TIPOS TAREA
Es til poder definir grupos de tareas similares.
La declaracin de un tipo tarea permite disponer de una plantilla para
crear tareas similares.
Ejemplo: Control del brazo de un robot cartesiano
pr ocedur e CONTROL_DE_ROBOT i s
t ype DI MENSI ON i s ( X, Y, Z) ;
t ask t ype CONTROL i s

end CONTROL ;
SI STEMA_DE_CONTROL:
ar r ay ( DI MENSI ON) of CONTROL ;
SISTEMAS DE TIEMPO REAL
336
TIPOS TAREA
t ask body CONTROL i s
EJ E: DI MENSI ON ;
POSI CI ON: i nt eger ;
DESPLAZAMI ENTO: i nt eger ;
begi n
- - obt ener el val or de EJ E
POSI CI ON: = 0 ;
l oop
CALCULAR_DESPLAZAMI ENTO( EJ E, DESPLAZAMI ENTO) ;
POSI CI ON : = POSI CI ON+DESPLAZAMI ENTO ;
MOVER_BRAZO( EJ E, POSI CI ON) ;
end l oop ;
end CONTROL ;
begi n - - CONTROL_DE_ROBOT
f or I i n DI MENSI ON l oop
- - pasar el val or I
- - SI STEMA_DE_CONTROL( I )
end l oop ;
end CONTROL_DE_ROBOT;

SISTEMAS DE TIEMPO REAL
337
TAREAS DINMICAS
Se pueden crear dinmicamente tareas con un tipo acceso y el operador
new.
Las variables de acceso a tarea se pueden copiar y comparar
decl ar e
t ask t ype T ;
t ype REF_T i s access T ;
P: REF_T ;
Q: REF_T : = new T ; - - Q. al l ar r anca
begi n
P: = new T ; - - P. al l ar r anca
Q: = P ; - - l a ant er i or se
- - vuel ve anoni ma
end ;
SISTEMAS DE TIEMPO REAL
338
DEPENDENCIA, ACTIVACIN, TERMINACIN
Toda tarea depende de una unidad progenitora.
Las tareas estticas:
Dependen del bloque, subprograma o cuerpo de tarea donde se
declaran.
Se activan justo antes de empezar la ejecucin de la unidad
progenitora.
Una unidad no puede terminar hasta que terminen todas las tareas que
dependen de ella.
Las tareas dinmicas siguen reglas diferentes:
No dependen de la unidad donde se crean, sino de la unidad donde se
declara el tipo acceso.
Se activan cuando se ejecuta el operador new.
Pueden seguir existiendo despus de que termine la unidad donde se
crean.
SISTEMAS DE TIEMPO REAL
339
DEPENDENCIA, ACTIVACIN, TERMINACIN
Ejemplo:
Una tarea puede terminar cuando:
Completa la ejecucin de su cuerpo.
Se pone de acuerdo con otras tareas para terminar conjuntamente.
Es abortada.
decl ar e
t ask t ype T ;
t ype REF_T i s access T ;
begi n

decl ar e
X: T ;
Y: REF_T : = new T;
begi n

end ; - - esper a que t er mi ne X


- - Y. al l puede cont i nuar
end ; - - esper a que t er mi ne Y. al l
SISTEMAS DE TIEMPO REAL
340
COMUNICACIN ENTRE TAREAS
Cita extendida (rendez-vous)
Algunas caractersticas:
Si varias tareas invocan a un mismo punto de entrada de otra tarea, se
colocan en una cola (asociada a ese punto de entrada)
FIFO
Prioridad
Otras ...
La tarea que invoca un punto de entrada tiene que identificar a la tarea
a la cual llama. Esta ltima no identifica a la tarea llamadora (puede ser
cualquiera)
A veces conviene que una tarea llamadora se identifique a s misma
mediante algn parmetro
Se pueden definir familias de puntos de entrada
SISTEMAS DE TIEMPO REAL
341
COMUNICACIN ENTRE TAREAS
Volvemos al ejemplo del control del brazo de un robot cartesiano: ejemplo
de entrada de inicializacin.
pr ocedur e CONTROL_DE_ROBOT i s
t ype DI MENSI ON i s ( X, Y, Z) ;
t ask t ype CONTROL i s
ent r y I NI CI AR( D: DI MENSI ON) ;
end CONTROL ;
SI STEMA_DE_CONTROL: ar r ay ( DI MENSI ON) of CONTROL ;
SISTEMAS DE TIEMPO REAL
342
COMUNICACIN ENTRE TAREAS
t ask body CONTROL i s
EJ E: DI MENSI ON ;
POSI CI ON: i nt eger ;
DESPLAZAMI ENTO: i nt eger ;
begi n
accept I NI CI AR( D: DI MENSI ON) do
EJ E: = D ;
end I NI CI AR ;
POSI CI ON: = 0 ;
l oop
CALCULAR_DESPLAZAMI ENTO( EJ E, DESPLAZAMI ENTO) ;
POSI CI ON : = POSI CI ON+DESPLAZAMI ENTO ;
MOVER_BRAZO( EJ E, POSI CI ON) ;
end l oop ;
end CONTROL ;
begi n - - CONTROL_DE_ROBOT
f or I i n DI MENSI ON l oop
SI STEMA_DE_CONTROL( I ) . I NI CI AR( I ) ;
end l oop ;
end CONTROL_DE_ROBOT;

SISTEMAS DE TIEMPO REAL
343
SELECCIN DE LLAMADAS
A veces no es posible prever en qu orden se van a invocar los distintos
puntos de llamada de una tarea (por ejemplo en tareas servidoras -->
proporcionan un servicio). Por ejemplo un monitor:
Alternancia estricta
entre MODIFICAR y
EXAMINAR
t ask VARI ABLE_COMUN i s
ent r y MODI FI CAR( VALOR: TI PO) ;
ent r y EXAMI NAR( VALOR: out TI PO) ;
end VARI ABLE_COMUN ;
t ask body VARI ABLE_COMUN i s
VARI ABLE: TI PO ;
begi n
l oop
accept MODI FI CAR( VALOR: TI PO) do
VARI ABLE: = VALOR ;
end MODI FI CAR ;
accept EXAMI NAR( VALOR: out TI PO) do
VALOR: = VARI ABLE ;
end EXAMI NAR ;
end l oop ;
end VARI ABLE_COMUN ;
SISTEMAS DE TIEMPO REAL
344
SELECCIN DE LLAMADAS
Seleccin indeterminista:
Es una estructura de control
indeterminista que slo puede ir en el
cuerpo de una tarea:
Cada alternativa es una instruccin
select que puede ir seguida de una
secuencia de instrucciones.
Funcionamiento:
Si se recibe una llamada a una de
las entradas alternativas, se
acepta y despus se termina el
select.
Si se reciben llamadas a varias
entradas simultneamente, se
acepta una de ellas de acuerdo a
la poltica de colas establecida y
despus se termina el select.
Si no hay llamadas pendientes, la
tarea espera en el select hasta
que llegue una.
sel ect
<al t er nat i va_1>
or
<al t er nat i va_2>
or

end sel ect ;


SISTEMAS DE TIEMPO REAL
345
SELECCIN DE LLAMADAS
El ejemplo del
monitor arreglado:
La alternativa terminate se selecciona cuando el progenitor est
completado y todas las tareas hermanas o dependientes estn
completadas o esperando en un select con terminate. En este caso
terminan todas simultneamente.
t ask body VARI ABLE_COMUN i s
VARI ABLE: TI PO ;
begi n
l oop
sel ect
accept MODI FI CAR( VALOR: TI PO) do
VARI ABLE: = VALOR ;
end MODI FI CAR ;
or
accept EXAMI NAR( VALOR: out TI PO)
do VALOR: = VARI ABLE ;
end EXAMI NAR ;
or
t er mi nat e ;
end sel ect ;
end l oop ;
end VARI ABLE_COMUN ;
SISTEMAS DE TIEMPO REAL
346
OTRAS FORMAS DE ALTERNATIVAS
Alternativas con else:
Si no se puede aceptar ninguna alternativa, se ejecuta la parte else.
Hay tambin llamadas condicionales a puntos de entrada:
Si la llamada no es aceptada inmediatamente, se abandona y se ejecuta la
parte else. En esta forma no puede haber alternativas.
sel ect

el se
- - secuenci a de i nst r ucci ones
end sel ect ;
sel ect
T. E( ) ;
el se
- - i nst r ucci ones
end sel ect ;
SISTEMAS DE TIEMPO REAL
347
ALTERNATIVAS GUARDADAS
A veces es necesario que alguna de las alternativas de un select se acepte
slo en determinadas condiciones.
Esto se hace poniendo una guarda:
when <condicion> =>accept <entrada> do ...
En un select con guardas, se evalan todas las guardas y slo se
consideran para la seleccin las que son ciertas (alternativas abiertas).
Una alternativa sin guarda est siempre abierta.
SISTEMAS DE TIEMPO REAL
348
ALTERNATIVAS GUARDADAS
Ejemplo: un semforo
t ask SEMAFORO i s
ent r y ESPERAR ;
ent r y AVI SAR ;
end SEMAFORO ;
t ask body SEMAFORO i s
VALOR: nat ur al : = 0 ;
begi n
l oop
sel ect
when VALOR > 0 => accept ESPERAR ;
VALOR : = VALOR - 1 ;
or
accept AVI SAR ;
VALOR : = VALOR + 1 ;
or
t er mi nat e ;
end sel ect ;
end l oop ;
end SEMAFORO ;
SISTEMAS DE TIEMPO REAL
349
PROTECTED
Tienen una semntica similar a los monitores:
Permiten controlar el acceso a datos compartidos por varios procesos
Son pasivos, a diferencia de las tareas
Ofrece tres clases de operaciones
Protected procedures: acceso en exclusin mtua a los datos protegidos
Protected functions: acceso concurrente, slo lectura, a los datos
Entries: como las procedures, pero permiten especificar barriers
(guardas).
Se pueden definir objetos y tipos protegidos (similar a las tareas).
SISTEMAS DE TIEMPO REAL
350
EJ EMPLO DE PROTECTED
gener i c
t ype Dat a_I t emi s pr i vat e ;
Mbox_si ze: posi t i ve ;
package Mai l box_Pkg i s
subt ype Dat a_I t em_Count i s i nt eger r ange 0 . . Mbox_Si ze;
subt ype Dat a_I t em_I ndex i s i nt eger r ange 1 . . Mbox_Si ze;
t ype Dat a_I t em_Ar r ay i s ar r ay( Dat a_I t em_I ndex) of Dat a_I t em;
pr ot ect ed t ype Mai l box i s
ent r y Send ( I t em: Dat a_I t em) ;
ent r y Recei ve ( I t em: out Dat a_I t em) ;
pr ocedur e Cl ear ;
f unct i on Number _I n_Box r et ur n I nt eger ;
pr i vat e
Count : Dat a_I t em_count : = 0;
Out _I ndex : Dat a_I t em_I ndex : = 1;
I n_I ndex : Dat a_I t em_I ndex : = 1;
Dat a : Dat a_I t em_Ar r ay ;
end Mai l box;
end Mai l box_Pkg;
SISTEMAS DE TIEMPO REAL
351
EJ EMPLO DE PROTECTED
package body Mai l box_Pkg i s
pr ot ect ed body Mai l box i s
ent r y Send ( I t em: Dat a_I t em) when Count < Mbox_Si ze i s
- - bl ock unt i l r oom
begi n
Dat a ( I n_I ndex ) : = I t em;
I n_I ndex : = I n_I ndex mod Mbox_si ze + 1;
Count : = Count + 1;
end Send;
ent r y Recei ve ( I t em: out Dat a_I t em) when Count > 0 i s
- - bl ock unt i l non- empt y
begi n
I t em: = Dat a( Out _I ndex ) ;
Out _I ndex : = Out _I ndex mod Mbox_Si ze + 1;
Count : = Count - 1;
end Recei ve;
SISTEMAS DE TIEMPO REAL
352
EJ EMPLO DE PROTECTED

pr ocedur e Cl ear i s
- - onl y one user i n Cl ear at a t i me
begi n
Count : = 0;
Out _I ndex : = 1;
I n_I ndex : = 1;
end Cl ear ;
f unct i on Number _I n_Box r et ur n I nt eger i s
- - many user s can check # i n Box
begi n
r et ur n Count ;
end Number _I n_Box;
end Mai l box;
end Mai l box_Pkg;
SISTEMAS DE TIEMPO REAL
353
PROTECTED
wi t h mai l box_pkg ;
pr ocedur e mp i s
package I nt eger _Mai l box_pkg i s
new Mai l box_pkg( i nt eger , 100) ;
use I nt eger _Mai l box_pkg ;
MB: Mai l box ;
i : i nt eger ;
begi n
. . .
MB. send ( 100) ;
. . .
MB. r ecei ve ( i ) ;
. . .
i f MB. Number _I n_Box > 0 t hen
. . .
end i f ;
. . .
end ;
Uso del protected
SISTEMAS DE TIEMPO REAL
354
PRIVATE ENTRIES
Existen varias razones para que una
tarea declare como privada una
entrada (no pblica):
La tarea tiene varias tareas
declaradas internamente; estas
tareas internas tienen acceso a
las entradas privadas
La entrada es usada internamente
en una primitiva requeue
La entrada tiene asociada una
interrupcin de hardware y el
programador no quiere que
ninguna otra tarea llame a esa
entrada.
Ejemplo de declaracin y uso:
pr ocedur e Apl i caci on i s
t ask Usuar i o ;
t ask Cont r ol ador i s
ent r y Lect ur a( I : out i nt eger ) ;
pr i vat e
ent r y Comi enzo ;
ent r y Compl et ado ( K: i nt eger ) ;
end Cont r ol ador ;
t ask body Usuar i o i s
. . . - - I ncl uye l l amadas
- - a Lect ur a
SISTEMAS DE TIEMPO REAL
355
REQUEUE
Existen situaciones en las cuales las guardas no son suficientes:
La aceptacin de una cita no depende nicamente del estado del
aceptador si no tambin del llamador
para aceptar o no una cita de haber un intercambio previo de informacin
Ejemplo:
t ype Request _Range i s r ange 1. . Max ;
pr ot ect ed Resour ce_Cont r ol l er i s
ent r y Al l ocat e ( R: out Resour ce;
Amount : Request _Range) ;
pr ocedur e Rel ease ( R: Resour ce ;
Amount : Request _Range) ;
pr i vat e
. . .
end Resour ce_Cont r ol l er ;
SISTEMAS DE TIEMPO REAL
356
REQUEUE
Solucin:
Entrada privada para encolar los pedidos que no pueden ser aceptados
Los pedidos son tramitados
t ype Request _Range i s r ange 1. . Max ;
pr ot ect ed Resour ce_Cont r ol l er i s
ent r y Al l ocat e ( R: out Resour ce;
Amount : Request _Range) ;
pr ocedur e Rel ease ( R: Resour ce ;
Amount : Request _Range) ;
pr i vat e
ent r y Assi gn ( R: out Resour ce;
Amount : Request _Range) ;
Fr ee: Request _Range : = Request _Range Last ;
New_Resour ces_Rel eased: Bool ean: = Fal se ;
To_Tr y: Nat ur al : = 0 ;
. . .
end Resour ce_Cont r ol l er ;
SISTEMAS DE TIEMPO REAL
357
REQUEUE

pr ot ect ed body Resour ce_Cont r ol l er i s
ent r y Al l ocat e ( R: out Resour ce;
Amount : Request _Range) when Fr ee > 0 i s
begi n
i f Amount <= Fr ee t hen
Fr ee: = Fr ee - Amount ;
- - Al l ocat e
el se
r equeue Assi gn ;
end i f ;
end Al l ocat e ;
SISTEMAS DE TIEMPO REAL
358
REQUEUE
ent r y Assi gn ( R: out Resour ce;
Amount : Request _Range)
when New_Resour ces_Rel eased i s
begi n
To_Tr y : = To_Tr y - 1 ;
i f To_Tr y = 0 t hen
New_Resour ces_Rel eased : = Fal se ;
end i f ;
i f Amonut <= Fr ee t hen
Fr ee : = Fr ee - Amount ;
- - al l ocat e
el se
r equeue Assi gn ;
end i f ;
end Assi gn ;
SISTEMAS DE TIEMPO REAL
359
REQUEUE
pr ocedur e Rel ease ( R: Resour ce ;
Amount : Request _Range) i s
begi n
Fr ee : = Fr ee + Amount ;
- - Fr ee r esour ces
i f Assi gn count > 0 t hen
To_Tr y : = Assi gn Count ;
New_Resour ces_Rel eased: = t r ue ;
end i f ;
end Rel ease ;
end Resour ce_Cont r ol l er ;
SISTEMAS DE TIEMPO REAL
360
ASYNCHRONOUS TRANSFER OF CONTROL
codigo_abortable es ejecutado si la llamada no puede ser aceptada
inmediatamente
Si la llamada puede ser aceptada antes de que haya finalizado la
ejecucin de codigo_abortable, dicha ejecucin es abortada
Si codigo_abortable acaba su ejecucin entonces la llamada es
cancelada
sel ect
ent r y_cal l _st at ement
t hen abor t
codi go_abor t abl e
end sel ect ;
SISTEMAS DE TIEMPO REAL
361
ASYNCHRONOUS TRANSFER OF CONTROL
Ejemplo:
l oop
sel ect
Ter mi nal . Wai t _For _I nt er r upt ;
Ada. Text _I O. Put _Li ne( I nt er r upt ed) ;
t hen abor t
Ada. Text _I O. Put _Li ne( Ent er Command- - > ) ;
Ada. Text _I O. Get _Li ne( Command, Last ) ;
Par se_and_Pr ocess ( Command ( 1. . Last ) ) ;
end sel ect ;
end l oop;
end Pol l _Devi ce;
SISTEMAS DE TIEMPO REAL
362
SISTEMAS DE TIEMPO REAL
MEDIDA Y CONTROL DEL
TIEMPO EN ADA95
SISTEMAS DE TIEMPO REAL
363
MEDIDA DE TIEMPOS EN ADA95
En Ada hay dos paquetes predefinidos que proporcionan funciones de
reloj:
Ada.Calendar
Reloj calendario orientado a dar la fecha y la hora
Define un tipo abstracto Time
La funcin Clock da un valor de tiempo para uso externo
Los intervalos de tiempo se representan con el tipo predefinido Duration
Ada.Real_Time
Reloj de tiempo real con granularidad ms pequea
Define un tipo abstracto Time
La funcin Clock da un valor montono (durante ms de 50 aos desde el
arranque de la aplicacin)
Los intervalos de tiempo se representan con el tipo abstracto Time_Span
SISTEMAS DE TIEMPO REAL
364
MEDIDA DE TIEMPOS EN ADA95
DURATION:
Es un tipo predefinido que representa intervalos de tiempo en segundos.
Es un tipo coma fija => no se pierde precisin al sumar o restar intervalos
de tiempo:
type DURATION is delta range ;
Su precisin depende de la implementacin. Su valor, DURATION'SMALL,
no debe ser mayor de 20 ms, aunque se recomienda que no sobrepase los
50 s.
El intervalo de valores tambin depende de la implementacin. Debe poder
representar valores positivos y negativos hasta la duracin de un da:
-86400.0 .. +86400.0
SISTEMAS DE TIEMPO REAL
365
Ada.Calendar
TIME:
Representa valores de tiempo absolutos.
Es un tipo abstracto de dato especificado en un paquete predefinido
denominado CALENDAR. Este paquete incluye un reloj, cuyo valor se lee
con la funcin CLOCK, adems de operaciones con los tipos TIME y
DURATION.
package Ada. Cal endar i s
t ype TI ME i s pr i vat e ;
subt ype YEAR_NUMBER i s i nt eger r ange 1901. . 2099 ;
subt ype MONTH_NUMBER i s i nt eger r ange 1. . 12 ;
subt ype DAY_NUMBER i s i nt eger r ange 1. . 31 ;
subt ype DAY_DURATI ON i s DURATI ON r ange 0. 0. . 86400. 0 ;
f unct i on CLOCK r et ur n TI ME ;
SISTEMAS DE TIEMPO REAL
366
Ada.Calendar
f unct i on YEAR ( DATE: TI ME) r et ur n YEAR_NUMBER ;
f unct i on MONTH ( DATE: TI ME) r et ur n MONTH_NUMBER ;
f unct i on DAY ( DATE: TI ME) r et ur n DAY_NUMBER ;
f unct i on SECONDS( DATE: TI ME) r et ur n DAY_DURATI ON ;
pr ocedur e SPLI T( DATE: i n TI ME ;
YEAR: out YEAR_NUMBER ;
MONTH: out MONTH_NUMBER ;
DAY: out DAY_NUMBER ;
SECONDS: out DAY_DURATI ON) ;
f unct i on TI ME_OF( YEAR: YEAR_NUMBER ;
MONTH: MONTH_NUMBER ;
DAY: DAY_NUMBER ;
SECONDS: DAY_DURATI ON: =0. 0)
r et ur n TI ME ;
SISTEMAS DE TIEMPO REAL
367
Ada.Calendar
f unct i on "+" ( LEFT: TI ME; RI GHT: DURATI ON) r et ur n TI ME ;
f unct i on "+" ( LEFT: DURATI ON; RI GHT: TI ME) r et ur n TI ME ;
f unct i on "- " ( LEFT: TI ME; RI GHT: DURATI ON) r et ur n TI ME ;
f unct i on "- " ( LEFT: TI ME; RI GHT: TI ME) r et ur n DURATI ON;
f unct i on "<" ( LEFT, RI GHT: TI ME) r et ur n bool ean ;
f unct i on "<=" ( LEFT, RI GHT: TI ME) r et ur n bool ean ;
f unct i on ">" ( LEFT, RI GHT: TI ME) r et ur n bool ean ;
f unct i on ">=" ( LEFT, RI GHT: TI ME) r et ur n bool ean ;
TI ME_ERROR: except i on ;
pr i vat e
- - depende de l a i mpl ement aci on
end;
SISTEMAS DE TIEMPO REAL
368
Ada.Real_Time
En el anexo Real-Time Systems se define un paquete para manejo del
tiempo en aplicaciones de tiempo real: tiempo monotnico y reloj de alta
resolucin
package Ada. Real _Ti me i s
t ype Ti me i s pr i vat e;
Ti me_Fi r st : const ant Ti me;
Ti me_Last : const ant Ti me;
Ti me_Uni t : const ant : = i mpl ement at i on- def i ned- r eal - number ;
t ype Ti me_Span i s pr i vat e;
Ti me_Span_Fi r st : const ant Ti me_Span;
Ti me_Span_Last : const ant Ti me_Span;
Ti me_Span_Zer o : const ant Ti me_Span;
Ti me_Span_Uni t : const ant Ti me_Span;
Ti ck : const ant Ti me_Span;
f unct i on Cl ock r et ur n Ti me;
SISTEMAS DE TIEMPO REAL
369
Ada.Real_Time
f unct i on "+" ( Lef t : Ti me; Ri ght : Ti me_Span) r et ur n Ti me;
f unct i on "+" ( Lef t : Ti me_Span; Ri ght : Ti me) r et ur n Ti me;
f unct i on "- " ( Lef t : Ti me; Ri ght : Ti me_Span) r et ur n Ti me;
f unct i on "- " ( Lef t : Ti me; Ri ght : Ti me) r et ur n Ti me_Span;
f unct i on "<" ( Lef t , Ri ght : Ti me) r et ur n Bool ean;
f unct i on "<="( Lef t , Ri ght : Ti me) r et ur n Bool ean;
f unct i on ">" ( Lef t , Ri ght : Ti me) r et ur n Bool ean;
f unct i on ">="( Lef t , Ri ght : Ti me) r et ur n Bool ean;
f unct i on "+" ( Lef t , Ri ght : Ti me_Span) r et ur n Ti me_Span;
f unct i on "- " ( Lef t , Ri ght : Ti me_Span) r et ur n Ti me_Span;
f unct i on "- " ( Ri ght : Ti me_Span) r et ur n Ti me_Span;
f unct i on "*" ( Lef t : Ti me_Span; Ri ght : I nt eger ) r et ur n Ti me_Span;
f unct i on "*" ( Lef t : I nt eger ; Ri ght : Ti me_Span) r et ur n Ti me_Span;
SISTEMAS DE TIEMPO REAL
370
Ada.Real_Time
f unct i on "/ " ( Lef t , Ri ght : Ti me_Span) r et ur n I nt eger ;
f unct i on "/ " ( Lef t : Ti me_Span; Ri ght : I nt eger )
r et ur n Ti me_Span;
f unct i on "abs"( Ri ght : Ti me_Span) r et ur n Ti me_Span;
f unct i on "<" ( Lef t , Ri ght : Ti me_Span) r et ur n Bool ean;
f unct i on "<="( Lef t , Ri ght : Ti me_Span) r et ur n Bool ean;
f unct i on ">" ( Lef t , Ri ght : Ti me_Span) r et ur n Bool ean;
f unct i on ">="( Lef t , Ri ght : Ti me_Span) r et ur n Bool ean;
SISTEMAS DE TIEMPO REAL
371
Ada.Real_Time
f unct i on To_Dur at i on ( TS : Ti me_Span) r et ur n Dur at i on;
f unct i on To_Ti me_Span ( D : Dur at i on) r et ur n Ti me_Span;
f unct i on Nanoseconds ( NS : I nt eger ) r et ur n Ti me_Span;
f unct i on Mi cr oseconds ( US : I nt eger ) r et ur n Ti me_Span;
f unct i on Mi l l i seconds ( MS : I nt eger ) r et ur n Ti me_Span;
t ype Seconds_Count i s r ange i mpl ement at i on- def i ned;
pr ocedur e Spl i t ( T : i n Ti me;
SC : out Seconds_Count ;
TS : out Ti me_Span) ;
f unct i on Ti me_Of ( SC : Seconds_Count ;
TS : Ti me_Span) r et ur n Ti me;
pr i vat e
. . . - - not speci f i ed by t he l anguage
end Ada. Real _Ti me;
SISTEMAS DE TIEMPO REAL
372
RETARDOS Y TIME-OUTS
Los retardos en Ada95 se pueden realizan mediante dos instrucciones:
delay <duracion> ;
delay until <time> ;
Calendar.Time
Ada.Real_Time.Time
SISTEMAS DE TIEMPO REAL
373
RETARDOS Y TIME-OUTS
En Ada95, las relaciones con el entorno toman la forma de llamadas o
aceptaciones de puntos de entrada.
Conviene limitar el tiempo durante el cual una tarea puede estar
suspendida llamando, aceptando o en seleccin de entradas.
La limitacin del tiempo de aceptacin o seleccin se hace mediante una
seleccin temporizada:
NOTA: el select puede tener como mximo: una parte else o una
alternativa terminate o una o varias alternativas delay.
sel ect
accept <ent r ada>
or

or
del ay <dur aci on> ; - - del ay unt i l <t i me> ;
<i nst r ucci ones>
end sel ect ;
SISTEMAS DE TIEMPO REAL
374
TIME-OUT
t ask body VARI ABLE_COMUN i s
CONTENI DO: VALOR ;
DEFECTO: const ant VALOR : = ;
begi n
- - si en 10s no se modi f i ca => def ect o
sel ect
accept MODI FI CAR ( V: VALOR) do
CONTENI DO: = V ;
end MODI FI CAR ;
or
del ay 10. 0
CONTENI DO: = DEFECTO ;
end sel ect ;
l oop
sel ect
accept MODI FI CAR( VALOR: TI PO) do
VARI ABLE: = VALOR ;
end MODI FI CAR ;
or
. . .
end VARI ABLE_COMUN ;
SISTEMAS DE TIEMPO REAL
375
TIME-OUT
Llamadas temporizadas
Las llamadas temporizadas sirven para limitar el tiempo de espera en las
llamadas a puntos de entrada.
Un ejemplo:
t ask body CONTROL i s
begi n
l oop

sel ect
CAPTADOR. MEDI R( Y) ;
- - aqui puede haber una secuenci a
- - de i nst r ucci ones
or
del ay 0. 10 ;
r ai se CAPTADOR_AVERI ADO ;
end sel ect ;

end l oop ;
end CONTROL ;
SISTEMAS DE TIEMPO REAL
376
RETARDOS Y TIME-OUTS
En Ada95 se puede limitar el tiempo de ejecucin de un cdigo mediante
un Asynchronous Transfer of Control:
sel ect
del ay Ti me_out ;
<i nst r ucci ones>
t hen abor t
codi go_con_pl azo_de_r espuest a ;
end sel ect ;
SISTEMAS DE TIEMPO REAL
377
PRIORIDADES
En Ada95 se asigna una prioridad a una tarea (o protected) o a todas las
tareas (protected) de un tipo incluyendo un pragma PRIORITY en la
especificacin correspondiente:
t ask T i s
pr agma PRI ORI TY( <pr i or i dad>) ;

end T ;
t ask t ype TT i s
pr agma PRI ORI TY( <pr i or i dad>) ;

end TT ;
SISTEMAS DE TIEMPO REAL
378
PRIORIDADES
La prioridad es una expresin esttica del tipo predefinido
SYSTEM.PRIORITY, que a su vez es un subintervalo del tipo integer.
El intervalo de valores depende de la implementacin. Los valores ms
altos corresponden a las tareas ms prioritarias.
subtype Any_Pr i or i t y is I nt eger range implementation-defined ;
subtype Pr i or i t y is Any_Pr i or i t y range
Any_Pr i or i t y f i r st . . implementation-defined ;
subtype I nt er r upt _Pr i or i t y is Any_Pr i or i t y range
Pr i or i t y l ast . . Any_Pr i or i t y l ast ;
SISTEMAS DE TIEMPO REAL
379
PRIORIDADES
Propiedades del modelo de prioridades de Ada95:
La planificacin es expulsiva.
Las prioridades son estticas aunque se pueden cambiar
explcitamente en tiempo de ejecucin.
Todas las tareas del mismo tipo tienen la misma prioridad.
Existen pragmas que pueden configurar la poltica de planificacin del
RTS
SISTEMAS DE TIEMPO REAL
380
POLITICAS DE PLANIFICACIN
pragma Task_Dispatching_Policy (policy_identifier)
Permite la poltica de planificacin del RTS
FIFO_Within_Priorities es la nica poltica requerida y es la de defecto
Los compiladores pueden implementar otras polticas
pragma Locking_Policy (policy_identifier)
Poltica de interaccin entre las tareas y los objetos protegidos
Ceiling_Locking est predefinida
Los compiladores pueden implementar otras polticas
pragma Queuing_Policy (policy_identifier)
Especifica como se encolan las llamadas a un entry
FIFO_Queuing y Priority_Queuing estn predefinidas
Los compiladores pueden implementar otras polticas
SISTEMAS DE TIEMPO REAL
381
PRIORIDADES
En Ada95 se puede cambiar de forma dinmica las prioridades de las
tareas:
wi t h Syst em;
wi t h Ada. Task_I dent i f i cat i on;
package Ada. Dynami c_Pr i or i t i es i s
pr ocedur e Set _Pr i or i t y
( Pr i or i t y: i n Syst em. Any_Pr i or i t y;
T : i n Ada. Task_I dent i f i cat i on. Task_I D : =
Ada. Task_I dent i f i cat i on. Cur r ent _Task) ;
f unct i on Get _Pr i or i t y
( T : Ada. Task_I dent i f i cat i on. Task_I D : =
Ada. Task_I dent i f i cat i on. Cur r ent _Task)
r et ur n Syst em. Any_Pr i or i t y;
end Ada. Dynami c_Pr i or i t i es;
SISTEMAS DE TIEMPO REAL
382
SISTEMAS DE TIEMPO REAL
PROGRAMACIN DE
BAJ O NIVEL
SISTEMAS DE TIEMPO REAL
383
Mecanismos de bajo nivel en Ada95
Ada 95 tiene varios mecanismos de bajo nivel que permiten acceder a
registros, direcciones e interrupciones
clusulas de representacin
permiten especificar la representacin de tipos y objetos en la arquitectura
de hardware
atributos de representacin (tamao, direccin, alineacin)
representacin de tipos enumerados
representacin de registros
manejadores de interrupciones
permiten asociar una interrupcin a un procedimiento protegido
subprogramas en lenguaje de mquina
permiten un control total sobre la arquitectura de hardware
SISTEMAS DE TIEMPO REAL
384
Paquete System
En cada implementacin de un compilador Ada95 hay un paquete
predefinido (SYSTEM) que incluye la definicin de caractersticas
dependientes de la mquina, importantes para la programacin bajo nivel.
package Syst emi s
pr agma Pr eel abor at e( Syst em) ;
t ype Name i s i mpl ement at i on- def i ned- enumer at i on- t ype;
Syst em_Name : const ant Name : = i mpl ement at i on- def i ned;
- - Syst em- Dependent Named Number s:
Mi n_I nt : const ant : = r oot _i nt eger ' Fi r st ;
Max_I nt : const ant : = r oot _i nt eger ' Last ;
. . .
Ti ck : const ant : = i mpl ement at i on- def i ned;
- - St or age- r el at ed Decl ar at i ons:
t ype Addr ess i s i mpl ement at i on- def i ned;
Nul l _Addr ess : const ant Addr ess;
. . .
SISTEMAS DE TIEMPO REAL
385
Paquete System
- - Addr ess Compar i son:
f unct i on " <" ( Lef t , Ri ght : Addr ess) r et ur n Bool ean;
f unct i on " <=" ( Lef t , Ri ght : Addr ess) r et ur n Bool ean;
. . .
- - Ot her Syst em- Dependent Decl ar at i ons:
t ype Bi t _Or der i s ( Hi gh_Or der _Fi r st , Low_Or der _Fi r st ) ;
Def aul t _Bi t _Or der : const ant Bi t _Or der ;
- - Pr i or i t y- r el at ed decl ar at i ons ( see D. 1) :
subt ype Any_Pr i or i t y i s I nt eger r ange i mpl ement at i on- def i ned;
subt ype Pr i or i t y i s Any_Pr i or i t y
r ange Any_Pr i or i t y' Fi r st . . i mpl ement at i on- def i ned;
subt ype I nt er r upt _Pr i or i t y i s Any_Pr i or i t y
r ange Pr i or i t y' Last +1 . . Any_Pr i or i t y' Last ;
Def aul t _Pr i or i t y : const ant Pr i or i t y : =
( Pr i or i t y' Fi r st + Pr i or i t y' Last ) / 2;
pr i vat e
. . . - - not speci f i ed by t he l anguage
end Syst em;
SISTEMAS DE TIEMPO REAL
386
ATRIBUTOS DE REPRESENTACION
Para cualquier objeto, unidad de programa, etiqueta o entry X:
Xaddress
Para cualquier tipo o subtipo, u objeto X:
Xsize (en bits)
Para cualquier tipo acceso o subtipo T:
Tstorage_size (en unidades de memoria)
Para cualquier tipo tarea u objeto tarea T:
Tstorage_size (en unidades de memoria)
Para cualquier componente C de un registro R:
R.Cposition (en unidades de memoria)
R.Cfirst_bit (en bits)
R.Clast_bit (en bits)
SISTEMAS DE TIEMPO REAL
387
CLAUSULAS DE REPRESENTACIN
Direccin del objeto:

Longitud (en bits) de los objetos de un tipo:
Representacin de un tipo enumerado:
Alineacin
DATOS: REGI STRO_DE_DATOS;
f or DATOS Addr ess use
Syst em. St or age_El ement s. To_Addr ess( 16#C200#) ;
t ype CANAL i s r ange 0. . 63;
f or CANAL' SI ZE use 6;
t ype I NDI CADOR i s ( SI , NO) ;
f or I NDI CADOR use ( SI => 1, NO => 0) ;
f or REGI STRO_DE_DATOS Al i gnment use 2;
SISTEMAS DE TIEMPO REAL
388
CLAUSULAS DE REPRESENTACION
Estructura de un registro
t ype REGI STRO_DE_CONTROL i s
r ecor d
ARRANCA : I NDI CADOR;
I NTERRUMPE: I NDI CADOR;
TERMI NADO : I NDI CADOR;
ENTRADA : CANAL;
ERROR : I NDI CADOR;
end r ecor d;
f or REGI STRO_DE_CONTROL use
r ecor d
ARRANCA at 0 r ange 0. . 0 ;
I NTERRUMPE at 0 r ange 6. . 6 ;
TERMI NADO at 0 r ange 7. . 7 ;
ENTRADA at 1 r ange 0. . 5 ;
ERROR at 1 r ange 7. . 7 ;
end r ecor d;
SISTEMAS DE TIEMPO REAL
389
CONVERSIN DE TIPOS
A veces hay que interpretar un dato de un tipo como si fuera de otro tipo,
copiando directamente su representacin binaria.
Se hace con un procedimiento genrico predefinido:
gener i c
t ype SOURCE ( <>) i s l i mi t ed pr i vat e ;
t ype TARGET ( <>) i s l i mi t ed pr i vat e ;
f unct i on Ada. Unchequed_Conver si on( S: SOURCE) r et ur n TARGET ;
SISTEMAS DE TIEMPO REAL
390
CONVERSIN DE TIPOS
Ejemplo:
wi t h unchecked_conver si on, t ext _i o ;
pr ocedur e pr u_t o_wor d i s
t ype byt e i s r ange 0. . 16#FF# ;
f or byt e' si ze use 8 ;
t ype t wo_byt e i s r ecor d
L: byt e ;
H: byt e ;
end r ecor d ;
pr agma pack ( t wo_byt e) ;
f or t wo_byt e' si ze use 16 ;
t ype wor d i s r ange 0. . 16#FFFF# ;
f or wor d' si ze use 16 ;
package wi o i s new t ext _i o. i nt eger _i o ( wor d) ; use wi o ;
f unct i on t o_wor d i s new unchecked_conver si on ( sour ce => t wo_byt e,
t ar get => wor d) ;
begi n
put ( t o_wor d( t wo_byt e' ( 1, 1) ) ) ;
end ;
SISTEMAS DE TIEMPO REAL
391
INTERRUPCIONES
Los manejadores de interrupciones son procedimientos protegidos sin
parmetros.
Cada interrupcin tiene un identificador nico de tipo Interrupt_Id
(definido en el paquete Ada. Interrupts )
El pragma Attach_Handler especifica que un procedimiento protegido
es un manejador asociado a una interrupcin
El pragma Interrupt_Handler permite especificar que un procedimiento
protegido es un manejador, pero no lo asocia con ninguna interrupcin
la asociacin con una interrupcin se hace dinmicamente
pr agma At t ach_Handl er ( Handl er _Name, I nt er r upt ) ;
pr agma I nt er r upt _Handl er ( Handl er _Name) ;
SISTEMAS DE TIEMPO REAL
392
INTERRUPCIONES
Se puede especificar la prioridad del manejador de una interrupcin el
pragma Interrupt_Priority en la especificacin del objeto protegido
El valor de la prioridad debe pertenecer al subtipo:
System.Interrupt_Priority
pr agma I nt er r upt _Pr i or i t y ( Pr i or i t y_Val ue) ;
SISTEMAS DE TIEMPO REAL
393
INTERRUPCIONES
package Ada. I nt er r upt s is
type I nt er r upt _ I D is . . . ;
type Par amet er l ess_ Handl er is access protected procedure;
function I s_Reser ved ( I nt er r upt : I nt er r upt _ I D) return Bool ean;
function I s_At t ached ( I nt er r upt : I nt er r upt _ I D) return Bool ean;
function Cur r ent _Handl er ( I nt er r upt : I nt er r upt _ I D)
return Par amet er l ess_Handl er ;
procedure At t ach_Handl er ( New_Handl er : Par amet er l ess_ Handl er ;
I nt er r upt : I nt er r upt _ I D) ;
procedure Exchange_Handl er ( Ol d_Handl er : out Par amet er l ess_Handl er ;
New_Handl er : Par amet er l ess_ Handl er ;
I nt er r upt : I nt er r upt _I D) ;
procedure Det ach_Handl er ( I nt er r upt : I nt er r upt _ I D) ;
. . .
end Ada. I nt er r upt s;
SISTEMAS DE TIEMPO REAL
394
INTERRUPCIONES
E
j
e
m
p
l
o
pr ot ect ed body I nt er r upt _Handl er i s
pr ocedur e Handl er i s
begi n
- - Code of handl er
I nt er r upt _Ocur r ed : = t r ue ;
end ;
ent r y Wai t _f or _Event when I nt er r upt _Ocur r ed i s
begi n
. . .
I nt er r upt _Ocur r ed : = f al se ;
. . .
end ;
end ;
pr ot ect ed I nt er r upt _Handl er i s
ent r y Wai t _f or _Event ;
pr i vat e
pr ocedur e Handl er ;
pr agma At t ach_Handl er ( Handl er , I nt _I D) ;
pr agma I nt er r upt _Pr i or i t y ( ) ;
I nt er r upt _Ocur r ed : bool ean : = f al se ;
end ;
SISTEMAS DE TIEMPO REAL
395
SUBPROGRAMAS EN LENGUAJ E MAQUINA
A veces es necesario realizar algn componente de software en lenguaje
ensamblador.
En Ada95 se pueden escribir procedimientos en ensamblador de forma
controlada, utilizando un paquete predefinido denominado
MACHINE_CODE.
Las instrucciones de estos procedimientos son todas de la forma:
tipo'agregado
donde tipo es un tipo registro definido en MACHINE_CODE que representa
un formato de instruccin de mquina, y agregado es del tipo anterior.
Adems, puede haber pragmas especficos para indicar el uso de los
registros del procesador u otras caractersticas de bajo nivel.
SISTEMAS DE TIEMPO REAL
396
SUBPROGRAMAS EN LENGUAJ E MAQUINA
Ejemplo
package Syst em. Machi ne_Code i s
t ype OPERACI ON i s ( LOAD, STORE, ADD, , SETI , CLI ) ;
t ype OPERANDO i s r ange 0. . 4095 ;
f or OPERACI ON' SI ZE use 4 ;
f or OPERANDO' SI ZE use 12 ;
t ype I NSTRUCCI ON i s r ecor d
COP: OPERACI ON ;
OPR: OPERANDO ;
end r ecor d;
f or I NSTRUCCI ON use r ecor d
COP at 0 r ange 0. . 3 ;
OPR at 0 r ange 4. . 15 ;
end r ecor d;
f or I NSTRUCCI ON' SI ZE use 16 ;
end MACHI NE_CODE ;
SISTEMAS DE TIEMPO REAL
397
SUBPROGRAMAS EN LENGUAJ E MAQUINA
pr ocedur e I NHI BI R_I NTERRUPCI ONES ;
pr agma I NLI NE( I NHI BI R_I NTERRUPCI ONES) ;
pr ocedur e I NHI BI R_I NTERRUPCI ONES i s
use MACHI NE_CODE;
begi n
I NSTRUCCI ON' ( COP => CLI , OPR => 0) ;
end I NHI BI R_I NTERRUPCI ONES ;
SISTEMAS DE TIEMPO REAL
398
SUBPROGRAMAS EN OTROS LENGUAJ ES
El pragma INTERFACE permite utilizar subprogramas escritos en otros
lenguajes de programacin.
Ejemplo:
package FORTRAN_LI B i s
f unct i on SQRT( X: FLOAT) r et ur n FLOAT ;
f unct i on EXP( X: FLOAT) r et ur n FLOAT ;

pr i vat e
pr agma I NTERFACE( FORTRAN, SQRT) ;
pr agma I NTERFACE( FORTRAN, EXP) ;

end FORTRAN_LI B ;
SISTEMAS DE TIEMPO REAL
399
SISTEMAS DE TIEMPO REAL
EXCEPCIONES EN Ada95
SISTEMAS DE TIEMPO REAL
400
MODELO. DECLARACIN
Modelo de terminacin. Enlace dinmico
El tipo exception est predefinido. Se pueden declarar excepciones:
ERROR_DE_PARIDAD: exception;
FUERA_DE_LIMITES: exception;
EXC1, EXC2: exception;
Hay excepciones predefinidas:
CONSTRAINT_ERROR: Rangos, ndices, longitudes.
NUMERIC_ERROR: Divisin por cero, sobrepasamiento.
PROGRAM_ERROR: Acceso a procedimientos, mdulos, , seleccin,
STORAGE_ERROR: Variables y memoria dinmica.
TASKING_ERROR: Comunicacin y ejecucin de tareas.
SISTEMAS DE TIEMPO REAL
401
ACTIVACIN
Explcita (deteccin de errores por la aplicacin):
raise ERROR_DE_PARIDAD ;
Implcita (deteccin de errores por el entorno):
el compilador genera el cdigo para levantar las excepciones predefinidas.
SISTEMAS DE TIEMPO REAL
402
MANEJ ADOR
Manejador: se situa al final de un bloque, procedimiento o funcin, paquete
o tarea. Maneja las excepciones levantadas en o propagadas hacia ese
dominio
declare
ERROR_DE_PARI DAD: exception;
begin

if not PARI DAD ( C) then


raise ERROR_DE_PARI DAD ; end if ;

exception
when ERROR_DE_PARI DAD => ENVI AR( NACK) ;
LEER( C) ;
when NUMERI C_ERROR => raise ;
when others => HACER_ALGO;
end ;
SISTEMAS DE TIEMPO REAL
403
EJ EMPLO. CONVERSIN AD
package I O_DI GI TAL i s
t ype VALOR_DI GI TAL i s l i mi t ed pr i vat e ;
pr ocedur e LEER_VALOR ( V: out VALOR_DI GI TAL) ;
pr ocedur e SACAR_VALOR ( V: i n VALOR_DI GI TAL) ;
f unct i on CONVERTI R ( V: i n I NTEGER)
r et ur n VALOR_DI GI TAL ;
ERROR_LECTURA: except i on ;
ERROR_ESCRI TURA: except i on ;
pr i vat e
t ype VALOR_DI GI TAL i s r ange 0. . 4095;
f or VALOR_DI GI TAL' SI ZE use 12 ;
end I O_DI GI TAL ;
SISTEMAS DE TIEMPO REAL
404
EJ EMPLO. CONVERSIN AD
wi t h I O_DI GI TAL; use I O_DI GI TAL ;
t ask CONTROL i s
MAX_SATURACI ONES: const ant : = 5 ;
VECES_SATURADO: CARDI NAL: = 0;
Y, X, K, KI , KP: f l oat ;
FUERA_DE_CONTROL: except i on ;
begi n
l oop

decl ar e
ENTRADA, SALI DA: VALOR_DI GI TAL;
begi n
LEER_VALOR( ENTRADA) ;
X: = f l oat ( ENTRADA) ;
Y: = K
*
X + ;
SALI DA: = VALOR_DI GI TAL( Y) ;
- - posi bl e desbor dami ent o de SALI DA
SACAR_VALOR( SALI DA) ;
VECES_SATURADO: = 0 ;
SISTEMAS DE TIEMPO REAL
405
EJ EMPLO. CONVERSIN AD
except i on
when CONSTRAI NT_ERROR =>
i f Y>0 t hen
SACAR_VALOR( 4095) ;
el se
SACAR_VALOR( 0) ;
end i f ;
VECES_SATURADO: = VECES_SATURADO + 1 ;
i f VECES_SATURADO >= MAX_SATURACI ONES t hen
r ai se FUERA_DE_CONTROL ;
end i f ;
when ERROR_LECTURA => ;
when ERROR_ESCRI TURA => ;
end ;

end l oop ;
except i on ;
when FUERA_DE_CONTROL => ABRI R_VALVULA ;
SONAR_ALARMA ;
when ot her s => ;
end CONTROL ;
SISTEMAS DE TIEMPO REAL
406
EJ EMPLO. BLOQUES DE RECUPERACIN
Implementacin de la tcnica de los bloques de recuperacin mediante
excepciones.
wi t h r ecover y_cache;
pr ocedur e r ecover y_bl ock i s
pr i mar y_f ai l ur e, secondar y_f ai l ur e,
t er t i ar y_f ai l ur e: except i on;
r ecover y_bl ock_f ai l ur e : except i on;
t ype modul e i s ( pr i mar y, secondar y, t er t i ar y) ;
f unct i on accept ance_t est r et ur n bool ean i s
begi n
- - code f or t he accept ance t est
r et ur n t r ue;
end accept ance_t est ;
SISTEMAS DE TIEMPO REAL
407
EJ EMPLO. BLOQUES DE RECUPERACIN
pr ocedur e pr i mar y i s
begi n
- - code f or pr i mar y al gor i t hm
i f not accept ance_t est t hen
r ai se pr i mar y_f ai l ur e;
end i f ;
except i on
when pr i mar y_f ai l ur e =>
- - f or war d r ecover y t o r et ur n envi r onment
- - t o t he r equi r ed st at e
r ai se;
when ot her s =>
- - unexpect ed er r or
- - f or war d r ecover y t o r et ur n envi r onment
- - t o t he r equi r ed st at e
r ai se pr i mar y_f ai l ur e;
end pr i mar y;
SISTEMAS DE TIEMPO REAL
408
EJ EMPLO. BLOQUES DE RECUPERACIN
pr ocedur e secondar y i s
begi n
- - code f or secondar y al gor i t hm
i f not accept ance_t est t hen
r ai se secondar y_f ai l ur e;
end i f ;
except i on
when secondar y_f ai l ur e =>
- - f or war d r ecover y t o r et ur n envi r onment
- - t o t he r equi r ed st at e
r ai se;
when ot her s =>
- - unexpect ed er r or
- - f or war d r ecover y t o r et ur n envi r onment
- - t o t he r equi r ed st at e
r ai se secondar y_f ai l ur e;
end secondar y;
pr ocedur e t er t i ar y i s
begi n
. . .
end t er t i ar y;
SISTEMAS DE TIEMPO REAL
409
EJ EMPLO. BLOQUES DE RECUPERACIN
begi n
r ecover y_cache. save;
f or t r y i n modul e l oop
begi n
case t r y i s
when pr i mar y => pr i mar y; exi t ;
when secondar y => secondar y; exi t ;
when t er t i ar y => t er t i ar y;
end case;
except i on
when pr i mar y_f ai l ur e => r ecover y_cache. r est or e;
when secondar y_f ai l ur e => r ecover y_cache. r est or e;
when t er t i ar y_f ai l ur e => r ecover y_cache. r est or e;
r ai se r ecover y_bl ock_f ai l ur e;
when ot her s => r ecover y_cache. r est or e;
r ai se r ecover y_bl ock_f ai l ur e;
end;
end l oop;
end r ecover y_bl ock;

También podría gustarte