PAC- Performance-centered Adaptive Curriculum for Employment Needs Programa ERASMUS: Acción Multilateral - 517742-LLP-1-2011-1-BG-ERASMUS-ECUE MASTER DEGREE: Industrial Systems Engineering ASIGNATURA ISE4: Industria y comunicaciones en Tiempo-Real MÓDULO 2: Sistemas en Tiempo-Real TAREA 2-1: FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL Contenido TAREA 2-1: FUNDAMENTO Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL. ........................3 1. INTRODUCCIÓN Y OBJETIVOS ...........................................................................................................................3 2. CONTENIDO .....................................................................................................................................................................3 2.1 SISTEMAS EN TIEMPO-REAL..........................................................................................................................3 2.2 SISTEMAS EN TIEMPO-REAL EN INDUSTRIA ......................................................................................5 2.3. PROCESAMIENTO DE INTERRUPTICONES ...........................................................................................7 2.4. SINCRONIZACIÓN Y COMUNICACIÓN ENTRE PROCESOS .......................................................9 2.5. PLANIFICACIÓN DE SISTEMAS EN TIEMPO-REAL ........................................................................10 2.6. PLANIFICACIÓN CÍCLICA ..............................................................................................................................11 2.7 ALGORITMO HEURÍSTICO ............................................................................................................................14 2.8. ANÁLISIS DEL MÉTODO DE PLANIFICACIÓN CÍCLICA ESTÁTICA .....................................18 2.9. PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL .....................................................................19 3. CONCLUSIONES .........................................................................................................................................................23 4. BIBLIOGRAFÍA Y/O REFERENCIAS ...................................................................................................................23 5. ENLACES DE INTERÉS ............................................................................................................................................23 Índice de figuras Figura Figura Figura Figura 1: 2: 3: 4: INTERRUPCIONES DE PROGRAMAS Y PROFUNDIDAD 3 CON PRIORIDADES ............9 PLANIFICACIÓN CÍCLICA ............................................................................................................................12 ÁRBOL GENERADO POR ALGORITMOS DE BUSQUEDA.......................................................16 PERIODOS ARMÓNICOS .............................................................................................................................17 FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL 2 TAREA 2-1: FUNDAMENTO Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL. 1. INTRODUCCIÓN Y OBJETIVOS El objetivo de la tarea es explicar los conceptos básicos de los sistemas en tiempo real y sus características más importantes relacionados con la función comunicaciones industriales, como base para la introducción de los sistemas en tiempo real en la programación. Entre las competencias básicas que los alumnos deben adquirir es la capacidad de aplicar correctamente los mecanismos para la sincronización de tiempo y los acontecimientos, y analizar y deducir la importancia de la planificación de los mensajes y la función prioridades (estática y dinámica). 2. CONTENIDO 2.1 SISTEMAS EN TIEMPO-REAL Para poder entender que es un Sistema en tiempo real (RTS) vamos a definir previamente unos conceptos básicos: - Un sistema es una caja negra que tiene una o más entradas y un una o más salidas. - El tiempo de respuesta del sistema es el tiempo entre el momento de la entrada y el momento de la salida. - El tiempo entre la presentación de un conjunto de entradas a un sistema y la aparición de todas las salidas asociadas se llama tiempo de respuesta del sistema. - Un sistema en falla es un sistema que no puede satisfacer uno o más de los requisitos presentados en la especificación del sistema. Con estas definiciones previas podemos decir que: Un sistema de tiempo real (RTS) se puede definir como un sistema que debe responder, en un tiempo específico y finito, a una entrada o estímulo externo y cuyo correcto funcionamiento dependerá de las salidas. El correcto funcionamiento no solo dependerá de los resultados que entrega sino del momento en que lo hace, ya que es dependiente del tiempo. Es muy importante que estos sistemas cumplan los requerimientos del tiempo. El sistema de tiempo real (RTS) tiene una serie de características muy importantes: FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL 3 • Tiempo: Es clave la administración y el control del tiempo en que se producen los resultados. Todas las tareas deben ser realizadas antes de la terminación de los plazos y esto puede hacer que el sistema sea predecible. Los resultados obtenidos con retrasos pueden producir graves consecuencias. • Confiabilidad: Debe ser un sistema predecible que tenga cierta tolerancia a los fallos y nos de seguridad. Lo cual implica que se debe demostrar que los requerimientos de tiempo se cumplen en cualquier circunstancia. Lo cual requiere una cuidadosa planificación de las tareas y recursos. El cumplimiento de los requisitos de tiempo y anticiparse a los fallos. Sería importante dotar al sistema con la capacidad de monitorizar u controlar el tiempo. Ambiente: Las características del ambiente son muy importantes para conocer los resultados del sistema. A través de sensores se puede recopilar datos sobre el medio ambiente y a través de actuadores cambiar el estado del sistema controlado. Los RTS a menudo toman medidas para tener un ambiente controlado, este cambio en el sistema dependerá de E/S y no solo de las entradas, un ejemplo claro es un reactor nuclear. Los sistemas en tiempo real podemos dividirlos en tres tipos, en función del tratamiento de los errores que podamos tener en el sistema: • Sistemas de tiempo real duros o Hard real-time systems: si la respuesta está fuera de plazo, no tienen valor alguno, y produce una falla total del sistema. Todas las acciones deben estar dentro de un plazo de tiempo especificado. Ejemplo: Control de frenado. • Sistemas de tiempo real firme o Firm real-time: pueden tolerar el incumplimiento en el tiempo de respuesta ocasionalmente, una respuesta tardía no tiene valor. Ejemplo: Sistemas multimedia • Sistemas de tiempo real blandos o Soft real-time systems: pueden tolerar el incumplimiento en el tiempo de respuesta, con una penalización que implica la degradación en la calidad de la respuesta. FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL 4 Ejemplo: Reproductor de DVD. Con todo esto podemos decir que el objetivo de un Sistema en tiempo real (RST) es asegurarse que se cumplen todos los plazos. Si se excede llevaría a un deterioro del sistema y resultado. Generalmente RTS se define como un sistema que da la respuesta correcta en un plazo determinado de tiempo. Si se excede, entonces esto llevaría a un deterioro del sistema y / o resultados erróneos. El tiempo de respuesta depende del sistema global. Una estrategia en tiempo real tiene un número de características que pueden ser inherentes o impuesta y pueden distinguirse de las de otros tipos de sistemas. Las principales características son: Interacción con el medio ambiente a través de sensores para recopilar datos sobre el medio ambiente y actuadores para cambiar el estado del sistema controlado. Debe procesar información en un plazo de tiempo limitado, por lo que el sistema de control puede ser predecible .. Los resultados obtenidos con un retraso puede conducir a graves consecuencias, incluso si fueran verdad. Esto es diferente de los sistemas interactivos, en los que puede haber plazos para la conveniencia del usuario, pero su fracaso no es crıtico. No todos los componentes de una estrategia en tiempo real tienen limitaciones de tiempo. 2.2 SISTEMAS EN TIEMPO-REAL EN INDUSTRIA Los requerimientos de diseño de las aplicaciones de tiempo real son radicalmente diferentes de aquellos de las aplicaciones de propósito general (cómputo científico y de escritorio en entornos de red). Esto demanda de sistemas operativos de tiempo real con características mecanismos específicos para este segmento de la computación. y En particular, en un sistema operativo de tiempo real es necesario poder predecir en todo momento qué actividad está ejecutando el procesador y por cuanto tiempo lo hace. Con este propósito la comunidad de tiempo real ha diseñado una arquitectura de software en donde las actividades a llevar a cabo por las aplicaciones (tareas) se activan por tiempos determinados y según esquemas de planificación predecibles. FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL 5 Sin embargo, en los sistemas operativos de tiempo real actuales, la comunicación entre los dispositivos externos y el procesador no ha cambiado y se sigue dando a través de señales emitidas por el hardware (denominadas interrupciones) que interrumpen a las aplicaciones de forma impredecible para ejecutar rutinas de servicio de interrupción (ISR -- “Interrupt Service Routine”). Este mecanismo, diseñado décadas atrás para los sistemas operativos de propósito general, introduce grandes dificultades para satisfacer los requerimientos de predecibilidad temporal y confiabilidad que demanda el cómputo en tiempo real. Las características típicas de la estrategia en tiempo real en los sistemas industriales es el uso de soluciones de software, hardware y algoritmos especializados. - Ordenadores industriales y controladores, PLC, Microcontroladores y más con una arquitectura adecuada; - Los sistemas operativos de tiempo real (RTOS); - SCADA-packs y entornos de software como LabVIEW; - Lenguajes para el tiempo-real con capacidades multitarea como Modula-2, Ada, Java y otros; - Herramientas de hardware con características temporales adecuadas (multiplexores, DAC, ADC, etc); - DBMS Industrial; - Buses industriales, interfaces y protocolos para la construcción de sistemas de computación distribuida (RS-485, - RS-422, RS-232, Modbus, Profibus, CAN Bus, bus VME, VXI, PXI, LXI, IndustrialEthernet, IEEE-488 y otros.) - Algoritmos especiales. 2.2.1. LOS MÉTODOS DE DISEÑO Existen varios métodos para ayudar al diseño de sistemas de tiempo real, un ejemplo de los cuales es MASCOT, un método antiguo, pero muy exitoso, lo que representa la estructura concurrente del sistema. Otros ejemplos son HOOD, Real-Time UML, AAVD el perfil Ravenscar, y Real-Time Java. (Ver más detalles en: http://en.wikipedia.org/wiki/Real-time_computing)) Un ejemplo de Sistema en tiempo real en industria es ANÁLISIS EN TIEMPO REAL EN LAS INDUSTRIAS EL CARBÓN Y MINERALES DE LA EMPRESA SGS. SGS Ofreces servicios líderes de inspección, verificación, pruebas, ensayos y certificación a nivel global. La indagatoria y el análisis del carbón o minerales en tiempo real hacen que sea posible responder rápidamente a condiciones cambiantes y controlar eficientemente la calidad para cumplir con especificaciones contractuales y FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL 6 operacionales. Los sistemas de medición en tiempo real generalmente incluyen un analizador en línea, un sistema de muestreo mecánico integrado para la calibración del analizador y para recolectar diariamente las muestras de un contrato o de un embarque y además un software computacional para el control del sistema de manejo de material en tiempo real. SGS recomienda usar sistemas de medición en línea que sean robustos ante cambios en las reservas o en tipo de material, tales como sistemas basados en activación rápida del neutrón gamma (prompt gamma neutron activation - PGNA). Los analizadores PGNA miden directamente componentes elementales tal como son recibidos. 2.3. PROCESAMIENTO DE INTERRUPTICONES Una Importante estrategia para la programación de RTS es la gestión de interrupciones. Una interrupción se produce cuando hay un estímulo externo para el cual se requiere que el sistema responda en un plazo determinado. A menudo hay muchos incentivos (interrupciones), por lo que deben ser priorizadas para que la tarea de mayor prioridad deba ser ejecutada dentro de un plazo determinado y de cualquier otro evento. Los procesos interrumpidos también incluyen el almacenamiento de información para que los ordenadores puedan restaurar correctamente la tarea interrumpida, y evitar los bloqueos internos y los ciclos interminables. La interrupción puede ser generada por el software o hardware. El estado del programa interrumpido se guarda y se pasa el control al programa para el procesamiento de la interrupción. Después del procesamiento, el estado del programa se restaura y continúa con el flujo normal de procesamiento Un aspecto determinante para el logro del requerimiento de predecibilidad del sistema operativo, es el mecanismo mediante el cual se administran los eventos externos que se presentan durante la ejecución de la aplicación. Para el tratamiento de estos eventos externos, la generalidad de los sistemas operativos de tiempo real actuales emplea esquemas de administración de interrupciones que fueron diseñados décadas atrás para sistemas operativos de “propósito general”. Estos esquemas tienen como propósito fundamental la respuesta rápida a eventos externos (minimizar la latencia de interrupción) o el caudal de procesamiento1; sin embargo, presentan serios inconvenientes para el caso de sistemas de tiempo real confiables. Algunos de los inconvenientes más importantes son: • La generalidad de los desarrollos teóricos para los análisis de factibilidad de planificación de los sistemas de tiempo real, consideran sólo un único espacio de prioridades para todas las actividades en el FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL 7 sistema. Esta suposición contrasta con el modelo real soportado por el sistema operativo, en el cual las Rutinas de Servicio de Interrupción o ISRs (“Interrupt Service Routine”) y las tareas poseen espacios de prioridades y algoritmos de planificación independientes. Como consecuencia, el empleo de dos espacios de prioridades independientes afecta severamente temporal del la sistema. capacidad En los de casos predecir en que el comportamiento las ecuaciones de factibilidad incluyen el efecto de estos dos espacios, se deteriora significativamente la cota de utilización que garantiza la factibilidad de planificación del sistema. • La sincronización entre ISRs y tareas se lleva a cabo mediante la inhabilitación de interrupciones. En consecuencia, los sistemas operativos de tiempo real son incapaces de ofrecer garantías de la latencia de interrupción para el peor caso. • Existen severas restricciones en cuanto a los servicios del sistema que se pueden invocar dentro de las ISRs. Esto a su vez, trae como consecuencia un aumento de la complejidad de diseño e implementación, que afecta negativamente la confiabilidad del software resultante. Por lo anterior podemos afirmar que, aunque estos esquemas tradicionales de administración de interrupciones son adecuados para sistemas que demandan una alta capacidad (o caudal) de procesamiento, como por ejemplo los sistemas operativos de red y de bases de datos; así mismo, presentan severas restricciones para el caso de sistemas que requieren un alto grado de confiabilidad y, peor aún, carecen del determinismo necesario para establecer las garantías de respuesta temporal que demandan las aplicaciones de tiempo real. El mantenimiento de una interrupción puede a su vez ser interrumpido por otro evento de mayor prioridad. En este caso, los niveles de prioridad están configurados como en la (Fig. 1) Para atender las interrupciones y para cumplir con las limitaciones de tiempo del sistema, muchos de los sistemas en tiempo real, realizan cálculos dinámicos para determinar si pueden cumplir con los objetivos del sistema. Estos cálculos dinámicos se basan en: la frecuencia media de aparición de acontecimientos, el tiempo necesario para procesar los acontecimientos y los procedimientos que pueden interrumpir o suspender su servicio. FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL 8 En los sistemas informáticos no se utilizan a menudo controladores especiales para el mantenimiento de las interrupciones cuando se establece la prioridad necesaria. Las interrupciones pueden tener diversos niveles. Parámetros principales: la profundidad, la prioridad y la saturación (Figura 1). Fig.1: interrupciones de programas y profundidad 3 con prioridades. 2.4. SINCRONIZACIÓN Y COMUNICACIÓN ENTRE PROCESOS Un sistema de multi-tarea debe tener un mecanismo por el cual las diferentes tareas pueden intercambiar información entre sí y este mecanismo asegura la sincronización Por estas características, el sistema operativo y los lenguajes de programación de RTS a menudo utilizan semáforos con una cola, los buzones o los sistemas de mensajería. Los semáforos proporcionan sincronización y señalización, pero no contienen la información. Los mensajes son similares a los semáforos, FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL 9 excepto que contienen información relevante. En los buzones no se señalan la información, pero ellos la contienen. Los semáforos con una cola es un software primitivo que ayuda a gestionar el tráfico. Proporcionan una manera de gestionar colas diferentes, por ejemplo, colas de tareas esperando por, los recursos, el acceso a una base de datos o los mecanismos y las colas de los recursos y mecanismos. Los semáforos coordinan (sincronizan) tareas de espera, garantizando al mismo tiempo que las tareas y los recursos no interfieran uno con el otro. En RTS los semáforos son de uso frecuente para la implementación y administración de buzones. En los buzones se almacenan temporalmente las memorias intermedias para el envío de mensajes desde un proceso a otro. Un proceso produce alguna información, lo pone en el buzón de correo y, a continuación indica el proceso de consumo, para detectar la presencia de la información en el buzón de correo con el fin de usarla. La tercera forma de comunicación y sincronización entre procesos es el sistema de mensajería (ver Message Passing Interface). En el sistema de mensajería un proceso envía un mensaje a otro proceso. El último mensaje recibido se activa automáticamente por el sistema de apoyo para el tiempo de ejecución o por el sistema operativo para el procesamiento. Dicho sistema provoca la sobrecarga debida a la transferencia real de la información, pero proporciona una mayor flexibilidad y facilidad de uso. En lugar de sincronización dinámica de tareas (por semáforos), Algunos se enfocan en RTS sobre la sincronización estática de tareas. Esto significa que se analiza el flujo total de proceso y, si es principalmente cíclico con varios casos de sincronización de la sincronización de las tareas puede ser guiado con un ciclo ejecutivo de tiempo real, en el que los algoritmos para el modelo de procesamiento nos dicen el comportamiento cíclico del sistema. 2.5. PLANIFICACIÓN DE SISTEMAS EN TIEMPO-REAL Dependiendo de cómo implementemos el método, los procesos se clasifican como: • Procesos periódicos. Se activan repetidamente a ciertos intervalos de tiempo. Sus características temporales son: (a) Período de activación o tiempo entre dos activaciones sucesivas, (b) el tiempo de ejecución o tiempo máximo de respuesta (tiempo máximo entre la activación adecuada y terminación), (c) el tiempo de cálculo (tiempo máximo para FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL 10 el cálculo de cada activación ). La desigualdad siguiente debe ser clara de 0 ≤ c ≤ b ≤ a. • Procesos aperiódicos. Se activan en función del caso y tienen requisitos de tiempo crítico. Las características temporales de estos procesos son los siguientes: (a') separación mínima (tiempo mínimo entre dos activaciones consecutivas), (b') Plazo de ejecución o tiempo máximo de respuesta (tiempo máximo entre la activación adecuada y terminación), (c'), el tiempo de cálculo (tiempo máximo de cálculo para cada activación). La desigualdad siguiente debe ser clara de 0 ≤ c '≤ b' ≤ a' .Si los requisitos de tiempo no son críticos a continuación, se les llama procesos esporádicos. Procesos de segunda categoría (secundaria). Ellos no tienen requisitos de tiempo y se ejecutan cuando no hay procesos en ejecución en tiempo real, y no hay procesos esperando en línea. La planificación significa como distribuir los recursos del sistema (incluyendo la CPU) para los diferentes procesos en la demanda. El problema general de encontrar un plan aceptable para un conjunto de procesos es complejo, pero se puede simplificar si tenemos en cuenta sólo la planificación del tiempo de procesamiento y suponemos que otros recursos están disponibles cuando sea necesario por los procesos. La planificación de sistemas de tiempo real ha tenido un avance significativo en los últimos años debido a la estática (off-line) y la planificación dinámica (on-line). 2.6. PLANIFICACIÓN CÍCLICA Uno de los métodos más utilizados en la planificación estática es la planificación cíclica que permite la ejecución de un conjunto de procesos iterativos con un solo procesador. Por lo tanto, además de un conjunto de procesos y sus requisitos de tiempo, debe establecerse un plan maestro, el cual determina la secuencia de los procesos que se deben realizar en un período determinado de tiempo (ciclo principal) que se repite cíclicamente. El ciclo principal se divide en ciclos secundarios, que describen una serie de procesos que se deben cumplir para un determinado período de tiempo (ciclo secundario) y cada uno de ellos a su vez se subdivide en tramos dentro de los cuales sólo un proceso se ejecuta a partir de la serie del respectivo segundo ciclo. FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL 11 Cuando se completa un ciclo secundario y el siguiente se inicia, están sincronizados con el reloj del ciclo secundario. Cuando el procesador es libre procesos secundarios importantes se llevan a cabo, que dan cuenta de las actividades que no son críticas. Un planificador ejecuta procesos cíclicos bajo el plan de ejecución presentado en las tablas, que se compone de un conjunto de procesos y los requisitos de tiempo antes de iniciar el sistema. Figura 2a muestra un conjunto de procesos {P1, P2, P3, P4} y sus requisitos de tiempo (ai, bi, ci), donde ai es el periodo de activación, bi - el período de ejecución, ci - tiempo para los cálculos y la Figura 2b indica la importancia de estos parámetros. En la Figura 2c hay un plan para implementar el ejemplo en la figura 2a. Figura 2a: Planificación Cíclica Figura 2b: Planificación Cíclica Figura 2: Planificación Cíclica Una de las condiciones para la planificación de un conjunto de procesos periódicos {P1, P2, ..., Pn} con requisitos de tiempo (ai, bi, ci), es que el uso de procesador u es menor que o igual a 1 : FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL 12 Para desarrollar el plan de ejecución que necesitamos para calcular la longitud del ciclo principal M y la duración de los ciclos secundario mi. La longitud del ciclo principal M se corresponde con el mínimo común múltiplo de los períodos de procesos, M = m*c*m(ai). Por ejemplo en la figura 2a el resultado es M = 24. Para calcular la longitud de los ciclos secundarios i por conveniencia se consideran como equivalente a un determinado valor de m, que debe cumplir con las siguientes condiciones (si no hay ningún valor de m que las cumple, entonces el conjunto de procesos no permite la planificación cíclica ) (ver siguiente diapositiva): Para m = 3 obtenemos ncs = 8 y m = 4 ncs = 6. A medida que la complejidad aumenta con el número de los ciclos secundarios, elegimos m = FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL 13 4, lo que nos da seis ciclos secundarios de cada ciclo principal (si elige m = 3, entonces usted tendrá 8 ciclos secundarios para cada ciclo principal). Además, encontramos que el número de actuaciones de cada proceso en el ciclo principal es ne1 = 4 para el proceso P1, ne2 = 3 para el proceso P2, ne3 = 3 para el proceso P3 y ne4 = 2 para el proceso P4. Para incluir la ejecución Pik del proceso Pi en un ciclo mj secundario, las siguientes condiciones deben cumplirse: 1. El procesos Pim puede ser incluido en los ciclos secundarios que se inician al mismo tiempo o después del tiempo de de la k-th y la activación final antes o al mismo tiempo de la k-th plazo de respuesta. Es decir la ejecución de k-th , ∀ k Î [1, ..., nei], del proceso PI se puede incluir en el j-th del ciclo secundario j, ∀ j Î [1, ..., ncs], de modo que : ai (k-1) £ m (j-1) £ ai (k-1) + bi - m 2. Cualquier ciclo secundario mj , que lleva a cabo la condición anterior debe estar asociado a una de las fases en la preparación del plan de ejecución de una sucesión s (mj) la realización ny de los procesos {Pfl, ..., Prs}. Para permitir la aplicación del Pik para ser incluido en s (mj), a fin de asegurar las limitaciones de tiempo, el ciclo mj secundario también debe cumplir la condición anterior y la siguiente condición (que debe permanecer el tiempo libre en el ciclo secundario de modo que los procesos se puede completar): 2.7 ALGORITMO HEURÍSTICO A partir del nodo Pi, j (nodo j en el nivel i) elegimos como descendiente del nodo único del proceso Pk. El criterio para añadir el proceso puede ser: a) el tiempo más corto, b) un período más corto, o c) más tiempo para los cálculos. Definición de los ciclos y tramos dentro de los cuales se activa el proceso. Para seleccionar el ciclo secundario, donde se puede incluir una ejecución de un proceso de un solo of_ los siguientes criterios que pueden ser utilizados : a) añadiendo el proceso para el primer ciclo secundario que permite la ejecución de sus requisitos de tiempo, FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL 14 b) añadiendo el proceso en el del ciclo secundario en el que hay menos tiempo libre para el cálculo y este ciclo garantiza sus requisitos de tiempo, o c) añadiendo el proceso en el último ciclo secundario, que permite la ejecución de sus requisitos de tiempo. FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL 15 Figura 3: Árbol generado por el algoritmo de búsqueda. FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL 16 Figura 4: Periodos armónicos • Figura 4-a) muestra un conjunto de procesos y los requisitos de tiempo. Al reducir el período de P1 y P2 que recibimos a la suma de los procesos de armónicos en la Figura 4-b), donde los valores indicados cumplen las condiciones para la planificación. FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL 17 • El principal es igual a la más grande de los períodos de M = 20, y el secundario es igual a la más pequeña de períodos. En este caso se muestra el plan resultante en la Figura 4-c) que se puede llegar fácilmente. • El método del plan cíclico contiene sólo los procesos periódicos. Si hay procesos aperiódicos, éstos deben ser tratados por las peticiones a los servidores que son procesos periódicos. Un proceso aperiódica caracterizado por (a ', b', c '), donde a' es la distancia mínima, b 'es un Período de ejecución y c' tiempo de cálculo debe ser tratada como un proceso periódico, que se caracteriza por (a, b, c) de modo que se ejecuta de acuerdo a la los siguientes c’ £ b £ b’, c = c’ y a £ b’ ‐ b + 1. Así que para el proceso de aperiódico, caracterizado por un a'= 6, b' = 6 y c '= 1 se obtiene como requisitos de tiempo para consultas al servidor (1,1,1), (2,2,1), (3,3,1), (4,3,1), (5,2,1) and (6,1,1). La consulta al servidor se activa cada vez que se realiza una actividad que corresponde a un proceso aperiódico y si no se produjo el evento todo se suspende hasta la siguiente activación. 2.8. ANÁLISIS DEL MÉTODO DE PLANIFICACIÓN CÍCLICA ESTÁTICA Los métodos para ciclo de planificación estática basada en la planificación cíclica, se utilizan a menudo en sistemas de tiempo real crítico. Las principales ventajas de los métodos para la planificación estática son que el método es determinista y previsible, no hay peligro de sobrecarga debido a la evolución del contexto y en general es previsible para la planificación estática, sistemas Furthermore, ningún esfuerzo adicional es una condición necesaria para poner en práctica la exclusión mutua y su ejecución es muy simple y la carga adicional para su ejecución es muy pequeña. La planificación se limita a los cambios de activación de los procesos de acuerdo con un plan predeterminado para la aplicación. Esto permite que todos los procesos que compartan en el mismo espacio. En cuanto a las desventajas se puede mencionar las siguientes: el diseño de planes es mucho tiempo consumido, y se vuelve más lento con el menor número de períodos de procesos armonizados; no son fáciles de mantener, ya que sólo un cambio en el conjunto de procesos o dentro de límites de tiempo requiere un plan conjunto para hacerse de nuevo, hay grupos de procesos que no permiten una planificación cíclica. Para remediar este inconveniente, el FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL 18 código se puede dividir en procesos separados con el fin de hacer que sea más fácil la planificación. En sistemas paralelos los métodos basados en las prioridades de planificación, son ampliamente utilizados. La prioridad de un proceso indica la urgencia relativa de su ejecución. La planificación basada en prioridades, elige entre la lista para implementar los procesos de una, que es la prioridad más alta (más urgentes). La priorización de los procesos puede ser estática (no cambia con el tiempo) o dinámica (puede cambiar con el tiempo). Furthermore la planificación basada en prioridades pueden ser clasificados como la expulsión (expulsión del proceso actual cuando otro proceso con una prioridad más alta está lista para su ejecución) y la no expulsión (antes de ejecutar un proceso de mayor prioridad de espera para el proceso actual se acabe o para ser bloqueado). Los métodos basados en las prioridades de planificación, son fácil de implementar, pero la incertidumbre inherente del sistema de procesos que compiten y métodos convencionales para determinar las prioridades (en función de la importancia y criticidad del proceso o para aumentar la utilización de recursos) no garantizan la implementación del tiempo límite el conjunto de procesos en tiempo real. Por lo tanto, el problema básico de los métodos de planificación basada en prioridades es establecer las prioridades de los procesos de manera que se cumplan los requisitos de tiempo. 2.9. PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL La mayoría de los sistemas de tiempo real contienen partes que pueden no necesariamente ser ejecutados en tiempo real y otros que debe ser ejecutado en tiempo real. Entre aquellos a ejecutar en tiempo real o de ejecución en tiempo real, se pueden distinguir dos tipos: - Tipo 1. El tiempo medio debe estar por debajo de un cierto tiempo máximo. - Tipo 2. Los cálculos deben ser completados en un tiempo máximo. La dificultad del aumento de programación con el aumento de las limitaciones de tiempo. Dependiendo de cómo se debe llevar a cabo las distintas acciones del programa, la programación se pueden clasificar en: • Programación consecutiva. Este es el tipo clásico de programación en el que diferentes acciones para la ejecución están dispuestas consecutivamente. El comportamiento del programa depende sólo de los FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL 19 efectos de las acciones individuales y su orden, no importa el tiempo que se necesita para llevar a cabo las acciones específicas. • Programación multitarea. Se diferencia de la programación consecutiva por el hecho de que diferentes acciones no tienen que ser ejecutadas necesariamente separadas en el tiempo, es posible tener ejecución paralela de algunas tareas. Sin embargo, las acciones consecutivas aún pueden ser útiles. Programación de tiempo real. Se diferencia de los dos anteriores porque además de que no es necesario que sean acciones separadas en el tiempo, su secuencia no está determinada por el sistema de programación, pero en cambio los acontecimientos ocurren en el medio ambiente. Un programa PB se puede dividir en múltiples tareas, pero la comunicación entre las tareas no debe esperar a una señal de sincronización. Por ejemplo, la señal de reloj, lo que indica que se debe ejecutar una acción prioritaria no puede esperar a una señal de sincronización. En suma, RTS el tiempo requerido para realizar una acción es esencial para el proceso de verificación. Esto hace que estos sistemas sean más difíciles de verificar. Una característica común de todos los programas en tiempo real es que deben trabajar de forma continua, de modo que la estructura natural es un ciclo infinito: El programa previo ControlTask debe estar sincronizado con el mundo exterior. La forma más sencilla de sincronizar es verificar si se ha producido algún evento externo. Este método se conoce como sondear y se puede hacer de dos maneras: Si es un evento que no ha sucedido, el sistema continúa con la implementación de otras medidas antes de comprobar de nuevo si este evento ocurrió. El programa sigue repitiendo la comprobación hasta que se produce el evento especificado FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL 20 La ventaja en las encuestas es que se puede considerar que el programa está realizando una sola tarea, lo que facilita la planificación y las desventajas: hay que asegurarse de que todas las tareas se pueden realizar en un plazo determinado. Este método se utiliza generalmente sólo para sistemas pequeños. A continuación se puede ver un programa en tiempo real demostrado que llevan cabo estas tareas: - La monitorización del teclado para comprobar si se ha producido la entrada. - La ejecución de las acciones de control. - Actualización de la pantalla. En una forma de modo que puedan ser considerados como una sola tarea. Este programa proporciona los siguientes procedimientos: Teclado, control y visualización, que corresponden a las tareas encomendadas, cuando las condiciones apropiadas, Keyflag, Controlflag y Displayflag, se cumplen. Este programa tiene una limitación que es debido a que las funciones si el tiempo de procesamiento de la unidad de cálculo más largo es menor que el tiempo máximo permitido para el evento te. En el peor de los casos, todos los eventos están activos y cada módulo utiliza el tiempo máximo y la siguiente desigualdad deben ser satisfechos tkeymax TControl + + t pantalla < te Si el tiempo total es menos de del te, entonces se puede reducir mediante la comprobación de la Controlflag dos veces por ciclo de la primera verificación después de comprobar Keyflag y la otra verificación después de comprobar Displayflag. Así que ahora el peor de los casos es: tkeymax + TControl < te y tmuestra + TControl < te En los algoritmos de control que se requiere a menudo para determinar la manera de salir del proceso y realizar cálculos para la variable de control durante un período determinado - determinado de antemano. En este método, los intervalos en los que se calcula la variable de control no son fijos, ya que dependen de diferentes acciones. FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL 21 Si se requiere una actividad para ser sincronizado con un momento determinado, por ejemplo de modo que se produce cada cinco segundos, que puede ser utilizado para la medición de un reloj de tiempo real que registra los momentos para llevar a cabo una tarea específica. El siguiente programa proporciona esta de la siguiente manera: En el programa se ha descrito anteriormente, se supone que existe una Digin función (), que lee la señal lógica correspondiente procedente del dispositivo de interfaz, que en este caso es el reloj. Otro método de sincronización es a través de las interrupciones. En este caso, no es necesario llevar a cabo los controles de una señal especifica que el equipo puede realizar cálculos que pueden ser interrumpidos cuando una interrupción se produce durante la ejecución de la acción, por ejemplo, si usted tiene un reloj en el que las interrupciones se producen periódicamente en el procedimiento se lleva a cabo para actualizar la hora. En este caso, la función GetTime proporciona el tiempo a través de la actualización de la interrupción de la variable de programa. El programa comprueba Keyflag y Displayflag y devuelve al módulo de control, que tiene la siguiente forma: FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL 22 El método de una sola tarea con una señal de reloj ofrece una excelente solución para los problemas de control sencillos para tiempo real y se utiliza a menudo. Los sistemas se desarrollaron para muchas familias de microprocesadores utilizando cualquier lenguaje de programación común (C, Pascal, Basic, etc). que permiten el desarrollo de programas de este tipo y después a escribir código en ROM, con el fin de crear un controlador embebido. 3. CONCLUSIONES Podemos entender ahora la importancia que tienen los sistemas de Tiempo-Real en nuestra vida, ya que están presentes en muchos procesos claves para la industria. En este tema hemos conseguido conocer mejor estos sistemas y comprender como funcionan. 4. BIBLIOGRAFÍA Y/O REFERENCIAS [1] Fundamentos de programación de sistemas en Tiempo-Real. prof. Manuel Castro, de la Universidad UNED de Madrid. Algunas adiciones fueron hechas por el prof. Anton Petrov - departamento ЕCIТ en PU Plovdiv. [2] SGS Mineral Services – T3 SGS 540 Análisis en tiempo real en las industrias del carbón y minerales. [3] Administración de Interrupciones en Sistemas Operativos de Tiempo Real. CENTRO DE INVESTIGACIÓN Y DE ESTUDIOS AVANZADOS DEL INSTITUTO POLITÉCNICO NACIONAL. Doctor Luis Eduardo Leyva del Foyo. 5. ENLACES DE INTERÉS • https://www.energy.siemens.com/cms/00000009/English/newsletter/issue _4_2008/simeas/Page s/real_time_monitoring_of_a_power_plant.aspx • http://www.electro.fisica.unlp.edu.ar/temas/p7/RTS-1.html • http://www.twirpx.com/files/informatics/realtime/ http://ru.wikipedia.org/wiki/Операционная_система_реального_времени • http://www.asutp.ru/?p=600591 FUNDAMENTOS Y PROGRAMACIÓN DE SISTEMAS EN TIEMPO-REAL 23