ciclic: herramienta para crear planificadores ciclicos factibles
Transcripción
ciclic: herramienta para crear planificadores ciclicos factibles
CICLIC: HERRAMIENTA PARA CREAR PLANIFICADORES CICLICOS FACTIBLES José Yépez, Josep Guardia, Manel Velasco, Jordi Ayza, Pau Marti y Josep M. Fuertes Dep. de Enginyeria de Sistemes, Automàtica i Informàtica Industrial, Universitat Politècnica de Catalunya C/ Pau Gargallo 5, 08028 Barcelona, España (jose.yepez, josep.guardia, manel.velasco, jordi.ayza, pau.marti, josep.m.fuertes)@upc.edu Resumen Uno de los planteamientos válidos para realizar la implementación de la gestión de tareas en sistemas de tiempo real periódicos lo constituye la utilización de planificadores cíclicos. Este método de planificación goza de un alto grado de determinismo, previsibilidad, fiabilidad y sencillez de implementación. Además, es un método bien conocido y ampliamente utilizado en entornos industriales. El principal inconveniente de este tipo de planificador es la falta de flexibilidad, ya que cualquier cambio en el conjunto de tareas o en sus características temporales obliga a rehacer el plan de ejecución. Para solventar estos inconvenientes es necesario, y muchas veces indispensable, contar con herramientas que ayuden a los diseñadores del sistema en la creación de la planificación cíclica de forma automática. En este trabajo se describe una herramienta denominada CICLIC, que sirve de soporte en el diseño o regeneración de planificaciones cíclicas. El mecanismo de diseño se basa en algoritmos de búsqueda exhaustiva que utilizan reglas heurísticas para optimizar el camino de búsqueda. Para ilustrar el uso de CICLIC se presentan algunos ejemplos. Palabras Clave: Planificación cíclica, sistemas de tiempo real, simulación. 1 INTRODUCCION Una de las características más importantes de un sistema de tiempo real es que su correcto funcionamiento depende tanto de proporcionar las salidas adecuadas como de hacerlo dentro del intervalo de tiempo requerido [16]. Este requisito conduce a uno de los problemas fundamentales en el diseño de sistemas de tiempo real, que es la planificación del tiempo de ejecución, de forma que las respuestas se produzcan dentro del plazo fijado. El problema general de automatizar la generación de una planificación factible de un conjunto de tareas es un problema NP-Hard [8]. Una aproximación para construir sistemas de tiempo real consiste en calcular la planificación admisible antes de poner en marcha el sistema, es decir fuera de línea (off-line). Posteriormente, el planificador de tiempo real ejecuta las tareas de acuerdo al plan de ejecución establecido. El planteamiento clásico de planificador de tiempo real off-line, lo constituye el planificador cíclico. Un planificador cíclico [1,7] es un procedimiento iterativo que permite multiplexar de forma explícita un conjunto de tareas sobre un procesador. Los planificadores cíclicos están definidos por tablas de planificación o planes de ejecución, las cuales se construyen a partir del conjunto de tareas y sus restricciones temporales. Cada entrada de la tabla contiene el segmento de código asociado a una de las tareas que conforman el plan. El procesador ejecuta cada uno de los segmentos de código de la tabla en estricto orden. Cuando todas las entradas de la tabla han sido ejecutadas el procesador regresa a la primera entrada de la tabla y el proceso se repite. Para mantener la planificación cíclica sincronizada con el tiempo de la aplicación, se utilizan interrupciones periódicas dadas por un reloj. Específicamente, de forma estándar la tabla de planes contiene un plan principal que define la secuencia de tareas a ejecutar durante un periodo fijo de tiempo llamado ciclo principal. El plan principal se divide en uno o más planes secundarios, los cuales incluyen la secuencia de tareas que deben ejecutarse durante un periodo fijo de tiempo llamado ciclo secundario. En general los planes secundarios de un mismo plan principal contendrán secuencias de distintas tareas, dependiendo de las características temporales de cada una de ellas. En realidad, cada plan secundario contiene uno o más marcos. Y dentro de cada marco se ejecuta una tarea, o parte de ella, según la secuencia correspondiente al plan secundario. Para verificar las restricciones temporales de un conjunto de tareas concurrentes, los diseñadores deben comprobar que dichas restricciones se cumplan. Actualmente existe un numeroso conjunto de métodos cuantitativos que forman parte de la teoría de planificación de tiempo real [2, 11], etc. Esta teoría ayuda al diseñador del sistema a estudiar y predecir el comportamiento temporal de un conjunto de tareas de tiempo real a través de test y simulación de la planificación. El test de planificabilidad establece si es factible llevar a cabo la planificación de un conjunto de tareas mediante un método especificó sin necesidad de determinar dicha planificación. La simulación de la planificación consiste en determinar una planificación en un intervalo de tiempo, y observar las propiedades temporales en la planificación calculada. sistemas de tiempo real en la construcción y mantenimiento de planificadores cíclicos. El desarrollo de esta herramienta está motivado por la carencia de herramientas flexibles para construir planificadores cíclicos. Las primeras contribuciones teóricas sobre planificación fueron propuestas hace alrededor de 30 años [11]. Esta teoría ha evolucionado para hacer frente a las diferentes exigencias de las aplicaciones [10,18] y ha sido utilizada satisfactoriamente en muchos proyectos [13]. Sin embargo, pocas herramientas han sido desarrolladas para ayudar a los diseñadores del sistema a generar estos resultados automáticamente. Entre ellas cabe citar: Este trabajo está organizado de la siguiente manera. En la sección 2 se describe el algoritmo propuesto partiendo de las características de la planificación cíclica, mostrando la complejidad del problema y la optimización en la búsqueda de planificadores factibles. En la sección 3, se describen las características de la herramienta CICLIC. En la sección 4, se ilustra el uso de la herramienta CICLIC a través de dos ejemplos. Finalmente, se presentan las conclusiones y una orientación para trabajos futuros en la sección 5. Rapid-RMA [15], es una de las herramientas de análisis más completas para estudiar la planificabilidad bajo condiciones de peor caso. Soporta la mayoría de los algoritmos de planificación clásicos y test de planificabilidad. No es de libre acceso. TimeSys [14] es un entorno para el modelado, análisis y simulación del comportamiento temporal de sistema de tiempo real. Esta herramienta provee la mayoría de los algoritmos de planificación clásicos. YASA [3] y la herramienta de la Universidad Libre de Bruxelles [6] están enfocadas únicamente a la simulación de la planificación. No ofrecen un test de planificabilidad. MAST [9] es una herramienta de trabajo ADA y proporciona algunas pruebas de factibilidad y servicios de simulación para planificadores con prioridades fijas. CHEDDAR [5] provee un marco de trabajo de libre acceso y flexible, el cual implementa la mayoría de los métodos de la teoría de planificación clásica. Sin embargo no trata planificadores cíclicos. El mecanismo de diseño de CICLIC se basa en algoritmos de búsqueda exhaustiva que utilizan reglas heurísticas para optimizar el camino de búsqueda. CICLIC se caracteriza por ser una herramienta portable, fiable y fácil de utilizar. 2 PLANIFICACIÓN CÍCLICA Los planificadores cíclicos ejecutan las tareas en secuencia según unas tablas de planificación o planes de ejecución. Estas tablas o planes se construyen antes de poner en marcha el sistema. Para construir un plan se debe determinar, en primer lugar, la duración de los periodos de los ciclos (ciclo principal, ciclos secundarios). Una vez hecho ésto se procede a asignar ejecuciones de tareas a marcos hasta obtener una planificación que asegure el cumplimiento de las restricciones temporales de las tareas. Específicamente, nos basamos en planificadores con reloj de ciclo secundario, en el cual se produce un pulso de reloj cada vez que finaliza un ciclo secundario para mantener la planificación cíclica sincronizada. La duración del ciclo principal y secundario debe cumplir ciertas condiciones para que pueda existir una planificación admisible. Dichas condiciones se describen a continuación [7]. 2.1 CARACTERIZACIÓN DE PERIODOS DE LOS CICLOS LOS La gran mayoría de estas herramientas no permiten la determinación de planes de ejecución de forma automática para planificación cíclica, excepto RapidRMA. Ésto es debido en gran parte a la naturaleza del problema a resolver y la carencia de algoritmos que generen automáticamente planes de ejecución en un tiempo razonable. Sea un conjunto de n tareas periódicas τ representadas por el conjunto {(C1,T1,D1), (C2,T2,D2),.…,(Cn,Tn,Dn)}, donde C representa el tiempo de ejecución, T el periodo y D el plazo. De acuerdo con estas definiciones asumimos la relación C ≤ D ≤ T. En este trabajo se describe una herramienta llamada CICLIC, que sirve de apoyo a los diseñadores de La duración del ciclo principal M, denominado también hiperperiodo, es el mínimo común múltiplo de los periodos de las tareas, M = mcm(Ti ) (1) En cuanto a la duración del ciclo secundario m, puede haber varias soluciones admisibles. Si sólo existe un temporizador que controla la duración de los ciclos secundarios, entonces el valor de m debe cumplir las siguientes condiciones [1,7]: a. τ i , τ ik pueda ser restricciones temporales, mj ha de cumplir, además de (6) la siguiente condición: Ci ≤ m − m debe ser mayor o igual que el mayor de los tiempos de computo máximos de las tareas: (3) (4) m debe cumplir: (5) para que entre el instante de activación de cada tarea y su plazo exista un ciclo secundario completo. Si no existe ningún valor que verifique el conjunto de condiciones anteriores, entonces el conjunto de tareas no puede ser planificado con un planificador cíclico. INSERCIÓN DE TAREAS EN CICLOS SECUNDARIOS A partir de las condiciones (2), (3), (4) y (5) se obtiene el conjunto de valores que puede tomar la duración del ciclo secundario m. Puesto que la duración de M es fija, según el valor de m elegido se tienen ncs = M/m ciclos secundarios en el plan principal. Así que un plan principal esta definido por ncs planes secundarios. Por otra parte, cada plan principal, incluye nei = M Ti (6) ejecuciones de cada tarea τi. De modo que cada plan secundario está constituido por una secuencia de { } marcos: σ = τ ik ,τ jl ,,τ rs , cada uno de ellos asociado a la ejecución de una tarea. ∑ ∀l |τ l ∈σ ( m j ) Cl (7) de tal forma que exista tiempo libre en dicho ciclo secundario para que pueda ejecutarse la tarea. 2.3 m debe ser un submúltiplo de la duración del ciclo principal M: ∀i : m + (m − mcd (m,Ti )) ≤ Di 2.2 Para que la ejecución k-ésima de (6) (2) ∃k : M = k .m d. (k − 1) x Ti ≤ ( j − 1) x m ≤ (k − 1) x Ti + Di − m incluida en σ (m j ) , de forma que se garanticen sus ∀i : m ≥ max(Ci ) c. caracterizada por (Ci, Ti, Di), podrá ser incluida en los j-ésimos ciclos secundarios, ∀j ∈ [1 ncs ], tal que: m debe ser menor o igual que el plazo de ejecución de cualquier tarea: ∀i : m ≤ Di b. A partir de la condición (5) se infiere que la k-ésima ejecución, ∀k ∈ [1 nei ], de una tarea τi, BUSQUEDA DE UNA PLANIFICACIÓN FACTIBLE Una planificación admisible es aquella que permite que el conjunto de tareas se ejecute de forma que se cumplan sus requisitos temporales. Para resolver el problema de establecer una planificación admisible se pueden utilizar algoritmos de back-tracking. Los algoritmos de retroceso buscan una solución recorriendo exhaustivamente el espacio de soluciones del problema. La búsqueda se facilita organizando en árbol el espacio de soluciones. En este caso, la raíz de éste árbol Πo es la planificación trivialmente admisible para 0 tareas. Cada nodo Πi de este árbol contiene una solución parcial al problema consistente en la planificación de i tareas, donde i es la profundidad del nodo. Cada nodo Πi tiene h posibles sucesores, estos nodos sucesores contemplan todos los modos de incluir en la planificación uno de las n1 tareas que quedan por planificar. El espacio de soluciones está definido por todos los caminos desde el nodo raíz a los nodos terminales. Cada nodo del árbol del espacio de soluciones representa un estado del problema, por ello a la organización en árbol del espacio de soluciones se le llama árbol del espacio de estados. El algoritmo de retroceso recorre en profundidad el árbol del espacio de estados hasta encontrar una solución admisible para el problema. Lo cual se corresponde con la generación en profundidad de todos los estados posibles del problema. Para evitar generar todos estos estados se utiliza una función de poda (pruning function) que identifica aquellos nodos que no conducen a una solución admisible sin necesidad de generar el sub-árbol correspondiente. El algoritmo finaliza cuando se alcanza un nodo Πi,j de profundidad n, que representa una solución, o cuando no es posible expandir ningún nodo, lo que supone que el problema no tiene solución y por lo tanto no existe una planificación cíclica factible para el conjunto de tareas. 2.4 COMPLEJIDAD DEL PROBLEMA El espacio de soluciones está constituido por todas y cada una de las maneras de incluir las n tareas en la planificación, la cual esta acotada por la siguiente ecuación [7]: ncs (ncs !)n = ∏ Π ni =1nei × (ncs − nei )! i =1 nei n (8) De donde se deduce que la complejidad del problema aumenta con el número de tareas y con el número de ciclos secundarios. Por lo tanto, si existen varios valores de m que verifiquen las ecuaciones (2), (3), (4) y (5), se deben elegir primero los mayores valores para intentar encontrar una planificación admisible. 2.5 OPTIMIZACIÓN EN LA BUSQUEDA DE UNA PLANIFICACIÓN FACTIBLE En el algoritmo desarrollado, se eligen las tareas según el orden que establece la primera regla, haciendo uso de las otras dos cuando existan tareas con un mismo plazo de respuesta. Estos criterios permiten seleccionar primero a las tareas con menor posibilidad o que tienen mayor dificultad para ser incluidas en la planificación. Así, a partir de estos criterios se consigue llegar a soluciones de forma más rápida que si se elige una tarea de forma arbitraria. Una vez elegida una tarea τi, hay que incluir sus nei ejecuciones en los planes secundarios. En el caso general, para cada ejecución τij existirá más de un ciclo secundario donde pueda incluirse. El problema de añadir tareas a una planificación parcial se puede asimilar al problema de empaquetar bultos (bin packing) [8]. Para elegir un ciclo secundario, donde incluir la ejecución τij se aplican las siguientes reglas heurísticas que se utilizan en el problema de empaquetar bultos: 1. Incluir la tarea en el primer ciclo secundario, que verifique sus requisitos temporales, en el qué quede un tiempo de cómputo mayor o igual al tiempo máximo de cómputo de la tarea. Esto equivale a empaquetar el bulto en la primera caja en la que quepa (first fit). En el peor de los casos se debe recorrer exhaustivamente el árbol del espacio de soluciones para encontrar una planificación admisible para el conjunto de las n tareas, o bien, para asegurar que no existe, pero la complejidad del espacio de soluciones (9) es grande. Existen diferentes métodos que pueden ser usados para construir planificadores cíclicos [4], tales como búsqueda heurística, evolución estocástica y algoritmos genéticos. Específicamente, nos hemos basado en la utilización de algunas reglas heurísticas que facilitan, en la mayoría de los casos, la obtención de soluciones con una menor complejidad. 2. Incluir la tarea en el último ciclo secundario en el que quepa y se garanticen sus requisitos temporales. Esto equivale a empaquetar el bulto en la última caja en la que quepa (last fit). Las reglas utilizadas deben permitir elegir la mejor opción a la hora de expandir un nodo con alguno de sus sucesores, de forma que se pueda esperar razonablemente llegar por este camino a un nodo de profundidad n, generando un menor número de nodos del árbol y, por lo tanto, reduciendo, en la mayoría de los casos, la complejidad del problema. Estas reglas consiguen un empaquetado que no usa más de (11/9)xN+4 cajas, siendo N el mínimo numero de cajas necesarias, que en nuestro caso representa el numero de ciclos secundarios. 3. Encajar la tarea en el ciclo secundario en el que quede menor tiempo de cómputo libre y se garanticen los requisitos temporales. Esto equivale a empaquetar el bulto en la caja que tenga la menor capacidad libre y esta sea mayor o igual a la que necesita el bulto (best fit). 2.6 En nuestro caso, los criterios seleccionados para elegir la tarea a incluir son: 1. Añadir la tarea con el plazo de ejecución más corto entre los restantes. 2. Añadir la tarea con el período más corto entre los que restan por planificar. 3. Añadir la tarea con el mayor tiempo de cómputo entre los que restan por planificar. ALGORITMO La figura 1 se muestra el diagrama de flujo del algoritmo en el que se basa CICLIC para determinar y simular planificadores cíclicos. Este algoritmo esta compuesto por varios procesos. El primero de ellos, basado en las especificaciones temporales del conjunto de tareas, se encarga de verificar las condiciones suficientes de planificabilidad (fig1:B), a través de las reglas dadas en la sección 2.1. Posteriormente, si se cumplen las modificada a través de interfaces graficas con el usuario (GUI). El usuario puede asignar a cada tarea un color, para posteriormente determinar fácilmente y verificar la ocurrencia de eventos relevantes, medir intervalos de tiempo y verificar rápidamente el cumplimiento de restricciones temporales. Después de leer las características de las tareas del sistema, se pueden emplear utilidades de análisis y simulación. CICLIC muestra a través de diferentes ventanas: Conjunto de tareas, Análisis de planificación, Código C de la planificación encontrada Simulación de planificación. De esta manera, CICLIC permite reducir el impacto de actualizaciones y/o modificaciones de las tareas, facilitando su realización. 3.1 ESPECIFICACIÓN DE LAS TAREAS Figura 1: Diagrama flujo del algoritmo de la herramienta CICLIC condiciones se determinan el ciclo principal y los ciclos secundarios de la planificación (fig1:C). A continuación se ordena el conjunto de tareas en base a las reglas heurísticas enunciadas en la sección 2.5 y se determinan los marcos o ejecuciones para completar cada tarea (fig1:D). Luego se intenta encontrar una planificación admisible, insertando ejecuciones de tareas en los ciclos secundarios de forma que se cumplan los requisitos temporales (fig1:E). La planificación se construye recursivamente (fig1:F), hasta encontrar una planificación cíclica factible (fig1:G), o hasta que no es posible insertar el conjunto completo de tareas, lo que supone que el problema no tiene solución (fig1:H). Los usuarios deben especificar los atributos de cada tarea. Los atributos de las tareas son: el periodo de la tarea (T), el plazo de la tarea (D), el tiempo de ejecución estimado de la tarea (C) y el nombre o descripción de la tarea. 3.2 ANALISIS DE PLANIFICABILIDAD CICLIC verifica las condiciones suficientes de planificabilidad para planificadores cíclicos (sección 2.1) y determina el factor de utilización de la CPU. Si no existe ningún valor que verifique el conjunto de condiciones, entonces el conjunto de tareas no puede ser planificado a través un planificador cíclico. 3.3 CODIGO C CICLIC genera el conjunto de instrucciones en código C correspondientes a la planificación encontrada. 3.4 VENTANAS GUIS Y SALIDAS 3 HERRAMIENTA CICLIC CICLIC es una herramienta Java para el diseño y desarrollo de planificadores cíclicos de sistemas de tiempo real sobre un procesador, el cual provee facilidades de análisis y simulación. Así, CICLIC permite establecer planificaciones cíclicas, que pueden ser implementadas posteriormente sobre cualquier procesador y sistema operativo de tiempo real. Los usuarios de CICLIC especifican las tareas del sistema. Todas las especificaciones son leídas desde los archivos de especificaciones proveídas por el usuario y compiladas en una representación interna. Estas descripción puede ser fácilmente vista y La interfaz grafica con el usuario de CICLIC permite, a través de diferentes ventanas: 1. Que los usuarios puedan introducir, ver, modificar y almacenar la descripción del conjunto de tareas. 2. Realizar y mostrar el análisis de planificabilidad. 3. Mostrar la carga en la CPU. 4. Producir y mostrar las simulaciones de la planificación cíclica factible en caso de que exista. Ejemplos de estas ventanas se muestran en la figuras 2, 3 y 4. Figura 2: Interfaz gráfica de Ciclic 4 CASO DE ESTUDIO En esta sección se muestra el uso de CICLIC en el proceso de análisis y diseño de planificadores cíclicos en sistemas de tiempo real. El primer sistema en estudio corresponde a Volvo Construction Equipment (VCE) [17]. VCE se ha basado tradicionalmente en planificadores estáticos. Esto se debe principalmente a la naturaleza critica de sus sistemas de control en su maquinaria pesada (camiones, transporte articulado, excavadoras, etc.). Nos basaremos en una versión simplificada de uno de los sistemas construidos por VCE [12], específicamente se considera el conjunto de tareas que se muestran en la tabla 1. Tarea A B C D E Ti 10 20 50 50 100 Ci 2 2 1 6 8 Di 10 10 10 50 100 específico. Las franjas blancas indican tiempo libre de CPU. El comienzo y fin de cada ciclo secundario viene indicado por la aparición y desaparición de un recuadro negro en la parte superior de la simulación. El segundo sistema en estudio corresponde a una simplificación de un sistema de control de automóviles, cuyo conjunto de tareas que se muestran en la tabla 2. Tarea A: medidor de velocidad B: control ABS C: inyección de combustible Ti 20 40 80 Ci 4 10 16 Di 20 40 80 Tabla 2: Conjunto de tareas de un sistema control de un automóvil. La figura 4, muestra la simulación del planificador cíclico encontrado. Tabla 1: Conjunto de tareas sistema VCE. La figura 2 muestra la interfaz gráfica de CICLIC, donde se muestra el conjunto de tareas y los resultados del análisis de planificabilidad, duración del ciclo principal y ciclo secundario, y factor de utilización de CPU. La figura 3 muestra la simulación del planificador cíclico encontrado, en donde se puede observar claramente el comienzo y la finalización de ejecución de cada tarea. Cada tarea tiene asociado un color 0 10 20 30 40 50 60 70 80 90 100 Figura 3: Planificador cíclico del conjunto de tareas del sistema VCE (M=100, m=10) Eng. Practice, vol. 3, no. 2, pp. 151-162, 1995. [5] The Cheddar project: A free real time scheduling analyzer, http://beru.univbrest.fr/~singhoff/cheddar/ 8 0 90 60 10 Figura 4: Planificador cíclico del conjunto de tareas del sistema de control de un automóvil (M=80, m=20) 5 CONCLUSIONES TRABAJOS Y FUTUROS En este trabajo se presenta la herramienta CICLIC, que sirve de apoyo en el análisis, diseño y desarrollo de planificadores cíclicos de sistemas de tiempo real con un procesador. Una de las principales características de CICLIC es el uso complementario de componentes analíticos y de simulación de la herramienta durante el proceso de diseño. En primer lugar CICLIC verifica si se cumplen las condiciones suficientes de planificabilidad del conjunto de tareas, para luego determinar la planificación y la simulación de las mismas. CICLIC se basa en planificadores de ciclo secundario y en algoritmos de búsqueda heurística para obtener una planificación factible. Nuestro trabajo futuro incluye extender la herramienta para tratar conjuntos de tareas con relaciones de precedencia e introducir y evaluar nuevas reglas heurísticas que permitan aumentar la eficacia de la herramienta. Agradecimientos Esta investigación recibe soporte del Ministerio de Ciencia y Tecnología, mediante el proyecto de referencia DPI2002-01621. Referencias [1] T. P. Baker and A. Shaw. The Cyclic Executive Model and Ada Real Time Systems 1(1), 1989. [2] G. Buttazzo. Hard Real-Time Computer Systems. Predictable Scheduling Algorithms and Applications. Kluwer Academic Publishers, 1997. [3] J. Blumenthal, F. Golatowski, J. Hildebrandt, and D. Timmermann. Framework for validation and Analysis of Real time Scheduling Algorithms and scheduler implementations. University of Rostock, Technical report available from http://yasa.etechnik.uni-rostock.de/, 2003. [4] A. Burns N. Hayes and M.F. Richardson, “Generating Feasible Cyclic Schedules,” Control 70 [6] S. Devroey, J. Goossens, and C. Hernalsteen. A generic simulator of real-time scheduling algorithms, pp. 242–249. Proceedings of the 29th Annual Simulation Symposium, New Orleans, Louisiana, April 1996. [7] J. Flores Zamorano, “Planificación Estática de Procesos en Sistemas de Tiempo Real Crítico”, Tesis Ph. D., Universidad Politécnica de Madrid, 1995. [8] M. R. Garey and D. Johnson Computers and Intractability. A Guide to the Theory of NPCompleteness Freeman, 1979. [9] M. G. Harbour, J. G. García, J. P. Gutierrez, and J. D. Moyano. MAST: Modeling and Analysis Suite for Real Time Applications, pp. 125–134. Proc. of the 13th Euromicro Conference on Real-Time Systems, Netherlands, June 2001. [10] M. H. Klein, T. Ralya, B. Pollak, R. Obenza, and M. G. Harbour. A Practitioner’s Handbook for Real Time Analysis. Kluwer Academic Publishers, 1994. [11] C. L. Liu and J. W. Layland, “Scheduling Algorithms for Multiprogramming in a Hard RealTime Environment,” Journal of ACM, Vol. 20, No. 1, pp. 46-61, 1973. [12] J. Mäki-Turja, K. Hänninen, M. Nolin. Efficient Development of Real-Time Systems Using Hybrid Scheduling, International conference on Embedded Systems and Applications (ESA), June, 2005 [13] SEI. The Rate Monotonic Analysis. Technical report, In the Software Technology Roadmap. http://www.sei.cmu.edu/str/descriptions/rma body.html, September 2003. [14] TimeSys. Using TimeWiz to Understand System Timing before you Build or Buy. White paper, http://www.timesys.com/index.cfm?bdy=home bdylibrary.cfm, 2002. [15] Tri-Pacific. Rapid-RMA: The Art of Modeling Real-Time Systems. http://www.tripac.com/html/prod-fact-rrm.html, 2003. [16] J. A. Stankovic Misconceptions about real-time programming IEEE Computer. Octubre 1988 [17] Volvo Construction http://www.volvoce.com. Equipment. [18] J. Yépez, P. Martí and J. M. Fuertes. “Control Loop Scheduling Paradigm in Distributed Control Systems.” 29th Annual Conference of the IEEE Industrial Electronics Society (IECON03), Roanoke, USA, November, 2003.