Unidad 6. Sistemas de tiempo real

6.1 DefinicionUn sistema de tiempo real es un sistema informático en el que es significativo el tiempo en el que se producen sus acciones.No es suficiente que las acciones del sistema sean correctas lógicamente, sino que, además, deben producirse dentro de un intervalo de tiempo determinad. Esto es debido a que el sistema está conectado a un proceso externo del que recibe estímulos a los que debe responder con suficiente rapidez para evitar que evolucione a un estado indeseable.En un sistema de tiempo real existen generalmente un Sistema a Controlar y un Sistema Controlador. Es común que las actividades del STR se dividan en tareas, cada una de ellas sujetas a una serie de restricciones temporales, de entre las que destaca el plazo.Los sistemas de tiempo real se utilizan principalmente en la industria y son sistemas diseñados para funcionar en entornos con limitaciones de tiempo. Un sistema de tiempo real debe tener capacidad para operar en forma fiable según limitaciones de tiempo específicas; en otras palabras, debe tener capacidad para procesar adecuadamente la información recibida a intervalos definidos claramente (regulares o de otro tipo).Estos son algunos ejemplos de sistemas operativos de tiempo real:" OS-9;" RTLinux (RealTime Linux);" QNX;" VxWorks.La definición canónica de un sistema de tiempo real (de Donald Gillies ) es la siguiente:"Un sistema de tiempo real es aquel en el que para que las operaciones computacionales estén correctas no depende solo de que la lógica e implementación de los programas computacionales sea correcto, sino también en el tiempo en el que dicha operación entregó su resultado. Si las restricciones de tiempo no son respetadas el sistema se dice que ha fallado."Otros han agregado:"Por lo tanto, es esencial que las restricciones de tiempo en los sistemas sean cumplidas. El garantizar el comportamiento en el tiempo requerido necesita que el sistema sea predecible. Es también deseable que el sistema obtenga un alto grado de utilización a la vez que cumple con los requerimientos de tiempo."Un Buen ejemplo es el de un robot que necesita tomar una pieza de una banda sinfín. Si el Robot llega tarde, la pieza ya no estará donde debía recogerla. Por lo tanto el trabajo se llevó acabo incorrectamente, aunque el robot haya llegado al lugar adecuado. Si el robot llega antes de que la pieza llegue, la pieza aun no estará ahí y el robot puede bloquear su paso.En algunas ocasiones podemos ver referencias sobre sistemas de tiempo real cuando solo se quiere decir que el sistema es rápido. Cabe mencionar que "tiempo real" no es sinónimo de rapidez; esto significa que no es la latencia de la respuesta lo que nos enfoca en un sistema de tiempo real (esta latencia a veces esta en el orden de los segundos), el enfoque en tiempo real de la latencia es el asegurarse de que la latencia del sistema es la suficiente para resolver el problema que al cual el sistema está dedicado.Si el tener una falla en el tiempo de latencia de un proceso del sistema lleva como consecuencia un error en el sistema entonces esos procesos se consideran de tiempo real duro. Si el tener una falla en un proceso del sistema no conlleva una falla en el sistema siempre y cuando esta falla este dentro de ciertos límites establecidos ( es posible fallar en la latencia una de cada 1000 veces o una de cada 100, o fallar siempre y cuando el error no exceda el 3% de la latencia) entonces esos procesos se llaman procesos de tiempo real suave.Si el funcionamiento incorrecto del sistema puede llevar a la perdida de vidas o catástrofes similares entonces el sistema de tiempo real es nombrado como sistema de tiempo real de misión crítica.

