prototipo de simulador de planificador de tareas …

117
P ROTOTIPO DE SIMULADOR DE PLANIFICADOR DE TAREAS EN SISTEMAS DE TIEMPO REAL CON PROCESADORES HETEROGÉNEOS Trabajo Final Carrera Ingeniería de Sistemas Facultad de Ciencias Exactas – UNICEN Alumno: Gariboldi, Diego Emanuel Director: Prof. Ing. Aciti, Claudio

Upload: others

Post on 17-Nov-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

PROTOTIPO DE SIMULADOR DEPLANIFICADOR DE TAREAS EN SISTEMAS

DE TIEMPO REAL CON PROCESADORESHETEROGÉNEOS

Trabajo Final Carrera Ingeniería de Sistemas Facultad de Ciencias Exactas – UNICEN

Alumno: Gariboldi, Diego Emanuel

Director: Prof. Ing. Aciti, Claudio

2

Dedicatoria y agradecimientos

Agradezco a mi familia, fuente de apoyo constante e incondicional en toda mi vida y más aún

en mis años de estudio. En especial quiero agradecer a mi esposa e hija que sin su ayuda

hubiera sido imposible culminar mi profesión.

A mi esposa, gracias por tu paciencia, comprensión y apoyo, éste logro es compartido porque

los dos somos uno y mis logros son tuyos. A mi hija, porque ella tuvo que soportar largas horas

sin la compañía de su papá, quizás sin entender por su corta edad, el porque su papá pasaba

tantas horas frente a la computadora y no acostado y/o jugando con ella. A pesar de ello,

compartimos siempre hermosos momentos y su sola sonrisa me llenaba de fuerzas.

También agradezco a todos mis amigos con los cuales compartí el camino del estudio y

siempre me apoyaron en los buenos y malos momentos.

Y por último, me gustaría agradecer a mi director de tesis Prof. Ing. Aciti Claudio, por haber

compartido sus conocimientos, orientaciones, su manera de trabajar y su paciencia que han

sido fundamentales en mi formación profesional.

3

4

Índice general

1. Introducción 3

1.1. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.2. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.3. Alcance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.4. Organización del trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2. Estado Del Arte 9

2.1. Sistemas Heterogéneos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.1.1. Tareas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.1.2. Estrategias de planificación . . . . . . . . . . . . . . . . . . . . . . . . 13

2.1.3. Cambio de contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.1.4. Planificador por prioridades . . . . . . . . . . . . . . . . . . . . . . . 19

5

2.1.5. Deadline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.1.6. Gestor de tareas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2.1.7. Factor de utilización . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.1.8. Computación paralela . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.2. Sistemas de Tiempo Real (STR) . . . . . . . . . . . . . . . . . . . . . . . . . 30

2.2.1. Sistemas Operativos de Tiempo Real (SOTR) . . . . . . . . . . . . . . 31

2.2.2. Clasificación de los sistemas de tiempo Real . . . . . . . . . . . . . . 32

2.2.3. Planificación en sistemas heterogéneos de tiempo real . . . . . . . . . 34

2.2.4. Algoritmo de Mapeo AMTHA . . . . . . . . . . . . . . . . . . . . . . 35

3. Descripción del Problema 37

3.1. Sistema de tiempo real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.2. Sistemas heterogéneos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.3. Sistema de tiempo real de tareas periódicas en procesadores heterogéneos . . . 39

3.4. Estructuras de datos usadas en un sistema . . . . . . . . . . . . . . . . . . . . 40

3.5. Paso a paso de la planificación de tareas . . . . . . . . . . . . . . . . . . . . . 40

3.6. Mecanismos para la planificación de tareas . . . . . . . . . . . . . . . . . . . . 41

3.7. Mecanismos para manejo de tareas no cumplidas por sobrecarga . . . . . . . . 42

6

4. Solución propuesta 43

4.1. Simulador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.1.1. Descripción del simulador . . . . . . . . . . . . . . . . . . . . . . . . 43

4.1.2. Instrucciones para ejecutar una planificación . . . . . . . . . . . . . . 47

4.2. Casos testigos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4.3. Generación de escenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

4.3.1. Escenarios generados para testeo . . . . . . . . . . . . . . . . . . . . . 79

4.3.2. Resultados de los escenarios generados para testeo . . . . . . . . . . . 79

5. Conclusiones 97

6. Trabajos Futuros 99

7

8

Índice de figuras

2.1. Clasificación de las tareas según sus características temporales . . . . . . . . . 11

2.2. Clasificación de las tareas según sus características semánticas . . . . . . . . . 12

2.3. Parámetros de una tarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.4. Estrategia de planificación por lote . . . . . . . . . . . . . . . . . . . . . . . . 15

2.5. Estrategia de planificación Apropiativa . . . . . . . . . . . . . . . . . . . . . . 16

2.6. Transición de estados de una tarea . . . . . . . . . . . . . . . . . . . . . . . . 17

2.7. Cambio de contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.8. Clasificación planificador por prioridades . . . . . . . . . . . . . . . . . . . . 20

2.9. Estrategia estática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.10. Estrategia dinámica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.11. Clasificación deadline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.12. Deadline aborto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

9

2.13. Terminación tardía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2.14. Modelo MIMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.15. Ejemplo 1: AMD Fusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.16. Ejemplo 2: Nvidia Tegra Die . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.17. Ejemplo 3: CPU combinado con una FPGA . . . . . . . . . . . . . . . . . . . 30

2.18. Clasificación de los sistemas de tiempo real . . . . . . . . . . . . . . . . . . . 34

3.1. Se observa una acción Ji,0 de una tarea τi . . . . . . . . . . . . . . . . . . . . . 38

4.1. Ventana principal de la herramienta en su estado inicial . . . . . . . . . . . . . 44

4.2. Descripción de la ventana principal de la herramienta en su estado inicial . . . 45

4.3. Estructura que debe cumplir el archivo a importar . . . . . . . . . . . . . . . . 48

4.4. Botón para comenzar la ejecución de la planificación . . . . . . . . . . . . . . 49

4.5. Botón para almacenar un resumen de la planificación . . . . . . . . . . . . . . 49

4.6. Planificación PF ABORTO instante 0 (cero) de tiempo . . . . . . . . . . . . . 50

4.7. Planificación PF ABORTO instante 2 (dos) y 3 (tres) de tiempo . . . . . . . . . 52

4.8. Planificación PF ABORTO instante 3 (tres) de tiempo . . . . . . . . . . . . . . 54

4.9. Planificación PF ABORTO instante 5 (cinco), 6 (seis) y 7 (siete) de tiempo . . . 55

10

4.10. Planificación PF FINALIZACIÓN TARDÍA instante 5 (cinco) y 6 (seis) de tiempo 56

4.11. Planificación PF ABORTO instante 9 (nueve) y 10 (diez) de tiempo . . . . . . 58

4.12. Planificación PF FINALIZACIÓN TARDÍA instante 9 (nueve) y 10 (diez) de

tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.13. Planificación PF FINALIZACIÓN TARDÍA instante 19 (diecinueve) y 20 (vein-

te) de tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

4.14. Planificación PF FINALIZACIÓN TARDÍA instante 5 (cinco), 6 (seis) y 7 (sie-

te) de tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

4.15. Planificación PF FINALIZACIÓN TARDÍA instante 12 (doce) de tiempo . . . 63

4.16. Planificación PF ABORTO instante 3 (tres), 4 (cuatro) y 5 (cinco) de tiempo . . 64

4.17. Planificación EDF FINALIZACIÓN TARDÍA instante 0 (cero), 1 (uno) y 2

(dos) de tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

4.18. Planificación PF ABORTO instante 4 (cuatro) y 5 (cinco) de tiempo . . . . . . 66

4.19. Planificación PF ABORTO instante 1 (uno), 2 (dos) y 3 (tres) de tiempo . . . . 67

4.20. Planificación PF ABORTO instante 4 (cuatro) y 5 (cinco) de tiempo . . . . . . 69

4.21. Planificación PF FINALIZACIÓN TARDÍA instante 4 (cuatro) y 5 (cinco) de

tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

4.22. Planificación PF ABORTO periodo y cómputo de una tarea . . . . . . . . . . . 71

4.23. Detalle de las instancias que fallaron en la planificación PF y ABORTO . . . . 73

11

4.24. Detalle de las instancias que finalizaron correctamente en la planificación PF y

ABORTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

12

Índice de cuadros

4.1. Ejemplo 1 de definición de tareas . . . . . . . . . . . . . . . . . . . . . . . . . 51

4.2. Ejemplo 1 de definición de procesadores . . . . . . . . . . . . . . . . . . . . . 51

4.3. Ejemplo 2 de definición de tareas . . . . . . . . . . . . . . . . . . . . . . . . . 62

4.4. Ejemplo 2 de definición de procesadores . . . . . . . . . . . . . . . . . . . . . 62

4.5. Ejemplo 3 de definición de tareas . . . . . . . . . . . . . . . . . . . . . . . . . 68

4.6. Tipos de procesadores y sus clocks . . . . . . . . . . . . . . . . . . . . . . . . 75

4.7. Cantidad de procesadores de cada tipo . . . . . . . . . . . . . . . . . . . . . . 75

4.8. Ejemplo de generación de 5 (cinco) procesadores . . . . . . . . . . . . . . . . 76

4.9. Cantidad de tareas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

4.10. Ejemplo de generación de 20 (veinte) tareas con FU=1.5 . . . . . . . . . . . . 78

4.11. Descripción de los escenarios de testeo . . . . . . . . . . . . . . . . . . . . . . 79

4.12. Resultados planificación escenario 1 con PF y Aborto . . . . . . . . . . . . . . 80

13

4.13. Resultados planificación escenario 1 con PF y Terminación Tardía . . . . . . . 81

4.14. Resultados planificación escenario 1 con EDF y Aborto . . . . . . . . . . . . . 82

4.15. Resultados planificación escenario 1 con EDF y Terminación Tardía . . . . . . 83

4.16. Resultados planificación escenario 2 con PF y Aborto . . . . . . . . . . . . . . 84

4.17. Resultados planificación escenario 2 con PF y Terminación Tardía . . . . . . . 85

4.18. Resultados planificación escenario 2 con EDF y Aborto . . . . . . . . . . . . . 86

4.19. Resultados planificación escenario 2 con EDF y Terminación Tardía . . . . . . 87

4.20. Resultados planificación escenario 3 con PF y Aborto . . . . . . . . . . . . . . 88

4.21. Resultados planificación escenario 3 con PF y Terminación Tardía . . . . . . . 89

4.22. Resultados planificación escenario 3 con EDF y Aborto . . . . . . . . . . . . . 90

4.23. Resultados planificación escenario 3 con EDF y Terminación Tardía . . . . . . 91

4.24. Resultados planificación escenario 4 con PF y Aborto . . . . . . . . . . . . . . 92

4.25. Resultados planificación escenario 4 con PF y Terminación Tardía . . . . . . . 93

4.26. Resultados planificación escenario 4 con EDF y Aborto . . . . . . . . . . . . . 94

4.27. Resultados planificación escenario 4 con EDF y Terminación Tardía . . . . . . 95

1

2

Capítulo 1

Introducción

Los sistemas heterogéneos han resultado atractivos durante la última década, ofreciendo

altos niveles de performance y uso de energía, comparados con los sistemas tradicionales con

un único procesador, sistemas monoprocesadores, donde el CPU era el encargado de ejecutar

todas las tareas programadas (Brodtkorb et al., 2010).

Con el fin de producir mejores rendimientos, se comenzó a utilizar dentro de una misma

computadora más de un procesador y se lo denominó sistemas multiprocesadores, en los que se

pueden distinguir los sistemas multiprocesadores homogéneos y los sistemas multiprocesadores

heterogéneos (Mednis et al., 2011) (Burns and Wellings, 2010).

Los sistemas heterogéneos, están formados por distintos procesadores pudiendo contener

uno o más de cada tipo. Estos sistemas, pueden utilizar una variedad de diferentes tipos de pro-

cesadores, por ejemplo, un procesador de propósito general (GPP) y un procesador de propósito

especial (GPU 1, FPGA 2) (Laplante, 1992).

Dentro de un sistema heterogéneo, en el cual sus procesadores tienen características dis-

1Graphics processing units2Field programmable gate array

3

tintas, es posible implementar un sistema de tiempo real. Un sistema de tiempo real, es aquel

encargado de producir respuestas dentro de un determinado tiempo finito, es decir, la calidad

de las respuestas del sistema se ve condicionada por el momento en que se producen las mis-

mas (Liu and Layland, 1973). Antiguamente, los sistemas de tiempo real solo eran utilizados en

las aplicaciones de las grandes industrias altamente automatizadas, en la exploración espacial

(Khatib, 1986), en dispositivos e instrumentos militares como aplicaciones capaces de detectar

fuego automáticamente (Healey et al., 1993), entre otros. Actualmente, este tipo de sistemas se

utilizan en una gran cantidad de dispositivos electrónicos de uso corriente (Orozco et al., 2013).

Básicamente un sistema está compuesto por un grupo de tareas o trabajos y un conjunto de

procesadores cuya función es la de ejecutar las tareas. Por ejemplo, una clásica representación

de un sistema de tiempo real, es una sucesión de trabajos que deben ser ejecutados en el/los

procesador/es, los trabajos compiten por el recurso procesador, por lo que se requiere una pla-

nificación de ejecución . Es por esto, que se tiene que realizar una buena planificación de sus

tareas que garantice el cumplimiento de las mismas . En los sistemas de tiempo real, la plani-

ficación de las tareas es muy importante ya que debe garantizar que se ejecuten, cumpliendo

con sus requisitos temporales, de no ser así el sistema no funcionará correctamente (Blanco de

Frutos et al., 2012) (Flores, 1995).

Los sistemas cuentan con un gestor de tareas, el cual tiene como función planificar el uso de

los procesadores. En el caso de los sistemas heterogéneos, es importante mantener el equilibrio

de carga del sistema entre los distintos procesadores para poder utilizar al máximo cada uno de

ellos, acompañado de una planificación eficiente (Luna et al., 2010) (Díaz et al., 2006).

Existen diferentes estrategias de planificación, que utilizan algoritmos con el fin de realizar

planificaciones eficientes para el sistema. El módulo encargado de implementar el algoritmo de

planificación, se denomina planificador. Muchos de los algoritmos de planificación, se basan

en los parámetros de las tareas, en especial en la prioridad, para producir sus planificaciones.

La prioridad, es un valor numérico que se le asigna a cada una de las tareas al momento de su

creación (Orozco et al., 2013).

4

Dentro de los algoritmos de planificación por prioridades, se destacan los algoritmos de

planificación por prioridades fijas (PF), los cuales mantienen fija la prioridad de cada tarea

durante toda su ejecución y los algoritmos de planificación por prioridades dinámicas (EDF),

los cuales no mantienen fija la prioridad de cada tarea, sino que la misma disminuye en cada

instante de tiempo durante la ejecución de su período (Liu and Layland, 1973).

En la actualidad, un conjunto de aplicaciones y frameworks existen en la literatura para

la simulación de planificaciones de tareas en sistemas de tiempo real. Entre los más relevan-

tes se pueden mencionar a STRESS (Audsley et al., 1994), PERTS (Liu et al., 1996), YASA

(Golatowski et al., 2002), Cheddar (Singhoff et al., 2004), RealTTS (Diaz et al., 2007) y el

simulador de la Université Libre de Bruxelles (Vroey et al., 1996). Aplicaciones como MAST

(González Harbour et al., 2001) ofrecen herramientas de modelado, y otras como FORTISSIMO

(Kramp et al., 2000) presentan una plataforma para el diseño de simulaciones.

1.1. Motivación

La atracción generada en la última década por los sistemas heterogéneos, ofreciendo mejor

performance, que los sistemas tradicionales (sistemas monoprocesadores y sistemas multipro-

cesadores homogéneos), produjo que el desarrollo de nuevas estrategias de planificación sea un

