Sistema operativo de tiempo real Un sistema operativo de tiempo real (SOTR o RTOS -Real Time Operating System en inglés), es un sistema operativo que ha sido desarrollado para aplicaciones de tiempo real. Como tal, se le exige corrección en sus respuestas bajo ciertas restricciones de tiempo. Si no las respeta, se dirá que el sistema ha fallado. Para garantizar el comportamiento correcto en el tiempo requerido se necesita que el sistema sea predecible (determinista). Contenido 1 Características Generales 2 Procesador 3 Diseño 4 Programación 5 Comunicación entre Tareas 6 Interrupciones 7 Memoria 8 Comunicaciones 9 Algunos Ejemplos 10 Enlaces externos Características Generales Usado típicamente para aplicaciones integradas, normalmente tiene las siguientes características: No utiliza mucha memoria Cualquier evento en el soporte físico puede hacer que se ejecute una tarea Multi-arquitectura (código portado a cualquier tipo de CPU) Muchos tienen enfermedades predecibles para eventos electrónicos *Se caracterizan por presentar requisitos especiales en cinco áreas generales: ð Determinismo ð Sensibilidad ð Control del usuario ð Fiabilidad ð Tolerancia a los fallos En la actualidad hay un debate sobre qué es tiempo real. Muchos sistemas operativos de tiempo real tienen un programador y diseños de controladores que minimizan los periodos en los que las interrupciones están deshabilitadas, un número llamado a veces duración de interrupción. Muchos incluyen también formas especiales de gestión de memoria que limitan la posibilidad de fragmentación de la memoria y aseguran un límite superior mínimo para los tiempos de asignación y retirada de la memoria. Un ejemplo temprano de sistema operativo en tiempo real a gran escala fue el denominado «programa de control» desarrollado por American Airlines e IBM para el sistema de reservas Sabre. Procesador Este tipo de sistemas operativos no es necesariamente eficiente en el sentido de tener una capacidad de procesamiento alta. El algoritmo de programación especializado, y a veces una tasa de interrupción del reloj alta pueden interferir en la capacidad de procesamiento. Aunque para propósito general un procesador moderno suele ser más rápido, para programación en tiempo real deben utilizarse procesadores lo más predecibles posible, sin paginación... Todos estos factores añaden una aleatoriedad que hace que sea difícil demostrar que el sistema es viable, es decir, que cumple con los plazos. Diseño Hay dos diseños básicos: Un sistema operativo guiado por eventos sólo cambia de tarea cuando un evento necesita el servicio. Un diseño de compartición de tiempo cambia de tareas por interrupciones del reloj y por eventos. El diseño de compartición de tiempo gasta más tiempo de la UCP en cambios de tarea innecesarios. Sin embargo, da una mejor ilusión de multitarea. Normalmente se utiliza un sistema de prioridades fijas. Uno de los algoritmos que suelen usarse para la asignación de prioridades es el Rate-Monotonic Schedule. Si el conjunto de tareas que tenemos es viable con alguna asignación de prioridades fijas, también es viable con el Rate-Monotonic Schedule, donde la tarea más prioritaria es la de menor periodo. Esto no quiere decir que si no es viable con Rate-Monotonic Schedule no sea viable con asignaciones de prioridad variable. Puede darse el caso de encontrarnos con un sistema viable con prioridades variables y que no sea viable con prioridades fijas. Programación En los diseños típicos, una tarea tiene tres estados: ejecución, preparada y bloqueada. La mayoría de las tareas están bloqueadas casi todo el tiempo. Solamente se ejecuta una tarea por UCP. La lista de tareas preparadas suele ser corta, de dos o tres tareas como mucho. El problema principal es diseñar el programador. Usualmente, la estructura de los datos de la lista de tareas preparadas en el programador está diseñada para que cada búsqueda, inserción y eliminación necesiten interrupciones de cierre solamente durante un período muy pequeño, cuando se buscan partes de la lista muy definidas. Esto significa que otras tareas pueden operar en la lista asincrónicamente, mientras que se busca. Una buena programación típica es una lista conectada bidireccional de tareas preparadas, ordenadas por orden de prioridad. Hay que tener en cuenta que no es rápido de buscar sino determinista. La mayoría de las listas de tareas preparadas sólo tienen dos o tres entradas, por lo que una búsqueda secuencial es usualmente la más rápida, porque requiere muy poco tiempo de instalación. El tiempo de respuesta crítico es el tiempo que necesita para poner en la cola una nueva tarea preparada y restaurar el estado de la tarea de más alta prioridad. En un sistema operativo en tiempo real bien diseñado, preparar una nueva tarea necesita de 3 a 20 instrucciones por cada entrada en la cola y la restauración de la tarea preparada de máxima prioridad de 5 a 30 instrucciones. En un procesador 68000 20MHz, los tiempos de cambio de tarea son de 20 microsegundos con dos tareas preparadas. Cientos de UCP MIP ARM pueden cambiar en unos pocos microsegundos. Comunicación entre Tareas Las diferentes tareas de un sistema no pueden utilizar los mismos datos o componentes físicos al mismo tiempo. Hay dos métodos para tratar este problema. Uno de los métodos utiliza semáforos. En general, el semáforo binario 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 (deadlocks). 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 otorgar a la tarea que tiene el semáforo la prioridad de la tarea más prioritaria de las que están esperando dicho semáforo. Esto se denomina algoritmo de herencia básica de prioridad. En un punto muerto, dos tareas (T1,T2) pretenden adquirir dos semáforos (semA,semB) en orden inverso. En este caso si T1 adquiere semA y T2 adquiere semB cuando intenten adquirir el segundo semáforo no podrán hacerlo ya que lo tiene la otra tarea. De esta forma entran en un punto muerto del que ninguna de las dos tareas puede salir sin intervención externa. Esto se resuelve normalmente mediante un diseño por ej. obligando a adquirir los semáforos en un orden concreto. 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á tratando un mensaje de baja prioridad, e ignora un mensaje de más alta prioridad en su correo. Los puntos muertos ocurren cuando dos tareas realizan envios bloqueantes (se quedan en la función de envío esperando a que el receptor reciba el mensaje). Si T1 manda un mensaje de forma bloqueante a T2 y T2 manda un mensaje de igual forma a T1 ninguna de las dos tareas saldrá de la función de envío quedando ambas bloqueadas ya que no podrán llegar a la función de recepción. Puede resolverse reordenando envíos y recepciones o empleando envíos no bloqueantes o temporizados. Aunque su comportamiento en tiempo real es algo más difícil de analizar que los sistemas de semáforos, los sistemas basados en mensajes normalmente son más sencillos de desarrollar que los sistemas de semáforo. Interrupciones Las interrupciones son la forma más común de pasar información desde el mundo exterior al programa y son, por naturaleza, impredecibles. En un sistema de tiempo real estas interrupciones pueden informar diferentes eventos como la presencia de nueva información en un puerto de comunicaciones, de una nueva muestra de audio en un equipo de sonido o de un nuevo cuadro de imagen en una videograbadora digital. Para que el programa cumpla con su cometido de ser tiempo real es necesario que el sistema atienda la interrupción y procese la información obtenida antes de que se presente la siguiente interrupción. Como el microprocesador normalmente solo puede atender una interrupción a la vez, es necesario que los controladores de tiempo real se ejecuten en el menor tiempo posible. Esto se logra no procesando la señal dentro de la interrupción, sino enviando un mensaje a una tarea o solucionando un semáforo que está siendo esperado por una tarea. El programador se encarga de activar la tarea y esta se encarga de adquirir la información y completar el procesamiento de la misma. El tiempo que transcurre entre la generación de la interrupción y el momento en el cual esta es atendida se llama latencia de interrupción. El inverso de esta latencia es una frecuencia llamada frecuencia de saturación, si las señales que están siendo procesadas tienen una frecuencia mayor a la de saturación, el sistema será físicamente incapaz de procesarlas. En todo caso la mayor frecuencia que puede procesarse es mucho menor que la frecuencia de saturación y depende de las operaciones que deban realizarse sobre la información recibida. Memoria Hay dos problemas con el reparto de la memoria en SOTR (sistemas operativos en tiempo real). El primero, la velocidad del reparto es importante. Un esquema de reparto de memoria estándar recorre una lista conectada de longitud indeterminada para encontrar un bloque de memoria libre; sin embargo, esto no es aceptable ya que el reparto de la memoria debe ocurrir en un tiempo fijo en el SOTR. En segundo lugar, la memoria puede fragmentarse cuando las regiones libres se pueden separar por regiones que están en uso. Esto puede provocar que se pare un programa, sin posibilidad de obtener memoria, aunque en teoría exista suficiente memoria. Una solución es tener una lista vinculada LIFO de bloques de memoria de tamaño fijo. Esto funciona asombrosamente bien en un sistema simple. La paginación suele desactivarse en los sistemas en tiempo real, ya que es un factor bastante aleatorio e impredecible, que varía el tiempo de respuesta y no nos permite asegurar que se cumplirán los plazos, debido al trasiego de páginas de memoria con un dispositivo de almacenamiento (trashing) Comunicaciones Para las comunicaciones se suelen usar conexiones o redes deterministas CAN bus o puertos serie, ya que las redes más usuales, como Ethernet son indeterministas y no pueden garantizarnos el tiempo de respuesta. El sistema CAN bus es utilizado para la interconexion de dispositivos electrónicos de control (ECU) en los vehículos. Algunos Ejemplos MaRTE OS EasyTasks QNX LynxOS RedHat Embedded Linux eCos (Linux) SOOS Ubuntu Studio (Linux) VxWorks Windows CE Linchos UNIX (Some) DuinOS RTAI Symbian Tiempo real Un sistema en tiempo real (STR) es aquel sistema digital que interactúa activamente con un entorno con dinámica conocida en relación con sus entradas, salidas y restricciones temporales, para darle un correcto funcionamiento de acuerdo con los conceptos de predictibilidad, estabilidad, controlabilidad y alcanzabilidad. Los sistemas en tiempo real están presentes en nuestra vida diaria, prácticamente en todo lo que nos rodea; en los aviones, trenes y automóviles; en el televisor, la lavadora o el horno de microondas, en los teléfonos celulares y en las centrales telefónicas digitales. Son un elemento imprescindible para garantizar la generación, transmisión y distribución de la energía eléctrica y para asegurar la calidad y la seguridad de incontables procesos industriales. La principal característica que distingue a los STR de otros tipos de sistemas es el tiempo de interacción. Sin embargo, antes de continuar es necesario aclarar el significado de las palabras "tiempo" y "real". La palabra "tiempo" significa que el correcto funcionamiento de un sistema depende no sólo del resultado lógico que devuelve la computadora, también depende del tiempo en que se produce ese resultado. La palabra "real" quiere decir que la reacción de un sistema a eventos externos debe ocurrir durante su evolución. Como una consecuencia, el tiempo del sistema (tiempo interno) debe ser medido usando la misma escala con que se mide el tiempo del ambiente controlado (tiempo externo). En México, los STR se pueden encontrar en lugares muy importantes por los servicios que prestan, por ejemplo: Comisión Federal de Electricidad (CFE) donde se monitorean, controlan y protegen los sistemas de transmisión y distribución que hacen llegar la energía eléctrica a las industrias y nuestros hogares. Los STR también están presentes en el Metro de la Ciudad de México, específicamente en el área de monitoreo de tráfico de trenes; su importancia es relevante debido a que diariamente se transportan millones de pasajeros. Un STR tiene tres condiciones básicas: Interactúa con el mundo real (proceso físico), emite respuestas correctas y cumple restricciones temporales. En contraste con la definición de STR, un sistema rápido produce su salida sin considerar las restricciones de tiempo del ambiente con que interactúa, para esa clase de sistemas no es importante el tiempo en el cual los datos llegan al sistema digital sino solamente el tiempo en que la salida es producida, en otras palabras únicamente interesa la rapidez de dar la respuesta dentro del intervalo de tiempo cuya medida, entre más pequeña es mejor, sin importar el costo de generar esa respuesta. De igual manera, tiende a confundirse el concepto de STR con el de sistema en línea: Un sistema en línea es aquel que siempre debe estar encendido, disponible y generalmente conectado a una red de computadoras y depende de la capacidad del hardware para atender peticiones de servicio y en ningún momento está en sincronía con el mundo real ni tiene restricciones temporales. En adición a esto, un sistema fuera de línea es aquel que no siempre está disponible para recibir y enviar información y que depende de una base de datos previamente establecida para ejecutar su cometido. Como ejemplos de sistemas en línea se tienen las aplicaciones de Internet como los navegadores web o la adquisición de datos a través de una tarjeta especializada en un ambiente de tiempo compartido como Windows. El concepto de STR no queda restringido a los sistemas digitales o de cómputo, ya que puede extenderse al mundo vivo: humanos, animales y plantas; como ejemplo, considérese una semilla fértil, la cual llega de alguna manera (ya sea por acción del viento, por medio del desecho de algún animal al final de su digestión, etc.) a la tierra. Se puede asegurar que el proceso de germinación de la semilla es un sistema de tiempo real en el ambiente y en las circunstancias en las cuales se desarrolla, ya que a estímulos del ambiente (humedad apropiada constante, temperatura adecuada constante, luz necesaria, etc.) el sistema (la semilla) responde dentro de sus restricciones de tiempo específicas. Si la semilla fuera solamente un sistema rápido (y no de Tiempo Real), tan pronto como ésta tocara la tierra comenzaría su proceso de germinación, sin importar la escasez de nutrientes del suelo o agua o estación del año, por lo que el comportamiento de la semilla no correspondería a lo que está sucediendo en el ambiente, es decir, que el intervalo de tiempo en el que la respuesta del sistema (semilla) se produce no sería muy importante, pero en la realidad ocasionaría que muriera rápidamente por la falta de su adaptabilidad, al tratar de consumir nutrientes más de lo que los puede asimilar o que se encuentren disponibles para ser absorbidos por la raíz de la planta. Los sistemas de tiempo real (STR) son sistemas informáticos que se encuentran en multitud de aplicaciones, desde la electrónica de consumo hasta el control de complejos procesos industriales. Están presentes en prácticamente todos los aspectos de nuestra sociedad como, teléfonos móviles, automóviles, control de tráfico, ingenios espaciales, procesos automáticos de fabricación, producción de energía, aeronaves, etc. Además, el auge de los Sistemas de Tiempo Real está en constante aumento, ya que cada vez más máquinas se fabrican incluyendo un número mayor de sistemas controlados por computador. Un ejemplo cercano es la industria del automóvil, ya que un turismo actual de gama media incluye alrededor de una docena de estos automatismos (ABS, airbag, etc). Otro ejemplo cotidiano son los electrodomésticos de nueva generación, que incluyen Sistemas de Tiempo Real para su control y temporización. Hoy día son tantas las aplicaciones de estos sistemas que su número duplica actualmente al de los sistemas informáticos "convencionales" o de propósito general. Las previsiones son que esta diferencia vaya en constante aumento, debido fundamentalmente el elevado crecimiento de la automatización en casi todas las facetas de la vida cotidiana. Esto convierte a esta asignatura en un complemento muy atractivo para la formación de un Ingeniero Informático. La característica diferenciadora de los Sistemas de Tiempo Real es que sus acciones deben producirse dentro de unos intervalos de tiempo determinados por la dinámica del sistema físico que supervisan o controlan. Por poner un ejemplo, el sistema de control de inyección de combustible en un motor alternativo (como los que están presentes en los automóviles) debe realizar la inyección de la mezcla dentro del intervalo de tiempo marcado por la rotación del motor, de otro modo el motor no funcionará correctamente. En este caso, se trata de un sistema de tiempo real empotrado, es decir, el sistema informático se encuentra físicamente incluido en un sistema de ingeniería más complejo. La mayoría de los sistemas de tiempo real son sistemas empotrados y suelen tener restricciones adicionales en cuanto al uso de recursos computacionales con respecto a otros tipos de sistemas informáticos. Además, suelen tener requisitos de seguridad y fiabilidad más severos, ya que si el sistema falla puede ocasionar pérdidas económicas (por ejemplo, avería del motor) o incluso humanas (por ejemplo, si el motor fuera de una aeronave). Además, las aplicaciones empotradas no son ni mucho menos pequeñas. Un simple teléfono móvil tenía medio millón de líneas de código en 1997, y el número de líneas de código que vuelan embarcadas en los sistemas de control de una aeronave moderna se cuentan por millones. El tamaño actual de estas aplicaciones hace impensable su desarrollo sin utilizar la Ingeniería del Software que es una disciplina fundamental y propia de los Ingenieros Informáticos. INTRODUCCIÓN Es bien sabido que los Sistemas de Tiempo Real pueden llevar el control eventosque ocurren en el mundo real, por lo tanto es un sistemaque responde a un estímulo externo dentro de un tiempo especificado. Entonces los sistemas de tiempo real interactúan con el entorno que se le presente y pueden ejecutar accionesde respuesta para determinados estímulos de dicho entorno. Este tipo de sistemas tienen muchas características que benefician a todo el individuo que pretenda interactuar con ellos. A continuación se abordara a fondo el tema: "Sistemas De Tiempo Real (STR)" DEFINICIÓN: Básicamente los sistemas de tiempo real se definen como sistemas informáticos que tienen la capacidad de interactuar rápidamente con su entorno físico, el cual puede realizar funciones de supervisióno control para su mismo beneficio. Todos los sistemas de tiempo real tienen la facultad de ejecutar actividades o tareas en de intervalos de tiempo bien definidos. Todas las tareas son ejecutadas inmediatamente en una forma concurrente, esto es para sincronizar el funcionamiento del sistema con la simultaneidad de acciones que se presentan en el mundo físico. En los sistemas de tiempo real los intervalos de tiempo en que se ejecutan las tareas se definen por un esquema de activación y por un plazo de ejecución. En lo que respecta al esquema de activación puede ser periódico, es decir en intervalos regulares, o también puede ser aperiódico, es decir,en respuesta a sucesos externos que ocurren de forma irregular. La mayoría de los STR son utilizados cuando existen requerimientos de tiempo muy rígidos en las operaciones o en el flujo de datos, generalmente son requeridos como sistemas de control en una aplicación dedicada. La eficienciade los STR no solo depende de la exactitud de los resultados de cómputo, sino también del momento en que los entrega. La predictibilidad es su característica principal de este tipo de sistemas. Este tipo de sistemas se caracterizan por tener que producir una salida, como respuesta a una entrada, en un tiempo determinado. El intervalo de tiempo que se presenta entre la entrada y la salida debe ser muy pequeño para que la respuesta temporal del sistema sea aceptable. Cuando se diseña un sistema de tiempo real se pasa por varias fases: 1.- Se identifican todas las tareas que se tienen que realizar y también se identifican las restricciones temporales que se pretenden cumplir. 2.- Posteriormente se codifican los programas que ejecutarán las tareas 3.- Posteriormente se pasa a medir el tiempo de cómputo de cada tarea y se realiza un análisis de planificabilidad. Este análisis consiste en aplicar unas pruebasal conjunto de tareas de tal forma que si éstas pasan el testentonces se puede garantizar que ninguna tarea perderá su plazo de ejecución. De lo contrario si no pasan el test se tiene que volver a comenzar desde el principio, es decir, comenzar de nuevo, utilizando otro procesadormás potente o utilizando otros algoritmos para implementar las tareas. GENERALIDADES DE LOS STR Requiere técnicas de análisis, diseñoy prueba que son desconocidas en otras áreas de aplicación. Esta muy acoplado con el mundo externo. Opera bajo condiciones de rendimiento muy rigurosas. Esta conducido por el hardware, software, por las características del sistema operativo, por requisitos de la aplicación, así como por aspectos de diseño. ELEMENTOS QUE COMPONEN UN STR Aspectos de integración y de rendimiento. Manejo de Interrupciones. Bases de Datos de Tiempo Real. Sistemas Operativos de Tiempo Real. Lenguajes de Tiempo Real. Sincronización y comunicación de tareas. SISTEMAS OPERATIVOS DE TIEMPO REAL Los SistemasOperativos de tiempo real son la plataforma para establecer un sistemade tiempo real ya que en los SOTR no tiene importancia el usuario, sino los procesos. Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS Spectra Por lo regular Sistema Operativode tiempo real suele tener la misma arquitectura que un Sistema Operativo convencional, pero su diferencia radica en que proporciona mayor prioridad a los elementos de controly procesamiento que son utilizados para ejecutar los procesos o tareas. El SOTR debe ser multitarea y permisible Un SOTR debe poder asignar prioridades a las tareas El SOTR debe proporcionar medios de comunicacióny sincronización entre tareas Un SOTR debe poder evitar el problema de inversión de prioridades El comportamientotemporal del SOTR debe ser conocido CLASIFICACIÓN DE LOS SISTEMAS DE TIEMPO REAL Los sistemas de tiempo real pueden ser de dos tipos, esto es en funciónde su severidad en el tratamiento de los errores que puedan presentarse: Sistemas de tiempo real blandos o Soft real-time systems:estos pueden tolerar un exceso en el tiempo de respuesta, con una penalización por el incumplimiento del plazo. Estos sistemas garantizan que las tareas críticas se ejecutan en tiempo. Aquí los datos son almacenados en memorias no volátiles, no utilizan técnicas de memoriavirtual ni tiempo compartido, estas técnicas no pueden ser implementadas en hardware. Sistemas de tiempo real duros o Hard real-time systems: aquí la respuesta fuera de término no tiene valoralguno, y produce la falla del sistema. Estos sistemas tienen menos utilidades que los implementados por hard, por ejemplo no pueden utilizarse para control industrial y robótico. Pero si para multimedia, supervisiónde controles industriales y realidad virtual. MÉTODOS DE DISEÑOS Cuando se elabora software de tiempo real se deben incorporar una alta calidad. Al elaborar el software de tiempo real se presentan múltiples problemas como: Representación de interrupciones y cambio de contexto. Comunicación y sincronización de tareas. Grandes variaciones en las tasas de datos. Requisitos especiales para manejo de errores y recuperación de fallos. Procesamiento asíncrono. Para evitar muchos de los problemas que se presentan al elaborar software de tiempo real se han establecido algunos métodos como lo son: Metodología de flujo de datos. Metodología de estructura de datos. Metodología orientada a los objetos. REQUISITOS TEMPORALES Tiempo real estricto (hard real-time) – todas las acciones deben ocurrir dentro del plazo especificado » Ejemplo: control de vuelo Tiempo real flexible (soft real-time) – se pueden perder plazos de vez en cuando – el valor de la respuesta decrece con el tiempo » Ejemplo: adquisición de datos Tiempo real firme (firm real-time) – se pueden perder plazos ocasionalmente – una respuesta tardía no tiene valor » Ejemplo: sistemas multimedia ESTRUCTURA DE UN STR CARACTERÍSTICAS DE LOS SISTEMAS DE TIEMPO REAL CARACTERÍSTICAS PRIMARIAS CARACTERÍSTICAS SECUNDARIAS Procedimiento concurrente Fiabilidad Interfaz hardware Reconfigurabilidad Tiempo de reacción antes de los eventos Usabilidad Arquitectura distribuida Obligaciones Bases de datos Capacidad de evolución OTRAS CARACTERISTICAS: DETERMINISMO EN LOS STR Este término es una parte fundamental en estos sistemas, podría decirse que es una cualidad ya que es la capacidad de determinar con una alta probabilidad, cuanto es el tiempo que tarda una tarea en iniciar, es decir, que los STR necesitan que ciertas tareas se comiencen a ejecutar antes que otras. RESPONSIVIDAD EN LOS STR: Este término se basa en el tiempo que tarda una tarea en ejecutarse. La responsividad se enfoca a 3 aspectos los cuales son: La cantidad de tiempo que tarda 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. USUARIOS CONTROLADORES Todos los el usuario tienen un mejor control de todos los procesos que se ejecutan en el sistema esto es: Los procesos son capaces de especificar su prioridad Los procesos son capaces de especificar el manejo de memoria que requiere Los procesos especifican que derechostiene sobre el sistema. CONFIABILIDAD En los STR la confiabilidad juega un papel muy importante, ya que el sistema no debe de presentar fallos, sino que más aun la calidad del servicio que ofrezca no debe de degradarse más allá de un límite especificado. El sistema tiene que tener la capacidad de seguir funcionando aunque se presenten grandes catástrofes, o fallos mecánicos. Por lo general una degradación en el servicio en un STR lleva consecuencias catastróficas. TOLERANCIA A FALLOS Al hablar de tolerancia a los fallos nos estamos refiriendo a la capacidad de un sistema de conservar la máxima capacidad y los máximos datos posibles en caso de un problema grave que afecte a parte del sistema. Al referirnos a la tolerancia a los fallos estamos hablando también de la estabilidad ya que un sistema de tiempo real cuando le es imposible cumplir todos los plazos de ejecución de las tareas que tenia asignado en ese momento, el sistema cumple los plazos de las tareas mas criticas y de mayor prioridad que hasta ese momento se estaban ejecutando. Entonces el sistema debe de fallar de manera que cuando se presente un problema en el sistema conserve gran parte de los datos y capacidades del sistema en la mayor medida posible. Características concretas: Se presentan en entornos en donde deben ser aceptados y procesados una gran cantidad de sucesos, donde la mayoría de estos sucesos son externos al sistema computacional, con un tiempo de respuesta inmediato. Pueden ser utilizados en muchos ámbitos entre los cuales están en control industrial, conmutación telefónica, control de vuelo, simulaciones en tiempo real., aplicaciones militares (entre otras). Proporciona rápidos tiempos de respuesta. Capacidad de procesar ráfagas de miles de interrupciones por segundo sin perder un solo suceso. El proceso que tenga mayor prioridad expropia recursos. La mayoría de los de procesos son estáticos. La gestión de archivos se enfoca a velocidadde acceso que a la utilización eficiente del recurso. APLICACIONES DE LOS STR Los sistemas de tiempo real pueden tener muchísimas y con el paso del tiempo y el desarrollode nuevas tecnologías surgen nuevos campos de utilización para estos sistemas. Las áreas más comunes donde se aplican los servicios de un STR podrían ser: Las telecomunicaciones Los sistemas multimedia El control industrial La robótica Los sistemas de aviónica y espaciales Los ferrocarriles Automóviles Electrodomésticos de nueva generación experimentos científicos sistemas médicos. SEGURIDAD EN LOS STR Gran parte de los sistemas de tiempo real presentan requisitos de seguridadmuy complicados, lo que da como resultado que la elaboración o desarrollo de un STR sea más complicada. Esto es que en algunos casos no se puede permitir que ninguna tarea se ejecute fuera del intervalo especificado ni una sola vez. ENTRADA/SALIDA EN SISTEMAS DE TIEMPO REAL Cuando el procesamiento en tiempo real esta realizado, es necesario que la interacción con los dispositivos externos sea también acotada en tiempo. Entonces para establecer la transmisión de datos o información entre el sistema de tiempo real, los sensoresy actuadores que conforman al sistema, pueden usarse diversas técnicas de buses de tiempo real, que ofrecen la oportunidad de disponer de sensores inteligentes. Este tipo de sensores no solo tienen la capacidad de transmitir los datos que se recolectaron, sino también poseen la capacidad de enviar la información del instante que los datos fueron recolectados. Ejemplos de protocolosde comunicación que utilizan los STR los cuales tienen la capacidad de reducir los tiempos de transmisión son los siguientes: El protocolo PAR (Positive Acknowledge or Retransmit), Implicit Flow Control, CSMA/CD (Carrier Sense Multiple Access/Collision Detection), CAN (Control Area Network), Tokenbus, Central Master, y TDMA-TTP. EJEMPLO QUE PLASMA LA UTILIDAD DE LOS STR El Problema: Hoy en día en las empresas, los problemas llegan al Director General cuando ya poco se puede hacer para solucionarlos, ya se trata de una operación con pérdidas, una deuda incobrable o la pérdida de un cliente importante. Es decir, cuando el perjuicio para nuestra empresa, para el cliente o para ambos es inevitable. La Solución Ahora bien, que seria si todos los comerciales de la empresa estuviera conectados a un sistema informático en tiempo real que controle todas sus operaciones, autorizando las que cumplan las normas preestablecidas (precios, riesgo, tiempos de entrega, etc.), y reteniendo las que no las cumplan para que sean autorizadas o rechazadas por la personao personas con atribución para ello, quien recibe inmediatamente un aviso por correo electrónico (un servicio que también puede realizarse mediante mensajes a móviles) en el que se le indica que tiene una operación pendiente de autorizar y los parámetros que han provocado la irregularidad. Todo esto ya realidad con en nuevo Sistema HERMES, que combina las tecnologías de telefoníamóvil e Internetpara proporcionar un seguimiento continuo de las operaciones comerciales de la toda empresa. CONCLUSIONES Los sistemas de tiempo real (STR) juegan un papel muy importante ya que como todo sistema debe tener la capacidad de satisfacer tareas en un tiempo de respuesta mínimo. Los STR están presentes en todos los aspectos de nuestra vida diaria como aeronaves, teléfonos móviles, automóviles, entre muchas otras aplicaciones que nos benefician ampliamente. Se podría también concluir que los sistemas de tiempo real están en constante desarrollo puesto que con los avances tecnológicosse construyen nuevas maquinas que operan en tiempo real y que por consiguiente necesitan tener sistemas controlados por un computadorque tenga la capacidad de interactuar con el mundo físico. Los sistemas de tiempo real básicamente están integrados en un sistema de ingeniería más avanzado el cual realiza funcionesde control, por lo que también se les llama sistemas empotrados o embedded systems. Los sistemas de tiempo real suelen tener un reloj y un timer para verificar los tiempos reales de respuesta del sistema. Se dice que no son términos iguales ya que un reloj le sirve al sistema únicamente para llevar un conteo, en cambio un timer es un dispositivo que cuando llega a un estadodeterminado tiene la capacidad de notificar que esta pasando, pero uno es el complemento del otro.