6.2 Modelos de tareasLos modelos resultantes de la creación del modelo de procesadores son estudiados por separado (un procesador por vez), para determinar tareas diferentes (que serán programas diferentes de manera tal que se pueden ejecutar concurrentemente o no). La distorsión agregada en esta etapa representa la subdivisión del modelo funcional de un procesador (el DFD) en distintos DFDs (uno por tarea) agrupando procesos batch, interactivos o de tiempo real, partes del DFD aisladas del resto (comunicación solamente a través de depósitos de datos), etc. Además, es probable que sea necesario agregar procesos de control de concurrencia y sincronización para el acceso a recursos compartidos (como por ejemplo los depósitos de datos).Dentro de cada procesador definido en el modelo anterior, deben asignarse procesos a diferentes tareas o particiones.En muchos sistemas operativos modernos, el manejo de tareas es transparente al desarrollador.Las tareas pueden categorizar se típicamente en Interactivas, Batch, y en Tiempo Real. Para la mayoría de los sistemas administrativos es importante determinar que partes del modelo esencial se asignaran a tareas interactivas y cuales a tareas batch. La comunicación entre tareas normalmente es provista vía el sistema operativo.COMUNICACIÓN ENTRE TAREASLas diferentes tareas de un sistema no pueden utilizar los mismos datos o componentes físicos al mismo tiempo. Hay dos diseños destacados para tratar este problema.Uno de los diseños utiliza semáforos. En general, el semáforo puede estar cerrado o abierto. Cuando está cerrado hay una cola de tareas esperando la apertura del semáforo.Los problemas con los diseños de semáforos son bien conocidos: inversión de prioridades y puntos muertos.En la inversión de prioridades, una tarea de mucha prioridad espera porque otra tarea de baja prioridad tiene un semáforo. Si una tarea de prioridad intermedia impide la ejecución de la tarea de menor prioridad, la de más alta prioridad nunca llega a ejecutarse. Una solución típica sería tener a la tarea que tiene el semáforo ejecutada a la prioridad de la tarea que lleva más tiempo esperando.En un punto muerto, dos tareas tienen dos semáforos pero en el orden inverso. Esto se resuelve normalmente mediante un diseño cuidadoso, realizando colas o quitando semáforos, que pasan el control de un semáforo a la tarea de más alta prioridad en determinadas condiciones.La otra solución es que las tareas se manden mensajes entre ellas. Esto tiene los mismos problemas: La inversión de prioridades tiene lugar cuando una tarea está funcionando en un mensaje de baja prioridad, e ignora un mensaje de más alta prioridad en su correo. Los puntos muertos ocurren cuando dos tareas esperan a que la otra responda.Aunque su comportamiento en tiempo real es menos claro que los sistemas de semáforos, los sistemas basados en mensajes normalmente se despegan y se comportan mejor que los sistemas de semáforo.

 6.3 Caracteristicas de las tareasDeterminismoEl determinismo es una cualidad clave en los sistemas de tiempo real. Es la capacidad de determinar con una alta probabilidad,  cuanto es el tiempo que se toma una tarea en iniciarse. Esto es importante por que los sistemas de tiempo real necesitan que ciertas tareas se ejecuten antes de que otras puedan iniciar.Esta característica se refiere al tiempo que tarda el sistema antes de responder a una interrupción. Este dato es importante saberlo por que casi todas las peticiones de interrupción se generan por eventos externos al sistema (i.e. por una petición de servicio), así que es importante determinar el tiempo que tardara el sistema en aceptar esta petición de servicio.ResponsividadLa Responsividad se enfoca en el tiempo que se tarda una tarea en ejecutarse una vez que la interrupción ha sido atendida. Los aspectos a los que se enfoca son:+ La cantidad de tiempo que se lleva el iniciar la ejecución de una interrupción+ La cantidad de tiempo que se necesita para realizar las tareas que pidió la interrupción.+ Los Efectos de Interrupciones anidadas.Una vez que el resultado del cálculo de determinismo y Responsividad  es obtenido. Se convierte en una característica del sistema y un requerimiento para las aplicaciones que correrán en el.  (e. g. Si diseñamos una aplicación en un sistema  en el cual el 95% de las tareas deben terminar en cierto periodo de tiempo entonces es recomendable asegurarse que las tareas ejecutadas de nuestra aplicación no caigan en el 5% de bajo desempeño)Usuarios controladores En estos sistemas, el usuario (i.e los procesos que corren en el sistema) tienen un control mucho más amplio del sistema." El proceso es capaz de especificar su prioridad" El proceso es capaz de especificar el manejo de memoria que requiere  (que parte estará en caché y que parte en memoria swap y que algoritmos de memoria swap usar)" El proceso especifica que derechos tiene sobre el sistema.Esto aunque parece anárquico no lo es, debido a que los sistemas de tiempo real usan TIPOS de procesos que ya incluyen estas características, y usualmente estos TIPOS de procesos son mencionados como requerimientos. Un ejemplo es el siguiente:"Los procesos de mantenimiento no deberán exceder el 3% de la capacidad del procesador, A MENOS de que en el momento que sean ejecutados el sistema se encuentre en la ventana de tiempo de menor uso".ConfiabilidadLa confiabilidad en un sistema de tiempo real es otra característica clave. El sistema no debe de ser solamente libre de fallas pero más aun, la calidad del servicio que presta no debe de degradarse más allá de un límite determinado.El sistema debe de seguir en funcionamiento a pesar de catástrofes, o fallas mecánicas. Usualmente una degradación en el servicio  en un sistema de tiempo real lleva consecuencias catastróficas,Operación a prueba de fallas duras  (Fail soft operation) El sistema debe de fallar de manera que: cuando ocurra una falla, el sistema preserve la mayor parte de los datos y capacidades del sistema en la máxima medida posible.Que el sistema sea estable, I. E. Que si para el sistema es imposible cumplir con todas las tareas sin exceder sus restricciones de tiempo, entonces el sistema cumplirá con las tareas más críticas y de más alta prioridad.Los sistemas de tiempo real y el análisis de sus requerimientos.Debido que los sistemas de tiempo real tienen características especiales diferentes a los demás tipos de sistemas y que los sistemas operativos de tiempo real relegan a sus usuarios el cumplimiento de estos requerimientos (según la característica de "usuarios controladores"  vista en el capítulo anterior) es importante mencionar que este tipo de requerimientos deben de tomarse en cuenta en el proceso de desarrollo.Sin embargo, como estos requerimientos no forman parte de una sola funcionalidad del sistema sino que forman parte de todo el sistema a menudo se definen como "requerimientos no funcionales".También se argumenta que como no son parte de la aplicación sino que es como se comporta una aplicación al introducirse en un ambiente de tiempo real entonces estos son una "Característica del sistema", más que un requerimiento.Los dos puntos de vista son erróneos, si bien es cierto que los requerimientos referentes al tiempo real se aplican a todo el sistema, a menudo tenemos que agregar o modificar software, interfaces o hardware para que estos requerimientos se cumplan, mas aun, el software debe de estar preparado para que en la eventualidad de que un trabajo no cumpla con sus requerimientos de tiempo, cancele los demás trabajos relacionados con el (si una petición de entrada / salida toma más del tiempo establecido y se cancela por el sistema, el software de entrada / salida debe de informar al usuario del proceso que este evento ocurrió). Esto es claramente parte de la funcionalidad  y de comportamiento del sistema. Por lo que clasificar esta restricción como requerimiento no funcional es incorrecto.Si argumentáramos que: al ser parte de todo el sistema son una característica del sistema más que un requerimiento estaríamos diciendo que estas restricciones se cumplen con el solo hecho de pertenecer al sistema. Una característica es algo que ya esta en el sistema y que no puede ser calificada como errónea o correcta, y una restricción deberá de ser cumplida siempre y la forma en que estas restricciones se cumplen puede ser validad como errónea o correcta. Por lo que estas restricciones tampoco son una característica del sistema.