activo campo de investigación, debido a que los algoritmos de planificación juegan un impor-

tante papel en los sistemas heterogéneos (Mednis et al., 2011).

La planificación de las tareas, es una de las problemáticas más importantes a resolver por

los sistemas heterogéneos, con el fin de poder aprovechar el máximo potencial de cada com-

ponente. Para explotar todo el potencial de un componente heterogéneo es necesario asignar

correctamente la carga de trabajo. La planificación de tareas y el equilibrio de carga del sistema

se vuelven más complejos en los sistemas heterogéneo. En los sistemas de tiempo real, la pla-

nificación de las tareas es fundamental para garantizar que las tareas se ejecuten correctamente

5

dentro de los tiempos previamente asignados a cada tarea. En resumen, todo sistema busca rea-

lizar planificaciones eficientes de sus tareas, capaz de garantizar el cumplimiento de las mismas

(Díaz et al., 2006) (Flores, 1995).

Considerando éste contexto y la problemática de la planificación, que resulta fundamental

en todo sistema, junto con el déficit generado por no encontrar un software capaz de realizar

planificaciones de tareas en sistemas de tiempo real con procesadores heterogéneos, se propone

el desarrollo de un prototipo simulador, de un planificador de tareas, cuya planificación resul-

tante dependerá de las condiciones y/o restricciones previamente seleccionadas, el planificador

generará planificaciones de N tareas en M procesadores previamente cargados.

Para las planificaciones realizadas con el simulador, se utilizaran N tareas periódicas con

prioridades en M procesadores, pudiendo éstos ser procesadores distintos. Las tareas periódicas,

son aquellas que se repiten en un período de tiempo el cual se define como un parámetro mas

de la tarea. Además del uso de algoritmos de planificación por prioridades, el simulador contará

con dos políticas de acción en caso de que la instancia de una tarea alcance su tiempo máximo

de espera, siendo éstas Aborto, en la cual se abortará inmediatamente la instancia de la tarea

que alcance el tiempo máximo de espera o Terminación tardía, en la cual se descartara/n la/s

instancia/s siguiente/s a la que alcance el tiempo máximo de espera, otorgándole tiempo a la

instancia para que la misma finalice su ejecución (Páez et al., 2014) (Blanco de Frutos et al.,

2012).

1.2. Objetivo

El objetivo es el desarrollo e implementación de un prototipo de simulador de planificador

de tarea en sistemas de tiempo real con procesadores heterogéneos, en el cual, un usuario podrá

elegir distintas combinaciones de algoritmos de planificación.

6

Se utilizarán algoritmos de planificación por prioridades, pudiéndose elegir planificar por

prioridades fijas (PF) o planificar por prioridades dinámicas (EDF).

El simulador realizará planificaciones de N tareas en M procesadores (pudiendo estos ser

distintos), y a cada tarea se le podrá indicar en que tipo de procesador podrá ejecutarse, ya que

al trabajar con sistemas heterogéneos puede darse el caso de que una tarea sea ejecutable en

mas de un tipo de procesador o por lo contrario que una tarea pueda ejecutarse en un tipo de

procesador y no en otro.

1.3. Alcance

Se utilizarán algoritmos de planificación por prioridades, pudiéndose elegir planificar por

prioridades fijas (PF) o planificar por prioridades dinámicas (EDF).

El simulador realizará planificaciones de N tareas en M procesadores (pudiendo estos ser

distintos), y a cada tarea se le podrá indicar en que tipo de procesador podrá ejecutarse, ya que

al trabajar con sistemas heterogéneos puede darse el caso de que una tarea sea ejecutable en

mas de un tipo de procesador o por lo contrario que una tarea pueda ejecutarse en una tipo de

procesador y no en otro.

1.4. Organización del trabajo

En el capítulo 1 se presenta una breve introducción, mencionando conceptos básicos de los

sistemas y los diferentes tipos de sistemas existentes, enfocándose en los sistemas multiproce-

sadores heterogéneos y en los sistemas de tiempo real. Se explica también, la motivación que

impulsó el desarrollo e implementación del simulador y se plantean los objetivos.

7

En el capítulo 2, se realiza un repaso por el estado del arte, donde se profundizan los con-

ceptos mencionados en la introducción sobre los sistemas haciendo foco en los sistemas hetero-

géneos y los sistemas de tiempo real. Además, se profundiza la investigación sobre los distintos

tipos de planificadores y los algoritmos existentes utilizados para realizar planificaciones de las

tareas que componen un sistema.

En el capítulo 3, se presenta el problema a resolver, enfocándose en la planificación de

tareas en un sistema multiprocesador heterogéneo donde se implementa un sistema de tiempo

real.

En el capítulo 4, se plantea la solución al problema planteado en el capítulo anterior, deta-

llándose la implementación del simulador y las pruebas realizadas para su testeo.

En el capítulo 5, se plantean las conclusiones obtenidas luego del estudio de los resultados

obtenidos con la solución planteada.

En el capítulo 6, se plantean los trabajos futuros.

8

Capítulo 2

Estado Del Arte

2.1. Sistemas Heterogéneos

Se define a los sistemas heterogéneos como, un sistema formado por distintos tipos de pro-

cesadores, pudiendo contener uno o más procesadores de cada tipo. Éstos sistemas, utilizan una

variedad de diferentes tipos de procesadores, por ejemplo, un procesador de propósito general

(GPP) y un procesador de propósito especial (GPU, FPGA) (Laplante, 1992).

Un sistema heterogéneo, es aquel que se encuentra compuesto por hardware con caracte-

rísticas físicas distintas entre sí, pero se pueden comunicar utilizando medios comunes, puede

contener procesadores con distintas velocidades de cómputo, así como los tiempos de transfe-

rencia de datos, pueden ser diferentes en las comunicaciones entre cada par de procesadores

(Orozco et al., 2013).

La velocidad de un procesador se define en función del número de operaciones por se-

gundo, así como el tiempo que requiere para realizar un acceso a memoria. La diversidad de

procesadores es importante para la computación heterogénea ya que cada tipo de procesador

9

tiene sus puntos fuertes y débiles. Mediante la utilización eficaz de diversos procesadores, la

computación heterogénea aumenta al máximo el rendimiento de aplicaciones, la eficiencia tér-

mica y la duración de baterías, entre otros (Moreno, 2004).

Antiguamente, los sistemas monoprocesadores, contaban con un único procesador (CPU)

el cual era el encargado de ejecutar todas las tareas programadas. Con el fin de producir mejores

rendimientos, se comenzó a utilizar sistemas multiprocesadores, los cuales están formados por

más de un procesador. Los sistemas de computación heterogénea 1, se han usado extensivamente

para resolver problemas complejos durante los últimos quince años, fundamentalmente, por la

capacidad de cómputo (Mednis et al., 2011) (Burns and Wellings, 2010) (Luna et al., 2010).

2.1.1. Tareas

Todo sistema, esta compuestos por un grupo de tareas o trabajos 2 y un conjunto de proce-

sadores cuya función es la de ejecutar las tareas. Se considera a una tarea, como una sucesión de

trabajos que se repiten a lo largo del tiempo, cuando una tarea comienza a ejecutarse comenzará

a ejecutarse su primer trabajo y cuando el último trabajo finalice, finalizará la ejecución de la

tarea (Laplante, 1992).

Clasificación de las tareas

Usualmente, no todas las tareas que se ejecutan en un sistema tienen la misma relevancia

a la hora de cumplir los plazos de ejecución, existen diferentes tipos de tareas como: “Ta-

reas periódicas”, “Tareas esporádicas”, “Tareas Críticas”, etc. En un sistema, pueden existir por

ejemplo tareas críticas y tareas con plazos de ejecución menos críticas, o también tareas sin

plazos de ejecución (Liu and Layland, 1973).

1En inglés,(HC) Heterogeneous Computing2En inglés, Jobs

10

Clasificación según sus características temporales: (Páez et al., 2014)

Tareas periódicas: Son tareas cuya ejecución se realiza periódicamente, es decir, sus tra-

bajos entran en ejecución en un periodo constante.

Tareas esporádicas: Son tareas que al igual que las tareas periódicas, tienen un plazo de

finalización estricto, pero no se ejecutan de forma periódica sino esporádicamente. Su

ejecución es ocasional o con poca frecuencia y a diferencia de las tareas periódicas, no se

puede predecir cuándo estará lista para ejecutarse.

Tareas aperiódicas: Son tareas no tienen plazo de finalización, o en caso de tenerlo, no

es condición obligatoria su cumplimiento, estas condiciones las diferencian de las tareas

periódicas.

Figura 2.1: Clasificación de las tareas según sus características temporales

Clasificación según sus características semánticas: (Rivas, 2002)

Tareas críticas: Son tareas que su fallo (por no ejecutarse a tiempo) puede ser catastrófico

para el sistema. El sistema no debería continuar con su ejecución en caso que una tarea

de este tipo falle.

11

Tareas opcionales: Son tareas que si se retrasa su ejecución no afecta a la seguridad del

sistema. (Monitorización del sistema, Tareas de mantenimiento, entre otras). Las tareas

opcionales las podemos dividir en dos grupos.

• Opcionales con plazo 3: Disponen de un tiempo de ejecución recomendado.

• Opcionales sin plazo 4: No disponen de un tiempo de ejecución recomendado.

Figura 2.2: Clasificación de las tareas según sus características semánticas

Parámetros de una tarea

Una tarea está compuesta por una serie de parámetros que afectan al comportamiento tem-

poral. Muchos de los algoritmos de planificación, se basan en los parámetros de las tareas, en

especial en la prioridad, para producir sus planificaciones. Una tarea es considerada para ser

ejecutada antes que otra, si tiene mayor prioridad (Crespo and Alonso, 2006)(Pérez, 2003).

Estos parámetros son:

Pi : Periodo de activación, si es periódico. También conocido como “periodo”, es el

instante de tiempo en que la tarea se encuentra activa para ejecutarse, si se llega al final del3En inglés, Hard aperiodic4En inglés, Soft aperiodic

12

periodo y la tarea no terminó su ejecución entonces falla. Si el proceso es esporádico, se

tratará como un proceso periódico con período igual al mínimo tiempo entre activaciones.

Ci : Tiempo máximo de ejecución, también conocido como “tiempo de cómputo” de la

tarea.

Di : Plazo máximo de terminación, también conocido como Deadline.

Ri : Tiempo de respuesta máximo. Es el tiempo desde que la tarea se activa hasta que

termina de ejecutarse.

Pri : Prioridad de la tarea (convenio: mayor valor numérico, menor prioridad).

Si : Desfase respecto al momento inicial.

Figura 2.3: Parámetros de una tarea

2.1.2. Estrategias de planificación

Todo sistema, debe realizar una buena planificación de sus tareas, que garantice el cumpli-

miento de las mismas. Existen diferentes estrategias de planificación, que utilizan los algoritmos

con el fin de realizar planificaciones eficientes para el sistema. (Blanco de Frutos et al., 2012).

13

En un sistema, sin importar el número de procesadores que contenga, se deben asignar los

trabajos a los procesadores en un orden determinado para que sean ejecutados. El modulo que

implementa el algoritmo que decide que trabajo ejecuta cada procesador y en que orden, se

denomina planificador. Éste es el encargado de que el sistema pueda garantizar con el cumpli-

miento de los vencimientos de las tareas, para esto, debe elegir a que tarea otorga el derecho

de ejecución en cada procesador, una vez que tarea se instancia o termina, el planificador de-

be examinar la cola de tareas listas y dependiendo de la política de prioridades implementada,

elegir la siguiente para su ejecución (Orozco et al., 2013) (Luna et al., 2010).

La planificación es fundamental de un sistema, se entiende por planificación, a una asigna-

ción concreta de trabajos a procesadores, en intervalos de tiempo determinados. Generalmente

se habla de dos clases de planeamiento o políticas de planeamiento: previa a la ejecución 5 ó

durante la ejecución 6 (Flores, 1995).

Se pueden distinguir dos estrategias básicas de planificación:

Planificación por Lote: Consiste en asignar la CPU por turnos, es decir, a un tarea se

le asigna una CPU y no se permite la interrupción de la misma hasta que finalice el

trabajo/instancia. De esta manera, una tarea, utiliza una CPU un tiempo igual al su tiempo

de cómputo, cuando se libera la CPU, es asignada a la siguiente tarea de la lista. En ésta

estrategia se minimiza el tiempo de conmutación entre tareas (cambio de contexto 7) y

es efectiva en pequeños sistemas donde los tiempos se pueden calcular cuidadosamente;

es una estrategia que requiere que los tiempos de las tareas sean lo más similar posible

y que no se caracteriza por beneficiar a las tareas de mayor prioridad, pudiendo suceder

que una tarea de mayor prioridad espere la finalización de una tarea de menor prioridad.

Ejemplo: Se implementa un procesador y dos tareas T1 y T2 con las siguientes caracte-

rísticas:5En inglés, Pre-run-time6En inglés, Run-time scheduling7En inglés, Context switching

14

T 1⇒ Pr1 = 1,C1 = 3,P1 = 5,D1 = P1

T 2⇒ Pr2 = 4,C2 = 5,P2 = 5,D2 = P2

Además T1 se comienza a ejecutar en el instante 2 (dos) de tiempo.

La ejecución con esta estrategia sería:

Figura 2.4: Estrategia de planificación por lote

Como se observa en el ejemplo, la tarea T1 , de mayor prioridad espera para tomar

control de la CPU a que T2 lo libere, sin considerar que T2 es de menor prioridad.

Planificación Apropiativa 8: Consiste en asignar la CPU a una tarea dada en un tiempo

determinado, pero la misma puede ser interrumpida y desalojada antes que haya finali-

zado su ejecución. Debido a esto es necesario realizar un cambio de contexto cada vez

que conmutan las tareas. Existen diferentes estrategias por las que una tarea puede ser

desalojada por ejemplo round-robin, por prioridades, etc.(Krause et al., 2008).

En una estrategia por prioridades y apropiativa, una tarea de mayor prioridad no debe

esperar para ejecutarse si en el procesador se está ejecutando una de menor prioridad, en

ese caso se debe realizar un cambio de contexto y comenzar la ejecución de la tarea de

mayor prioridad, es ahí cuando se ve que la tarea de mayor prioridad se apropia del CPU

(Liu and Layland, 1973).8En inglés, Pre-emptive

15

Ejemplo: Se define un planificador apropiativo por prioridades, en el cual se implementa

un procesador y dos tareas T1 y T2 con las siguientes características:

T 1⇒ Pr1 = 1,C1 = 3,P1 = 5,D1 = P1

T 2⇒ Pr2 = 4,C2 = 5,P2 = 5,D2 = P2

Además T1 se comienza a ejecutar en el instante 2 (dos) de tiempo.

La ejecución con esta estrategia sería:

Figura 2.5: Estrategia de planificación Apropiativa

Como se ve en el ejemplo, a diferencia del caso anterior, la tarea T1 , de mayor prioridad

no espera para tomar control de la CPU y desaloja a T2 la cual se almacena en la cola

de tareas listas, a la espera de tomar nuevamente el control de la CPU y continuar su

ejecución, se genera un cambio de contexto.

2.1.3. Cambio de contexto

El cambio de contexto, se produce cuando una tarea que está siendo ejecutada en una

CPU determinada, debe ser desalojada para que su lugar sea ocupado por una nueva tarea.

Al producirse un cambio de contexto, es necesario que se almacene el entorno de cada tarea

16

desalojada ya que posteriormente se le podrá asignar tiempo de CPU y debe continuar desde el

punto exacto donde fue interrumpida (Krause et al., 2008)(Rivas, 2002).

Una tarea va cambiando de estados hasta que finaliza su ejecución. La transición de estados

de una tarea son:

Figura 2.6: Transición de estados de una tarea

Ejecutándose: La tarea tiene el control de la CPU.

