TEMA 4

Anuncio
TEMA 4
Ejecutivos cíclicos
1
Modelo de tareas
Consideraremos inicialmente un modelo de tareas simple:
…
Conjunto de tareas estático
… Todas las tareas son periódicas
… Las tareas son independientes entre sí
… Se conoce el tiempo de ejecución máximo de cada tarea C i
… Cada tarea tiene un plazo de respuesta D i ≤ T i
Después veremos como incorporar tareas esporádicas
2
1
Plan principal
Ejecutivo cíclico: estructura de control o programa cíclico que
entrelaza de forma explícita la ejecución de diversos procesos
periódicos 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: especificación del entrelazado de varios procesos
periódicos durante un período de tiempo (ciclo principal) de tal
forma que su ejecución cíclica garantiza el cumplimiento de los
plazos de los procesos
…
La duración del ciclo principal es igual al mínimo común múltiplo de
los períodos de los procesos
„ M = mcm (Ti)
„ se supone tiempo entero (p.e. número de ticks)
„ el comportamiento temporal del sistema se repite cada ciclo
principal
3
Planes secundarios
Cada plan principal es dividido en uno o más planes secundarios
o marcos (“frames”) que se ejecutarán de forma secuencial.
Cada comienzo/fin de un marco en el ejecutivo cíclico se
sincroniza con el reloj. Son puntos donde se fuerza la corrección
del tiempo real.
Por simplicidad, en la práctica, la duración de todos los marcos es
la misma. A esta duración se le denomina ciclo secundario.
…
…
…
Si las acciones definidas en un marco acaban antes de que
concluya el ciclo secundario el ejecutivo cíclico espera (p.e. en un
WAI)
Si las acciones definidas en un marco no han acabado al terminar
el ciclo secundario, se produce un error: desbordamiento de
marco.
Si la duración de una acción es superior al ciclo secundario debe
ser descompuesta en subacciones
4
2
Ejemplo
Tarea
A
B
C
D
E
T
25
25
50
50
100
D
25
25
50
50
100
C
10
8
5
4
2
• Ciclo principal: 100 ticks
• Ciclo secundario: 25 ticks
M = 100 ticks
m = 25 ticks
A
B
0
C
A
B
25
A
DE
50
B
C
A
B
75
D
100
5
Ejemplo
Ejecutivo cíclico:
void Ejecutivo_Ciclico(void) {
unsigned int m = 25 ;
unsigned int siguiente ;
int marco = 0, num_marcos = 4 ;
siguiente = Get_Time () ;
while(1) {
marco = (marco % num_marcos)+1 ;
switch (marco) {
case 1: A; B; C;
break ;
case 2: A; B; D; E; break ;
case 3: A; B; C;
break ;
case 4: A; B; D;
break ;
}
siguiente += m ;
delay_until(siguiente) ;
}
}
6
3
Propiedades
…
No hay concurrencia en la ejecución
„
„
…
Cada ciclo secundario es una secuencia de llamadas a
procedimientos
No se necesita un núcleo de ejecución multitarea
Los procedimientos pueden compartir datos
„
No se necesitan mecanismos de exclusión mutua como los
semáforos o monitores
7
Determinación de los ciclos
Sea un conjunto de procesos periódicos {Pi / i = 1..n}, con
requisitos temporales representados por ternas (Ci, Ti, Di).
…
…
Ciclo principal:
„ M = mcm (Ti)
Ciclo secundario
„ m ≤ min(Di)
„ m ≥ max(Ci)
„ ∃k: M = km
„ ∀i: m+ (m - mcd(m,Ti)) ≤ Di
…
…
…
garantiza que entre el instante de activación de cada proceso y
su plazo límite exista un marco o ciclo secundario completo
m - mcd(m,Ti) es el retraso máximo entre la activación de un
proceso y el comienzo del siguiente marco
esta condición incluye a la primera
8
4
Ejemplo
Considérese tres procesos
P
E
F
G
…
T
14
20
22
D
14
20
22
Ciclo principal
„
…
C
1
2
3
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,Ti)) ≤ Di => m = 4,5,7
9
Ejemplo
„
para m = 4
i
1
2
3
Ti
14
20
22
mcd(m,Ti)
2
4
2
14
6
retraso
2
0
2
20
4
m+retraso
6
4
6
<
<
<
Di
14
20
22
22
6
m=4
E
F
G
10
5
Ejemplo
„
para m = 10
i
1
Ti
14
mcd(m,Ti)
2
retraso
8
m+retraso
18
>
Di
14
NO
18
14
m = 10
E
0
14
28
42
56
F
G
11
Inclusión de procesos periódicos
…
…
En cada ciclo principal se tienen ncs = M/m ciclos secundarios
En cada plan principal se tienen nei = M/Ti ejecuciones de cada proceso Pi
Hay que definir la secuencia de procesos de cada marco:
σx:{Pik,Pjl,..,Prs}
La ejecución k-ésima de un proceso Pi caracterizado por ternas (Ci, Ti,
Di) podrá ser incluida en los marcos j-ésimos que comienzan después
de la activación de Pik y terminan antes del deadline de Pik:
(k − 1)Ti ≤ ( j − 1)m
jm ≤ (k −1)Ti + Di
Para que la ejecución k-ésima de Pi pueda ser incluida en la secuencia
de procesos σx del marco x, debe quedar suficiente tiempo libre en el
marco:
C ≤ m − ∑C
i
l
∀l,Pl ∈σ x
12
6
Planificación
Objetivo: asignación de procesos (o subprocesos) a los marcos
de forma que se cumplan los requisitos temporales
Planteamiento: búsqueda en el espacio de estados
…
…
…
Estado: asignación parcial
Algoritmo: búsqueda en profundidad con retroceso
„ se pretende encontrar una única solución
Guiado de la búsqueda: heurísticas
„ sobre el siguiente proceso a asignar
…
…
„
primero el más urgente o el más frecuente
primero el de tiempo de proceso más grande
si varios marcos cumplen las condiciones:
…
…
el primer marco que cumpla las condiciones
el marco con menor tiempo de cómputo libre
13
Ejemplo: planificación
Conjunto de procesos a planificar:
Proceso
P1
P2
P3
P4
C
2
3
1
2
T
8
8
6
12
D
8
8
6
12
…
Ciclo principal: M = mcm(6,8,12) = 24
…
Número de ejecuciones a planificar
„
ne1 = M/8 = 3
„
ne2 = M/8 = 3
„
ne3 = M/6 = 4
„
ne4 = M/12 = 2
14
7
Ejemplo: planificación
…
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,Ti)) ≤ Di => m = 3,4
posibles_m = {4,3}
15
Ejemplo: planificación
…
Ordenación procesos: primero el más urgente
Proceso
P1
P2
P3
P4
C
1
3
2
2
T
6
8
8
12
D
6
8
8
12
n
4
3
3
2
…
Se intenta planificar primero para m=4 (la complejidad del
problema disminuye con el número de marcos)
…
Un planificación consta de 6 marcos consecutivos
16
8
Ejemplo: planificación
…
Pik puede ir en el marco j si:
(k − 1)Ti ≤ ( j − 1)m
jm ≤ (k −1)Ti + Di
P11
P12
P13
P14
P1
0
4
8
12
P21
16
20
P22
24
P23
P2
0
4
8
12
P31
16
20
P32
24
P33
P3
0
4
8
12
16
20
24
20
24
P42
P41
P4
0
4
8
12
16
17
Ejemplo: planificación
1
1
1
1
1
2
1
1
1
2
1
1
1
2
1
2
1
1
2
2
2
1
1
2
1
2
1
1
3
3
2
1
2
1
2
1
1
3
2
3
2
1
2
1
3
1
3
1
1
2
1
1
3
2
3
2
1
1
2
3
2
1
1
2
1
3
2
1
1
1
1
1
2
1
1
2
2
2
2
3
1
2
3
2
3
3
3
1
2
1
2
3
1
1
4
2
3
3
1
4
18
2
9
Partición de procesos
Hay casos en que un conjunto de procesos que no es planificable:
…
Si el tiempo de cómputo de uno es mayor que el plazo de algún otro: Ci
> Dk => No existe valor de m que cumpla a la vez:
„ m ≤ min(Di)
„ m ≥ max(Ci)
…
Si para una ejecución de un proceso no queda ningún marco
con suficiente tiempo libre
Solución: descomponer el proceso demasiado largo Pi=(Ci,Ti,Di) en
varios subprocesos Pij=(Cij,Tij,Dij):
…
…
…
…
Tij=Ti ; Dij=Di
Ci1+Ci2+Ci3+... = Ci
no partir secciones críticas
relación de precedencia en cada una de las ejecuciones a mantener
en la planificación: Pi1→Pi2→Pi3→...
19
Relaciones de precedencia
Sean Pi1 y Pi2 dos procesos entre los que existe una relación de
precedencia Pi1→Pi2,
…
…
En la ordenación de los procesos para su inclusión en la
planificación se mantiene el orden de precedencia (los dos
subprocesos tienen las mismas restricciones temporales)
Para incluir la ejecución k-ésima de Pi2, Pi2k, en la planificación:
„ obtener los valores {j,...,j+h} de los marcos donde puede ser
incluida a partir de:(k − 1)Ti ≤ ( j − 1) m
jm ≤ ( k − 1)Ti + Di
„
„
Debido al orden de inclusión Pi1k 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 condición
Ci2 ≤ m −
∑ Cl
∀l,Pl ∈σ x
20
10
Ejemplo: partición de procesos
„Conjunto
de procesos a planificar:
Proceso
P1
P2
P3
… Ciclo
C
2
2
8
T
6
8
24
D
6
8
20
principal
M = mcm(6,8,24) = 24
Ciclo secundario
„ m ≤ min(6,8,20) => m = 1..6
„ m ≥ max(2,2,8) => no hay ningún m que lo cumpla
„
…
Es preciso partir el proceso P3 en varios subprocesos con
tiempo de cómputo menor que 6 unidades de tiempo
…
Partición en P31 → P32 con igual tiempo de cómputo, 4 unidades
21
Ejemplo: partición de procesos
Conjunto de procesos a planificar:
Proceso
P1
P2
P31
P32
…
…
C
2
2
4
4
T
6
8
24
24
D
6
8
20
20
Ciclo principal
„ M = mcm(6,8,24) = 24
Número de ejecuciones a planificar
„ ne1 = M/6 = 4
„ ne2 = M/8 = 3
„ ne31 = M/24 = 1
„ ne32 = M/24 = 1
22
11
Ejemplo: partición 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,Ti)) ≤ Di => m = 4
…
Unica posibilidad de planificación m=4
Ordenación de procesos: primero el más urgente manteniendo
relaciones de precedencia
„ Misma tabla anterior P1 → P2 → P31→ P32
…
…
Un planificación consta de 6 marcos consecutivos: M = 6m
23
Ejemplo: partición de procesos
1
1
1
1
1
2
1
2
1
1
2
1
2
1
1
2
1
2
1
2
1
2
1
1
2
1
2
31
1
1
2
1
2
31
1
2
31
1
1
2
32
1
24
2
12
Partición con secciones críticas
Si es preciso partir algún proceso en subprocesos, no deben
partirse las secciones críticas con objeto de preservar la
exclusión mutua
Ejemplo:
…
Planificar la ejecución de los siguientes procesos:
P
P1
P2
P3
…
C
20
25
90
T
100
150
300
D
100
150
300
Dichos procesos acceden a una sección crítica común tal y como
muestra el siguiente esquema:
P1
15
P2
15
P3
15
5
10
20
15
40
25
Partición con secciones críticas
…
…
…
…
…
…
Ciclo principal
„ M = mcm(100,150,300) = 300
Número de ejecuciones a planificar
„ ne1 = M/100 = 3 ; ne2 = M/150 = 2 ; ne3 = 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,Ti)) ≤ Di => m = 100
Posibles valores de m = {100}
Ordenación procesos: primero el más urgente
„ Misma ordenación que en el enunciado
Un planificación consta de 3 marcos consecutivos
26
13
Partición con secciones críticas
No existe planificación porque
no queda ningún marco donde
quepa el proceso P3
…
Partición de P3
„
„
„
Tiempo sobrante en los
marcos: 55, 80, 55 ms
P31: primera sección crítica
+ segundo segmento código
P32: segunda sección
crítica + cuarto segmento
código
1
1
1
1
1
1
2
2
27
Partición con secciones críticas
Nueva especificación de procesos:
P
P1
P2
P31
P32
…
…
C
20
25
35
55
T
100
150
300
300
D
100
150
300
300
Ciclo principal
„ M = mcm(100,150,300) = 300
Número de ejecuciones a planificar
„ ne1 = M/100 = 3
„ ne2 = M/150 = 2
„ ne31 = M/300 = 1
„ ne32 = M/300 = 1
28
14
Partición con secciones críticas
…
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,Ti)) ≤ Di => m = 60,100
…
Posibles valores de m = {60,100}
…
Para m=100:
1
1
1
1
1
1
2
1
1
1
2
2
31
32
2
29
Procesos esporádicos
Proceso esporádico E: atención a eventos externos aperiódicos
…
…
…
SE : separación mínima entre eventos
DE : plazo límite ( normalmente DE ≤ SE )
CE : tiempo de cómputo máximo
En un ejecutivo cíclico los procesos esporádicos pueden
programarse de dos formas:
…
Por muestreo periódico del evento
…
Por interrupción
30
15
Esporádicos por muestreo
Se programa el proceso esporádico como un proceso periódico
que consulta si ha llegado un evento, y en tal caso, lo procesa.
…
Transformamos el proceso esporádico en periódico con D’ = T’ ≤
DE /2, y lo planificamos de la forma convencional
„
Si el proceso periódico cumple sus plazos, cualquier evento
se atiende en su plazo DE
Proceso periódico
T’
DE
evento
Se consulta, y no hay evento
Hay evento, y se procesa CE
31
Ejemplo
Conjunto de procesos a planificar:
Proceso
E
P1
P2
…
…
T
6
12
D
8
6
12
S
20
Proceso periódico equivalente: D’ = T’= 4 ≤ DE / 2
Proceso
PE
P1
P2
…
C
1
3
2
C
1
3
2
T
4
6
12
D
4
6
12
Ciclo principal
„ M = mcm(4,6,12) = 12
Ejecuciones a planificar: nE = M/4 = 3 ; n1 = M/6 = 2 ; n2 = M/24 = 1
32
16
Ejemplo
…
…
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,Ti)) ≤ Di => m = 4
Plan de 3 marcos de duración m= 4
E
E
E
E
E
E
E
E
E
1
1
1
2
1
33
Esporádicos por interrupción
La llegada del evento produce una interrupción, y el evento se
trata inmediatamente
Basta con reservar tiempo en cada marco para atender el
máximo número de eventos que pueden llegar en un marco:
⎡m⎤
Cres = ⎢ ⎥C E
⎢ SE ⎥
34
17
Ejemplo
Conjunto de procesos a planificar (primero el más urgente):
Proceso
E
P1
P2
P3
C
1
3
2
2
T
8
8
12
D
7
8
8
12
S
10
Calculamos los ciclos con los procesos periódicos
…
…
Ciclo principal
„ M = mcm(8,12) = 24
Número de ejecuciones a planificar
„ ne2 = M/8 = 3
„ ne3 = M/8 = 3
„ ne4 = M/12 = 2
35
Ejemplo
…
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,Ti)) ≤ Di => m = 3,4,8
…
Probamos con 3 marcos de duración m= 8
En cada uno reservamos tiempo para atender un evento:
…
⎡m⎤
Cres = ⎢ ⎥ CE
⎢ SE ⎥
36
18
Ejemplo
E
E
E
E
E
E
1
1
1
E
E
E
1
1
1
2
2
2
E
E
E
1
1
1
2
2
2
3
3
37
Propiedades de los ejecutivos cíclicos
„
No hay concurrencia en la ejecución
…
„
Los procedimientos pueden compartir datos
…
„
No hace falta usar mecanismos de exclusión mutua
Los períodos deben ser armónicos
…
„
Cada ciclo secundario es una secuencia de invocaciones de
procedimientos
Pueden ser necesario utilizar períodos más cortos de lo
necesario
No hace falta analizar el comportamiento temporal
…
El sistema es correcto por construcción
38
19
Problemas de los ejecutivos cíclicos
„
Las tareas esporádicas son difíciles de tratar
…
„
El plan cíclico es difícil de construir
…
…
…
„
se puede utilizar un servidor de consulta
Si los períodos son de diferentes órdenes de magnitud el
número de ciclos secundarios se hace muy grande
puede ser necesario partir una tarea en varios procedimientos
en caso más general NP-duro
Es poco flexible y difícil de mantener
…
Cada vez que se cambia una tarea hay que rehacer toda la
planificación
39
20
Descargar