6.4 Planificacion de tareasLa planificación (scheduling) de un sistema de tiempo real consiste en asignar acciones a procesadores- La relación biunívoca entre acciones y procesadores es un plan de ejecución (schedule) El módulo que hace esto es el planificador (scheduler)- para ello utiliza un algoritmo de planificación.PLANES VÁLIDOS Y ADMISIBLESUn plan válido es un plan de ejecución que- asigna como máximo una acción a la vez a cada procesador- asigna como máximo un procesador a la vez a cada acción- no ejecuta ninguna acción antes de su tiempo de activación.- asigna a cada trabajo un tiempo de procesador igual a su tiempo de ejecución real o máximo, según los casos- satisface todas las relaciones de precedencia y todas las restricciones en el uso de los recursos (por ejemplo, exclusión mutua).Un plan admisible (feasible schedule) es un plan válido que asegura que todas las acciones terminan antes de su tiempo límite.PLANIFICACIÓN ÓPTIMAUn sistema de tiempo real es planificable con un algoritmo de planificación determinado si el algoritmo siempre produce planes admisiblesUn algoritmo de planificación es óptimo si produce un plan admisible para cualquier sistema siempre que exista.ESQUEMAS DE PLANIFICACIÓNPlanificación dirigida por tiempo (time/clock-driven)- el planificador se ejecuta cada vez que llega una señal de reloj " ejemplo: planificación cíclica.Planificación por turno circular (round-robin)- las acciones listas para ejecutarse se agrupan en una cola FIFO- cada acción se ejecuta durante una rodaja de tiempo y después se pone al final de la cola " variante: rodajas de tiempo desiguales (ponderadas)Planificación por prioridades- cada acción tiene una prioridad- se ejecuta siempre la acción de mayor prioridad entre las listas " la planificación está dirigida por sucesos (event-driven)PLANIFICACIÓN CON Y SIN DESALOJOPlanificación con desalojo (preemptive scheduling)- se puede desalojar del procesador una acción que se está ejecutando para dar paso a otra " se usa normalmente con prioridades.Planificación sin desalojo (non-preemptive scheduling)- una acción que ha comenzado a ejecutarse sólo deja el procesador si termina su ejecución necesita un recurso que no está disponible abandona el procesador voluntariamente.

6.5 SincronizacionSincronizar archivos o datos. La sincronización de archivos es utilizada para mantener la misma versión de archivos en múltiples dispositivos. Por ejemplo, sincronizar la libreta de dirección de un teléfono con la libreta de direcciones de una computadora.Las funciones de cadena de suministro están integradas e interactúan en tiempo real; cuando se hacen cambios a un área, el efecto es reflejado automáticamente a través de la cadena de suministro.

No hay comentarios:

Publicar un comentario