Lista: La tarea está lista para utilizar la CPU, pero no dispone de ella porque la está

utilizando otra tarea.

Suspendida : La tarea finaliza su ejecución y está en espera de una nueva activación o

necesita de un recurso que no está disponible.

Ejemplo:

Se implementa un procesador y dos tareas T1 y T2 con las siguientes características:

T 1⇒ Pr1 = 1,C1 = 3,P1 = 5,D1 = P1

T 2⇒ Pr2 = 4,C2 = 5,P2 = 5,D2 = P2

17

Además T1 se comienza a ejecutar en el instante 2 (dos) de tiempo.

La ejecución con esta estrategia sería:

Figura 2.7: Cambio de contexto

Se observa que en el instante 1 (uno) de tiempo, se produce un cambio de contexto, debido

a que la tarea T2 se estaba ejecutando en el procesador, pero al estar lista la tarea T1 para

ejecutarse y tener mayor prioridad, se desalojó T2 del procesador y comenzó a ejecutarse T1 .

El contexto de una tarea guarda el estado del procesador justo antes de que otra tarea tome

el control de este. Se puede implementar con un puntero a la próxima instrucción que se debe

ejecutar 9, la dirección actual de la parte alta de la pila 10 y el contenido de los registros de

propósito general y los flags de estado. Por lo tanto el cambio de contexto supone guardar el

contexto de la tarea anterior y cargar el contexto de la nueva tarea. Esta parte de código es

específica de cada procesador (Pérez, 2003).

9En inglés, Instruction pointer10En inglés, Stack pointer

18

2.1.4. Planificador por prioridades

Para para poder implementar un planificador por prioridades, es necesario asignarle a cada

tarea una prioridad, la cual es un valor numérico que se usa como factor para determinar que

tarea se apodera de la CPU antes que otra(s). Se le otorga mayor prioridad, a las tareas que

tenga especificaciones de tiempo más severas y sean vitales para el correcto funcionamiento del

sistema. En tiempo de ejecución siempre se intentara ejecutar la/s tarea/s de mayor prioridades

que se encuentren activas en cada instante de tiempo (Liu and Layland, 1973).

La asignación de prioridades puede ser de dos tipos:

Estáticas: La prioridad de cada tarea permanece constante en cada instancia de tiempo,

durante toda la ejecución del sistema.

Dinámicas: La prioridad de cada tarea varía en cada instante de tiempo, dependiendo las

reglas definidas.

Una desventaja de la planificación por prioridades estáticas o fijas es la inanición 11, la asigna-

ción dinámica de prioridades intenta resolver ésta situación.

En conclusión, un planificador basado en el concepto de prioridades, asigna el procesador

a la tare de mayor prioridad entre todas las que están activas. Generalmente se considera que

una tarea posee mayor prioridad que otra cuando el número que representa la prioridad es mas

chico, generalmente la mayor prioridad corresponderá al valor 0 y la prioridad será menor según

aumenta su valor (Crespo and Alonso, 2006).

11Inanición, en inglés starvation, es cuando un proceso/tarea queda esperando debido a que siempre hay alguna

tarea con mayor prioridad lista para ejecutarse.

19

Figura 2.8: Clasificación planificador por prioridades

Planificador con prioridades estáticas

Cuando las prioridades de todas las tareas del sistema se mantienen constantes a lo largo

del tiempo, se considera que la asignación de prioridades es estática. Ésta política de asignación

de prioridades es la muy utilizada en los sistemas de tiempo real comerciales, sin embargo,

puede no ser óptima y conducir a fallos en tiempos de respuesta de algún proceso, incluso hacer

que el procesador sea poco utilizado (Crespo and Alonso, 2006).

Otra desventaja de este tipo de asignación estática, es la inanición de las tareas. La imple-

mentación de este tipo de planificador es relativamente sencilla, ya que las prioridades de las

tareas no varían.

Entre los planificadores con prioridades estáticas, los más importantes son: (Liu and Lay-

land, 1973)

Rate Monotonic (RM): Se asignan las prioridades según el periodo. La tarea de menor

período, se le asigna la mayor prioridad.

Deadline Monotonic (DM): Se asignan las prioridades según sus plazos. La tarea con el

plazo más corto, se le asigna la mayor prioridad.

20

Ejemplo: Supongamos que tenemos un planificador con prioridades estáticas y dos tareas T1 y

T2 con las siguientes características:

T 1⇒ Pr1 = 1,C1 = 3,P1 = 5,D1 = P1

T 2⇒ Pr2 = 4,C2 = 5,P2 = 5,D2 = P2

Además T1 se comienza a ejecutar en el instante 2 (dos) de tiempo.

La ejecución con esta estrategia sería:

Figura 2.9: Estrategia estática

Como se puede observar en el ejemplo, las tareas no modifican sus prioridades a lo largo

de la ejecución, en cada ciclo se ejecutaran en el mismo orden siempre que no se agregue una

nueva tarea que modifique el orden. Éste tipo de planificador corre el riesgo de tener una tarea

que no se ejecute nunca ya que otras tareas tienen prioridad de ejecución sobre ella.

Planificador con prioridades dinámicas

Este tipo de planificador, al igual que el de prioridades estáticas, basa su planificación en

las prioridad de cada tarea, y se caracteriza porque las prioridades no se mantienen estáticas,

21

sino que varían durante el tiempo de ejecución (Crespo and Alonso, 2006).

Al igual que en el caso anterior, en cada instante de tiempo se ejecutan las tareas que tengan

mayor prioridad, en éste tipo de planificador se obtienen mejores factores de utilización que con

los métodos de asignación estática y los resultados obtenidos se pueden generalizar a sistemas

de procesos interactivos (Liu and Layland, 1973).

Los algoritmos de planificación basados en prioridades dinámicas, presentan dos importan-

tes ventajas: aprovechan al máximo la potencia del procesador y se adaptan muy bien a entornos

altamente dinámicos evitando la inanición que se podía producir con las asignaciones estáticas

(Rivas, 2002).

Básicamente se utilizan dos planificadores dinámicos, estos son: (Liu and Layland, 1973)

EDF 12. Se asignan las prioridades dando preferencia a las tareas con plazo de finalización

más próximo.

LLF 13. Se asignan las prioridades dando preferencia a las tareas con menor holgura.

Ejemplo: Supongamos que tenemos un planificador con prioridades dinámicas y dos tareas

T1 y T2 con las siguientes características:

T 1⇒ Pr1 = 1,C1 = 3,P1 = 5,D1 = P1

T 2⇒ Pr2 = 4,C2 = 5,P2 = 5,D2 = P2

Además T1 se comienza a ejecutar en el instante 2 (dos) de tiempo.

La ejecución con esta estrategia sería:

12En inglés Earliest Deadline First13En inglés Least Laxity First

22

Figura 2.10: Estrategia dinámica

Como se puede observar en el ejemplo, las tareas modifican sus prioridades a lo largo de la

ejecución, en cada instante de tiempo, las prioridades de las tareas se reduce, lo cual modifica

el orden de ejecución que ya no será fijo como en el caso anterior, esto ayuda a prevenir la

inanición de una tarea.

2.1.5. Deadline

El deadline se produce cuando la instancia de una tarea llega a su tiempo límite sin com-

pletar su ejecución, en ese caso, se dice que alcanzó su deadline o tiempo máximo de espera.

Cuando esto sucede, se debe contar con una política para decidir qué hacer con cada instancia

de las tareas que alcancen su tiempo máximo de espera, éstas políticas básicamente se basan en

sí se descarta o no la instancia de la tarea que no complete su ejecución y llegue a su tiempo má-

ximo. Dentro de estas políticas de decisión se distinguen las políticas “Aborto” y “Terminación

Tardía” (Burns and Wellings, 2010).

Aborto 14: Al implementar esta política, lo que se hace es descartar la instancia de la

14En inglés, Abortion

23

Figura 2.11: Clasificación deadline

tarea que no completa su ejecución y alcanza su deadline, y al momento de ejecutarse

nuevamente, la tarea continuará ejecutándose desde la instancia siguiente.

Ejemplo:

Figura 2.12: Deadline aborto

Terminación Tardía 15: Básicamente al implementar esta política, lo que se hace es com-

pletar la instancia que alcanzó su tiempo máximo consumiendo el tiempo de la instancia

siguiente, es decir, en este caso no se descarta la instancia que alcanzó su tiempo máximo,

15En inglés, Delayed Completion

24

sino que se descartan tantas instancias continuas como sean necesarias para completar la

ejecución de la instancia que alcanzó el tiempo máximo.

Ejemplo:

Figura 2.13: Terminación tardía

2.1.6. Gestor de tareas

Todo sistema, cuenta con un gestor de tareas, cuya función es planificar el uso de los

procesadores.

Sus funciones son:(Luna et al., 2010)

Mantener un registro del estado de cada tarea.

Planificar el uso de la CPU, decide qué tarea se ejecuta en cada instante de tiempo.

Realizar en caso de ser necesario el cambio de contexto entre procesos.

Es importante mantener un registro de cada tarea para llevar control de su estado en cada

instante de tiempo. Las tareas compiten por el uso de la CPU para realizar su ejecución y en cada

25

instante de tiempo el gestor de tarea debe evaluar todas las tareas que están listas para ejecutar

y asignar el CPU a la tarea que cumpla con los requisitos del planificador, generalmente se

comparan las prioridades de las tareas, pero hay que tener en cuenta todas las propiedades del

planificador para poder decidir correcta y eficazmente (Crespo and Alonso, 2006).

2.1.7. Factor de utilización

Los sistemas heterogéneos, deben mantener el equilibrio de carga del sistema entre los

distintos procesadores para poder utilizar al máximo cada uno de ellos, acompañado de una

planificación eficiente. El factor de utilización, se define como la fracción de tiempo que el

procesador está ocupado ejecutando procesos y se representa con la siguiente fórmula: (Díaz

et al., 2006)

U =N

∑i=1

Ci

Pi

Un sistema utiliza completamente el procesador si la planificación realizada es admisible.

El factor de utilización es una medida de carga, mide el porcentaje de procesamiento que se rea-

liza. Para que un conjunto de tareas periódicas se puedan ejecutar en un procesador, es necesario

que el factor de utilización sea menor o igual que 1 (uno), en caso contrario, alguna/s instancia/s

de las tareas podrían alcanzar su tiempo máximo de espera y tener que ser abortadas. En caso

que el U , sea mayor a 1 o al 100% se produce una sobrecarga en el sistema, produciendo un

strees en el mismo (Olguín et al., 2012).

U ≤ 1

El Factor de Utilización Garantizado para n procesos, UGn , es el valor mínimo del factor

de utilización (U), entre los correspondientes a todos los STR con n procesos que utilizan com-

pletamente el procesador. Al tratarse de un valor mínimo, pueden existir sistemas de tiempo real

26

en los que sea posible alcanzar factores de utilización mayores que el garantizado. El sentido de

este valor es que se garantiza que exista una planificación admisible siempre que: (Luna et al.,

2010)

U ≤UGn

Se puede asegurar que existe una planificación admisible con prioridad estática si el factor de

utilización es inferior a 0,7 . No obstante, en algunos casos, se pueden alcanzar valores más

altos del factor de utilización. Tener un U del 69% es lo que se conoce como limite teórico

aceptable, superando este porcentaje se transforma en cuestionable o peligrosa la planificación

y carga en el CPU (Laplante, 1992).

El factor de utilización medio, generalmente, estará muy por debajo del máximo garanti-

zado (Olguín et al., 2012).

2.1.8. Computación paralela

El término “computación paralela” frecuentemente se solapa con el término “computación

distribuida” y no hay una distinción clara entre ambos, ocurriendo a menudo que un mismo

sistema sea clasificado en ambas categorías. Se pueden utilizar los siguientes criterios para

distinguir un sistema paralelo de uno distribuido: (Aguilar et al., 2004)

En un sistema paralelo, todos los procesadores (homogéneos o heterogéneos) tienen acce-

so a una memoria compartida. Ésta memoria, es utilizada para intercambiar información

entre los procesadores.

En un sistema distribuido, cada procesador tiene su propia memoria privada, la informa-

ción es intercambiada entre procesadores mediante el uso de mensajes.

27

Utilizando los criterios antes mencionados, podemos concluir que la diferencia entre un

sistema y otro lo proporciona la forma en que cada procesador accede a la memoria (Blanco de

Frutos et al., 2012).

En los sistemas paralelos varios procesadores trabajan juntos para resolver una tarea co-

mún, cada procesador trabaja en una porción del problema, y pueden intercambiar datos a través

de la memoria . La memoria al ser compartida por todos los procesadores del sistema se trans-

forma en la mayor limitación de los mismos. Dentro de las ventajas que presentan este tipo

de sistema podemos mencionar que perminten resolver problemas mayores y de manera mas

eficiente (Moreno, 2004).

Dentro de los modelos de computadores paralelos existentes, nos centraremos en el mo-

delo MIMD 16, en el que cada procesador se encarga de ejecutar un programa diferente inde-

pendientemente de los otros procesadores. También podemos mencionar el modelo de memoria

distribuida 17 y el modelo de memoria compartida 18 (Aguilar et al., 2004).

Figura 2.14: Modelo MIMD

16Multiple Instruction Multiple Data17Cada procesador tiene su propia memoria local18Un único espacio de memoria, donde todos los procesadores tienen acceso

28

Actualmente se pueden encontrar varios tipos de procesadores específicos en el mercado

como por ejemplo GPU, DSP 19, FPGA y heterogéneos embebidos, PSP 20, entre otros. Un

ejemplo sencillo de computadores heterogéneos es un computador formado por un CPU + GPU.

Ejemplos:

Figura 2.15: Ejemplo 1: AMD Fusion

Figura 2.16: Ejemplo 2: Nvidia Tegra Die

19Procesador de tratamiento de señal20Procesador de juegos

29

Figura 2.17: Ejemplo 3: CPU combinado con una FPGA

2.2. Sistemas de Tiempo Real (STR)

Se considera a un sistema, como un conjunto de entradas y salidas, muchos autores analizan

las entradas y salidas de los sistemas y lo ven como a una caja negra. Un sistema de tiempo

real es aquel que debe producir respuestas correctas dentro de unos límites de tiempo. Una

clásica representación de un sistema de tiempo real, es una sucesión de trabajos que deben ser

ejecutados en el/los procesador/es, los trabajos compiten por el recurso procesador, por lo que

se requiere una planificación de ejecución (Laplante, 1992).

Los Sistemas de tiempo real, se definen como sistemas informáticos que tienen la capa-

cidad de interactuar rápidamente con su entorno físico, el cual puede realizar funciones de

supervisión o control para su mismo beneficio (Burns and Wellings, 2010).

Los sistemas de tiempo real, son sistemas de tiempo crítico, es decir, se trata de aplica-

ciones para las cuales el tiempo en que se produce la respuesta es un requerimiento esencial.

Antiguamente, los sistemas de tiempo real eran utilizados en las aplicaciones de las grandes

industrias altamente automatizadas, en la exploración espacial (Khatib, 1986), en dispositivos e

instrumentos militares como aplicaciones capaces de detectar fuego automáticamente (Healey

et al., 1993), entre otros. Actualmente, este tipo de sistema se utiliza en una gran cantidad de

30

dispositivos electrónicos de uso corriente (Orozco et al., 2013), por ejemplo, sistemas de na-

vegación en tiempo real (Hernández et al., 1999). Los sistemas de tiempo real, generalmente

están operados por tareas periódicas que incluyen entre sus parámetros los máximos tiempos de

respuesta admisibles por la aplicación. Si la tarea finaliza luego de su tiempo de vencimiento,

se dice que ha perdido su constricción temporal (Ramón and Romero, 2002).

2.2.1. Sistemas Operativos de Tiempo Real (SOTR)

Un sistema operativo de tiempo real, es un sistema operativo al cual se le exige respuestas

bajo ciertas restricciones de tiempo (Burns and Wellings, 2010).

