Sistemas de Tiempo Real Tema 116. Características. Tema 117. Programación Concurrente. Tema 118. Control de Recursos. Tema 119. Planificación de la Ejecución de los Procesos. Tema 120. Sincronización y Comunicación de Procesos. Tema 121. Fiabilidad y Tolerancia a Fallos. 1. INTRODUCCIÓN A LOS SISTEMAS EN TIEMPO REAL 1. Definiciónes: RT, Tiempo de respuesta, eventos, determinismo, sobrecarga y facilidades; planificación RT Un sistema en tiempo real es aquel que tiene que procesar la información dentro de un intervalo específico de tiempo o el sistema tiene un alto riesgo de fallar. Fallo en un sistema: no satisfacción de algunos de los requisitos reflejados en la especificación del sistema. Computación de tiempo real no igual computación Rápida, sino que un STR ha de ser predecible. Tiempo de respuesta Tiempo de respuesta es el tiempo que transcurre entre las entradas al sistema y la aparición de todas las salidas. Un sistema en tiempo real es aquel que satisface tiempos de respuesta explícitos. Eventos La definición de evento es muy importante en RTS Evento es cualquier ocurrencia que causa que el contador de programa cambie no-secuencialmente. Un cambio en el flujo de control. 2. Síncronos: aquellos que ocurren en momentos predictivos en el flujo de control. Asíncronos: ocurren en momentos impredecibles del flujo de control. En un STR, a un evento se le asocia un proceso Sistema determinista Un sistema que para un conjunto único de entradas, en un estado, presenta una salida única y un nuevo estados que se conocen a priori. Evento-determinista: un sistema determinista también a los eventos de entrada. Si el tiempo de respuesta de un sistema evento-determinista para los eventos es conocido entonces es “determinista temporal” De todo lo anterior se deduce que el sistema ha de tener un número finito de estado. Carga (time-loading) O factor de utilización es un porcentaje del tiempo en el que la CPU está realizando proceso. Es necesario no llegar a la sobre-carga, cercano al 100%. Facilidades de tiempo real: Especificar los tiempos en los que las aplicaciones deben ejecutarse En los que deben completarse Tener recursos para tratar problemas de que no se pueden cumplir las restricciones anteriores o que estas cambien dinámicamente. Para asegurar estas propiedades hay que utilizar un método de planificación de tareas adecuado. Diferencia entre un STR y uno de tiempo compartido (Garantía de plazos, estabilidad, Tiempo de respuesta máximo). En un STR la planificación de las tareas concurrentes (versus un STiempoCompartido) debe asegurar: Garantía de plazos: Estabilidad: Un STR funciona correctamente cuando se garantizan los plazos de todas las tareas. En un STC lo importante es asegurar un flujo lo más elevado posible. Caso de sobrecarga, un STR debe garantizar que al menos un subconjunto de tareas cumplen sus plazos (tareas críticas). En un STC, hay que repartir equitativamente el tiempo de ejecución. Tiempo de respuesta máximo: © Luis de Salvador Carrasco 1 3. Tipos STR: en función del entorno (reactivo/empotrado), restricciones, criticidad 4. En un STR se trata de acotar el tiempo de respuesta máximo de las tareas. En un STC se trata de minimizar el tiempo de respuesta medio. En función de la interacción con el entorno Reactivos: aquellos que realizan alguna interacción con el entorno (sistema de control de fuego). Empotrados (embedded): controlan un hardware especializado en el que el sistema está empotrado (control de una IMU). En función de sus restricciones de tiempo real Soft RT: cuando el rendimiento del sistema se degrada pero no se destruye cuando no se cumplen las restricciones de RT Hard RT: en contraposición al anterior - > Realmente los que nos ocupa. Firm RT: aquellos en los que se tolera una mínima probabilidad de tiempo real En función de su criticidad (parcialmente relacionado con el anterior) Críticos: El fallo en las restricciones temporales puede tener consecuencias catastróficas para la salud o la inversión realizada. Tipos: − Fiabilidad − Safety − Security - Protección − STR P.e.: control de navegación No críticos: se puede tolerar una perdida de datos del entorno, como una adquisición de datos o algunos sistemas de comunicaciones. Modelos (monitorización/control, adquisición de datos (repositorio/pizarra)) y Aplicaciones STR (control, comunicaciones, gestión) Modelos de sistemas de tiempo real Sistemas de monitorización y control Sistemas de adquisición de datos Monitorización − Chequeo de sensores periódicamente − Realizan una acción cuando se encuentra una situación límite − Sistemas de regulación automática − La entrada de referencia es o bien constante o bien varía lentamente con el tiempo, y donde la tarea fundamental consiste en mantener la salida en el valor deseado a pesar de las perturbaciones presentes. − Ejemplos: el sistema de calefacción de una casa, un regulador de voltaje, un regulador de presión de suministro de agua a una comunidad de vecinos − Entrada Error Salida Control G − Continuamente actualizan el valor de los actuadores en función de los valores de los sensores. SalidaDipMedida − Sistemas seguidores − La entrada de referencia cambia de valor H frecuentemente − Ejemplo: servomecanismos (sistemas de control realimentado en el cual la salida es alguna posición, velocidad o aceleración mecánica). − Utilizan el modelo − Sensor ->Evento -> Control del sensor -> Proceso de Datos -> Control Actuador -> respuesta -> actuador Adquieren datos del entorno para su posterior proceso Toman la forma de dos procesos, el productor y el consumidor. − Las velocidades de ambos pueden ser muy distintas. Se comunican a través de un buffer circular. − Se necesita un control de dicho buffer Modelo repositorio/pizarra Aplicaciones Entornos de control Tipos − Entornos industriales − Entornos sanitarios © Luis de Salvador Carrasco 2 Entornos de comunicaciones Tipos − Nodos de comunicación − Granjas de servidores Características − Tratamiento de peticiones Entornos de gestión 2. − Entornos aeroespaciales Características − Manipulación de números reales − Empotrados con sistemas SAD que interaccionan con una planta − Fiabilidad a nivel de protección de la vida humana − Tamaño muy cambiante Tipos − Entornos financieros Características − Sistemas de gran tamaño y complejidad − No son críticos para la vida humana − Interacción con bases de datos T116 - CARACTERÍSTICAS 5. Hardware: Principios, Limitaciones del entorno, A medida, COTS, Drivers Principios Es preciso conocer a fondo la arquitectura del ordenador para trabajar con un sistema en tiempo real. Limitaciones del entorno Los entornos de un sistema en tiempo real pueden ser muy distintos en cuanto a sus necesidades. Realización a medida Su elección depende del: Embebidos completamente distribuidos Orgánicos, un procesador central y un conjunto de procesos esclavos Arquitecturas no-Von Newman 6. Tarjetas en distintos tipos de Racks CPU de propósito general, microcontroladores, DSP's etc Mono o multiprocesador E/S, conectores estandarizados, etc. Sistemas distribuidos Coste, Su utilización en otros entornos parecidos con anterioridad por razones de fiabilidad Facilidades Sw que tenga asociadas por fiabilidad y tiempo de desarrollo (drivers, compiladores,...) Selección de COTS Soporte Aeroespacial Industrial Financiero − Los sistemas non-stop de Tamdem de el Banco de Inglaterra Tema arquitectura.Supercomputadores Proceso de diseño: Metodologías, Modelo de Arq. Metodologías Actualmente se emplean metodologías orientados a objetos: RT - UML ROOM Modelo de arquitectura SW: Debe estar organizada de forma que el control sea transferido al manejador apropiado tan pronto como el estímulo sea recibido. Las posibilidades son: Ejecutivos cíclicos Muy utilizados en sistemas muy críticos (satélites), en los que se elimina el riesgos de la definición formal de los procesos. Si la aplicación es sencilla P.e: el control del RIX es un ejecutivo cíclico © Luis de Salvador Carrasco 3 Multitarea 7. Proceso de diseño e Iteración 8. Aparecen multiples procesos. P.e.: el OBDH del Nanosat Fases en el proceso de diseño Identificar estímulos y correspondientes respuestas Identificar las restricciones de tiempo ligadas con los anteriores. Asignar estimulos y respuestas a un proceso. Una buena regla es asignar un proceso para cada clase estímulo-respuesta. Para cada uno diseñar los algoritmos para realizar los cálculos. El diseño del algoritmo ha de realizarse en etapas tempranas. para tener una idea del tiempo de proceso necesario. Diseñar una planificación del sistema, para asegurar que los procesos se inician cuando procede y terminan antes del deadline. Integrar el sistema bajo el control de un ejecutivo de tiempo real. Este es un proceso iterativo Es preciso realizar análisis y simulaciones. Es difícil encontrar validaciones formales de tiempos. Hay que incorporar los mecanismos de coordinación de procesos (semaforos...) Algunas técnicas, como objetos, implementan características que introducen una sobrecarga de proceso que no es adecuada para sistemas en tiempo real muy críticos. Sistemas operativos (kernel RT), Entornos de desarrollo, Lenguajes Principios Fiabilidad Limitaciones Por la plataforma Hw Por la memoria Condicionantes externos Sistemas operativos Construcción de sistemas operativos Sistemas comerciales Grandes sistemas comerciales − VxWorks - PSOS+ Kernels pequeños para aplicaciones industriales − CMX - RTLinux Selección del entorno de desarrollo Generalmente un entorno de desarrollo cruzado Compiladores, depuradores, herramientas de test etc. Características: Lenguajes Principios Limitaciones Gestión de concurrencia Velocidad Metodología S.O. Principios de la empresa Preparación del personal Propiedades Propiedades deseables de un lenguaje de tiempo real (ligadas tambien a su entorno y compilador): − Facilidad de introducir métricas y procesos formales de verificación − Robustez y fiabilidad − Acceso a los recursos del sistema directamente, no a través de SO. − No utilización de máquinas virtuales y entornos no comprobables. − Se han desarrollado STR espaciales para alguna aplicación con Simulink Ensamblador − Se ha usado como recurso para acelerar todo o parte de un código de tiempo real. − Se desaconseja por problemas de fiabilidad C ADA © Luis de Salvador Carrasco 4 9. Métricas, Pruebas Hw, Pruebas de Integración, Pruebas de Validación: análisis de la fiabilidad 3. Simulink Metricas PF3D Pruebas Hw Diseño con micros Pruebas de Integración Prueba de tareas Prueba de comportamiento Pruebas intertareas Prueba de sistema Pruebas de Validación Tema->Sist. Críticos T117 - PROGRAMACIÓN CONCURRENTE 10. Definición, programa concurrente, formas de ejecución y paralelismo Definición de programación concurrente Rama de la informática que trata de las notaciones y técnicas de programación que se usan para expresar el paralelismo potencial entre tareas y para resolver los problemas de comunicación y sincronización entre procesos. Programa concurrente Un programa concurrente está formado por una colección de procesos secuenciales autónomos que se ejecutan (aparentemente) en paralelo. Formas de ejecución: Los procesos multiplexan sus ejecuciones sobre un único procesador (multiprogramación). Los procesos multiplexan sus ejecuciones sobre un sistema multiprocesador de memoria compartida (multiproceso). Los procesos multiplexan sus ejecuciones en varios procesadores que no comparten memoria (procesamiento distribuido). Paralelismo y concurrencia No es exactamente lo mismo El término concurrencia indica paralelismo potencial. 11. Procesos y Threads, tipos y jerarquía. Tipos en tiempo real, prioridades, esquemas de planificación. Concepto de proceso -> S.O. Threads -> S.O. 12. Núcleo de ejecución: SO RT, Configuración(Interrupciones, reloj, sch, disp, recursos), Formas, Servicio continuo: gestor de configuración, gestor de fallos. El S.O. en tiempo real Los procesos concurrentes se ejecutan con ayuda de un núcleo de ejecución (Run-Time Kernel) que posee muchas de las propiedades del planificador en un sistema operativo y que está situado entre el hardware y el software de la aplicación. Gestiona procesos y asignación de recursos en función de los eventos No suele incluir otras facilidades de SO más grandes como sistemas de ficheros. (ahora sí). El algoritmo de planificación utilizado por el núcleo de ejecución afectará al comportamiento temporal del programa. Desde el punto de vista del programador, el núcleo de ejecución planifica los procesos de una forma NO determinista. Configuración básica Un reloj en tiempo real Manejador de interrupciones Que gestiona las perticiones aperiódicas Examina los procesos que pueden ser ejecutados y elige una para ello. Scheduler: planificador Gestor de recursos © Luis de Salvador Carrasco 5 Asigna memoria y procesador para los procesos (pensar en un multiprocesador) Es el responsable de iniciar la ejecución de un proceso. Dispacher Formas que puede adoptar Núcleo desarrollado como parte de la aplicación. Núcleo incluido en el entorno de ejecución del lenguaje. Núcleo de un sistema operativo tiempo real. Núcleo microprogramado dentro del procesador para mayor eficiencia. Para aquellos sistemas que además han de proporcionar un servicio continuo es necesario: Un gestor de configuración, para realizar la reconfiguración dinámica del hardware en caso de eliminar componentes o upgrade del sistema Gestor de fallos, responsable de detectar fallos hardware o software y tomar las acciones correctivas para sobreponerse al fallo. 13. Funciones de gestión de proceso del SO: Creación, control, recursos, excepciones, sincronización, comunicación, swapping y asignación de memoria. 14. Lenguajes concurrentes, Características y Representación de procesos concurrentes Los lenguajes de programación concurrentes proporcionan elementos para: La expresión de la ejecución concurrente a través de la noción de proceso. La sincronización de procesos. La comunicación entre procesos. Características de los lenguajes concurrentes Estructura Nivel de paralelismo Anidado (nested): procesos definidos a cualquier nivel del programa. Plano (flat): procesos definidos sólo al nivel externo del programa. Granularidad del paralelismo Grano grueso (coarse grain): pocos procesos pero de larga vida. Grano fino (fine grain): gran número de procesos simples. Inicialización Terminación Paso de parámetros o comunicación explícita. Al completar la ejecución Suicidio Aborto Excepción sin manejar Nunca Cuando no se necesita más Representación de procesos en los lenguajes Co-rutinas Fork-join Cobegin-coend Declaración explícita de procesos 4. Estática: número de procesos fijo y conocido en tiempo de compilación. Dinámica: número de procesos conocido sólo en tiempo de ejecución. Los procesos son unidades de programa (como los procedimientos). Permite una mejor estructura. Ejemplo: Ada. T118 - CONTROL DE RECURSOS 15. Recursos: que son, clasificación, instancias y solicitudes Que son los recursos. Clasificación Apropiables. No apropiables. Reutilizables Son Hw o memoria que se caracterizan por que para utilizarse con seguridad sólo uno lo puede emplear a la vez como máximo. Consumibles. © Luis de Salvador Carrasco 6 P.e: Problemas con los no apropiables y reutilizables. Instancias de un recurso Un recurso puede tener varias instancias. P.e.: varios procesadores o varias impresoras. En función de esto se pueden clasificar los recursos en: Distinguibles Indistinguibles. Secuencia de solicitud de recursos. Se supone que se devuelve en un tiempo finito excepto los bloqueos (se ignoran otras circunstancias). Que ocurre cuando se solicita un recurso. Llamadas para la solicitud de un recurso. 16. Interbloqueo, Codiciones (exclusion, expropiación, posesión, circular), Holt estrategias Introducción a los interbloqueos. Varios procesos. Acceso exclusivo a varios dispositivos, etc. Bloqueo, parte de los procesos del sistema no avanzan. Un conjunto de procesos se dice que esta bloqueado si cada uno de ellos está esperando una acción que sólo puede ser realizada por uno de lo procesos del conjunto (excepto el mis). Condiciones para un bloqueo Exclusion mutua. No expropiación Posesión y espera Espera circular Modelado de interbloqueos Diagrama de Holt para recursos con una sola instancia. Ejemplo. Si hay un camino cerrado Diagrama de Holt para recursos con varias instancias. Ejemplo, se disponen de circulos dentro de los recursos Estrategias. Ignorarlos. Detección y recuperación. Evitación o evasión de bloqueos Prevención mediante la negación estructural de una de las cuatro condiciones. Métodos Combinados. 17. Ignorar. Detectar (diagramas) y Recuperar (expropiación, roll-back, eliminación). Cuando buscar Ignorar El algoritmo del avestruz. el caso del Unix (pSOS+) Vision matematica. Vision ingenieril Detección del bloqueo La detección no es tan simple como solicitar un recursos y recibir un mensaje de error. Frecuencia de fallos. Seriedad del bloqueo Inspección de la gráfica. Algoritmo analítico. Elementos Vector de existencia de recursos. Vector de disponibles Matriz de asignación Matriz de solicitudes (no de todos los necesarios). Recursos asignados más disponibles = existentes. Definición de vector menor. Algoritmo. Recuperación Mediante expropiación A veces manual. Depende del recurso y puede ser imposible. Roll-back Puntos de verificación © Luis de Salvador Carrasco 7 Procesos dentro del ciclo o fuera. Criterios: − Cantidad de recursos − Prioridad − Menor tiempo ejecutado. Problemas Cuando buscarlos Reinicialización Eliminación de procesos En cada petición de recursos. Cada cierto tiempo. Analizando alguna otra variable del sistema. Complejidad de los procesos de búsqueda. Imposiblidad de recuperación. 18. Estrategias avanzadas: Evasión (declaración previa) y Prevención (Romper las condiciones) Evitación o Evasión de bloqueos Se pueden evitar siempre que se tenga información de antemano. Es necesario que todos los procesos declaren sus necesidades de recursos de antemano. Forzar a liberar cuando no este disponible. − Conduce a inconsistencias. Reservar todos de antemano. − Desperdicia procesos. − Interrumpe la ejecución de procesos durante largo tiempo. No expropiación. Spooling Intentar no solicitar un recurso cuando no sea necesario. Esperar que un recurso sea utilizado por los menos procesos posibles. Detenerse y Esperar Ha de realizarse ha cada petición de recurso. Es de la misma complejidad que el de detección de bloqueos (imagina un sistema operativo en red). Prevención Eliminación de una de las condiciones que hacen posible un bloqueo. Exclusión mútua. Existe un trayectoria en la que es posible terminar todos los procesos. Algoritmo del banquero para un recurso (Ejemplo) Algoritmo del banquero para varios recursos (extensión del algoritmo de detección de bloqueos). Problemas Trayectoria de recursos (Ejemplo). Estados seguros e inseguros. Expropiacion del dispositivo o reiniciacion del proceso expropiado. El sistema operativo encargado de la gestión del cambio. Espera circular. Un proceso un recurso en cada momento. − No siempre es posible. Numeración de todos los procesos. − Petición por orden numerico. (Ejemplo). − Con esta ordenación no puede haber boqueos. − Un proceso solicite un recurso con número menor al que necesita en ese momento. − Este orden puede no ser conveniente a todos. − Cerradura en dos fases (bases de datos). − Cuando se necesita un recurso se liberan n-1 recursos que ya se tenian. − Si no se consiguen los n, los n se liberan. − Se vuelve a empezar. 19. Método combinado, Distribuidos y Livelock Método Combinado. Ninguno de los anteriores es un buen método. Dividiendo los procesos en clases disjuntas a los que se aplican una serie de métodos a cada uno de ellos. O dividiendo las estrategias según los tipos de recursos: © Luis de Salvador Carrasco 8 Swap: prevención Recursos de trabajos: prereserva Memoria princiapl: expropiación si hay swap Recursos internos del sistema: ordenación de recursos Distribuidos y livelock Estructura cliente-servidor livelock Otros Conclusion 5. En tiempo real, los recursos no son compartidos. Recursos consumibles y otros tipos de interbloqueos. Ejemplos de algoritmos (en apuntes curso OS). T119 - PLANIFICACIÓN PARA LA EJECUCIÓN DE LOS PROCESOS 20. Algoritmo de planificación, Requisitos RT (restricción det./analisis tiempos), Tipos(cuando, plazo, expropiacion) y criterios de planificación Definición Conjunto de políticas y mecanismos incorporados al sistema operativo que gobiernan el orden en que se ejecutan los trabajos (ordenad el uso de recursos) que deben ser cumplimentados por el sistema informático. Tiene por tanto relación con gestión de memoria y control de recursos. El objetivo primario de la planificación es optimizar el rendimiento del sistema conforme a un conjunto de criterios considerados más importantes. Requisitos RT Un STR necesita restringir el indeterminismo encontrado en los sistemas concurrentes: este proceso se conoce como planificación (Scheduling). Un método de análisis que permita predecir el comportamiento temporal del sistema en el peor caso cuando se aplica el algoritmo de planificación. Tipos Cuando se prepara la planificación Expropiación Expropiatorias No expropiatorias Plazo de planificación. Estático: el análisis puede realizarse antes de la ejecución. − Un método estático muy utilizado es el de planificación con prioridades fijas y desalojo (preemtive priority-based schemes): a cada proceso se le asigna una prioridad y en cada instante se ejecuta el proceso con prioridad mayor. − Necesitamos, por lo tanto, un algoritmo de asignación de prioridades y una prueba de planificabilidad. Dinámico: se utilizan decisiones tomadas en tiempo de ejecución. Planificador a largo plazo, para los procesos batch Planificador a medio plazo, para los expropiados a memoria Planificador a largo plazo, para los que están listos para la ejecución En SO complejos los tres tipos coexisten Criterios de planificación Utilización del procesador Productividad Tiempo de retorno Tiempo de espera Tiempo de respuesta 21. Procesos y Threads, Tipos de procesos RT, Asignación de prioridades Procesos y Threads SO Tipos de procesos RT, asignación de prioridades, estrategias de planificación Diseño->Tiempo real 22. Estados, transiciones y conmutación de procesos, Funciones del S.O. Estados de los procesos Inactivo © Luis de Salvador Carrasco 9 Preparado En ejecución Suspendido No tiene todos los recursos preparados para ejecutarse. Transiciones de estado de un proceso Control de los sucesos Los SO están guiados por sucesos para guiar los cambios de estado. Esencial asegurar que el SO sea informado respecto a cada suceso. Obliga a reglas de codificación estrictas en las rutinas de dispositivo escritas por usuarios que procesan sucesos externos. Tipos de sucesos síncronos o internos Asíncronos o externos Conmutación de procesos Conmutación de modo Del modo de usuario que ejecuta el proceso al modo del SO Guardar el estado del proceso Traslado a la lista de preparados o suspendidos Invocación del planificador Tratamiento del suceso Tiene todos los recursos para ejecutarse excepto la CPU Para invocar otro proceso No forma parte de la conmutación y se puede realizar en cualquier otro momento. Funciones de control de proceso del S.O Temas -> Sistemas operativos. 23. Núcleo de ejecución: SO RT, Configuración(reloj, sch, disp, recursos), Formas que adopta, Servicio continuo: gestor de configuración, gestor de fallos. El S.O. en tiempo real Los procesos concurrentes se ejecutan con ayuda de un núcleo de ejecución (Run-Time Kernel) que posee muchas de las propiedades del planificador en un sistema operativo y que está situado entre el hardware y el software de la aplicación. Gestiona procesos y asignación de recursos en función de los eventos No suele incluir otras facilidades de SO más grandes como sistemas de ficheros. (ahora sí). El algoritmo de planificación utilizado por el núcleo de ejecución afectará al comportamiento temporal del programa. Desde el punto de vista del programador, el núcleo de ejecución planifica los procesos de una forma NO determinista. Configuración básica Un reloj en tiempo real Manejador de interrupciones Que gestiona las perticiones aperiódicas Examina los procesos que pueden ser ejecutados y elige una para ello. Asigna memoria y procesador para los procesos (pensar en un multiprocesador) Es el responsable de iniciar la ejecución de un proceso. Scheduler: planificador Gestor de recursos Dispacher Formas que puede adoptar Núcleo desarrollado como parte de la aplicación. Núcleo incluido en el entorno de ejecución del lenguaje. Núcleo de un sistema operativo tiempo real. Núcleo microprogramado dentro del procesador para mayor eficiencia. Para aquellos sistemas que además han de proporcionar un servicio continuo es necesario: Un gestor de configuración, para realizar la reconfiguración dinámica del hardware en caso de eliminar componentes o upgrade del sistema Gestor de fallos, responsable de detectar fallos hardware o software y tomar las acciones correctivas para sobreponerse al fallo. 24. Esquemas de planificación: Sin concurrencia (FCFS, SRTN,Retardos, Ciclicos) Concurrencia: (Round-Robin, Planf. Prioridades, Multiples Colas, Multiples Colas con realimentación) © Luis de Salvador Carrasco 10 Sin concurrencia real First-Come First Served Shortest Remaining Time Next Retardos Planificación con ejecutivos cíclicos A partir de aquí se considera que se tienen tareas independientes − En este caso disponemos de un sistema operativo o un núcleo ejecutivo. Con él se permite la ejecución concurrente de tareas completamente independientes. Cada tarea va pasando por diversos estados en función de sus necesidades y del estado global del sistema. El núcleo ejecutivo proporciona las primitivas necesarias para dar soporte al diagrama de estados de cada tarea. No es válido para STR porque: − No diferencia entre tareas más o menos urgentes − No permite garantizar el tiempo de respuesta de las tareas. Planificación con prioridades (event-driven priority) En cada momento siempre se ejecuta aquella tarea que tiene la prioridad más alta entre todas las que se encuentran activas. En sistemas de tiempo real la planificación además es expropiatoria. La prioridad de cada tarea puede ser estática o dinámica. Problemas − Bloqueo directo: una tarea de menor prioridad coge un recurso, es desplazada por otra de mayor prioridad que se detiene cuando necesita emplear el mismo recurso. − Bloqueo indirecto: Una tarea queda bloqueada por otra de inferior prioridad con la que no comparte ningún recurso. Cuando una de menor prioridad toma un recurso, es desplazada por otra de prioridad intermedia y la de prioridad máxima no puede entrar a ejecutarse por necesitar dicho recurso. Multiple Level Queues Multiples colas con realimentación 6. Es aplicable si todas las tareas son periódicas. Este método se ha venido utilizando mucho hasta ahora. Tenemos un único programa secuencial. Un plan cíclico se divide en: − Ciclo principal: se repite con un periodo TM − Ciclos secundarios: divisiones del ciclo principal sincronizadas con un periodo Tm Ventajas − Eficiencia: no hay ni cambios de contexto ni gestión de procesos − Determinismo en los instantes de activación − No hace falta emplear mecanismos para evitar condiciones de carrera Inconvenientes − Rigidez y dificultad de mantenimiento − Bajo nivel de abstracción − Puede ocurrir que el número de subperiodos sea excesivamente grande Con concurrencia real Round Robin Normalmente se realiza mediante una función del tipo delay() Problema: − No se tiene en cuenta la duración de la tarea periódica. La ejecución de la acción puede retrasarse por existir otras tareas. El resultado es una deriva acumulativa Combinar varias disciplinas de planificación Un proceso pueda pasar de una cola a otra dependiendo de su comportamiento en ejecución Criterios de movimiento entre colas: no terminación, muchos recursos o si en seguida devuelve el control sube en la cola T120 - SINCRONIZACIÓN Y COMUNICACIÓN DE PROCESOS 25. Necesidad p. concurrentes, Sección crítica, Condición de carrera, Condiciones de la solución (exclusion, progreso, espera limitada, suposiciones) Necesidades de procesos concurrentes Comunicación Los procesos concurrentes tendrán necesidad de comunicarse información Sincronización Además, será necesario en ocasiones detener a un proceso hasta que se produzca un determinado evento o se den ciertas condiciones Solución Compartir memoria entre procesos Sección Crítica © Luis de Salvador Carrasco 11 Segmento de código donde se accede a datos compartidos por varios procesos concurrentes Condición de carrera Cuando el resultado de la ejecución de dos o más procesos, que comparten variables comunes, depende de la velocidad relativa a la que cada proceso se ejecuta, es decir, del orden en el que se ejecutan las instrucciones. Condiciones de la solución Exclusión mutua Nunca puede haber más de un proceso en la sección crítica Progreso: Espera limitada Si ningún proceso está en sección crítica y hay procesos que desean entrar en su s.c., sólo estos últimos participarán en la decisión y ésta se tomará en un tiempo finito. Hay un límite para el número de veces que otros procesos pueden adelantarse a un proceso que quiere entrar en s.c. Suposiciones Suponemos que cada proceso se ejecuta a una velocidad distinta de cero No podemos hacer suposiciones acerca de las velocidades relativas de los procesos 26. Soluciones Hardware: Interrupciones, Instrucciones atómicas (test&set, swap) Entorno uniprocesador: prohibir las interrupciones mientras se modifican variables compartidas Problemas Muy peligroso en sistemas RT, por lo que en la realidad solo se suspenderían aquellas que accediesen a la sección crítica Entorno multiprocesador habría que deshabilitar las interrupciones de todos los procesadores, lo que es muy costoso. Instrucciones atómicas test-and-set o SWAP. Permiten evaluar y asignar un valor a una variable de forma atómica. test-and-set(B): − Pone B a true y devuelve el antiguo valor de B. (Evaluar-y-Asignar(B)) SWAP(A,B): − Intercambia los valores de A y B. (Intercambiar(A,B)) Si disponemos de estas instrucciones, se simplifica muchísimo el problema de la sección crítica. 27. Semáforos: General, binario, con cola de procesos, espera activa, implementación Semáforo general Un semáforo general S es una variable entera, inicializada a un valor no negativo, y a la que, aparte de su inicialización, sólo se puede acceder por medio de dos operaciones atómicas P y V. P(S) if S > 0 then S = S – 1 else suspender la ejecución del proceso V(S) − if hay procesos suspendidos en este semáforo − then despertar a uno de ellos − else S = S + 1 − − S es una variable compartida por los procesos. La operación V despierta a uno de los procesos suspendidos pero no indica a cual. Estas operaciones se realizan de forma atómica y esto tiene sus implicaciones: No hay modificación ni acceso simultáneo al semáforo. No hay posibilidad de entrelazado de instrucciones entre el chequeo del valor de S y su posible modificación en una operación P o V. P y V son secciones críticas; pues son trozos de código donde se accede a variables compartida Semáforo binario Es un semáforo general pero sólo puede tomar valores 0 y 1. En este caso las operaciones P y V se redefinen de la siguiente forma: P(S) if S > 0 then S = S – 1 else suspender la ejecución del proceso V(S) − if hay procesos suspendidos en este semáforo − then despertar a uno de ellos − else S = 1 − − © Luis de Salvador Carrasco 12 Semáforo con cola de procesos bloqueados En la definición de semáforo general no se especifica en que orden se despiertan los procesos suspendidos, en este caso los procesos suspendidos se mantienen en una cola FIFO y se despiertan en el orden en que fueron suspendidos P(S) if S > 0 then S = S – 1 else suspender la ejecución del proceso y se inserta en la cola FIFO V(S) − if hay procesos suspendidos en este semáforo − then despertar al primero de la cola FIFO − else S = 1 − − Se puede modificar la gestión añadiendo una pila, un arbol, etc. Semáforo con espera activa El proceso no completa la operación P, pues lo que hace es entrar en un bucle hasta que el recurso está disponible. Aspecto crítico de la implementación de los semáforos: Operaciones se ejecuten de forma atómica Entorno uniprocesador: − Interrupciones Entorno multiprocesador − Instrucciones hardware especiales − Solución software (espera activa) 28. Monitores: Qué es, Características Qué es Un monitor es una estructura software que consta de datos locales uno o mas procedimientos un código de inicialización Tiene además las siguientes características: Las variables de datos locales sólo pueden ser accedidas por los procedimientos del monitor La implementación del monitor garantiza que sólo un proceso puede estar ejecutando código del monitor en un instante dado (es decir, los procedimientos del monitor se ejecutan en exclusión mutua) Existe un tipo de variables, denominadas variables condition, para la sincronización de los procesos. Sobre una variable condition solo se pueden hacer las operaciones wait y signal La operación wait sobre una variable condition x deja al proceso que la hace en espera. La denotaremos por x.wait (puede encontrarse también wait(x) cwait(x)) La operación signal sobre una variable condition x saca de la espera a uno de los procesos que han hecho x.wait; si no hay procesos en espera no tiene efecto. La denotaremos por x.signal (signal (x), csignal(x)) Ejemplo de código del monitor type nombre-monitor=monitor declaraciones de variables procedure entry P1(...) begin ... end; procedure entry PN(...) begin ... end; begin código de inicialización end; 29. Mensajes: Qué es, Mecanismo, Aspectos, Sincronismo Proporcionan una solución integrada al problema de la sincronización y comunicación entre procesos. Mecanismo El sistema operativo proporciona un mecanismo de colas de comunicación entre procesos Las operaciones básicas son: enviar y recibir Formato del mensaje (parámetros de enviar) son: Id emisior Id receptor Longitud Tipo © Luis de Salvador Carrasco 13 7. Datos (opcionales) Aspectos importantes son: Denominación: si un mensaje solo puede tener un receptor concreto. Copia: si el mensaje cuando se comunica es una copia del espacio de direcciones del emisor al del receptor. Paso por valor o por referencia. Sincronismo en send Sincronos − cuando la operación enviar bloquea hasta que se recibe. Asíncrono, cuando no existe dicho bloqueo − Se puede implementar la sincronía con una doble cola Test de mensaje disponible. T121 - FIABILIDAD Y TOLERANCIA A FALLOS 30. Definición de Fiabilidad en STR, Matemática, Como conseguirla: diseño, IngSw, Test Definición de fiabilidad en sistemas en tiempo real Determinista a eventos Determinismo temporal Time-loading razonable Memory-loading razonable Definición formal de fiabilidad T tiempo de fallo de un sistema Fiabilidad a un tiempo t de un software S R(t) = P(T>t) Como llegar a la fiabilidad Sólido proceso de diseño Buenas prácticas de ingeniería software Riguroso sistema de test. 31. Calculo de la fiabilidad del sistema: Estático- análisis por bloques. Dinámico: método estadístico - Predicción de la fiabilidad Modelar por bloques de procesos Se considera el conjunto del sistema como bloques de proceso conectados en serie o en paralelo. Se asigna una función de probabilidad a cada uno de los bloques de forma que se considera independiente en cada uno de ellos. Se realiza la simplificación con las siguientes reglas: Fiabilidad en paralelo = f1+f2-f1*f2 Fiablidad en serie = f1.f2 Modelos para determinar la fiabilidad Se utilizan métricas de complejidad Contar sentencias Métrica de Halstead Métrica de complejidad ciclomática -> Tema Verificación y validación. Métrica de puntos de función -> Tema métricas Métrica bang -> Tema métricas Métricas de código -> Tema métricas Método estadístico -> Tema de validación 32. Tolerancia a fallos: Esquemas Espacial Hw y Sw. Temporal: Checkpoints y Bist Definición La habilidad para que un sistema continue a pesar de la presencia de fallos Hw y Sw. Está orientada a aumentar la fiabilidad del sistema. Definidos en dos tipos de tolerancia en tiempo real Tolerancia a fallos espacial Métodos que incorporan redundancia en hardware o software. Penalización por coste, espacio y requisitos de potencia. Tolerancia a fallos temporal Métodos que incorporan técnicas para tolerar fallos en los tiempos de respuesta (missed deadlines). Esta es la más difícil de alcanzar pues requiere una programación más fina de los algoritmos. © Luis de Salvador Carrasco 14 Esquemas de TF espacial Tres o más dispositivos conectados entre sí mediante un sistema de voto. Dos o más pares de dispositivos, que comparan la salida por pares y si son diferentes el sistema par se descarta entero. El esquema de voto no solo se emplea en sistemas Hw sino tambien en Sw para incrementar la robustez del algoritmo. P.e., la posición se puede obtener por GPS, IMU e información de tierra y se puede componer vía un filtro de Kalman. Programación con N-versiones Muchas veces el error de la ejecución es de código (ciclos no testeados dead-lock etc). Una solución es redundancia de procesadores ejecutando un código redundante pero desarrollado por distintos equipos. Via watchdog es fácil ver si alguno se ha quedado colgado. Se ha usado en el computador de propósito general de shuttle. Normalmente se utilizan dos procesadores, uno maestro y otro esclavo. El maestro esta on-line, el esclavo se está ejecutando off-line y solo si el esclavo detecta que el maestro se ha colgado toma el control efectivo. Esquemas de TF temporal Recuperación de bloques Se basa en la utilización de checkpoints − Puntos fijos en el código, que escribe resultados intermedios con el propósito de realizar diagnósticos. Si solo se utilizan durante la etapa de test se les denomina test probe. Por supuesto, consumen tiempo y recursos, desvirtuan la ejecución de programas introduciendo u ocultando errores, y durante test pueden falsear los resultados de temporización. Cada cierto tiempo, se comprueba el resultado de los checkpoint para determinar si los valores tienen ciertos parámetros de corrección. Si no es así, el proceso se retrasa hasta el previo bloque de recuperación. Se supone que un dispositivo Hw a fallado. Incrementa la fiabilidad pero supone una sobrecarga no solo por la ejecución del repetida sino tambien por el chequeo en paralelo de los bloques que ya se han ejecutado. BIST Built-in self test. Autodiagnostico del sistema que puede ser: − Hardware, con registros de consulta que disparan interrupciones − Software, con consulta de los dispositivos Hw por polling o similar − Más coste en tiempo del Sw que el Hw 33. Tolerancia en Memoria: fuentes de error, efectos, estrategia, rom, ram, Interrupciones: espúreas y perdidas. Deadlock Tolerancia en la memoria Fuentes de corrupción Efecto de la corrupción Vía checksum o códigos de paridad o CRC. Hay que determinar mediante análisis el tipo de errores capaz de detectar (aislados o en ráfaga) con el modelo de probabilidad de error. Añade un ciclo Hw Detección en RAM Utilizar técnicas de detección y corrección de errores Ventajas e inconvenientes de este sistema. Detección en ROM Cambio de estado - error soft Daño permanente - error hard Estrategia Descarga electroestática, vibraciones, particulas de alta energía, Códigos Hamming Interrupciones Espúreas y perdidas. Son niveles de tensión que aparecen de forma expontanea en las líneas de interrupción causadas por Hw ruidoso, fuentes de tension, descargas electroestáticas etc. Las perdidas tienen el mismo origen. Las espúreas pueden detectarse mediante un Hw redundante y un sistema de voto que active un flag para ser consultado por la interrupción. El problema es si aparecen muchas interrupciones seguidas espúreas, con lo que la pila de interrupción podría conducir a un overflow. A esto se el conoce como espiral mortal. Las interrupciones perdidas son más difíciles de manejar. Solo con un diseño robusto. Deadlock Tema de gestión de recursos © Luis de Salvador Carrasco 15 34. Sólido proceso de diseño y test: Cleanroom Verificación-> Estrategias de prueba Verificación->Métodos de pruebas © Luis de Salvador Carrasco 16 © Luis de Salvador Carrasco 17