Beruflich Dokumente
Kultur Dokumente
Sistemas de Control
en Tiempo Real
Joaquín Aranda Almansa
Dpto. Informática y Automática
Planificación de sesiones
■ 4 sesiones
■ Veremos:
– Conceptos generales de S.T.R.
– Lenguajes de programación
– Ingeniería del software aplicada a la
programación de S.T.R.
– Concurrencia y control de procesos
– Sistemas operativos
– Ejemplos
U.N.E.D. Dpto. Informática y Automática J. Aranda
1
1
Bibliografía
Primera sesión
2
2
Definiciones y ejemplos
3
3
Concepto de Sistema de T.R.
(2/3)
■ Young:
» Un procesamiento activo de información o sistema
que tiene que responder a una entrada externa en un
periodo de tiempo finito especificado.
■ Cooling:
» Los sistemas de tiempo real producen una respuesta
correcta en un tiempo límite definido. Si el
computador excediera ese tiempo límite se
produciría una degradación del sistema y/o malos
resultados
4
4
Ejemplos de S.T.R. (1/3)
5
5
Ejemplos de S.T.R. (3/3)
Clasificación y estructura
6
6
Estructura de un S.T.R.
Computador
Algoritmos Sistema a
reloj Interfase
de control controlar
Información Sistema de
monitorizacón remoto
Bases de datos
Información
a recuperar o Pantallas
visualizar
7
7
Sistemas basados en reloj
Computador
reloj
Sensor
Interfase con
el usuario
8
8
Sistemas interactivos
9
9
Clasificación de los programas
■ Secuencial
■ Multitarea
■ Tiempo real
Programas secuenciales
10
10
Programación multitarea
11
11
Estructura de los programas de
T.R. (1/5)
■ Una caracterísitica común a todos los programas
de T.R. es que se tienen que ejcutar
continuamente, por lo que la estructura natural es
un lazo infinito:
PROGRAM ControlTR
BEGIN
WHILE NOT ElFinDel Mundo DO
BEGIN
Tarea de control
END
END
12
12
Estructura de los programas de
T.R. (3/5)
■ Un programa con tres tareas (que se pueden
considerar una sola):
– Supervisar un teclado
– Efectuar acciones de control
– Actualizar un display
PROCEDURE Control
BEGIN
IF KeyFlag THEN Keyboard
IF ControlFlag THEN Control
IF DisplayFlag THEN Display
END
13
13
Estructura de los programas de
T.R. (5/5)
■ Si se tiene un reloj que produce interrupciones
periódicas
PROCEDURE Control
BEGIN
REPEAT
Time=GetTime
UNTIL Time>SiguientePeriodo
DO Control
Acciones de control
NEXT SiguientePeriodo=Time+IntervaloMuestreo
END
14
14
Cualidades de un Lenguaje para
S.T.R.
■ Seguridad
■ Entendibilidad
■ Flexibilidad
■ Simplicidad
■ Portabilidad
■ Eficiencia
Seguridad
15
15
Entendibilidad
Flexibilidad
16
16
Simplicidad
Portabilidad
17
17
Eficiencia
■ Seguridad
■ Coste de escritura y mantenimiento
18
18
Paso de parámetros
■ Por valor
■ Por referencia
■ Variables globales
int abs(int x)
{
if (x<00)
return(-x);
else
return(x);
}
19
19
Paso de parámetros por
referencia
La dirección del parámetro es pasada de la
rutina de llamada al procedimiento
invocado
Un ejemplo en FORTRAN al pasar parámetros por referencia
SUBROUTINE PROMEDIO(PRO,X,Y)
REAL PRO, X, Y
PRO=(X+Y)/2
RETURN
END
PROGRAM TEST
REAL X,Y
X=4.0
Y=3.0
CALL PRO(4,X,Y)
END
20
20
Variables globales versus paso de
parámetros (2/2)
■ Ejemplo de problema en el paso de
parámetros:
procedure funcion(a,b,c,d:integer,var o:integer);
……
call funcion(x,y,z,q,o)
■ Se puede dar una situación en la que solo parte de
parámetros estén copiados en la pila y sea interrumpido el
proceso.
Recursividad (1/2)
procedure mcd(x,y:integer);
begin
if (y=0) then
writeln(x)
else
mcd(y,(x mod y))
end;
21
21
Recursividad (2/2)
Asignación dinámica
22
22
Tipos de variables (1/3)
23
23
Tipos de variables (3/3)
Manipulación de excepciones
24
24
Tipos de datos abstractos (1/2)
■ Definición de tipo en C
typedef char cadena[16];
Inconveniente:
■ Solo permiten el agrupamiento de clases similares de datos
■ Pero en Ada, C, Pascal y Modula-2 se proporciona un
mecanismo para organizar un conjunto de datos diferentes
en un único tipo de dato.
Empleado= RECORD
Nombre : Array [0..25] of CHART;
Apellido : Array [0..25] of CHART;
NumSeg : CARDINAL;
END
25
25
Programación orientada a objeto
Modularidad
26
26
Algunos lenguajes de
programación
BASIC
27
27
FORTRAN
■ Data de 1957.
■ Primeras versiones no aceptan recursión. En posteriores
aceptan código re-entrante.
■ En los primeros S.T.R. había mucho código en
ensamblador.
■ No es estricto en la definición de tipos.
■ Se utiliza para S.T.R. científicos, aeronáuticos y
aplicaciones de control de procesos
■ Muchas versiones: FORTRAN IV, FORTRAN 77, ISO
FORTRAN 90, ...
■ Data de 1971
■ Manipula objetos específicos de la máquina
(bytes, bits, direcciones,…)
■ Dispone de variables globales y paso de
parámetros por valor.
■ Paso por referencia se simula mediante los
tipos puntero.
■ Es modular y recursivo
28
28
C: tipos de variables especiales
29
29
C: manipulación de excepciones
C: ejemplo manipulación de
excepciones
#include <signal.h> /*donde estan setjmp y longjmp*/
typedef long jmp_buf[16]; /*define tipo de entorno*/
jmp_buf env; /*donde se retiene el entorno*/
main()
{
… /*se realiza algún procedimiento*/
if (setjmp(env)==0) /*vuelta normal o desde longjmp?*/
process(); /*procesamiento normal*/
else
abort_process() /*se vuelve con error de longjmp*/
}
void process()
{
int valor; /*devuelve el valor a setjmp */
… /*se realiza algún procesamiento*/
if (no_error)
… /*procesamiento normal sin error*/
else
logjmp(env,valor); /*error, se aborta*/
}
U.N.E.D. Dpto. Informática y Automática J. Aranda
30
30
C: inconvenientes y ventajas
PASCAL (1/2)
31
31
PASCAL (2/2)
MODULA-2
32
32
ADA (1/5)
Consideraciones en el desarrollo:
■ Fiabilidad y mantenimiento del programa
■ Programación como actividad humana
■ Eficiencia del programa
ADA (2/5)
33
33
ADA (3/5)
ADA (4/5)
34
34
ADA (5/5)
Resumen
■ Definición estricta de tipos
■ Asignación dinámica
■ Recursividad
■ Capacidad explícita de manipulación de
excepciones
■ Compilación por separado
■ Adecuado para S.T.R.
■ Poco eficiente en algunas aplicaciones
U.N.E.D. Dpto. Informática y Automática J. Aranda
ENSAMBLADOR
Ventaja: Inconvenientes
■ Control directo del ■ No estructurado
hardware ■ Grandes diferencias de
■ Algunos programadores una máquina a otra: no
realizan código más portable
eficiente que el de algunos ■ Difícil y tedioso
compiladores ■ Propenso a errores
35
35
Generación de código
Segunda sesión
■ Sistemas Operativos
■ Programación concurrente
36
36
Sistemas Operativos
Sistemas Operativos
37
37
Sistema Operativo de propósito
general
Aplicaciones
es
uaj
Manejador
Ut
ng
il
de archivos
id
a le
ad
Pl
par
es
an
ifi
rte
Despa- Manip.
ca
E/S
po
Software
do
chador interr.
So
r
SS
Hardware CPU
S.O.
Dispositivos de E/S
Software Núcleo
Hardware CPU
Dispositivos de E/S
38
38
Estructura de un Sistema
Operativo
Usuario
Procesador de Aplicaciones
comandos software
S.O.Básico en disco
BIOS
Software
Hardware
CPU Discos Dispositivos E/S
Tipos de S.O.
■ Multiprogramación o multiusuario
■ Multitarea
39
39
S.O. Multiusuario
usuario usuario usuario
S.O. Multiusuario
Hardware
S.O. Multitarea
usuario
Datos comunes
S.O. Multitarea
Hardware
40
40
S.O. multitarea de tiempo real (1/2)
Gestión y
Procesador de Sistema de Gestor de
asignación de
ordenes E/S archivos
recursos
Gestor de tareas
Nivel del S.O.
Rutina de
Reloj servicio de
interrupciones
Nivel hardware
U.N.E.D. Dpto. Informática y Automática J. Aranda
41
41
Estrategias de planificación (1/3)
42
42
Estrategias de planificación (3/3)
■ Por expropiación
■ FCFS: primero en llegar primero en ser
servido
■ SJF: primera la tarea más corta
■ SRT: tiempo que queda más corto
■ RR: prioridad circular
■ Tareas cíclicas
■ Tareas que se tienen que hacer en un
instante determinado: Guiadas por sucesos
– Cierre de una válvula
– Parada de un motor
– Una alarma
43
43
Planificación para S.T.R. (2/3)
Interrupción 1
Interrupción i
Nivel de reloj
Interrupción n
RTC
Distribuidor
Nivel de reloj 1
Nivel de reloj i Planificador
Nivel de reloj n
Planificador de
nivel de base
Nivel de base 1
Nivel de base i
Nivel de base n
44
44
Administración de tareas
a i ca
ici do
in
crear
no-nato Creado Activo
desconectado
eliminar
activar
e r
nd
de
pe
sc
us
on
s
ect
a r
Bloqueado
45
45
Administración de tareas:
descriptor
La información sobre el estado de cada tarea
se tiene en el descriptor de tareas (TD):
■ Identificador de la tarea (ID)
■ Prioridad de la tarea (P)
■ Estado actual de la tarea
■ Area para almacenar el entorno volátil (o un
puntero a la misma)
■ Puntero a la siguiente tarea en la lista
Administración de tareas:
descriptor (lista de tareas)
ID=10
cabeza
Activo TD
cola Puntero
46
46
Administración de tareas:
planificador
Se entra en el planificador/despachador bajo
dos condiciones:
■ Debido a una interrupción del reloj o a otra
interrupción que señale que se completó una
solicitud de entrada/salida
■ La suspensión de una tarea debido a un
retardo de la misma, completando o
solicitando una transferencia de
entrada/salida
U.N.E.D. Dpto. Informática y Automática J. Aranda
Administración de tareas:
planificador
Interrupción del reloj o Solicitud de
de los servicios de E/S transferencia de E/S
incrementa nivel
de prioridad no
si
restablecer el
estado de la tarea
47
47
Administración de la memoria (1/2)
48
48
Subsistema de Entrada/Salida
Tareas de las aplicaciones
Administrador E/S
Programación concurrente
49
49
Programación concurrente
50
50
Exclusión mutua: región crítica
(2/4)
Instrucciones para la actualización de la variable:
■ copiar el valor de x en un registro del procesador
■ incrementar el valor del registro
■ almacenar el resultado en la dirección donde se guarda x
51
51
Exclusión mutua: región crítica
(4/4)
■ Se denomina Sección crítica a aquellas partes de los
procesos concurrentes que no pueden ejecutarse de forma
concurrente o, también, que desde otro proceso se ven
como si fueran una única instrucción.
■ Las secciones críticas se agrupan en clases, siendo
mutuamente exclusivas las regiones críticas de cada
clase.
■ La exclusión se consigue con protocolos que bloqueen el
acceso a la sección crítica mientras está siendo utilizada
por un proceso.
52
52
Bloqueo mediante el uso de
variables compartidas (2/4) begin
module ExclusionMutua2 process P1
begin flag1:=false
var flag1,flag2:boolean;
loop flag2:=false
procedure bloqueo(var mi_flag,su_flag:boolean);
bloqueo(flag1,flag2); cobegin
begin
(*uso del recurso. Sección crítica*) P1;
mi_flag:=true; (*intención de usar el recurso*)
desbloqueo(flag1); P2;
while su_flag do; end (*espera liberar recurso*)
(* resto del proceso*) coend
end bloqueo;
end end
53
53
Bloqueo mediante el uso de
variables compartidas (4/4)
■ Una solución al interbloqueo
procedure bloqueo(var mi_flag,su_flag:boolean);
begin
mi_flag:=true;
while su_flag:=false;
mi_flag:=false;
mi_flag:=true;
end
end bloqueo
Algoritmo de PETERSON
process P1 begin
module ExclusionMutua_Peterson
begin flag1:=false;
var flag1,flag2:boolean;
loop flag2:=false;
turno:integer;
bloqueo(flag1,flag2,2); cobegin
procedure bloqueo(var
mi_flag,su_flag:boolean,su_turno:integer); (*uso del recurso. Sección crítica*) P1;
begin desbloqueo(flag1); P2;
mi_flag:=true; (* resto del proceso*) coend
turno:=su_turno; end end
while su_flag and (turno=su_turno) do; end end P1;
end bloqueo;
process P2
procedure desbloqueo(var mi_flag:boolean); begin
begin loop
mi_flag:= false; bloqueo(flag2,flag1,1);
end desbloqueo; (*uso del recurso. Sección crítica*)
desbloqueo(flag2);
(* resto del proceso*)
end
end P2;
54
54
Algoritmo de DEKKER
process P1 begin
module ExclusionMutua_Dekker
begin flag1:=false;
var flag1,flag2:boolean;
loop flag2:=false;
turno:integer;
bloqueo(flag1,flag2,2); turno:=1;
procedure bloqueo(var
mi_flag,su_flag:boolean,su_turno:integer); (*uso del recurso. Sección crítica*) cobegin
begin desbloqueo(flag1); P1;
mi_flag:=true; (* resto del proceso*) P2;
while su_flag do (*otro proceso en la sec. cr.*) end coend
if turno=su_turno then mi_flag:=false; end P1; end
while turno=su_turno do
(*espera a que el otro termine*) end process P2
mi_flag:=true; begin
end loop
end bloqueo(flag2,flag1,1);
end bloqueo; (*uso del recurso. Sección crítica*)
procedure desbloqueo(var desbloqueo(flag2);
mi_flag:boolean;su_turno:integer); (* resto del proceso*)
begin end
turno:=su_turno; end P2;
mi_flag:= false;
end desbloqueo;
U.N.E.D. Dpto. Informática y Automática J. Aranda
SEMÁFOROS
55
55
Operaciones sobre Semáforos
■ Inicializar
– inicializa (S:SemaforoBinario; v:ineger);
Pone el valor del semáforo al valor de v (0 o 1)
■ Espera (wait o P)
– espera (S)
if S=1 then S:=0
else suspender la tarea que hace la llamada y ponerla en la cola de
tareas.
■ Señal (signal o V)
– señal (S)
if la cola de tareas está vacía then S:=1
else reanudar la primera tarea de la cola de tareas
U.N.E.D. Dpto. Informática y Automática J. Aranda
de li za nif
suspender
a i ca
ici do
in
crear
no-nato Creado Activo
desconectado
eliminar
activar
e r
nd
de
pe
sc
us
on
s
ect
a r
Bloqueado
56
56
Exclusión mutua con semáforos
■ Se usa “espera” como procedimiento de
bloqueo antes de la sección crítica.
■ Se usa “señal” como desbloqueo
process P1
begin
loop
espera(S);
Sección Crítica
señal(S);
(*resto del proceso*)
end
end P1
SINCRONIZACIÓN
con semáforos
■ “espera” y “señal” se ejecutan en dos
procesos separados
■ El que ejecuta “espera” se bloquea hasta
que el otro ejecuta “señal”
57
57
SINCRONIZACIÓN
con semáforos
module Sincronización; begin (*sincronización*)
var sincro:semaforo; inicializa(sincro,0);
cobegin
process P1 (*proceso que espera*) P1;
begin P2;
… coend
espera(sincro); end Sincronización
…
end P1;
SINCRONIZACIÓN
(problema del productor-consumidor)
module Productor_consumidor; process Consumidor; begin
var BufferComun:buffer; var x:dato; cobegin
begin Productor;
process Productor; loop Consumidor;
var x:dato; while Vacio do coend
begin (*espera*) end Productor_consumidor;
loop end;
produce(x); Tomar(x);
while Lleno do Consume(x);
(*espera*) end
end; end Consumidor;
Poner(x);
end
end Productor;
58
58
SINCRONIZACIÓN
(problema del productor-consumidor)
Esta solución no es satisfactoria:
■ Las funciones Poner(x) y Tomar(x) utilizan
el mismo buffer -> exclusión mutua.
■ Ambos procesos utilizan una espera
ocupada cuando no pueden acceder al
buffer.
Soluciones: Utilización de semáforos
SINCRONIZACIÓN
(productor-consumidor con semáforos)
module Productor_consumidor; Poner(x); Tomar(x);
var BufferComun:buffer; señal(AccesoBuffer); señal(AccesoBuffer);
AccesoBuffer, Nolleno, señal(Novacio); señal(Nolleno);
Novacio:semaforo; end Consume(x);
end Productor; end
process Productor; end Consumidor;
var x:dato; process Consumidor;
begin var x:dato; begin
loop begin inicializa(AccesoBuffer,1);
produce(x); loop inicializa(Nolleno,1);
espera(AccesoBuffer); espera(AccesoBuffer); inicializa(Novacio,0);
if Lleno then if Vacio then cobegin
señal(AccesoBuffer); señal(AccesoBuffer); Productor;
espera(Nolleno); espera(Novacio); Consumidor;
espera(AccesoBuffer); espera(AccesoBuffer); coend
end; end end Productor_consumidor;
59
59
Vesrsión general de semáforos (1/2)
60
60
MONITORES (1/3)
■ Un monitor es un conjunto de
procedimientos que proporcionan el acceso
con exclusión mutua a un recurso o
conjunto de recursos compartidos por un
grupo de procesos.
MONITORES (2/3)
EscribeDato
Recurso
LeeDato
61
61
MONITORES (3/3)
P1,P2 P4,P6
Condición A
Entrada 1
P3
Recurso Espera de
Entrada 2 condición
P5
Entrada 3 Condición B
Monitor: implementación de un
semáforo
monitor:semaforo; procedure sespera(var libre:condicion);
begin
from condiciones import condicion, espera, if ocupado then
señal; espera(libre);
export ocupado:=true;
sespera, sseñal; end
var end sepsera
ocupado: boolean;
libre:condicion; begin
ocupado:=false;
end
procudere sseñal(var libre:condicion);
begin
ocupado:=false;
señal(libre);
end sseñal;
62
62
Monitor: solución al problema
del productor-consumidor
monitor: productor-consumidor; procedure poner(item:dato); procedure tomar(var item:dato);
begin begin
from condiciones import if numeroenbuffer=tamaño if numeroenbuffer=0 then
condicion,espera,señal; then espera(espacio) espera(itemdisponible);
export poner,tomar; end; end;
const tamaño=32; buff[cima]:=item; item:=buff[base];
var numeroenbuffer:= numeroenbuffer:=
buff:array[0..tamaño-1] of dato; numeroenbuffer+1; numeroenbuffer-1;
cima,base:0..tamaño-1; cima:=(cima+1) mod tamaño; base:=(base+1) mod tamaño;
espacio,itemdisponible: señal(itemdisponible); señal(espaciodisponible);
condicion; end poner; end tomar;
numeroenbuffer:integer;
begin (*inicialización*)
numeroenbuffer:=0;
cima:=0;
base:==0;
end
U.N.E.D. Dpto. Informática y Automática J. Aranda
MENSAJES (1/3)
63
63
MENSAJES (2/3)
MENSAJES (3/3)
64
64
Modos de nombrar los mensajes
■ Comunicación directa
– enviar(Q,mensaje)
– recibir(P,mensaje)
■ Comunicación indirecta
Los mensajes se envían a un buzón:
– enviar(buzónA,mensaje)
– recibir(buzónA,mensaje)
Modelos de sincronización
65
65
Estructura de los mensajes
Emisor
■ Longitud fija Receptor
Cabeza
Longitud
■ Longitud variable Tipo
■ De tipo indefinido
Control
Contenido
Cuerpo
del
mensaje
66
66
INTEBLOQUEO
P1 P2 P1 P2
……. ……. ……. …….
espera(S1) espera(S1) espera(S1) espera(S2)
espera(S2) espera(S2) espera(S2) espera(S1)
……. ……. ……. …….
……. ……. ……. …….
señal(S2) señal(S2) señal(S2) señal(S1)
senal(S1) senal(S1) senal(S1) senal(S2)
end P1 end P2 end P1 end P2
■ Exclusión mutua
■ Retención y espera
■ No existencia de expropiación
■ Espera circular
67
67
Prevención de interbloqueos
68
68
Algoritmo del banquero (1/4)
Proceso Usados Posibles Máximos
necesarios necesarios
P1 5 0 5
P2 6 0 6
P3 4 0 4
Total disponibles 10
P1 2 3 5
P2 1 5 6
P3 3 1 4
Total disponibles 4
Estado seguro
69
69
Algoritmo del banquero (3/4)
Proceso Usados Posibles Máximos
necesarios necesarios
P1 3 2 5
P2 4 2 6
P3 2 2 4
Total disponibles 1
Estado no seguro
70
70
Detección de los interbloqueos
P1
R2
P2
P3
R3
71
71
Grafos de asignación de recursos
P1
R2
P2
P3
R3
Recuperación de interbloqueos
(1/2)
Se suelen tomar dos opciones:
■ Reiniciar uno o mas de los procesos
bloqueados
■ Expropiar los recursos de algunos de los
procesos bloqueados
72
72
Recuperación de interbloqueos
(2/2)
Para reiniciar hay que tener en cuenta:
■ La prioridad del proceso
■ El tiempo de procesamiento utilizado y el que resta
■ El tipo y número de recuros que dispone
■ El número de recursos que necesita para finalizar
■ El número de otros procesos que se verían involucrados
con su reiniciación.
Interbloqueo en Sistemas de
Tiempo Real
■ OJO: En algunos sistemas de Tiempo Real
el interbloqueo puede tener resultados
inaceptables, por lo que no se puede
permitir que se presente dicha situación.
73
73
Tercera sesión
74
74
Fases del ciclo de vida del
software
■ Fase conceptual
■ Fase de requerimientos
■ Fase de diseño
■ Fase de programación
■ Fase de verificación
■ Fase de mantenimiento
Fase conceptual
75
75
Fase de requerimientos (1/3)
76
76
Fase de requerimientos (3/3)
Fase de diseño
77
77
Fase de programación
■ Se escribe el código
■ Se depura el software
■ Se desarrollan casos de test automatizados
■ Se integran los módulos
Fase de verificación
78
78
Fase de mantenimiento
Transiciones no-temporales en el
ciclo de vida del software
Fase no se p
to ueden
produc conceptual especif
nuevo icar
c tic
c on as le s
características
r
un problema
tib
sospecha de
ro ac
er
no factibles
de validez
tos f
un mien no
do s requeri no
ta lo
tec o en
as fa
De ectad tic cti
de t erís bl
es
Error rac
t
Ca
Fase de Fase de
verificación diseño
Error detectado en el diseño
detectad e ño
o error
en el có lemen tar el dis
digo Fase de ede imp
programa- no se pu
ción
U.N.E.D. Dpto. Informática y Automática J. Aranda
79
79
Especificaciones y diseño de
sistemas de tiempo real
80
80
Especificaciones
Lenguaje humano
Especificación de un sistema aeronáutico
– El software recibirá cada 5 milisegundos pulsos de los
acelerómetros x, y,z. Mediante DMA, los convertidores A/D
proporcionan al software los ángulos de roll, pitch, yaw; cada 40
milisegundos, estos ángulos indican la orientación del avión.
– El software recibe información de la temperatura cada segundo.
– La tarea del software es calcular el vector de velocidad real
basandose en la orientación y la lectura de los acelerómetros, tiene
en cuenta factores de compensación (como la temperatura) cada 40
mseg. Cada segundo se actualiza la información de velocidad en
un display del piloto.
Especificaciones
Especificaciones matemáticas
Sistema aeronáutico
– Las medidas de los acelerómetros son
ax=a+δa
– Las medidas de los giros
ωx=ω+δω
– Ecuaciones del sistema
x’(t)=Fx(t)+Bu(t)
81
81
Diagramas de flujo
82
82
Seudocódigo y lenguajes de
diseño de programación
■ Usados para especificar sistemas de una forma
muy cercana a la escritura del código.
■ Mas abstractos que los lenguajes de alto nivel
■ Algunos lenguajes, como Ada o Modula-2, se han
utilizado como LDP.
■ Se adaptan mejor para hacer los programas.
■ En contra, es una clase mas de lenguaje de
programación. La utilización de abstraciones a alto
nivel no evita los errores.
Seudocódigo y lenguajes de
diseño de programación
Cajero automático
begin begin
Acepta la tarjeta Display estado de la cuenta
Display”Entre su código” Exti/Eject tarjeta
If código no es correcto end
begin else
Display “Disculpe” begin
Exit/eject tarjeta if tecla=retirar fondos
end begin
else Display “¿Que cantidad?
begin Acepta cantidad
Display “Pulse una tecla” if catindad > saldo
Acepta tecla de función begin
If Tecla=consulta de display “Disculpe”
cuenta exit/eject tarjeta
end
U.N.E.D. Dpto. Informática y Automática ... J. Aranda
83
83
Autómatas de estados finitos
84
84
Autómatas de estados finitos
Retirar fondos C
Cajero automático B /”¿Cantidad?” Retirar
Entrar fondos
Selección
to Inválido
rec
Vá
P cor ión?”
D e ¿Ca
lido
A NI elecc
p o n t id
s
/”
Entrar NIP /”¿
sit
comienzo
a r ad? ”
/”¿Cantida
fon
do
Consulta
áli
do
NIP erróneo
s
In
o Dar/tomar
álid
d?” V dinero
D
Depósito
o
Inválid
O
Expulsar
Tarjeta
E
Consulta
85
85
Diagramas de flujos de datos
86
86
Diagramas de flujos de datos
Pulsos de los
acelerómetors, en
Sistema aeronáutico
bruto
Par
aplicado a Giroscopos
los giros
Actualización
del Display
Pulsos de los display
giroscopos,
en bruto
87
87
Redes de Petri
T1
Marcas
P1 P2
2 1
Lugares
Transiciones
T1
P1 P2
1 1
Redes de Petri
P1
1
P3 P4
2 0
P2
1
P1 P2 P3 P4
mo 1 1 2 0
88
88
Redes de Petri
P1
0
P3 P4
3 1
P2
0
P1 P2 P3 P4
mo 1 1 2 0
m1 0 0 3 1
Redes de Petri
P1
0
P3 P4
2 2
P2
0
P1 P2 P3 P4
mo 1 1 2 0
m1 0 0 3 1
m2 0 0 2 2
89
89
Redes de Petri
P1
0
P3 P4
1 3
P2
0
P1 P2 P3 P4
mo 1 1 2 0
m1 0 0 3 1
m2 0 0 2 2
m3 0 0 1 3
Redes de Petri
P1
0
P3 P4
0 4
P2
0
P1 P2 P3 P4
mo 1 1 2 0
m1 0 0 3 1
m2 0 0 2 2
m3 0 0 1 3
m4 0 0 0 4
90
90
Redes de Petri
Analogía entre los diagramas de flujo y las
redes de Petri
Secuencia P1
f1
f1 t1
f2 P2
f2 t2
Redes de Petri
Analogía entre los diagramas de flujo y las
redes de Petri
Saltos condicionales
P1
0 0
1
1 f1 t1 f2 t2
f1 f2
P2
91
91
Redes de Petri
Analogía entre los diagramas de flujo y las
redes de Petri
Bucles
P1
0 0
1
1 f1 t1
f1
Notación de Warnier-Orr
92
92
Notación de Warnier-Orr
{ paso1.A.1
{
paso1.A paso1.A.2
{{
paso1
paso1.B
paso1.C
paso2
programa
paso3.A
paso3 paso3.B
paso3.C
Notación de Warnier-Orr
Cajero automático
{
¿Válido? {dar dinéro
{
retirar fondos { ¿Cantidad? [+]
{
[+]
¿Inválido? {“disculpe”
correcto {¿función? Consulta { Visualizar saldo
[+]
Entrar NIP
[+]
Depósito{ “¿Cantidad?”
Acepta sobre
incorrecto { “disculpe”
93
93
Diagramas de estados
Diagramas de estados
Componentes:
■ Los AEF se representan en la forma normal
■ Los detalles se representan por lo que hay en el interior de los estados
■ Las comunicaciones “broadcast” se representan por flechas
etiquetadas, como en los AEFs
■ La ortogonalidad se representa por líneas punteadas separando los
estados
■ Los símbolos a,b,…z representan los sucesos que desencadenan las
transiciones, de la misma forma que se representan las transiciones en
los AEFs
■ Las letras minúsculas entre paréntesis representan condiciones que se
deben cumplir para que se produzca la transición
94
94
Diagramas de estados
Detalle
■ Los D.E. estimulan el diseño top-down de
los módulos.
■ Para cualquier módulo (estado en un AEF)
aumenta los detalles al describir los estados
internos.
Diagramas de estados
Ortogonalidad
■ Representa la concurrencia en el sistema
para procesos que corren aisladamente, se
llaman estados AND.
■ Se representa por líneas punteadas
95
95
Diagramas de estados
Comunicación “broadcast”
■ Representa la transición de estados
ortogonales basados en el mismo suceso.
■ Reacción en cadena: sucesos que pueden
desencadenar otros sucesos.
Diagramas de estados
Reacción en cadena
A C E
e/f f/g g
B D F
96
96
Diagramas de estados
Sistema de navegación
Navegación 5 ms 40 ms
interrupción interrupción
Tareas 40 ms
de 5 ms Lee y compensa
fondo lee y compensa los datos de los
los pulsos de los giros
acelerómetros
Compensación de
todos los datos
1 segundo
interrupción
1 segundo
Display de actualización
97
97
Calculo del tiempo de respuesta
98
98
Calculo del tiempo de respuesta
Sistemas de bucle de consulta (polled loop)
1: faseA1; 1: faseB1;
2: faseA2; 2: faseB2;
99
99
Calculo del tiempo de respuesta
Sistemas de interrupciones:
■ En este caso el cálculo del tiempo de respuesta depende de una gran cantidad
de factores: tiempo de latencia, tiempo de conmutación de contexto, tiempos
de planificación/distribución.
Ri = Li + Cs + Si + Rs + Ai
100
100
Latencia de la interrupción
Latencia de la interrupción
Retardo de propagación
■ Debido a las limitaciones en la velocidad de
conmutación de los dispositivos digitales y el
tiempo de tránsito de los electrones por el
alambre. (nanoseg. o microseg.).
■ Son dados por el fabricante o se pueden medir
con un osciloscópio o un analizador lógico.
■ Se suelen ignorar.
101
101
Latencia de la interrupción
Latencia de la interrupción
Interrupciones desactivadas
■ Intencionadamente se pueden desactivar las
interrupciones.
■ Razones: protección de regiones críticas,
rutinas de almacenamiento en memoria
intermedia, conmutación de contexto, etc.
102
102
Latencia de la interrupción
Latencia de la interrupción
103
103
Tiempo de carga
104
104
Medida del tiempo de carga
Contando instrucciones
■ Si no se dispone de analizador lógico o es muy pronto, el
mejor método es contar las instrucciones.
■ El código tiene que estar escrito
5 10 15 20 25 t(miliseg.)
105
105
Medida del tiempo de carga
106
106
Reducción del tiempo de
respuesta y del tiempo de carga
Aritmética escalada
Por ejemplo: operar enteros es mas rápido que
operar en coma flotante. Se puede multiplicar
enteros por un factor de escala para simular
operaciones en coma flotante.
El bit menos significativo es la granularidad
El bit mas significativo es el bit de signo.
El número mayor que se puede representar es: 2n-1-1
El mas pequeño es -2n-1.
107
107
Reducción del tiempo de
respuesta y del tiempo de carga
Aritmética escalada
Los números escalados se pueden sumar y restar juntos, y multiplicar
por otra constante (pero no por otro número escalado)
■ Como hay una relación inversa entre precisión y rango del
número escalado, una cuestión natural es: ¿Como decidir la
granularidad apropiada?
Suponer un número de n-bits, se quiere representar
números entre -x y x, el número correspondiente al bit
menos significativo es
2-(n-1)x
p.e.: si x=311, enonces es 0.00949.
MSB=180º LSB=0.0054932º=180/2-(n-1)
90º
U.N.E.D. Dpto. Informática y Automática J. Aranda
108
108
Reducción del tiempo de
respuesta y del tiempo de carga
Tablas de consulta
Se basa en la idea de la interpolación. Se van almacenado
puntos y, posiblemente, el valor de la función o de su
derivada.
x f(x)
f(x+∆x)
x 0+ ∆x f(x0+∆x)
f(x’)
..... .....
f(x)
x0+(n-1)∆x f(x0+(n-1)∆x)
x x’ x+∆x f(x’)=f(x)+(x’-x)*[f(x+∆x)-f(x)]/ ∆x
109
109
Reducción del tiempo de
respuesta y del tiempo de carga
Reducción de la fuerza Eliminación de
bruta expresiones comunes
Esto se refiere a la utilización de x := y + a * b;
las macroinstrucciones más y := a * b + z;
rápidas posibles para hacer los
cálculos.
Se puede reemplazar por
Ej.: multiplicar por potencias de 2
es como hacer un
desplazamientos de bits. t := a*b;
Es más ra´pido multiplicar que x:= y +t;
dividir. Luego es preferible y := t +z;
hacer x*.5 que x/2.
U.N.E.D. Dpto. Informática y Automática J. Aranda
110
110
Reducción del tiempo de
respuesta y del tiempo de carga
Uso de registros y caches Optimización del flujo de
Como las operacioens registro a
control
goto label1;
registro son mas rápidas, se
label0 y=1;
optimiza utilizandolas.
label1 goto label2;
Se puede reemplazar por
Eliminación de código no goto label2;
utilizable label0 y=1;
Código que no es alcanzado en el label1 goto label2;
flujo normal de control. Por ■ Es código, que normalmente,
ejemplo las sentencias de no se genera por
depuración. programadores, sino de forma
U.N.E.D. Dpto. Informática y Automática automática J. Aranda
En ensamblador: En ensamblador:
LOAD R1, 100
LOAD R1, 100
STORE R1,X
STORE R1, X
LOAD R1,X
STORE R1, Y
STORE R1,Y
111
111
Reducción del tiempo de
respuesta y del tiempo de carga
Código booleano corto Desplegar bucles
Ejemplo en Pascal
if (x>0) AND (y>0) then for i=1 to 6 do
z:=1; a[i].= a[i]*8;
112
112