Una necesidad fundamental de un sistema operativo, es asignar recursos del computador

a las diversas actividades. En un sistema operativo de tiempo real, éste proceso es sumamente

importante y complejo de realizar debido que algunas actividades son temporalmente críticas

con mayor prioridad. Es por este motivo que se debe contar con un planificador de tareas (Liu

and Layland, 1973).

Un sistema de tiempo real, debe:(Pérez, 2003)

Ser diseñado para responder incluso ante varias formas de fallos, pretendiendo que se

pueda recuperar ante una falla y se logre una estabilidad. Muchos Sistemas Operativos

de tiempo real son construidos para aplicaciones muy específicas como control de tráfico

aéreo, bolsas de valores, control de refinerías, control de laminadores.

Responder en un intervalo prefijado o ante eventos externos de una manera determinista,

sin importar el impacto que esto genere sobre las demás tareas y/o procesos del sistema.

La eficiencia de los sistemas de tiempo real, no solo depende de la exactitud de los re-

sultados de cómputo, sino también del momento en que los entrega. La predictibilidad, es una

31

característica principal en este tipo de sistemas operativos, y se considera que un sistema ope-

rativo de tiempo real, funciona correctamente cuando produce el resultado correcto dentro de

un intervalo de tiempo previamente estipulado, estas restricciones temporales son fijas y bien

definidas (Liu and Layland, 1973).

Generalmente, los sistemas operativos de tiempo real suelen tener la misma arquitectura

que un sistema operativo convencional, pero su diferencia radica en que proporciona mayor

prioridad a los elementos de control y procesamiento que son utilizados para ejecutar los proce-

sos o tareas, otra diferencia fundamental entre un sistema de tiempo real y un sistema operativo

en tiempo compartido, es el algoritmo de planificación para la asignación de la CPU. A dife-

rencia de los sistemas de tiempo compartido, el sistema de tiempo está diseñado para brindarle

mayor importancia a los procesos que a los usuarios (Pérez, 2003).

2.2.2. Clasificación de los sistemas de tiempo Real

Los sistemas de tiempo real, se pueden clasificar en dos tipos de sistemas, que a su vez se

subdividen considerando la severidad en el tratamiento de errores, provocados por el incumpli-

miento de alguna de las tareas debido a que no completó su ejecución y alcanzó su deadline

(Laplante, 1992).

Se puede observar en la figura 2.18 la representación de la clasificación de los sistemas de

tiempo real.

Los sistemas de tiempo real se clasifican en:

Sistemas de Tiempo Real Blandos/Suaves 21: Estos sistemas se caracterizan por tolerar un

exceso en el tiempo de respuesta y garantizar que las tareas críticas se ejecutan en tiempo.

Almacenan los datos en memoria no volátiles y no puede ser implementada en hardware.

21En inglés, Soft real-time systems

32

Se permite que se pierdan ocasionalmente algunas especificaciones temporales. Es una

forma de caracterizar a sistema de tiempo real en el que se busca que el tiempo medio de

respuesta sea menor de un tiempo predefinido. Debido a que no apoyan el cumplimiento

estricto de plazos, es riesgoso utilizarlos en control industrial y robótica. Si un trabajo

crítico en tiempo real entra en el sistema, el sistema operativo puede asignar la máxima

prioridad a esta tarea y ejecutar de forma continua hasta que se complete (Burns and

Wellings, 2010).

Un sistema de tiempo real es blando cuando se degrada el rendimiento pero no es descar-

tado por el incumplimiento de las limitaciones de tiempo de respuesta.

• Tiempo Real Firme 22: es un sistema de tiempo real suave, y además el sistema no

obtiene beneficios de la pérdida ocasional de especificaciones temporales (Laplante,

1992).

Sistemas de Tiempo Real Duros 23: En este tipo de sistemas no se permite una respuesta

fuera de término, si esto sucede, se produce una falla en el sistema. Las respuestas se

deben producir antes del tiempo estipulado. Éste tipo de sistema garantiza que las tareas

críticas se terminaran a tiempo siempre, en caso contrario, falla. Se requiere que todos los

retardos del sistema estén limitados. Generalmente no hay almacenamiento secundario,

los datos se almacenan preferentemente en memoria de corto plazo. El sistema no pue-

de esperar indefinidamente por lo que los sistemas de tiempo real duro suelen ser muy

limitados.

Un sistema de tiempo real duro, es aquel en el que incumplimiento de solo plazo, puede

conducir al fallo completo y catastrófico del sistema (Laplante, 1992).

• Tiempo Real Real 24: Éste tipo de sistema, es un sistema de tiempo real duro en el

cual los tiempos de respuesta deben ser muy cortos (Burns and Wellings, 2010).

22En inglés, Firm real-time23En inglés, Hard real-time systems24En inglés, Real real-time

33

Figura 2.18: Clasificación de los sistemas de tiempo real

2.2.3. Planificación en sistemas heterogéneos de tiempo real

La asignación de recursos a las tareas, es un aspecto crucial cuando se utilizan grandes in-

fraestructuras de cómputo, ya que encontrar una planificación precisa para un conjunto de tareas

que se han de ejecutar en un sistema de este tipo, tiene un impacto de gran importancia tanto en

los costos de utilización de los recursos como en la calidad del servicio percibida por el usua-

rio. La atracción generada en la última década por los sistemas heterogéneos, ofreciendo mejor

performance, que los sistemas tradicionales, produjo que el desarrollo de nuevas estrategias de

planificación sea un activo campo de investigación, debido a que los algoritmos de planifica-

ción juegan un importante papel en los sistemas heterogéneos (Mednis et al., 2011)(Díaz et al.,

2006).

Un algoritmo de planificación 25, es un conjunto de reglas que determina la tarea a ejecutar

en un instante de tiempo particular (Liu and Layland, 1973).

Para los sistemas en tiempo real, es de suma importancia que el algoritmo de planificación

pueda predecir en todo momento que tarea se va a ejecutar el próximo instante de tiempo. Las

tareas de tiempo real, necesitan de prioridad para ser ejecutadas. Un típico sistema de tiempo

real esta compuesto por n tareas y para garantizar su correcta ejecución es necesario un meca-

25En inglés, Scheduling

34

nismo de planificación (Laplante, 1992).

El planificador 26, usualmente se ejecuta como una tarea del sistema operativo de tiempo

real, e implementa una disciplina de prioridades la cual permite determinar la próxima tarea a

ejecutar en un procesador. Las dos disciplinas más utilizadas en los sistemas de tiempo real, son

de prioridades fijas (FP) y de prioridades dinámicas (EDF), explicadas en la sección Planificador

con Prioridades Estáticas y Planificador con Prioridades Dinámicas. El planificador realiza una

distribución eficiente de las tareas, controlando la carga de cada procesador 27, evitando la

sobrecarga de alguno de ellos y que otro se encuentre ocioso. Las diferentes políticas y reglas

que se seleccionan para que el planificador cumpla impactará en la performance del sistema.

(Bogdanski et al., 2011).

El problema de la planificación es resuelta por un algoritmo que establece un mecanismo

automático que asigna tarea y procesador, buscando algún parámtero para lograr una optimiza-

ción (usulamente tiempo). Entre los algoritmos de mapeo/planificación conocidos se destaca el

AMTHA 28(De Giusti et al., 2009).

2.2.4. Algoritmo de Mapeo AMTHA

Es un algoritmo aplicado desde el gráfo generado por el modelo MPAHA 29. Se encarga de

asignar las tareas a cada procesador de la arquitectura minimizando los tiempos de ejecución.

Éste algoritmo debe proveer el orden en que cada tarea se asignará a cada procesador para su

ejecución (Planificador de tarea). AMTHA considera una arquitectura con un número limitado

de procesadores Heterogéneos (De Giusti et al., 2009).

El pseudo-código básico de asignación de este algoritmo es:

26En inglés, scheduler27En inglés, load balancer28Automatic Mapping Task on Heterogeneous Architectures29Model on Parallel Algorithms on Heterogeneous Architectures

35

1. Calcular el tiempo de ejecución de cada tarea.

2. Seleccionar la próxima tarea t para asignar.

3. Elegir el procesador p donde la tarea t debe ser asignada.

4. Asignar la tarea t (seleccionada en el paso 1) al procesador p (seleccionado en el paso 2).

5. Actualizar los tiempos de ejecución de las tareas y repetir los pasos anteriores.

36

Capítulo 3

Descripción del Problema

3.1. Sistema de tiempo real

Un sistema de tiempo real consiste en un conjunto Π de N tareas periódicas. Cada tarea τi

∈ Π está caracterizada por su período, Ti, el tiempo límite para ejecutarse, Di el peor tiempo de

ejecución, Ci, el tiempo de inicio (offset), φi, y una prioridad, Pi.

Π = {τi = (Ti,Di,Ci,φi,Pi)}

La unidad mínima de cómputo de una tarea τi es una acción J. Una tarea es un conjunto de

acciones similares que se repiten a lo largo del tiempo.

τi = Ji,1,Ji,2, ...,Ji,q

37

Se asume que:

τi,q = Ji,q

Figura 3.1: Se observa una acción Ji,0 de una tarea τi

En la figura 3.1 se observa la ejecución de una instancia de la tarea τi. Introduciendo con-

ceptos como Jitter 1, tiempo de activación 2, tiempo límite 3 y tiempo de respuesta 4.

3.2. Sistemas heterogéneos

Un sistema con multiprocesadores heterogéneos está compuesto por un conjunto Φ de tipos

de procesadores diferentes ϕx.

Φ = {ϕx,y,1 6 x > M,y > 0}

El subíndice x indica el tipo de procesador y el subíndice y indica la cantidad.

1Jitter, es el tiempo transcurrido desde que la instancia de la tarea esta lista para ser ejecutada y el comienzo de

la ejecución.2Tiempo de activación, es el instante en el que la instancia de la tarea pasa a estar lista para ser ejecutada.3Tiempo límite o deadline, es el instante en el que la instancia de la tarea deja de estar lista para ser ejecutada.4Tiempo de respuesta o response time es el tiempo que transcurre desde que la instancia de la tarea esta lista

para ser ejecutada y la finalización de la ejecución de la misma.

38

3.3. Sistema de tiempo real de tareas periódicas en procesa-

dores heterogéneos

Un sistema de tiempo real de tareas periódicas en procesadores heterogéneos es un sistema

compuesto por:

Un procesador ϕp ∈ Φ.

Un conjunto de tareas τ ∈ Π que se pueden ejecutar en ϕp.

Otro procesador ϕc ∈ Φ donde ϕc 6= ϕp.

Un conjunto de tareas τ ∈ Π que se pueden ejecutar en ϕc.

y sigue las condiciones que se especifican a continuación:

Cada tarea τi tiene asignada una prioridad. La tarea que tiene mayor frecuencia es la que

tiene mayor prioridad. Y la que tiene menor frecuencia es la que tiene menor prioridad.

Todas las tareas se pueden ejecutar en el procesador ϕp.

Algunas tareas τi pueden ser ejecutadas en el coprocesador ϕc.

Una vez que una instancia q representada por τi,q de una tarea τi inició su ejecución , solo

puede continuar en procesadores del mismo tipo.

Cada tarea deberá tener una definición para cada tipo de procesador en la que pueda ser

ejecutada.

39

3.4. Estructuras de datos usadas en un sistema

En primer lugar se debe guardar la información relacionada a cada una de las tareas. Cada

tarea se definirá con:

Su período, Ti

El tiempo límite para ejecutarse, Di

El peor tiempo de ejecución, Ci

El tiempo de inicio (offset), φi

Una prioridad, Pi

La instancia actual que está en ejecución q

Si la instancia actual q inició la ejecución

Una vez que una tarea inicia un periodo nuevo, genera una instancia de si misma. Esta

instancia debería ir a la lista de tareas listas para su ejecución (lista ordenada por prioridad).

3.5. Paso a paso de la planificación de tareas

1. El planificador se fija, en cada instante de tiempo t, si una tarea τi inicia un período nuevo

(una instancia nueva), en ese caso, τi,q debería agregarse al conjunto de tareas lista para

ejecutar. Esto significa que la instancia anterior τi,q−1 alcanzó a su tiempo de finalización.

Si la instancia τi,q−1 completó su ejecución. Entonces τi,q es agregada al conjunto

de tareas listas para ejecutarse.

Si la instancia τi,q−1 empezó su ejecución pero no la completó, entonces:

40

• Si se planifica con Aborto, la instancia τi,q−1 se aborta y la instancia τi,q es

agregada al conjunto de tareas listas para ejecutarse.

• Si se planifica con terminación tardía, la instancia τi,q se aborta y la instancia

τi,q−1 continua en ejecución o en espera para concluir su ejecución.

2. El planificador debe decidir que tarea τi se va a ejecutar en el instante t siguiente.

Si hay algún procesador libre, busca una tarea en la lista de tareas listas para ejecutar

y le asigna el procesador libre.

Si todos los procesadores se encuentran ocupados, entonces compara las tareas que

se encuentran en la lista de tareas listas para ejecutar y si encuentra una de mayor

prioridad, entonces realiza un cambio de contexto.

3. Ejecuta las tareas que se encuentran en los procesadores.

4. Vuelve al paso 1.

3.6. Mecanismos para la planificación de tareas

Los mecanismos para planificar las tareas son en sí la forma en que se le asignan las prio-

ridades a las tareas. Los más usados son:

Prioridades fijas (PF): A cada tarea se le asigna una prioridad al iniciar la ejecución y esta

no cambia. Para ello, se ordenan las tareas por su período T en orden creciente, y a cada

una se le asigna una prioridad.

Prioridades dinámicas (EDF): Inicialmente es igual a PF, pero a medida que avanza el

tiempo t, en cada instante se recalcula la prioridad.

Pi,q = Pi,q−1 (3.1)

41

3.7. Mecanismos para manejo de tareas no cumplidas por so-

brecarga

Cuando una tarea llega a su tiempo de finalización y no terminó la ejecución, el planificador

debe decidir que hacer con esa instancia. Los mecanismos más usados son:

Aborto: Abortar la instancia de la tarea en curso y darle lugar a la instancia nueva.

Terminación Tardía: Esperar a que la instancia termine su ejecución en algún momento y

abortar las instancias siguientes que se encuentren listas para ejecutar.

42

Capítulo 4

Solución propuesta

4.1. Simulador

El simulador implementado esta compuesto básicamente por tres secciones. La sección de

“Action”, la sección de “Configuration” y la sección de “Result”. Además contiene una barra

de menú desplegable con acciones sobre los datos del planificador (Import y Show).

En la figura 4.1, se observa la ventana principal de la herramienta donde se pueden distin-

guir fácilmente las secciones mencionadas.

4.1.1. Descripción del simulador

En ésta sección de detallará cada componente de la herramienta referenciado con un nú-

mero en la figura 4.2.

1. Representa la barra de menú de la herramienta, la cual se sub-divide en tres secciones

43

Figura 4.1: Ventana principal de la herramienta en su estado inicial

44

Figura 4.2: Descripción de la ventana principal de la herramienta en su estado inicial

45

“File”, “Processor” y “Task”.

2. Sección “File” del menú, contiene la acción que permite importar los procesadores y

tareas que serán utilizados en el planificador.

3. Sección “Processor” del menú, contiene la acción “Show”, que permite visualizar en una

ventana auxiliar los procesadores que serán utilizados por el simulador en la planificación.

4. Sección “Task” del menú, contiene la acción “Show”, que permite visualizar en una ven-

tana auxiliar las tareas que serán planificadas por el simulador.

5. Sección que contiene las principales acciones del simulador.

6. Acción “Run”, encargada de comenzar la simulación de la planificación con los paráme-

tros de configuración previamente seteados en la sección de configuración.

7. Acción de “Reset”, su principal función es limpiar todos los datos seteados y reiniciar la

herramienta a su estado inicial. Para que se ejecute esta acción es necesaria la confirma-

ción por parte del usuario.

8. Acción “Save Resume”, se encarga de almacenar en un archivo un resumen de la pla-

nificación previamente ejecutada. En el resumen se guardan las instancias fallidas y las

instancias finalizadas correctamente de cada tarea.

9. Sección de “Configuration”, contiene los parámetros que utiliza la planificación en su

ejecución.

10. “Priority” opción de configuración que determina que tipo de planificación por priorida-

des se utilizará en la simulación, pudiéndose seleccionar EDF (prioridades dinámicas) ó

PF (prioridades fijas).

11. “Deadline”, opción de configuración que determina la acción a realizar por el planificador

en caso de que la instancia de una tarea alcance su tiempo máximo de espera. Se puede

elegir entre 2 (dos) acciones a realizar, Aborto o Terminación Tardía.

46

12. “Instants of time”, opción de configuración que determina los instantes de tiempo que se

ejecutará el planificador.

13. Sección de resultado, en esta sección se muestra un resumen con el resultado de la plani-

ficación ejecutada.

14. Área donde se muestra el resumen de la planificación ejecutada. El resumen contiene la

cantidad de instancias que fallaron y la cantidad de instancias que finalizaron correcta-

mente y a que tarea pertenece cada instancia.

15. Save Details, acción que permite almacenar en un archivo el detalle (detallado por instante

de tiempo) de la planificación ejecutada y finalizada previamente.

4.1.2. Instrucciones para ejecutar una planificación

Para realizar una planificación utilizando el simulador, lo primero que se debe hacer es

importar un archivo (generado por la herramienta de generación de escenarios explicado en la

sección 4.3), el cual contenga la definición de las N tareas y los M procesadores que conforman

el sistema.

En la figura 4.3, se observa la estructura que debe cumplir el archivo a importar, para ser

aceptado por el simulador.

Para realizar la importación del archivo, se debe seleccionar la acción “Load Planning”, que

se encuentra dentro de la sección “File” de la barra de menú de la herramienta, luego se debe

seleccionar el archivo que se desea importar, si su formato es correcto se activarán las acciones

“Run” y las acciones de la barra de menú de la herramienta que se encontraban inactivas.

Una vez finalizada la importación del archivo, se deben elegir las opciones de configuración

que determinarán el comportamiento del planificador. Se debe seleccionar la opción “Priority”,

la cual por defecto se setea en “PF”, la opción “Deadline” que por defecto se setea en “Abort” y

47

Figura 4.3: Estructura que debe cumplir el archivo a importar

48

por último para finalizar la configuración se debe determinar la cantidad de instantes de tiempo

que se ejecutará el planificador, modificando la opción “Instants of time”, que por defecto es

225.000 ms.

Al finalizar con el seteo de las opciones de configuración del simulador, el mismo, estará

listo para comenzar la planificación de las tareas. Para esto, se debe presionar sobre el botón

“Run” (ver figura 4.4), el cual dará comienzo a la planificación de las N tareas en los M proce-

sadores del sistema.

Figura 4.4: Botón para comenzar la ejecución de la planificación

Cuando la planificación termine, en la sección “Result”, se mostrará un resumen con la

cantidad de instancias fallidas de cada tarea y la cantidad de instancias que finalizaron correc-

tamente, junto a qué tarea corresponde cada instancias fallida o finalizada correctamente.

El resumen de la planificación puede ser almacenado por el usuario en un archivo, utili-

zando la acción “Save Resume” (ver figura 4.5). Además, se podrá almacenar el detalle de la

planificación utilizando la acción “Save Details”.

Figura 4.5: Botón para almacenar un resumen de la planificación

49

4.2. Casos testigos

1. Al iniciar la ejecución de una planificación, todas las tareas se encuentran listas

para ser ejecutadas y todos los procesadores libres. Las tareas de mayor prioridad

ocupan los procesadores.

Para comprobar que al iniciar una planificación, las tareas de mayor prioridad son las que

toman control de los procesadores se define un conjunto de tareas (Cuadro 4.1) y procesa-

dores (Cuadro 4.2) y se realiza una planificación con un planificador por prioridades fijas

y si la instancia de una tarea alcanza su plazo máximo, aplica el aborto de la instancia que

lo alcanza.

Como se observa en la figura 4.6, en el instante 0 (cero) de tiempo de la planificación, las

tareas que toman control de los procesadores son T 5, T 1, T 7, T 4 y T 10 y permanecen

en la lista de tareas listas para ejecutar las tareas T 2, T 6, T 3, T 9 y T 8, las cuales tienen

menor prioridad que las tareas que se encuentran en los procesadores. Comprobando que

al iniciar la ejecución de una planificación y al estar todos los procesadores libres, las

tareas de mayor prioridad se ejecutan antes que las de menor prioridad.

Figura 4.6: Planificación PF ABORTO instante 0 (cero) de tiempo

50

Tarea T. Inicio T. Computo Periodo=Prioridad Compatibilidad

T 1 0 3 6 CPU-GPU

T 2 0 5 8 CPU

T 3 0 9 9 CPU

T 4 0 1 3 FPGA

T 5 0 3 3 CPU-GPU

T 6 0 5 8 FPGA-CPU

T 7 0 2 6 CPU-GPU

T 8 0 4 10 FPGA-GPU

T 9 0 6 9 FPGA-GPU

T 10 0 3 7 FPGA

Cuadro 4.1: Ejemplo 1 de definición de tareas

Procesador Tipo Clock

P1 CPU 2

P2 CPU 2

P3 GPU 1

P4 FPGA 3

P5 FPGA 3

Cuadro 4.2: Ejemplo 1 de definición de procesadores

51

2. Al ocuparse todos los procesadores, las tareas que están listas para ser ejecutadas y

no fueron asignadas a un procesador, deben esperar.

Para este caso, se utiliza la definición de tareas (Cuadro 4.1) y procesadores (Cuadro 4.2)

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

una tarea alcanza su plazo máximo, aplica el aborto de la instancia que lo alcanza.

Como se observa en la figura 4.6, en el instante 0 (cero) de tiempo de la planificación, las

tareas T 2, T 3, T 6, T 8 y T 9 están listas para ser ejecutadas pero todos los procesadores

se encuentran ocupados por tareas de mayor prioridad, es por eso que deben esperar para

ser ejecutadas en la lista de pendientes o listas para ejecutar.

A medida que transcurre el tiempo, el planificador consultará ésta lista para ir ejecutando

las tareas cuando sea posible.

Figura 4.7: Planificación PF ABORTO instante 2 (dos) y 3 (tres) de tiempo

3. Una tarea se encuentra en ejecución, pero llega una nueva tarea con mayor priori-

dad y lista para ser ejecutada. Se realiza un cambio de contexto.

Para este caso, se utiliza la definición de tareas (Cuadro 4.1) y procesadores (Cuadro 4.2)

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

52

una tarea alcanza su plazo máximo, aplica el aborto de la instancia que lo alcanza.

Como se observa en la figura 4.7, en el instante 3 (tres) de tiempo de la ejecución se

produce un cambio de contexto en el procesador id = 3 de tipo GPU, el cual en el instante

2 (dos) de tiempo ejecuta la tarea T 8 cuya prioridad es 10 (diez), pero en el instante 3

(tres) de tiempo, la tarea T 8 es desalojada del procesador y es colocada en la lista de

tareas listas para ejecutar y en el procesador id = 3 de tipo GPU se ejecuta la tarea T 5

cuya prioridad es 3 (tres) como la prioridad de T 5 es mayor que la prioridad de T 8, se

produce un cambio de contexto.

La tarea T 5, puede ser ejecutada en los procesadores tipo GPU y CPU, pero en el instante

3 (tres) de tiempo, en los procesadores tipo CPU, se ejecutan las tareas T 2 y T 3 las cuales

tienen mayor prioridad que la tarea T 8 (Cuadro 4.2).

4. Una tarea desalojada de un procesador producto de un cambio de contexto, debe

conservar el tipo de procesador en el que se comenzó a ejecutar.

Para este caso, se utiliza la definición de tareas (Cuadro 4.1) y procesadores (Cuadro 4.2)

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

una tarea alcanza su plazo máximo aplica el aborto de la instancia que lo alcanza.

Como se observa en la figura 4.8, en el instante 3 (tres) de tiempo en la ejecución se

produce un cambio de contexto, la tarea T 8 es desalojada del procesador y se coloca en

la lista de tareas lista para ejecutar, conservando el tipo de procesador en el que comenzó

a ejecutarse para continuar su ejecución solo en un procesador compatible.

En este caso y como se observa en la figura 4.7, la tarea T 8 conserva el tipo GPU ya que

en el instante 2 (dos) de tiempo se encontraba ejecutándose en el procesador id = 3 de

tipo GPU (figura 4.7)

5. Una tarea desalojada de un procesador producto de un cambio de contexto, vuelve

a tomar control de un procesador del mismo tipo donde comenzó su ejecución para

continuar con la misma.

Para este caso, se utiliza la definición de tareas (Cuadro 4.1) y procesadores (Cuadro 4.2)

53

Figura 4.8: Planificación PF ABORTO instante 3 (tres) de tiempo

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

una tarea alcanza su plazo máximo aplica el aborto de la instancia que lo alcanza.

Como se observa en la figura 4.9, la tarea T 3 se ejecuta en el instante 5 (cinco) de tiempo

en el procesador id = 2 de tipo CPU, pero en el instante siguiente la tarea T 7 provoca

un cambio de contexto desalojando a la tarea T 3. La tarea T 7 se ejecuta y finaliza su

ejecución en el instante 6 (seis) de tiempo y al finalizar libera al procesador id = 2 el cual

es ocupado en el instante siguiente de tiempo nuevamente por la tarea T 3 para continuar

su ejecución.

6. Una tarea lista para ser ejecutada, espera aún habiendo procesadores libres, si la

tarea no puede ser ejecutada en los procesadores disponibles.

Para este caso, se utiliza la definición de tareas (Cuadro 4.1) y procesadores (Cuadro 4.2)

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

una tarea alcanza su plazo máximo aplica el aborto de la instancia que lo alcanza.

Como se observa en la figura 4.18, en el instante 4 (cuatro) y 5 (cinco) de tiempo, la tarea

T 8 se encuentra en la lista de tareas listas para ser ejecutadas y los procesadores id = 4

y id = 5 se encuentran libres (ambos de tipo FPGA). Debido a que la tarea T 8 comenzó

a ser ejecutada en un procesador de tipo GPU, en los instantes 4 (cuatro) y 5 (cinco) de

tiempo, no es compatible con los procesadores id = 4 y id = 5 ambos de tipo FPGA y

aún estando disponible nos los puede ocupar para continuar con su ejecución

54

Figura 4.9: Planificación PF ABORTO instante 5 (cinco), 6 (seis) y 7 (siete) de tiempo

55

7. Una tarea crea una nueva instancia de la misma, al cumplirse su periodo y la ins-

tancia anterior finalizó correctamente.

Para este caso, se utiliza la definición de tareas (Cuadro 4.1) y procesadores (Cuadro 4.2)

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

una tarea alcanza su plazo máximo aplica el aborto de la instancia siguiente (finalización

tardía).

Como se observa en la figura 4.10, en el instante 5 (cinco) de tiempo la tarea T 5 que se

ejecuta en el procesador id = 3 de tipo GPU, finaliza correctamente la ejecución de la

instancia 2 (dos) y en el instante siguiente de tiempo, la tarea T 5 comienza la ejecución

de la instancia 3 (tres) en el procesador id = 1 de tipo CPU.

Como se observa en el ejemplo anterior la tarea T 5 tiene un periodo de 3 (tres), es decir,

que en el instante 6 (seis) de tiempo la tarea comienza la ejecución de una nueva instancia

en el instante anterior de tiempo finaliza la ejecución de la instancia anterior.

Figura 4.10: Planificación PF FINALIZACIÓN TARDÍA instante 5 (cinco) y 6 (seis) de tiempo

8. Una tarea retiene a un procesador y se mantiene en ejecución hasta que la mis-

ma complete su tiempo de cómputo, siempre que no haya una tarea que genere un

cambio de contexto con la misma.

Para este caso, se utiliza la definición de tareas (Cuadro 4.1) y procesadores (Cuadro 4.2)

56

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

una tarea alcanza su plazo máximo aplica el aborto de la instancia que lo alcanza.

Como se observa en la figura 4.19, la tarea T 9 que se ejecuta en el procesador id = 5 de

tipo FPGA lo retiene en los instantes 1 (uno) y 2 (dos) de tiempo y se ejecuta la tarea

hasta finalizar correctamente. Como se puede observar en los instantes de tiempo en los

que se ejecuta la tarea, esta retiene al procesador y en dichos instantes no hay ninguna

tarea disponible para ejecutar que produzca un cambio de contexto con T 9.

9. Una tarea finaliza correctamente su ejecución, al completar su tiempo de cómputo

y no alcanzar su plazo máximo de espera.

Para este caso, se utiliza la definición de tareas (Cuadro 4.1) y procesadores (Cuadro 4.2)

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

una tarea alcanza su plazo máximo aplica el aborto de la instancia que lo alcanza.

Como se observa en la figura 4.19, la tarea T 9 que se ejecuta en el procesador id = 5

de tipo FPGA en los instantes 1 (uno) y 2 (dos) de tiempo, finaliza correctamente su

ejecución en el instante 2 (dos) de tiempo antes de alcanzar su plazo máximo, que para la

instancia que se esta ejecutandosería el instante 9 (nueve) de tiempo. Como el periodo de

la tarea T 9 es T = 9, en el instante 10 (diez) de tiempo se comienza a ejecutar la siguiente

instancia de tiempo.

10. Una tarea alcanza su plazo máximo de espera y debe abortar la ejecución de la

instancia actual.

Para este caso, se utiliza la definición de tareas (Cuadro 4.1) y procesadores (Cuadro 4.2)

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

una tarea alcanza su plazo máximo aplica el aborto de la instancia que lo alcanza.

Como se observa en la figura 4.11, la tarea T 8 alcanza su plazo máximo de espera, por lo

que debe abortar la instancia actual de la misma, en éste caso se debe abortar la instancia

1 (uno) de la tarea.

La tarea T 8 comenzó a ejecutarse en el instante 2 (dos) de tiempo, en el procesador

57

id = 3 de tipo GPU como se puede observar en la figura 4.7, pero se produjo un cambio

de contexto en el instante 3 (tres) de tiempo y fue desalojada del procesador id = 3 de

tipo GPU por la tarea T 5.

T 8 no recupero el procesador para continuar con su ejecución y de esta manera no finalizó

correctamente, al alcanzar su plazo máximo de espera sin haber terminado su ejecución,

se produce el aborto de esa instancia de la tarea.

El aborto de la instancia 1 (uno) de T 8 se produce al finalizar el instante 9 (nueve) de

tiempo y comenzar el instante 10 (diez) de tiempo.

Figura 4.11: Planificación PF ABORTO instante 9 (nueve) y 10 (diez) de tiempo

11. Al alcanzar una tarea su plazo máximo de espera y abortar la instancia actual, debe

aparecer lista para ejecutarse la instancia siguiente de la tarea.

Para este caso, se utiliza la definición de tareas (Cuadro 4.1) y procesadores (Cuadro 4.2)

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

una tarea alcanza su plazo máximo aplica el aborto de la instancia que lo alcanza.

Como se observa en la figura 4.11, la tarea T 8 alcanza su plazo máximo de espera, por lo

que debe abortar la instancia actual de la misma, en éste caso se debe abortar la instancia

58

1 (uno) de la tarea.

Al completarse el periodo de T 8 en el instante 10 (diez) de tiempo, la nueva instancia (en

este caso instancia 2 (dos) de la tarea) se encuentra disponible para ejecutarse y como se

observa en la figura 4.11, en el instante 10 (diez) de tiempo la instancia 2 (dos) de la tarea

T 8 se encuentra ejecutándose en el procesador id = 4 de tipo FPGA.

12. Una tarea alcanza su plazo máximo de espera y debe abortar la ejecución de la

instancia siguiente de la tarea y darle más tiempo a la instancia actual para que

termine su ejecución.

Para este caso, se utiliza la definición de tareas (Cuadro 4.1) y procesadores (Cuadro 4.2)

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

una tarea alcanza su plazo máximo aplica el aborto de la instancia siguiente (finalización

tardía).

Como se observa en la figura 4.12, al finalizar la instancia 9 (nueve) de tiempo y comenzar

la instancia 10 (diez) de tiempo, la tarea T 8 alcanzo su plazo máximo de espera y debe

abortar, pero en este caso no se aborta la instancia actual que se esta ejecutando (en este

caso instancia 1 (uno)) sino que se aborta la instancia siguiente (en este caso instancia 2

(dos) de la tarea) ya que el planificador es con finalización tardía.

Al mantener la instancia que se estaba ejecutando (instancia 1 (uno) de la tarea), se debe

actualizar el plazo máximo de espera para dicha instancia, ampliando el plazo con el valor

de la instancia que se aborto, como se ve en la figura 4.12 en el instante 10 (diez) de tiempo

la tarea T 8 modifica el plazo máximo de espera de 10 (diez) a 20 (veinte), como se observa

en [n = t8,c = 4,T = 20, phi = 0, p = 10, i = 1,cr = 1ProcType = GPU ], ampliando su

plazo máximo y de esta manera continuar en la espera para poder ser ejecutada.

13. Una tarea puede producir que se aborten más de una instancia siguiente a la que se

encuentra en ejecución si no finaliza y alcanza el plazo máximo de espera.

Para este caso, se utiliza la definición de tareas (Cuadro 4.1) y procesadores (Cuadro 4.2)

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

59

Figura 4.12: Planificación PF FINALIZACIÓN TARDÍA instante 9 (nueve) y 10 (diez) de tiem-

po

una tarea alcanza su plazo máximo aplica el aborto de la instancia siguiente (finalización

tardía).

Como se observa en la figura 4.12, la tarea T 8 alcanza su plazo máximo y produce el

aborto de la instancia siguiente de la tarea, en ese caso se aborta la instancia 2 (dos) ya

que se encuentra en ejecución o espera la instancia 1 (uno) de la tarea.

Al producirse el aborto de la instancia 2 (dos), la instancia 1 (uno) aumenta el plazo

máximo de espera a 20 (veinte), pero dada la planificación y el conjunto de tareas defi-

nidos, éste nuevo plazo máximo de espera no es suficiente para finalizar la ejecución de

la instancia 1 (uno) de la tarea, y como se observa en la figura 4.13 se alcanza el nuevo

plazo máximo de espera de la instancia y se vuelve a producir el aborto de una instancia

siguiente, en este caso se debe abortar la instancia 3 (tres) de la tarea.

La instancia 1 (uno) de la tarea T 8 vuelve a modificar su plazo máximo de espera para

continuar ejecutándose o a la espera de poder hacerlo ([n = t8,c = 4,T = 30, phi = 0, p =

10, i = 1,cr = 1ProcType = GPU ]).

60

14. Una tarea que generó el aborto de una instancia siguiente finaliza su ejecución antes

de alcanzar el nuevo plazo máximo.

Para este caso, se utiliza la definición de tareas (Cuadro 4.3) y procesadores (Cuadro 4.4)

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

una tarea alcanza su plazo máximo aplica el aborto de la instancia siguiente (finalización

tardía).

Como se observa en la figura 4.14, la tarea T 4 alcanza su plazo máximo de espera al

finalizar el instante 5 (cinco) de tiempo, al comienzo del instante 6 (seis) de tiempo se

produce el aborto de la instancia siguiente a la que se esta ejecutando, en este caso se

aborta la instancia 2 (dos) de la tarea T 4 y en el instante 7 (siete) de tiempo, la instancia

1 (uno) de la tarea T 4 finaliza su ejecución correctamente.

Figura 4.13: Planificación PF FINALIZACIÓN TARDÍA instante 19 (diecinueve) y 20 (veinte)

de tiempo

15. Al finalizar la ejecución y cumplirse el periodo de una tarea que produjo el aborto

de la instancia siguiente de la misma, la nueva instancia a ejecutar debe considerar

a la/s instancia/s abortada/s.

Para este caso, se utiliza la definición de tareas (Cuadro 4.3) y procesadores (Cuadro 4.4)

61

Tarea T. Inicio T. Computo Periodo=Prioridad Compatibilidad

T 1 0 3 4 CPU-GPU

T 2 0 5 5 CPU

T 3 0 2 4 CPU

T 4 0 4 6 GPU

Cuadro 4.3: Ejemplo 2 de definición de tareas

Procesador Tipo Clock

P1 CPU 2

P2 CPU 2

P3 GPU 1

Cuadro 4.4: Ejemplo 2 de definición de procesadores

Figura 4.14: Planificación PF FINALIZACIÓN TARDÍA instante 5 (cinco), 6 (seis) y 7 (siete)

de tiempo

62

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

una tarea alcanza su plazo máximo aplica el aborto de la instancia siguiente (finalización

tardía).

Como se observa en la figura 4.14, la tarea T 4 alcanza su plazo máximo de espera y

produce el aborto de la instancia siguiente a la que se esta ejecutando, luego, en el instante

7 (siete) de tiempo la instancia 1 (uno) de la tarea T 4 finaliza su ejecución correctamente.

Finalmente, como se observa en la figura 4.15, una nueva instancia de la tarea T 8 esta

lista para ser ejecutada y como se puede observar en la figura, la instancia que espera

para ser ejecuta, es la instancia 3 (tres), considerando que la instancia 1 (uno) finalizo

correctamente y la 2 (dos) fue abortada.

Figura 4.15: Planificación PF FINALIZACIÓN TARDÍA instante 12 (doce) de tiempo

16. Una tarea conserva su prioridad fija durante toda su ejecución.

Para este caso, se utiliza la definición de tareas (Cuadro 4.1) y procesadores (Cuadro 4.2)

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

una tarea alcanza su plazo máximo aplica el aborto de la instancia que lo alcanza.

Como se observa en la figura 4.16, la tarea T 3 que se ejecuta en el procesador id = 2 de

tipo CPU, conserva en cada instante de tiempo la prioridad fija, la cual se mantiene en 9

(nueve).

Al ser una planificación por prioridades fijas las prioridades de cada tarea se mantienen

igual para la ejecución de cada instancia de la misma.

63

Figura 4.16: Planificación PF ABORTO instante 3 (tres), 4 (cuatro) y 5 (cinco) de tiempo

17. Una tarea varía su prioridad durante su ejecución en cada instante de tiempo. La

prioridad de la tarea disminuye en uno para que su prioridad aumente. Planificación

con prioridades dinámicas.

Para este caso, se utiliza la definición de tareas (Cuadro 4.1) y procesadores (Cuadro

4.2) y se realiza una planificación con un planificador por prioridades dinámicas y si la

instancia de una tarea alcanza su plazo máximo aplica el aborto de la instancia siguiente

(finalización tardía).

Como se observa en la figura 4.17, por cada instante de tiempo que pasa la prioridad de

las tareas que se encuentran en ejecución o en espera de un procesador para poder ser

ejecutadas, se disminuye en 1 (uno).

Por ejemplo, si tomamos la tarea T 2, que en el instante 0 (cero) de tiempo se encuentra

esperando para ser ejecutada, se puede observar que la misma tiene en dicho instante de

tiempo una prioridad p = 8, luego en el instante 1 (uno) de tiempo la misma tarea T 2 que

permanece a la espera para ser ejecutada modificó su prioridad y es p = 7.

Lo mismo ocurre con tareas que se encuentran en ejecución en un procesador, con cada

64

instante de tiempo que transcurre, su prioridad se disminuye en uno, por ejemplo la tarea

T 5 que se encuentra en ejecución también modifica su prioridad, como se puede observar

en la figura 4.17.

Figura 4.17: Planificación EDF FINALIZACIÓN TARDÍA instante 0 (cero), 1 (uno) y 2 (dos)

de tiempo

18. Un procesador se mantiene libre si no hay ninguna tarea lista para ejecutarse com-

patible con él.

Para este caso, se utiliza la definición de tareas (Cuadro 4.1) y procesadores (Cuadro 4.2)

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

una tarea alcanza su plazo máximo aplica el aborto de la instancia que lo alcanza.

65

Como se observa en la figura 4.18, en el instante 4 (cuatro) y 5 (cinco) de tiempo, tanto

el procesador id = 4 y el procesador id = 5 ambos de tipo FPGA, se encuentran libres

aunque hay tareas esperando para ser ejecutadas, pero no son compatibles con los proce-

sadores.

En ambos instantes de tiempo, se observa que la tarea T 8 espera para ser ejecutada, la

misma es compatible con los procesadores FPGA, pero comenzó a ser ejecutada en un

procesador de tipo GPU, en el instante 2 (dos) de tiempo, por lo que no puede continuar

su ejecución en un procesador de tipo FPGA.

Figura 4.18: Planificación PF ABORTO instante 4 (cuatro) y 5 (cinco) de tiempo

19. Una tarea libera al procesador cuando la misma completa su ejecución correcta-

mente.

Para este caso, se utiliza la definición de tareas (Cuadro 4.1) y procesadores (Cuadro 4.2)

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

una tarea alcanza su plazo máximo aplica el aborto de la instancia que lo alcanza.

Como se observa en la figura 4.19, la tarea T 9 comienza su ejecución en el procesador

id = 5 de tipo FPGA en el instante 1 (uno) de tiempo, en el instante siguiente continua

con su ejecución en el mismo procesador y finaliza su ejecución en el instante 2 (dos) de

tiempo, como se puede observar en el instante 3 (tres) de tiempo, la tarea T 9 ya no ocupa

el procesador id = 5 de tipo FPGA, el mismo se encuentra libre en ese instante de tiempo

debido a que no hay ninguna tarea compatible para ejecutar.

66

Figura 4.19: Planificación PF ABORTO instante 1 (uno), 2 (dos) y 3 (tres) de tiempo

67

Tarea T. Inicio T. Computo Periodo=Prioridad Compatibilidad

T 1 0 2 5 CPU-GPU

T 2 0 3 3 CPU

T 3 0 3 4 CPU-GPU

T 4 0 5 5 GPU

Cuadro 4.5: Ejemplo 3 de definición de tareas

20. Una tarea libera al procesador cuando alcanza su plazo máximo, dejándolo libre

para otra tarea o para la nueva instancia de la misma tarea.

Para este caso, se utiliza la definición de tareas (Cuadro 4.5) y procesadores (Cuadro 4.4)

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

una tarea alcanza su plazo máximo aplica el aborto de la instancia que lo alcanza.

Como se observa en la figura 4.20, la instancia 1 (uno) de la tarea T 4 alcanza su plazo

máximo de espera en el instante 4 (cuatro) de tiempo, en el cual se encuentra ejecután-

dose en el procesador id = 3 de tipo GPU, al alcanzar su plazo máximo de espera, la

instancia de la tarea es abortada y la tarea libera al procesador para que otra tarea o la

nueva instancia de T 4 se ejecuten en el próximo instante de tiempo.

21. Una tarea continua su ejecución en un procesador si alcanza su plazo máximo de

espera y produce el aborto de la instancia siguiente, continúa ejecutándose mientras

ninguna tarea lista para ser ejecutada produzca un cambio de contexto.

Para este caso, se utiliza la definición de tareas (Cuadro 4.5) y procesadores (Cuadro 4.4)

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

una tarea alcanza su plazo máximo aplica el aborto de la instancia siguiente (finalización

tardía).

Como se observa en la figura 4.21, la instancia 1 (uno) de la tarea T 4 que se encuentra

ejecutandose en el procesador id = 3 de tipo GPU, alcanza su plazo máximo de espera en

el instante 4 (cuatro) de tiempo, produciendo el aborto de la instancia siguiente (en este

68

Figura 4.20: Planificación PF ABORTO instante 4 (cuatro) y 5 (cinco) de tiempo

caso instancia 2 (dos) de la tarea). Al modificarse el plazo máximo de espera y no haber

ninguna tarea que requiera al procesador id = 3 de tipo GPU, la instancia 1 (uno) de T 4

conserva el procesador en el instante 5 (cinco) de tiempo para continuar con su ejecución.

Figura 4.21: Planificación PF FINALIZACIÓN TARDÍA instante 4 (cuatro) y 5 (cinco) de

tiempo

69

22. El periodo de una tarea se debe mantener fijo durante toda su ejecución, para cada

instancia de la misma.

Para este caso, se utiliza la definición de tareas (Cuadro 4.1) y procesadores (Cuadro 4.2)

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

una tarea alcanza su plazo máximo aplica el aborto de la instancia que lo alcanza.

Como se observa en la figura 4.22, la tarea T 4 se encuentra lista para ser ejecutada en

los instantes 0 (cero), 3 (tres), 6 (seis) y 9 (nueve) de tiempo. Como se puede observar la

tarea T 4 esta lista para ser ejecutada cada 3 instantes de tiempo, lo que es correcto ya que

su periodo es de 3 (tres). Como se observa en la siguiente definición [n = t4,c = 1,T =

3, phi = 0, p = 3, i = 1,cr = 0ProcType = FPGA], donde T = 3 representa el periodo de

la tarea T 4 .

23. El tiempo de cómputo de una tarea debe mantenerse fijo durante toda su ejecución,

para cada instancia de la misma.

Para este caso, se utiliza la definición de tareas (Cuadro 4.1) y procesadores (Cuadro 4.2)

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

una tarea alcanza su plazo máximo aplica el aborto de la instancia que lo alcanza.

Como se observa en la figura 4.22, la tarea T 4 en cada instante de tiempo en que se en-

cuentra lista para ser ejecutada, conserva en cada instancia el mismo tiempo de cómputo.

La tarea T 4 como se observa en la figura representado con [n = t4,c = 1,T = 3, phi =

0, p = 3, i = 1,cr = 0ProcType = FPGA], donde c = 1 representa el tiempo de cómputo

de T 4 se repite en cada una de las instancias y cr = 0 el el tiempo de cómputo realizado,

cuando cr = c la tarea finaliza su ejecución.

24. El cómputo realizado en un instante de tiempo en una instancia de una tarea depen-

derá del tipo de procesador en el que se está ejecutando.

Para este caso, se utiliza la definición de tareas (Cuadro 4.1) y procesadores (Cuadro 4.2)

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

una tarea alcanza su plazo máximo aplica el aborto de la instancia que lo alcanza.

70

Figura 4.22: Planificación PF ABORTO periodo y cómputo de una tarea

71

Como se observa en la figura 4.8, los procesadores id = 1, id = 2, id = 3 y id = 4 se en-

cuentran ocupados ejecutando tareas, pero estos procesadores no todos tienen la misma

velocidad, varia el clock de cada tipo de procesador, por ejemplo, el clock de un procesa-

dor de tipo CPU es de 2 (dos) mientras que el clock de un procesador de tipo FPGA es

de 3 (tres), esta diferencia hace que el cómputo realizado por cada procesador no sea el

mismo.

El cómputo realizado en cada instante de tiempo esta relacionado con el clock del proce-

sador en que se ejecuta, es así, que como se ve en la figura 4.8, en el procesador id = 1 de

tipo CPU se ejecuta la tarea T 2 y en ese instante de tiempo el cómputo realizado es de 2

(dos), mientras que en el procesador id = 4 de tipo FPGA en el mismo instante se ejecuta

la tarea T 4 y el cómputo realizado es de 3 (tres), mientras que en el procesador id = 3 de

tipo GPU se ejecuta la tarea T 5 y el cómputo realizado en el instante de tiempo para esta

tarea es de 1 (uno).

Como queda demostrado en este caso, el tiempo de cómputo realizado por cada tarea en

cada instante de tiempo depende del clock del procesador donde es ejecutada.

25. Al finalizar la planificación se debe mostrar correctamente la cantidad de instancias

que alcanzaron su plazo máximo, detallado por tareas.

Para este caso, se utiliza la definición de tareas (Cuadro 4.1) y procesadores (Cuadro 4.2)

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

una tarea alcanza su plazo máximo aplica el aborto de la instancia que lo alcanza.

Se realizó una planificación con 20 (veinte) instancias de tiempo, y como se puede obser-

var en la figura 4.23, al final del detalle de la planificación en cada instante de tiempo, se

presenta un resumen con los resultados de la cantidad de instancias que fallaron y a que

tarea pertenece cada una de las instancias que fallaron.

En el caso del ejemplo, se ver que fallaron la instancia 1 (uno) de la tarea T 8 y la instancia

2 (dos) de la tarea T 3.

72

Figura 4.23: Detalle de las instancias que fallaron en la planificación PF y ABORTO

26. Al finalizar la planificación se debe mostrar correctamente la cantidad de instancias

que finalizaron correctamente detallado por tareas.

Para este caso, se utiliza la definición de tareas (Cuadro 4.1) y procesadores (Cuadro 4.2)

y se realiza una planificación con un planificador por prioridades fijas y si la instancia de

una tarea alcanza su plazo máximo aplica el aborto de la instancia que lo alcanza.

Se realizó una planificación con 20 (veinte) instancias de tiempo, y como se puede ob-

servar en la figura 4.24 al final del detalle de la planificación en cada instante de tiempo,

se presenta un resumen con los resultados de la cantidad de instancias que finalizaron

correctamente y a que tarea pertenece cada una de las instancias.

En el caso del ejemplo, se ve que finalizaron correctamente 36 (treinta y seis) instancias

pertenecientes a las 10 (diez) tareas definidas.

4.3. Generación de escenarios

Para testear el simulador, es necesario la generación de diferentes escenarios representati-

vos en los cuales se definen n tareas a planificar en m procesadores. El FU de los escenarios

generados deberá ser mayor o igual a 0,2 y menor o igual a 1,6; Éstos valores máximos y

mínimos son definidos previamente en el archivo generador.c.

Para llevar a cabo la función de generación de escenario, se utiliza una herramienta, la

cual esta formada por 2 (dos) archivos escritos en el lenguaje c (generador.c y definiciones.c),

en los cuales se detallan las funciones para la generación de los escenarios, y un archivo bash

(generador.sh), el cual se utilizará para correr el generador.

73

Figura 4.24: Detalle de las instancias que finalizaron correctamente en la planificación PF y

ABORTO

74

Tipo Clock

CPU 1

GPU 4

FPGA 7

Cuadro 4.6: Tipos de procesadores y sus clocks

Tipo Cantidad

CPU de 1 a 3

GPU de 0 a 2

FPGA de 0 a 1

Cuadro 4.7: Cantidad de procesadores de cada tipo

En el archivo generador.c, se definen los tipos de procesadores que se utilizarán en la

planificación, a partir de ellos, se tomará un tipo de procesador como base para la generación de

las tareas, las cuales, serán ejecutables en el/los procesadores del tipo elegido como base. Éste

tipo de procesador, debe tener un clock igual a 1 (uno).

En el archivo generador.c, se definen por defecto, 3 (tres) tipos de procesadores con sus

respectivos clocks (ver cuadro 4.6, en el que se muestra la definición de los procesadores).

Como se puede observar en la cuadro 4.6, el procesador de tipo CPU tiene un clock igual a 1

(uno), en ese caso, éste tipo de procesador es el que se toma como referencia para la generación

de las tareas y el cálculo del FU .

Otro punto a definir, es la cantidad de procesadores de cada tipo que tendrá el sistema. Para

ésto, se utiliza una función que determina dicha cantidad de manera aleatoria, considerando que

debe existir al menos 1 (un) procesador del tipo que se tome como base para la generación. Por

defecto se define en el archivo generador.c, la cantidad de procesadores de cada tipo, como se

muestra en el cuadro 4.7.

75

Id Clock TipoProc

0 1 CPU

1 1 CPU

2 1 CPU

3 4 GPU

4 7 FPGA

Cuadro 4.8: Ejemplo de generación de 5 (cinco) procesadores

Considerando las definiciones del cuadro 4.7, se deduce que la cantidad de procesadores

del sistema, estará determinada por la suma total de la cantidad de procesadores de cada tipo.

Con lo cual podemos distinguir dos escenarios extremos, uno con la cantidad mínima de proce-

sadores, con sólo 1 (un) procesador y otro con la cantidad máxima de procesadores con 6 (seis)

procesadores. En la cuadro 4.8, se puede observar, la definición de un conjunto de procesadores

que componen un sistema generado por la herramienta.

Una vez definido los tipos de procesadores y la cantidad de cada tipo, comienza la gene-

ración de las n tareas que deberán ser planificadas, otorgándoles de forma aleatoria un periodo

que va entre 400 (cuatrocientos) y 7000 (siete mil) instantes de tiempo (éstos valores son confi-

gurables en el archivo generador.c) y un tiempo de computo.

Las n tareas que se generen, deben cumplir con los FU especificados al inicio. Para calcular

el FU se utiliza la siguiente ecuación:

FU = Σ((Ci/Ti)/CantProcBase) (4.1)

Donde i representa a cada tarea, Ci los tiempos de computo, Ti los periodos y CantProcBase

cantidad de procesadores del tipo usado como base.

La cantidad de tareas que se deben generar, esta relacionada con la cantidad de procesado-

76

Tipo Cantidad de procesadores Cantidad de tareas

CPU 1 10

CPU 2 ó 3 20

Cuadro 4.9: Cantidad de tareas

res del tipo que se utilice como base en la generación. Considerando el cuadro 4.6, el procesador

que se utiliza por defecto es el de tipo CPU, entonces, la cantidad de tareas dependerá de la can-

tidad de procesadores de tipo CPU que se generen. En el cuadro 4.9 se define la relación por

defecto entre la cantidad de procesadores y la cantidad de tareas a generar.

Por último, se define con que tipos de procesadores será compatible cada tarea, conside-

rando que toda tarea será ejecutable en los procesadores del tipo que se utilizó como base. Ésta

asignación, se realiza de forma aleatoria, definiendo la cantidad de tipos de procesadores con

los que será compatible una tarea t y cuales serán esos tipos de procesadores.

En la cuadro 4.10, se puede observar, la definición de un conjunto de tareas que componen

un sistema generado por la herramienta.

Para realizar la generación de escenarios se debe ejecutar el archivo generador.sh, el cual se

encarga de crear la carpeta que contendrá los archivos generados del escenario. La nomeclatura

utilizada para la carpeta y los archivos es dinámica y se obtiene del momento exacto (fecha) en

que se ejecuta el generador.

El archivo generador.sh permite además, realizar varios ciclos de generación de escenarios

en una misma ejecución.

77

Name Computo Periodo Inicio TiposProc

t0 297 423 0 CPU

t1 97 571 0 FPGA-GPU-CPU

t2 303 665 0 FPGA-GPU-CPU

t3 204 1544 0 CPU

t4 194 1770 0 CPU

t5 438 1958 0 GPU-CPU

t6 957 2019 0 GPU-CPU

t7 61 2178 0 CPU

t8 632 2978 0 FPGA-GPU-CPU

t9 1284 3061 0 FPGA-CPU

t10 521 3354 0 CPU

t11 1161 3490 0 GPU-CPU

t12 1881 3568 0 FPGA-CPU

t13 221 4234 0 CPU

t14 33 4252 0 GPU-CPU

t15 1183 4375 0 FPGA-GPU-CPU

t16 519 5575 0 CPU

t17 138 5674 0 FPGA-GPU-CPU

t18 1157 6174 0 FPGA-CPU

t19 467 6425 0 FPGA-CPU

Cuadro 4.10: Ejemplo de generación de 20 (veinte) tareas con FU=1.5

78

Escenario Cantidad de escenarios Cantidad de procesadores Cantidad de tareas

Escenario 1 15 1 (CPU) 10

Escenario 2 15 4 (3 CPU + 1 GPU) 20

Escenario 3 15 2 (1 CPU + 1 GPU) 10

Escenario 4 15 5 (3 CPU + 1 GPU + 1 FPGA) 20

Cuadro 4.11: Descripción de los escenarios de testeo

4.3.1. Escenarios generados para testeo

Para el testeo del simulador, fueron utilizados cuatro conjuntos de escenarios compuestos

por quince escenarios cada uno. Los cuales se componen de un conjunto de procesadores y un

conjunto de tareas que cumplen con la condición de que su FU es mayor o igual a 0,2 y menor

o igual a 1,6. En el cuadro 4.11 se realiza una descripción de los escenarios de testeo indicando

la cantidad de procesadores y tareas que lo componen.

4.3.2. Resultados de los escenarios generados para testeo

En esta sección, se detallaran los resultados obtenidos al realizar las planificaciones de los

escenarios generados para realizar el testeo del simulador utilizando las diferentes combina-

ciones de algoritmos de planificación y acciones al llegar al tiempo máximo de espera de una

instancia.

En el cuadro 4.12, se detallan los resultados de la planificación del Escenario 1 (ver ca-

racterísticas en el cuadro 4.11), utilizando planificación por prioridades fijas (PF) y Aborto al

alcanzar una instancia el tiempo máximo de espera.

En el cuadro 4.13, se detallan los resultados de la planificación del Escenario 1 (ver carac-

terísticas en el cuadro 4.11), utilizando planificación por prioridades fijas (PF) y terminación

79

FU Instancias correctas Instancias incorrectas Total de instancias

0,2 1122 0 1122

0,3 1122 0 1122

0,4 1122 0 1122

0,5 1121 0 1121

0,6 1122 0 1122

0,7 1120 0 1120

0,8 1119 0 1119

0,9 1117 2 1119

1,0 1077 41 1118

1,1 1045 73 1118

1,2 1083 34 1117

1,3 1031 86 1117

1,4 1039 75 1114

1,5 984 133 1117

1,6 762 352 1114

Cuadro 4.12: Resultados planificación escenario 1 con PF y Aborto

80

FU Instancias correctas Instancias incorrectas Total de instancias

0,2 1122 0 1122

0,3 1122 0 1122

0,4 1122 0 1122

0,5 1121 0 1121

0,6 1122 0 1122

0,7 1120 0 1120

0,8 1119 0 1119

0,9 1118 1 1119

1,0 1092 26 1118

1,1 1088 30 1118

1,2 1094 23 1117

1,3 1052 65 1117

1,4 1050 65 1115

1,5 1021 96 1117

1,6 788 326 1114

Cuadro 4.13: Resultados planificación escenario 1 con PF y Terminación Tardía

tardía al alcanzar una instancia el tiempo máximo de espera.

En el cuadro 4.14, se detallan los resultados de la planificación del Escenario 1 (ver carac-

terísticas en el cuadro 4.11), utilizando planificación por prioridades dinámicas (EDF) y aborto

al alcanzar una instancia el tiempo máximo de espera.

En el cuadro 4.15, se detallan los resultados de la planificación del Escenario 1 (ver ca-

racterísticas en el cuadro 4.11), utilizando planificación por prioridades dinámicas (EDF) y

terminación tardía al alcanzar una instancia el tiempo máximo de espera.

En el cuadro 4.16, se detallan los resultados de la planificación del Escenario 2 (ver carac-

81

FU Instancias correctas Instancias incorrectas Total de instancias

0,2 1122 0 1122

0,3 1122 0 1122

0,4 1122 0 1122

0,5 1121 0 1121

0,6 1122 0 1122

0,7 1120 0 1120

0,8 1119 0 1119

0,9 1119 0 1119

1,0 1035 80 1115

1,1 1038 76 1114

1,2 1030 86 1116

1,3 968 147 1115

1,4 916 197 1113

1,5 875 239 1114

1,6 827 287 1114

Cuadro 4.14: Resultados planificación escenario 1 con EDF y Aborto

82

FU Instancias correctas Instancias incorrectas Total de instancias

0,2 1122 0 1122

0,3 1122 0 1122

0,4 1122 0 1122

0,5 1121 0 1121

0,6 1122 0 1122

0,7 1120 0 1120

0,8 1119 0 1119

0,9 1119 0 1119

1,0 1092 25 1117

1,1 1047 67 1114

1,2 1018 99 1117

1,3 966 150 1116

1,4 839 278 1117

1,5 831 284 1115

1,6 749 367 1116

Cuadro 4.15: Resultados planificación escenario 1 con EDF y Terminación Tardía

83

FU Instancias correctas Instancias incorrectas Total de instancias

0,2 1497 0 1497

0,3 1497 0 1497

0,4 1496 0 1496

0,5 1495 0 1495

0,6 1497 0 1497

0,7 1497 0 1497

0,8 1496 0 1496

0,9 1494 0 1494

1,0 1493 1 1494

1,1 1489 3 1492

1,2 1493 0 1493

1,3 1446 46 1492

1,4 1427 65 1492

1,5 1437 57 1494

1,6 1349 140 1489

Cuadro 4.16: Resultados planificación escenario 2 con PF y Aborto

terísticas en el cuadro 4.11), utilizando planificación por prioridades fijas (PF) y aborto al llegar

al alcanzar una instancia el tiempo máximo de espera.

En el cuadro 4.17, se detallan los resultados de la planificación del Escenario 2 (ver carac-

terísticas en el cuadro 4.11), utilizando planificación por prioridades fijas (PF) y terminación

tardía al alcanzar una instancia el tiempo máximo de espera.

En el cuadro 4.18, se detallan los resultados de la planificación del Escenario 2 (ver carac-

terísticas en el cuadro 4.11), utilizando planificación por prioridades dinámicas (EDF) y aborto

al alcanzar una instancia el tiempo máximo de espera.

84

FU Instancias correctas Instancias incorrectas Total de instancias

0,2 1497 0 1497

0,3 1497 0 1497

0,4 1496 0 1496

0,5 1495 0 1495

0,6 1497 0 1497

0,7 1497 0 1497

0,8 1496 0 1496

0,9 1494 0 1494

1,0 1493 1 1494

1,1 1489 3 1492

1,2 1493 0 1493

1,3 1460 32 1492

1,4 1458 35 1493

1,5 1445 49 1494

1,6 1400 89 1489

Cuadro 4.17: Resultados planificación escenario 2 con PF y Terminación Tardía

85

FU Instancias correctas Instancias incorrectas Total de instancias

0,2 1497 0 1497

0,3 1497 0 1497

0,4 1496 0 1496

0,5 1495 0 1495

0,6 1497 0 1497

0,7 1497 0 1497

0,8 1496 0 1496

0,9 1494 0 1494

1,0 1494 0 1494

1,1 1493 0 1493

1,2 1493 0 1493

1,3 1487 4 1491

1,4 1468 25 1493

1,5 1470 23 1493

1,6 1386 100 1486

Cuadro 4.18: Resultados planificación escenario 2 con EDF y Aborto

86

FU Instancias correctas Instancias incorrectas Total de instancias

0,2 1497 0 1497

0,3 1497 0 1497

0,4 1496 0 1496

0,5 1495 0 1495

0,6 1497 0 1497

0,7 1497 0 1497

0,8 1496 0 1496

0,9 1494 0 1494

1,0 1494 0 1494

1,1 1493 0 1493

1,2 1493 0 1493

1,3 1487 4 1491

1,4 1477 16 1493

1,5 1469 24 1493

1,6 1437 51 1488

Cuadro 4.19: Resultados planificación escenario 2 con EDF y Terminación Tardía

En el cuadro 4.19, se detallan los resultados de la planificación del Escenario 2 (ver ca-

racterísticas en el cuadro 4.11), utilizando planificación por prioridades dinámicas (EDF) y

terminación tardía al alcanzar una instancia el tiempo máximo de espera.

En el cuadro 4.20, se detallan los resultados de la planificación del Escenario 3 (ver ca-

racterísticas en el cuadro 4.11), utilizando planificación por prioridades fijas (PF) y aborto al

alcanzar una instancia el tiempo máximo de espera.

En el cuadro 4.21, se detallan los resultados de la planificación del Escenario 3 (ver carac-

terísticas en el cuadro 4.11), utilizando planificación por prioridades fijas (PF) y terminación

tardía al alcanzar una instancia el tiempo máximo de espera.

87

FU Instancias correctas Instancias incorrectas Total de instancias

0,2 871 0 871

0,3 871 0 871

0,4 871 0 871

0,5 871 0 871

0,6 871 0 871

0,7 871 0 871

0,8 870 0 870

0,9 870 0 870

1,0 870 0 870

1,1 871 0 871

1,2 870 0 870

1,3 832 38 870

1,4 697 169 866

1,5 799 70 869

1,6 831 38 869

Cuadro 4.20: Resultados planificación escenario 3 con PF y Aborto

88

FU Instancias correctas Instancias incorrectas Total de instancias

0,2 871 0 871

0,3 871 0 871

0,4 871 0 871

0,5 871 0 871

0,6 871 0 871

0,7 871 0 871

0,8 870 0 870

0,9 870 0 870

1,0 870 0 870

1,1 871 0 871

1,2 870 0 870

1,3 848 22 870

1,4 755 113 868

1,5 822 47 869

1,6 850 19 869

Cuadro 4.21: Resultados planificación escenario 3 con PF y Terminación Tardía

89

FU Instancias correctas Instancias incorrectas Total de instancias

0,2 871 0 871

0,3 871 0 871

0,4 871 0 871

0,5 871 0 871

0,6 871 0 871

0,7 871 0 871

0,8 870 0 870

0,9 870 0 870

1,0 870 0 870

1,1 871 0 871

1,2 870 0 870

1,3 779 86 865

1,4 723 141 864

1,5 774 90 864

1,6 807 60 867

Cuadro 4.22: Resultados planificación escenario 3 con EDF y Aborto

En el cuadro 4.22, se detallan los resultados de la planificación del Escenario 3 (ver carac-

terísticas en el cuadro 4.11), utilizando planificación por prioridades dinámicas (EDF) y aborto

al alcanzar una instancia el tiempo máximo de espera.

En el cuadro 4.23, se detallan los resultados de la planificación del Escenario 3 (ver ca-

racterísticas en el cuadro 4.11), utilizando planificación por prioridades dinámicas (EDF) y

terminación tardía al alcanzar una instancia el tiempo máximo de espera.

En el cuadro 4.24, se detallan los resultados de la planificación del Escenario 4 (ver ca-

racterísticas en el cuadro 4.11), utilizando planificación por prioridades fijas (PF) y aborto al

alcanzar una instancia el tiempo máximo de espera.

90

FU Instancias correctas Instancias incorrectas Total de instancias

0,2 871 0 871

0,3 871 0 871

0,4 871 0 871

0,5 871 0 871

0,6 871 0 871

0,7 871 0 871

0,8 870 0 870

0,9 870 0 870

1,0 870 0 870

1,1 871 0 871

1,2 870 0 870

1,3 808 62 870

1,4 805 59 864

1,5 785 83 868

1,6 831 37 868

Cuadro 4.23: Resultados planificación escenario 3 con EDF y Terminación Tardía

91

FU Instancias correctas Instancias incorrectas Total de instancias

0,2 2531 0 2531

0,3 2531 0 2531

0,4 2531 0 2531

0,5 2528 0 2528

0,6 2530 0 2530

0,7 2530 0 2530

0,8 2528 0 2528

0,9 2529 0 2529

1,0 2528 0 2528

1,1 2525 1 2526

1,2 2528 0 2528

1,3 2529 0 2529

1,4 2527 2 2529

1,5 2528 1 2529

1,6 2523 3 2526

Cuadro 4.24: Resultados planificación escenario 4 con PF y Aborto

92

FU Instancias correctas Instancias incorrectas Total de instancias

0,2 2531 0 2531

0,3 2531 0 2531

0,4 2531 0 2531

0,5 2528 0 2528

0,6 2530 0 2530

0,7 2530 0 2530

0,8 2528 0 2528

0,9 2529 0 2529

1,0 2528 0 2528

1,1 2525 1 2526

1,2 2528 0 2528

1,3 2529 0 2529

1,4 2527 2 2529

1,5 2528 1 2529

1,6 2523 3 2526

Cuadro 4.25: Resultados planificación escenario 4 con PF y Terminación Tardía

En el cuadro 4.25, se detallan los resultados de la planificación del Escenario 4 (ver carac-

terísticas en el cuadro 4.11), utilizando planificación por prioridades fijas (PF) y terminación

tardía al alcanzar una instancia el tiempo máximo de espera.

En el cuadro 4.26, se detallan los resultados de la planificación del Escenario 4 (ver carac-

terísticas en el cuadro 4.11), utilizando planificación por prioridades dinámicas (EDF) y aborto

al alcanzar una instancia el tiempo máximo de espera.

En el cuadro 4.27, se detallan los resultados de la planificación del Escenario 4 (ver ca-

racterísticas en el cuadro 4.11), utilizando planificación por prioridades dinámicas (EDF) y

terminación tardía al alcanzar una instancia el tiempo máximo de espera.

93

FU Instancias correctas Instancias incorrectas Total de instancias

0,2 2531 0 2531

0,3 2531 0 2531

0,4 2531 0 2531

0,5 2528 0 2528

0,6 2530 0 2530

0,7 2530 0 2530

0,8 2528 0 2528

0,9 2529 0 2529

1,0 2528 0 2528

1,1 2526 0 2526

1,2 2528 0 2528

1,3 2529 0 2529

1,4 2528 1 2529

1,5 2529 0 2529

1,6 2525 1 2526

Cuadro 4.26: Resultados planificación escenario 4 con EDF y Aborto

94

FU Instancias correctas Instancias incorrectas Total de instancias

0,2 2531 0 2531

0,3 2531 0 2531

0,4 2531 0 2531

0,5 2528 0 2528

0,6 2530 0 2530

0,7 2530 0 2530

0,8 2528 0 2528

0,9 2529 0 2529

1,0 2528 0 2528

1,1 2526 0 2526

1,2 2528 0 2528

1,3 2529 0 2529

1,4 2528 1 2529

1,5 2529 0 2529

1,6 2525 1 2526

Cuadro 4.27: Resultados planificación escenario 4 con EDF y Terminación Tardía

95

96

Capítulo 5

Conclusiones

El objetivo de esta tesis, ha sido el desarrollo e implementación de un prototipo de si-

mulador de planificador de tarea en sistemas de tiempo real con procesadores heterogéneos,

utilizando algoritmos de planificación por prioridades.

Se implementó dicho simulador, capaz de realizar planificaciones de N tareas de tiempo

real en M procesadores heterogéneos, utilizando 2 (dos) algoritmos de planificación por prio-

ridades (EDF y PF), junto con 2 (dos) posibles decisiones en caso de que la instancia de una

tarea alcanzara el tiempo máximo de espera (Aborto ó Terminación Tardía). Fueron realizadas

diferentes pruebas para garantizar el correcto funcionamiento de los algoritmos, realizando la

posibles combinaciones entre algoritmos y decisiones.

Se distinguieron y estudiaron los puntos críticos del planificador para los cuales se im-

plementaron casos testigos para testear el correcto comportamiento del simulador en dichas

circunstancias. Como resultado se observo que el simulador respondía de manera esperada ante

las pruebas que fueron detallas y explicadas en el capítulo 4.

97

98

Capítulo 6

Trabajos Futuros

Desarrollar e implementar los conceptos para considerar las demoras introducidas cuando

una tarea se despacha desde el procesador CPU (organizador) hacia otro procesador (pudiendo

ser otro CPU, un GPU o una FPGA), para que éste la ejecute y retorne el resultado al CPU (or-

ganizador) y así obtener la salida. Ante este intercambio se deben estudiar posibles sobrecargas

que conduzcan a reducir el rendimiento del sistema.

Analizar y estudiar los concepto para ampliar el uso de la FPGA, permitiendo que en una

misma FPGA, se puedan ejecutar de forma paralela más de una tarea en el mismo instante de

tiempo e introducir el uso de pipeline en las FPGA.

Que el simulador implementado, permita comparar diferentes métricas que permitan reali-

zar conclusiones sobre las planificaciones, permitiendo estudiar el rendimiento decreciente pro-

ducido al agregar mas procesadores para la ejecución de un conjunto de tareas finito. Además,

que permita realizar la comparación del consumo de energía utilizado en las planificaciones

usando distintas estrategias de planificación, para lo cuál sera necesario agregar un algoritmo

de planificación orientado a mejorar el consumo de energía en las planificaciones.

99

100

Bibliografía

Aguilar, J., Leiss, E., et al. (2004). Introducción a la computación paralela. Editorial Venezola-

na, Universidad de Los Andes, Mérida.

Audsley, N. C., Burns, A., Richardson, M. F., and Wellings, A. J. (1994). Stress: A simulator

for hard real-time systems. Software: Practice and Experience, 24(6):543–564.

Blanco de Frutos, H., Guirado Fernández, F., Monsó, L., and Lluís, J. (2012). Clusterización de

aplicaciones paralelas para su planificación en entornos de cómputo multi-cluster. Univer-

sitat de Lleida.

Bogdanski, M., Lewis, P. R., Becker, T., and Yao, X. (2011). Improving scheduling techniques

in heterogeneous systems with dynamic, on-line optimisations. In Complex, Intelligent

and Software Intensive Systems (CISIS), 2011 International Conference on, pages 496–

501. IEEE.

Brodtkorb, A. R., Dyken, C., Hagen, T. R., Hjelmervik, J. M., and Storaasli, O. O. (2010).

State-of-the-art in heterogeneous computing. Scientific Programming, 18(1):1–33.

Burns, A. and Wellings, A. J. (2010). Real-time systems and programming languages, volume

2097. Addison-Wesley.

Crespo, A. and Alonso, A. (2006). Una panorámica de los sistemas de tiempo real. Revista

Iberoamericana de Automática e Informática Industrial, 3(2):7–18.

101

De Giusti, L., Naiouf, M., Chichizola, F., Luque, E., and De Giusti, A. (2009). Dynamic sche-

duling in heterogeneous multiprocessor architectures. efficiency analysis. In Computer

Science & Technology Series–XV Argentine Congress of Computer Science Selected Pa-

pers. Editores: Guillerno Simari, Patricia Pesado, José Paganini. Págs, pages 85–95.

Diaz, A., Batista, R., and Castro, O. (2007). Realtss: a real-time scheduling simulator. In

Electrical and Electronics Engineering, 2007. ICEEE 2007. 4th International Conference

on, pages 165–168. IEEE.

Díaz, J., Reyes, S., Niño, A., and Muñoz-Caro, C. (2006). Un algoritmo autoplanificador cua-

drático para clusters heterogéneos de computadores. XVII Jornadas de Paralelismo, pages

379–382.

Flores, J. R. Z. (1995). Planificación estática de procesos en sistemas de tiempo real crítico.

PhD thesis, Universidad Politécnica de Madrid.

Golatowski, F., Hildebrandt, J., Blumenthal, J., and Timmermann, D. (2002). Framework for

validation, test and analysis of real-time scheduling algorithms and scheduler implementa-

tions. In Rapid System Prototyping, 2002. Proceedings. 13th IEEE International Workshop

on, pages 146–152. IEEE.

González Harbour, M., García, J. G., Gutiérrez, J. P., and Moyano, J. D. (2001). Mast: Mode-

ling and analysis suite for real time applications. In Real-Time Systems, 13th Euromicro

Conference on, 2001., pages 125–134. IEEE.

Healey, G., Slater, D., Lin, T., Drda, B., et al. (1993). A system for real-time fire detection.

In Computer Vision and Pattern Recognition, 1993. Proceedings CVPR’93., 1993 IEEE

Computer Society Conference on, pages 605–606. IEEE.

Hernández, L., Taibo, J., and Seoane, A. (1999). Una aplicación para la navegación en tiempo

real sobre grandes modelos topográficos. In IX Congreso Español de Informática Gráfica,

CEIG 1999.

102

Khatib, O. (1986). Real-time obstacle avoidance for manipulators and mobile robots. The

international journal of robotics research, 5(1):90–98.

Kramp, T., Adrian, M., and Koster, R. (2000). An open framework for real-time scheduling

simulation. Springer.

Krause, M., Englert, D., Bringmann, O., and Rosenstiel, W. (2008). Combination of instruc-

tion set simulation and abstract rtos model execution for fast and accurate target software

evaluation. In Proceedings of the 6th IEEE/ACM/IFIP international conference on Hard-

ware/Software codesign and system synthesis, pages 143–148. ACM.

Laplante, P. A. (1992). Real-Time Systems Design and Analysis: An Engineer’s Handbook.

IEEE Press, Piscataway, NJ, USA.

Liu, C. L. and Layland, J. W. (1973). Scheduling Algorithm for multiprogramming in Hard-

Real-Time Environment. Jornal of ACM.

Liu, J. W.-S., Liu, C. L., Deng, Z., Tia, T.-S., Sun, J., Storch, M., Hull, D., Redondo, J., Bettati,

R., and Silberman, A. (1996). Perts: A prototyping environment for real-tim e systems.

International Journal of Software Engineering and Knowledge Engineering, 6(02):161–

177.

Luna, F., Nesmachnow, S., and Alba, E. (2010). Búsqueda local paralela para planificación de

tareas en sistemas de computación heterogéneos. Universidad de Castilla, La Mancha.

Mednis, A., Strazdins, G., Zviedris, R., Kanonirs, G., and Selavo, L. (2011). Real time pothole

detection using android smartphones with accelerometers. In Distributed Computing in

Sensor Systems and Workshops (DCOSS), 2011 International Conference on, pages 1–6.

IEEE.

Moreno, L. (2004). Computación paralela y entornos heterogéneos. PhD thesis, Ph. D. disser-

tation, Universidad de La Laguna.

103

Olguín, G., Biscayart, L., and Urriza, J. M. (2012). Generación de tareas periódicas y aperió-

dicas para simulación de sistemas de tiempo real. Iberoamerican Journal of Industrial

Engineering, 3(6):53–69.

Orozco, J. D., Urriza, J. M., Cayssials, R., Fernández, E., Ferrari, M., Echaiz, J., Buckle, C.,

Barry, D., Páez, F. E., Olguín, G., et al. (2013). Sistemas de tiempo real con requerimien-

tos heterogéneos: integración hardware-software. In XV Workshop de Investigadores en

Ciencias de la Computación.

Páez, F. E., Urriza, J. M., and Orozco, J. (2014). Simulación de tareas aperiódicas y esporá-

dicas de tiempo real mediante un modelo de eventos discretos. Iberoamerican Journal of

Industrial Engineering, 5(10):251–264.

Pérez, H. P. (2003). Sistemas operativos de tiempo real (rtos). Revista española de electrónica,

Ediciones Técnicas REDE, pages 42–43.

Ramón, H. D. and Romero, F. (2002). Sistemas en tiempo real. In IV Workshop de Investiga-

dores en Ciencias de la Computación.

Rivas, M. A. (2002). Planificación de tareas en sistemas operativos de tiempo real estricto para

aplicaciones empotradas. Doctor, Facultad de Ciencias, Departamento de Electrónica y

Computadores, Universidad de Cantabria, Santander, España.

Singhoff, F., Legrand, J., Nana, L., and Marcé, L. (2004). Cheddar: a flexible real time schedu-

ling framework. In ACM SIGAda Ada Letters, volume 24, number 4, pages 1–8. ACM.

Vroey, S. D., Goossens, J., and Hernalsteen, C. (1996). A generic simulator of real-time schedu-

ling algorithms. In Simulation Symposium, 1996., Proceedings of the 29th Annual, pages

242–249. IEEE.

104