fbpx
Wikipedia

Sistema operativo de tiempo real

Un sistema operativo de tiempo real es aquel 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...

Donde utilizarlos

Este tipo de sistemas son usados típicamente para aplicaciones integradas que normalmente tienen las siguientes caracteristicas:

  • Utilizan poca memoria
  • Cualquier evento en el soporte físico puede hacer que se ejecute una tarea
  • Multi-arquitectura
  • Tiempos de respuesta predecibles para eventos electrónicos

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 tiempos de respuesta predecibles para eventos electrónicos
  • Comunicación entre procesos:

Las comunicaciones entre procesos están soportadas de una manera precisa y estable, empleando mecanismos como el uso de semáforos, el paso de mensajes y el uso de memoria compartida.

  • Determinismo:

Realiza operaciones en instantes de tiempo fijos predeterminados o dentro de intervalos de tiempo predeterminados. Cuando múltiples procesos compiten por recursos y tiempo de procesador, ningún sistema puede ser totalmente determinista. En un sistema operativo de tiempo real, las solicitudes de servicio de los procesos son dirigidas por eventos externos y temporizaciones. El grado en el que un sistema operativo puede satisfacer de manera determinista las solicitudes depende, primero, de la velocidad a la que es capaz de responder a las interrupciones y, segundo, de si el sistema tiene capacidad suficiente para manejar todas las solicitudes dentro del tiempo requerido. En sistemas operativos no de tiempo real, este retardo puede estar en el rango de decenas a cientos de milisegundos, mientras que en un sistema operativo de tiempo real este retardo puede tener un límite superior en algún punto entre los pocos microsegundos y el milisegundo.

  • Reactividad:

Cuánto tiempo tarda el sistema operativo, después del reconocimiento, en servir la interrupción. La reactividad incluye los siguientes aspectos: 1. La cantidad de tiempo necesario para manejar inicialmente la interrupción y comenzar a ejecutar la rutina de servicio de la interrupción (RSI). Si la ejecución de la RSI necesita un cambio de proceso, entonces el retardo será mayor que si la RSI puede ser ejecutada dentro del contexto del proceso actual. 2. La cantidad de tiempo necesario para realizar la RSI. Esto depende, generalmente, de la plataforma hardware. 3. El efecto del anidamiento de interrupciones. Si una RSI puede ser interrumpida por la llegada de otra interrupción, entonces el servicio se retrasará. El determinismo y la reactividad juntos conforman el tiempo de respuesta a eventos externos. Los requisitos de tiempo de respuesta son críticos para los sistemas de tiempo real, dado que estos sistemas deben cumplir requisitos de tiempo impuestos por individuos, dispositivos o flujos de datos ex- ternos al sistema.

  • Control del usuario :

En un sistema operativo no de tiempo real, el usuario no tiene control sobre la función de planificación o bien el sistema operativo sólo puede proporcionar una guía burda, como la agrupación de usuarios en más de una clase de prioridad. En un sistema de tiempo real es esencial permitirle al usuario un control de grano fino sobre la prioridad de la tarea. El usuario debe ser capaz de distinguir entre tareas duras y suaves y de especificar prioridades relativas dentro de cada clase. Un sistema de tiempo real puede también permitirle al usuario especificar características como el uso de paginación en los procesos, qué procesos deben residir siempre en memoria principal, qué algoritmos de transferencia a disco deben utilizarse, qué derechos tienen los procesos de las varias bandas de prioridad, etcétera.

  • Fiabilidad:

Un sistema de tiempo real ha de responder y controlar eventos en tiempo real. La pérdida o degradación de sus prestaciones puede tener consecuencias catastróficas.

  • Operación de fallo suave:

Se refiere a la habilidad del sistema de fallar de tal manera que se preserve tanta capacidad y datos como sea posible. Un sistema de tiempo real intentará o bien corregir el problema o bien minimizar sus efectos continuando, en todo caso, en ejecución. Un sistema de tiempo real es estable si, en los casos en los que sea imposible cumplir los plazos de todas las tareas, el sistema cumplirá los plazos de sus tareas más críticas, de más alta prioridad, aunque los plazos de algunas tareas menos críticas no se satisfagan. Para cumplir los requisitos precedentes, los sistemas operativos de tiempo real incluyen de forma representativa las siguientes características

  • Cambio de proceso o hilo rápido.
  • Pequeño tamaño (que está asociado con funcionalidades mínimas).
  • Capacidad para responder rápidamente a interrupciones externas.
  • Multitarea con herramientas para la comunicación entre procesos como semáforos, señales y eventos.
  • Utilización de ficheros secuenciales especiales que pueden acumular datos a alta velocidad.
  • Planificación expulsiva basada en prioridades.
  • Minimización de los intervalos durante los cuales se deshabilitan las interrupciones.
  • Primitivas para retardar tareas durante una cantidad dada de tiempo y para parar/retomar tareas.
  • Alarmas y temporizaciones especiales.

Lo más importante de un sistema de tiempo real es el planificador de tareas a corto plazo. En el diseño de tal planificador, la equidad y la minimización del tiempo medio de respuesta no son lo más importante. Lo que es importante es que todas las tareas de tiempo real duro se completen (o comiencen) en su plazo y que tantas tareas de tiempo real suave como sea posible también se completen (o comiencen) en su plazo.

Ventajas

Un Sistema Operativo en Tiempo Real es pequeño, rápido, receptivo y determinista. Esto significa que ejecutará tareas de manera rápida y eficiente, respondiendo como se espera cada vez. Debido a la importancia de su dispositivo host, la infraestructura RTOS es más segura y es menos probable que se bloquee o falle. Finalmente, un RTOS está orientado al desarrollador, lo que significa que continúa implementando actualizaciones que ayudan a los usuarios a codificar de manera más efectiva.

Componentes de un sistema operativo

Un sistema operativo posee tres componentes esenciales o paquetes de software que permiten la interacción con el hardware.

  • Sistema de archivos. Es el registro de archivos donde adquieren una estructura arbórea.
  • Interpretación de comandos. Se logra con aquellos componentes que permiten la interpretación de los comandos, que tienen como función comunicar las órdenes dadas por el usuario en un lenguaje que el hardware pueda interpretar (sin que aquel que dé las órdenes conozca dicho lenguaje).
  • Núcleo. Permite el funcionamiento en cuestiones básicas como la comunicación, entrada y salida de datos, gestión de procesos y la memoria, entre otros.

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 en un procesador añade una aleatoriedad que hace que sea difícil demostrar que el sistema es viable, es decir, que cumpla con los plazos de tiempo para la ejecución de las tareas y la atención de los servicios o interrupciones.

Un sistema operativo de tiempo real puede ser implementado en microcontroladores o procesadores digitales de señal "DSP's", así, se pueden desarrollar aplicaciones embebidas en diferentes áreas de la electrónica.

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 CPU 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.

Objetos

Los objetos de Sistemas Operativos de Tiempo Real son capaces de compartir información y sincronizar la ejecución de tareas. La mayoría de estos sistemas tienen objetos como:

  • Cola de mensajes
    • Cola de entrada y salida (FIFO) para el paso de datos
    • Los datos pueden enviarse por copia o por referencia (puntero)
    • Se utiliza para enviar datos entre tareas o entre interrupción y tarea
  • Semáforo
    • Puede tratarse como un contador de referencia para registrar la disponibilidad de un determinado curso
    • Puede ser un semáforo binario o de conteo
    • Se utiliza para vigilar el uso de recursos o sincronizar la ejecución de tareas
  • Mutex
    • Similar al semáforo binario, generalmente utilizado para proteger el uso de un solo recurso (exclusión mutua)
    • El mutex de FreeRTOS viene con un mecanismo de herencia de prioridades para evitar el problema de la inversión de prioridades (condición en la que una tarea de alta prioridad termina esperando a otra de menor prioridad)
  • Buzón
    • Almacén simple para compartir una sola variable
    • Puede considerarse como una cola de un solo elemento
  • Grupo de eventos
    • Grupo de condiciones (disponibilidad de semáforo, cola, bandera de evento, etc.)
    • La tarea puede bloquearse y esperar a que se cumpla una condición de combinación específica
    • Disponible en Zephyr como API de sondeo, en FreeRTOS como QueueSets


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 Bloqueo mutuo (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 envíos 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 ésta 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 (thrashing)

Planificación de tiempo real

Los distintos enfoques de la planificación dependen de 1. cuando el sistema realiza análisis de planificabilidad; y si lo hace, de 2. si se realiza estática o dinámicamente; y de 3. si el resultado del análisis produce un plan de planificación de acuerdo al cual se desarrollarán las tareas en tiempo de ejecución. En base a estas consideraciones se identifican las siguientes clases de algoritmos: • Enfoques estáticos dirigidos por tabla. En éstos se realiza un análisis estático de la factibilidad de la planificación. El resultado del análisis es una planificación que determina cuando, en tiempo de ejecución, debe comenzar a ejecutarse cada tarea. • Enfoques estáticos expulsivos dirigidos por prioridad. También se realiza un análisis está- tico, pero no se obtiene una planificación. En cambio, el análisis se utiliza para asignar prioridades a las tareas, y así puede utilizarse un planificador expulsivo tradicional basado en prioridades. • Enfoques dinámicos basados en un plan. La factibilidad se determina en tiempo de ejecución (dinámicamente) en vez de antes de comenzar la ejecución (estáticamente). Una nueva tarea será aceptada como ejecutable sólo si es posible satisfacer sus restricciones de tiempo. Uno de los resultados del análisis de factibilidad es un plan que se usará para decidir cuándo poner en marcha la tarea. • Enfoques dinámicos de mejor esfuerzo. No se realiza análisis de factibilidad. El sistema intenta cumplir todos los plazos y aborta la ejecución de cualquier proceso cuyo plazo haya fallado.

2.1) Planificación estática dirigida por tabla. Aplicable a tareas que son periódicas, los datos de entrada para el análisis son: tiempo periódico de llegada, tiempo de ejecución, plazo periódico de finalización, y prioridad relativa de cada tarea. El planificador intenta encontrar un plan que le permita cumplir todos los requisitos de todas las tareas periódicas. Éste es un enfoque predecible pero no flexible, un cambio en cualquiera de los requisitos de las tareas requiere rehacer toda la planificación. Algoritmos de planificación: plazo más cercano primero, técnicas de plazos periódicos. 2.2) Planificación estática con expulsión dirigida por prioridad. Hace uso del mecanismo de planificación expulsivo dirigido por prioridades, Fig. 2, En un sistema de tiempo real, la asignación de prioridades está relacionada con las restricciones de tiempo asociadas a cada tarea. Algoritmos de planificación: algoritmo de tasa monótona; asigna prioridades estáticas a las tareas basándose en sus longitudes y sus periodos. 2.3) Planificación dinámica basada en un plan. Cuando llega una nueva tarea, pero antes de que comience su ejecución, se intentará crear un plan que contenga las tareas previamente planificadas así como la nueva. Si la tarea recién llegada puede ser planificada de manera que se cumplan sus plazos sin que ninguna otra tarea planificada anteriormente pierda un plazo, la nueva tarea será aceptada poniéndose en marcha el nuevo plan de planificación. 2.4) Planificación dinámica de mejor esfuerzo. Cuando llega una tarea, el sistema le asigna una prioridad basada en las características de la misma. De forma característica se utiliza algún tipo de planificación basada en plazos como la planificación del plazo más cercano. Así, las tareas no son periódicas y por tanto no es posible realizar un análisis estático de planificabilidad. Con este tipo de planificación, no sabremos si una determinada restricción de tiempo será satisfecha hasta que venza su plazo o la tarea se complete.

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 interconexión de dispositivos electrónicos de control (ECU) en los vehículos.

Tipos de Sistemas Operativos en Tiempo Real[1]

Tiempo real duro:

En estos tipos de sistemas operativos, los plazos de tiempo límite son muy estrictos lo que significa que las tareas que se realicen deben comenzar su ejecución en el tiempo programado especificado y debe completarse forzosamente dentro del periodo de tiempo que se le asigne.

Tiempo real firme:

En este tipo de sistema operativo también se debe cumplir con plazos de tiempo, sin embargo, el incumplimiento en algún plazo limite puede no ser de gran impacto por lo que existe cierta flexibilidad con el tiempo de finalización de la tarea lo puede causar efectos no deseados en el funcionamiento del sistema como la reducción de la calidad.

Tiempo real suave:

En este tipo se aceptan retrasos por parte del propio sistema operativo. Hay un periodo de tiempo límite para una tarea especifica pero son aceptables los retrasos que se puedan dar siempre y cuando el tiempo no sea muy alto, es decir se manejar retrasos suavemente.

Desventajas de utilizar Sistemas Operativos en Tiempo Real[1]

  • Puede ejecutar tareas mínimas juntas y se concentra solo en aquellas aplicaciones que contienen un error para poder evitarlas.
  • Es el sistema que se concentra en unas pocas tareas. Por lo tanto, es realmente difícil para estos sistemas realizar múltiples tareas.
  • Se requieren controladores específicos para el sistema operativo para que pueda ofrecer un tiempo de respuesta rápido para interrumpir las señales, lo que ayuda a mantener su velocidad.
  • Utiliza muchos recursos que a veces no son adecuados para el sistema, lo que hace que este sea costoso.
  • Las tareas que tienen una prioridad baja deben esperar mucho tiempo ya que el sistema operativo mantiene la precisión del programa, que están en ejecución.
  • El cambio mínimo de tareas se realiza en sistemas operativos en tiempo real.
  • Utiliza algoritmos complejos que son difíciles de entender.

Aplicaciones

Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy específicas como control de tráfico aéreo, bolsas de valores, control de refinerías, control de laminadores. También en la rama de la automovilística y de la electrónica de consumo, las aplicaciones de tiempo real están creciendo muy rápidamente.

Otros campos de aplicación de los Sistemas Operativos de tiempo real son los siguientes:

  • Control de trenes
  • Telecomunicaciones
  • Sistemas de fabricación integrada
  • Producción y distribución de energía eléctrica
  • Control de edificios
  • Sistemas multimedia

Relación con los Sistemas Embebidos[2]

Los sistemas embebidos son sistemas diseñados para realizar funciones especificas con características físicas limitadas donde la mayoría de sus componentes suelen estar incluidos en una placa base (sondas y sensores, botones, perilla de control, etc.) y con restricciones de tiempos cortos de respuesta.

El software en tiempo real es ideal para sistemas que deban cumplir con plazos específicos donde se debe garantizar que la predicción de la duración de la ejecución de tareas se realice con precisión. Los sistemas embebidos en tiempo real son una subcategoría de los sistemas embebidos que se centran en la ejecución oportuna de sus tarea por lo que se hace uso de software de tiempo real para lograr el objetivo.

Los sistemas embebidos, cuentan con procesos con protección que recupera recursos una vez que un proceso finaliza involuntariamente para evitar fugas de recursos. El sistema operativo se basa en técnicas de software, protección de memoria de hardware y distinción de supervisor/usuario dentro del conjunto de instrucciones del procesador para evitar accidentes de proceso o acciones maliciosas que dañen otros procesos y el sistema operativo por lo que el uso de un sistema operativo de tiempo real puede mejorar considerablemente el desempeño y la seguridad del sistema embebido.

Los sistemas operativos en tiempo real  se pueden considerar como una solución práctica para el uso de sistemas embebidos, especialmente en escenarios donde se requieren múltiples puntos de control para comportarse de manera predecible bajo niveles de prioridad controlados.

Algunos Ejemplos

Principales fabricantes

Principales fabricantes de sistemas RTOS en 2009[3]

Referencias

  1. Williams, Lawrence (21 de enero de 2021). «Real-time operating system (RTOS): Components, Types, Examples». www.guru99.com (en inglés estadounidense). Consultado el 28 de mayo de 2022. 
  2. «The Role of an RTOS in an Embedded System». IntervalZero (en inglés estadounidense). 7 de abril de 2018. Consultado el 28 de mayo de 2022. 
  3. . Archivado desde el original el 14 de julio de 2014. Consultado el 13 de julio de 2014. 

Enlaces externos

  • EasyTask OS
  • MaRTE OS
  • FreeRTOS
  • SOOS Project
  • Curso de FreeRTOS con microcontroladores PIC
  • DuinOS (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).
  • Milos
  • OsaRTOS para PIC
  •   Datos: Q213666
  •   Multimedia: Real-time operating systems / Q213666

sistema, operativo, tiempo, real, este, artículo, sección, necesita, wikificado, favor, edítalo, para, cumpla, convenciones, estilo, este, aviso, puesto, noviembre, 2021, sistema, operativo, tiempo, real, aquel, sido, desarrollado, para, aplicaciones, tiempo, . Este articulo o seccion necesita ser wikificado por favor editalo para que cumpla con las convenciones de estilo Este aviso fue puesto el 1 de noviembre de 2021 Un sistema operativo de tiempo real es aquel que ha sido desarrollado para aplicaciones de tiempo real Como tal se le exige correccion en sus respuestas bajo ciertas restricciones de tiempo Si no las respeta se dira que el sistema ha fallado Para garantizar el comportamiento correcto en el tiempo requerido se necesita que el sistema sea predecible Indice 1 Donde utilizarlos 2 Caracteristicas Generales 3 Procesador 4 Diseno 5 Programacion 6 Objetos 7 Comunicacion entre Tareas 8 Interrupciones 9 Memoria 10 Planificacion de tiempo real 11 Comunicaciones 12 Tipos de Sistemas Operativos en Tiempo Real 1 12 1 Tiempo real duro 12 2 Tiempo real firme 12 3 Tiempo real suave 13 Desventajas de utilizar Sistemas Operativos en Tiempo Real 1 14 Aplicaciones 15 Relacion con los Sistemas Embebidos 2 16 Algunos Ejemplos 17 Principales fabricantes 18 Referencias 19 Enlaces externos Donde utilizarlos Editar Este tipo de sistemas son usados tipicamente para aplicaciones integradas que normalmente tienen las siguientes caracteristicas Utilizan poca memoria Cualquier evento en el soporte fisico puede hacer que se ejecute una tarea Multi arquitectura Tiempos de respuesta predecibles para eventos electronicosCaracteristicas Generales EditarUsado tipicamente para aplicaciones integradas normalmente tiene las siguientes caracteristicas No utiliza mucha memoria Cualquier evento en el soporte fisico puede hacer que se ejecute una tarea Multi arquitectura codigo portado a cualquier tipo de CPU Muchos tienen tiempos de respuesta predecibles para eventos electronicos Comunicacion entre procesos Las comunicaciones entre procesos estan soportadas de una manera precisa y estable empleando mecanismos como el uso de semaforos el paso de mensajes y el uso de memoria compartida Determinismo Realiza operaciones en instantes de tiempo fijos predeterminados o dentro de intervalos de tiempo predeterminados Cuando multiples procesos compiten por recursos y tiempo de procesador ningun sistema puede ser totalmente determinista En un sistema operativo de tiempo real las solicitudes de servicio de los procesos son dirigidas por eventos externos y temporizaciones El grado en el que un sistema operativo puede satisfacer de manera determinista las solicitudes depende primero de la velocidad a la que es capaz de responder a las interrupciones y segundo de si el sistema tiene capacidad suficiente para manejar todas las solicitudes dentro del tiempo requerido En sistemas operativos no de tiempo real este retardo puede estar en el rango de decenas a cientos de milisegundos mientras que en un sistema operativo de tiempo real este retardo puede tener un limite superior en algun punto entre los pocos microsegundos y el milisegundo Reactividad Cuanto tiempo tarda el sistema operativo despues del reconocimiento en servir la interrupcion La reactividad incluye los siguientes aspectos 1 La cantidad de tiempo necesario para manejar inicialmente la interrupcion y comenzar a ejecutar la rutina de servicio de la interrupcion RSI Si la ejecucion de la RSI necesita un cambio de proceso entonces el retardo sera mayor que si la RSI puede ser ejecutada dentro del contexto del proceso actual 2 La cantidad de tiempo necesario para realizar la RSI Esto depende generalmente de la plataforma hardware 3 El efecto del anidamiento de interrupciones Si una RSI puede ser interrumpida por la llegada de otra interrupcion entonces el servicio se retrasara El determinismo y la reactividad juntos conforman el tiempo de respuesta a eventos externos Los requisitos de tiempo de respuesta son criticos para los sistemas de tiempo real dado que estos sistemas deben cumplir requisitos de tiempo impuestos por individuos dispositivos o flujos de datos ex ternos al sistema Control del usuario En un sistema operativo no de tiempo real el usuario no tiene control sobre la funcion de planificacion o bien el sistema operativo solo puede proporcionar una guia burda como la agrupacion de usuarios en mas de una clase de prioridad En un sistema de tiempo real es esencial permitirle al usuario un control de grano fino sobre la prioridad de la tarea El usuario debe ser capaz de distinguir entre tareas duras y suaves y de especificar prioridades relativas dentro de cada clase Un sistema de tiempo real puede tambien permitirle al usuario especificar caracteristicas como el uso de paginacion en los procesos que procesos deben residir siempre en memoria principal que algoritmos de transferencia a disco deben utilizarse que derechos tienen los procesos de las varias bandas de prioridad etcetera Fiabilidad Un sistema de tiempo real ha de responder y controlar eventos en tiempo real La perdida o degradacion de sus prestaciones puede tener consecuencias catastroficas Operacion de fallo suave Se refiere a la habilidad del sistema de fallar de tal manera que se preserve tanta capacidad y datos como sea posible Un sistema de tiempo real intentara o bien corregir el problema o bien minimizar sus efectos continuando en todo caso en ejecucion Un sistema de tiempo real es estable si en los casos en los que sea imposible cumplir los plazos de todas las tareas el sistema cumplira los plazos de sus tareas mas criticas de mas alta prioridad aunque los plazos de algunas tareas menos criticas no se satisfagan Para cumplir los requisitos precedentes los sistemas operativos de tiempo real incluyen de forma representativa las siguientes caracteristicas Cambio de proceso o hilo rapido Pequeno tamano que esta asociado con funcionalidades minimas Capacidad para responder rapidamente a interrupciones externas Multitarea con herramientas para la comunicacion entre procesos como semaforos senales y eventos Utilizacion de ficheros secuenciales especiales que pueden acumular datos a alta velocidad Planificacion expulsiva basada en prioridades Minimizacion de los intervalos durante los cuales se deshabilitan las interrupciones Primitivas para retardar tareas durante una cantidad dada de tiempo y para parar retomar tareas Alarmas y temporizaciones especiales Lo mas importante de un sistema de tiempo real es el planificador de tareas a corto plazo En el diseno de tal planificador la equidad y la minimizacion del tiempo medio de respuesta no son lo mas importante Lo que es importante es que todas las tareas de tiempo real duro se completen o comiencen en su plazo y que tantas tareas de tiempo real suave como sea posible tambien se completen o comiencen en su plazo VentajasUn Sistema Operativo en Tiempo Real es pequeno rapido receptivo y determinista Esto significa que ejecutara tareas de manera rapida y eficiente respondiendo como se espera cada vez Debido a la importancia de su dispositivo host la infraestructura RTOS es mas segura y es menos probable que se bloquee o falle Finalmente un RTOS esta orientado al desarrollador lo que significa que continua implementando actualizaciones que ayudan a los usuarios a codificar de manera mas efectiva Componentes de un sistema operativoUn sistema operativo posee tres componentes esenciales o paquetes de software que permiten la interaccion con el hardware Sistema de archivos Es el registro de archivos donde adquieren una estructura arborea Interpretacion de comandos Se logra con aquellos componentes que permiten la interpretacion de los comandos que tienen como funcion comunicar las ordenes dadas por el usuario en un lenguaje que el hardware pueda interpretar sin que aquel que de las ordenes conozca dicho lenguaje Nucleo Permite el funcionamiento en cuestiones basicas como la comunicacion entrada y salida de datos gestion de procesos y la memoria entre otros Procesador EditarEste tipo de sistemas operativos no es necesariamente eficiente en el sentido de tener una capacidad de procesamiento alta El algoritmo de programacion especializado y a veces una tasa de interrupcion del reloj alta pueden interferir en la capacidad de procesamiento Aunque para proposito general un procesador moderno suele ser mas rapido para programacion en tiempo real deben utilizarse procesadores lo mas predecibles posible sin paginacion Todos estos factores en un procesador anade una aleatoriedad que hace que sea dificil demostrar que el sistema es viable es decir que cumpla con los plazos de tiempo para la ejecucion de las tareas y la atencion de los servicios o interrupciones Un sistema operativo de tiempo real puede ser implementado en microcontroladores o procesadores digitales de senal DSP s asi se pueden desarrollar aplicaciones embebidas en diferentes areas de la electronica Diseno EditarHay dos disenos basicos Un sistema operativo guiado por eventos solo cambia de tarea cuando un evento necesita el servicio Un diseno de comparticion de tiempo cambia de tareas por interrupciones del reloj y por eventos El diseno de comparticion de tiempo gasta mas tiempo de la CPU en cambios de tarea innecesarios Sin embargo da una mejor ilusion de multitarea Normalmente se utiliza un sistema de prioridades fijas Uno de los algoritmos que suelen usarse para la asignacion de prioridades es el Rate Monotonic Schedule Si el conjunto de tareas que tenemos es viable con alguna asignacion de prioridades fijas tambien es viable con el Rate Monotonic Schedule donde la tarea mas 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 Programacion EditarEn los disenos tipicos una tarea tiene tres estados ejecucion preparada y bloqueada La mayoria de las tareas estan 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 disenar el programador Usualmente la estructura de los datos de la lista de tareas preparadas en el programador esta disenada para que cada busqueda insercion y eliminacion necesiten interrupciones de cierre solamente durante un periodo muy pequeno cuando se buscan partes de la lista muy definidas Esto significa que otras tareas pueden operar en la lista asincronicamente mientras que se busca Una buena programacion tipica es una lista conectada bidireccional de tareas preparadas ordenadas por orden de prioridad Hay que tener en cuenta que no es rapido de buscar sino determinista La mayoria de las listas de tareas preparadas solo tienen dos o tres entradas por lo que una busqueda secuencial es usualmente la mas rapida porque requiere muy poco tiempo de instalacion El tiempo de respuesta critico es el tiempo que necesita para poner en la cola una nueva tarea preparada y restaurar el estado de la tarea de mas alta prioridad En un sistema operativo en tiempo real bien disenado preparar una nueva tarea necesita de 3 a 20 instrucciones por cada entrada en la cola y la restauracion de la tarea preparada de maxima 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 Objetos EditarLos objetos de Sistemas Operativos de Tiempo Real son capaces de compartir informacion y sincronizar la ejecucion de tareas La mayoria de estos sistemas tienen objetos como Cola de mensajes Cola de entrada y salida FIFO para el paso de datos Los datos pueden enviarse por copia o por referencia puntero Se utiliza para enviar datos entre tareas o entre interrupcion y tareaSemaforo Puede tratarse como un contador de referencia para registrar la disponibilidad de un determinado curso Puede ser un semaforo binario o de conteo Se utiliza para vigilar el uso de recursos o sincronizar la ejecucion de tareasMutex Similar al semaforo binario generalmente utilizado para proteger el uso de un solo recurso exclusion mutua El mutex de FreeRTOS viene con un mecanismo de herencia de prioridades para evitar el problema de la inversion de prioridades condicion en la que una tarea de alta prioridad termina esperando a otra de menor prioridad Buzon Almacen simple para compartir una sola variable Puede considerarse como una cola de un solo elementoGrupo de eventos Grupo de condiciones disponibilidad de semaforo cola bandera de evento etc La tarea puede bloquearse y esperar a que se cumpla una condicion de combinacion especifica Disponible en Zephyr como API de sondeo en FreeRTOS como QueueSetsComunicacion entre Tareas EditarLas diferentes tareas de un sistema no pueden utilizar los mismos datos o componentes fisicos al mismo tiempo Hay dos metodos para tratar este problema Uno de los metodos utiliza semaforos En general el semaforo binario puede estar cerrado o abierto Cuando esta cerrado hay una cola de tareas esperando la apertura del semaforo Los problemas con los disenos de semaforos son bien conocidos inversion de prioridades y Bloqueo mutuo deadlocks En la inversion de prioridades una tarea de mucha prioridad espera porque otra tarea de baja prioridad tiene un semaforo Si una tarea de prioridad intermedia impide la ejecucion de la tarea de menor prioridad la de mas alta prioridad nunca llega a ejecutarse Una solucion tipica seria otorgar a la tarea que tiene el semaforo la prioridad de la tarea mas prioritaria de las que estan esperando dicho semaforo Esto se denomina algoritmo de herencia basica de prioridad En un punto muerto dos tareas T1 T2 pretenden adquirir dos semaforos semA semB en orden inverso En este caso si T1 adquiere semA y T2 adquiere semB cuando intenten adquirir el segundo semaforo no podran 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 intervencion externa Esto se resuelve normalmente mediante un diseno por ej obligando a adquirir los semaforos en un orden concreto La otra solucion es que las tareas se manden mensajes entre ellas Esto tiene los mismos problemas La inversion de prioridades tiene lugar cuando una tarea esta tratando un mensaje de baja prioridad e ignora un mensaje de mas alta prioridad en su correo Los puntos muertos ocurren cuando dos tareas realizan envios bloqueantes se quedan en la funcion de envio 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 saldra de la funcion de envio quedando ambas bloqueadas ya que no podran llegar a la funcion de recepcion Puede resolverse reordenando envios y recepciones o empleando envios no bloqueantes o temporizados Aunque su comportamiento en tiempo real es algo mas dificil de analizar que los sistemas de semaforos los sistemas basados en mensajes normalmente son mas sencillos de desarrollar que los sistemas de semaforo Interrupciones EditarLas interrupciones son la forma mas comun de pasar informacion 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 informacion 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 interrupcion y procese la informacion obtenida antes de que se presente la siguiente interrupcion Como el microprocesador normalmente solo puede atender una interrupcion a la vez es necesario que los controladores de tiempo real se ejecuten en el menor tiempo posible Esto se logra no procesando la senal dentro de la interrupcion sino enviando un mensaje a una tarea o solucionando un semaforo que esta siendo esperado por una tarea El programador se encarga de activar la tarea y esta se encarga de adquirir la informacion y completar el procesamiento de la misma El tiempo que transcurre entre la generacion de la interrupcion y el momento en el cual esta es atendida se llama latencia de interrupcion El inverso de esta latencia es una frecuencia llamada frecuencia de saturacion si las senales que estan siendo procesadas tienen una frecuencia mayor a la de saturacion el sistema sera fisicamente incapaz de procesarlas En todo caso la mayor frecuencia que puede procesarse es mucho menor que la frecuencia de saturacion y depende de las operaciones que deban realizarse sobre la informacion recibida Memoria EditarHay 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 estandar 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 estan en uso Esto puede provocar que se pare un programa sin posibilidad de obtener memoria aunque en teoria exista suficiente memoria Una solucion es tener una lista vinculada LIFO de bloques de memoria de tamano fijo Esto funciona asombrosamente bien en un sistema simple La paginacion suele desactivarse en los sistemas en tiempo real ya que es un factor bastante aleatorio e impredecible que varia el tiempo de respuesta y no nos permite asegurar que se cumpliran los plazos debido al trasiego de paginas de memoria con un dispositivo de almacenamiento thrashing Planificacion de tiempo real EditarLos distintos enfoques de la planificacion dependen de 1 cuando el sistema realiza analisis de planificabilidad y si lo hace de 2 si se realiza estatica o dinamicamente y de 3 si el resultado del analisis produce un plan de planificacion de acuerdo al cual se desarrollaran las tareas en tiempo de ejecucion En base a estas consideraciones se identifican las siguientes clases de algoritmos Enfoques estaticos dirigidos por tabla En estos se realiza un analisis estatico de la factibilidad de la planificacion El resultado del analisis es una planificacion que determina cuando en tiempo de ejecucion debe comenzar a ejecutarse cada tarea Enfoques estaticos expulsivos dirigidos por prioridad Tambien se realiza un analisis esta tico pero no se obtiene una planificacion En cambio el analisis se utiliza para asignar prioridades a las tareas y asi puede utilizarse un planificador expulsivo tradicional basado en prioridades Enfoques dinamicos basados en un plan La factibilidad se determina en tiempo de ejecucion dinamicamente en vez de antes de comenzar la ejecucion estaticamente Una nueva tarea sera aceptada como ejecutable solo si es posible satisfacer sus restricciones de tiempo Uno de los resultados del analisis de factibilidad es un plan que se usara para decidir cuando poner en marcha la tarea Enfoques dinamicos de mejor esfuerzo No se realiza analisis de factibilidad El sistema intenta cumplir todos los plazos y aborta la ejecucion de cualquier proceso cuyo plazo haya fallado 2 1 Planificacion estatica dirigida por tabla Aplicable a tareas que son periodicas los datos de entrada para el analisis son tiempo periodico de llegada tiempo de ejecucion plazo periodico de finalizacion y prioridad relativa de cada tarea El planificador intenta encontrar un plan que le permita cumplir todos los requisitos de todas las tareas periodicas Este es un enfoque predecible pero no flexible un cambio en cualquiera de los requisitos de las tareas requiere rehacer toda la planificacion Algoritmos de planificacion plazo mas cercano primero tecnicas de plazos periodicos 2 2 Planificacion estatica con expulsion dirigida por prioridad Hace uso del mecanismo de planificacion expulsivo dirigido por prioridades Fig 2 En un sistema de tiempo real la asignacion de prioridades esta relacionada con las restricciones de tiempo asociadas a cada tarea Algoritmos de planificacion algoritmo de tasa monotona asigna prioridades estaticas a las tareas basandose en sus longitudes y sus periodos 2 3 Planificacion dinamica basada en un plan Cuando llega una nueva tarea pero antes de que comience su ejecucion se intentara crear un plan que contenga las tareas previamente planificadas asi como la nueva Si la tarea recien llegada puede ser planificada de manera que se cumplan sus plazos sin que ninguna otra tarea planificada anteriormente pierda un plazo la nueva tarea sera aceptada poniendose en marcha el nuevo plan de planificacion 2 4 Planificacion dinamica de mejor esfuerzo Cuando llega una tarea el sistema le asigna una prioridad basada en las caracteristicas de la misma De forma caracteristica se utiliza algun tipo de planificacion basada en plazos como la planificacion del plazo mas cercano Asi las tareas no son periodicas y por tanto no es posible realizar un analisis estatico de planificabilidad Con este tipo de planificacion no sabremos si una determinada restriccion de tiempo sera satisfecha hasta que venza su plazo o la tarea se complete Comunicaciones EditarPara las comunicaciones se suelen usar conexiones o redes deterministas CAN bus o puertos serie ya que las redes mas usuales como Ethernet son indeterministas y no pueden garantizarnos el tiempo de respuesta El sistema CAN bus es utilizado para la interconexion de dispositivos electronicos de control ECU en los vehiculos Tipos de Sistemas Operativos en Tiempo Real 1 EditarTiempo real duro Editar En estos tipos de sistemas operativos los plazos de tiempo limite son muy estrictos lo que significa que las tareas que se realicen deben comenzar su ejecucion en el tiempo programado especificado y debe completarse forzosamente dentro del periodo de tiempo que se le asigne Tiempo real firme Editar En este tipo de sistema operativo tambien se debe cumplir con plazos de tiempo sin embargo el incumplimiento en algun plazo limite puede no ser de gran impacto por lo que existe cierta flexibilidad con el tiempo de finalizacion de la tarea lo puede causar efectos no deseados en el funcionamiento del sistema como la reduccion de la calidad Tiempo real suave Editar En este tipo se aceptan retrasos por parte del propio sistema operativo Hay un periodo de tiempo limite para una tarea especifica pero son aceptables los retrasos que se puedan dar siempre y cuando el tiempo no sea muy alto es decir se manejar retrasos suavemente Desventajas de utilizar Sistemas Operativos en Tiempo Real 1 EditarPuede ejecutar tareas minimas juntas y se concentra solo en aquellas aplicaciones que contienen un error para poder evitarlas Es el sistema que se concentra en unas pocas tareas Por lo tanto es realmente dificil para estos sistemas realizar multiples tareas Se requieren controladores especificos para el sistema operativo para que pueda ofrecer un tiempo de respuesta rapido para interrumpir las senales lo que ayuda a mantener su velocidad Utiliza muchos recursos que a veces no son adecuados para el sistema lo que hace que este sea costoso Las tareas que tienen una prioridad baja deben esperar mucho tiempo ya que el sistema operativo mantiene la precision del programa que estan en ejecucion El cambio minimo de tareas se realiza en sistemas operativos en tiempo real Utiliza algoritmos complejos que son dificiles de entender Aplicaciones EditarMuchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy especificas como control de trafico aereo bolsas de valores control de refinerias control de laminadores Tambien en la rama de la automovilistica y de la electronica de consumo las aplicaciones de tiempo real estan creciendo muy rapidamente Otros campos de aplicacion de los Sistemas Operativos de tiempo real son los siguientes Control de trenes Telecomunicaciones Sistemas de fabricacion integrada Produccion y distribucion de energia electrica Control de edificios Sistemas multimediaRelacion con los Sistemas Embebidos 2 EditarLos sistemas embebidos son sistemas disenados para realizar funciones especificas con caracteristicas fisicas limitadas donde la mayoria de sus componentes suelen estar incluidos en una placa base sondas y sensores botones perilla de control etc y con restricciones de tiempos cortos de respuesta El software en tiempo real es ideal para sistemas que deban cumplir con plazos especificos donde se debe garantizar que la prediccion de la duracion de la ejecucion de tareas se realice con precision Los sistemas embebidos en tiempo real son una subcategoria de los sistemas embebidos que se centran en la ejecucion oportuna de sus tarea por lo que se hace uso de software de tiempo real para lograr el objetivo Los sistemas embebidos cuentan con procesos con proteccion que recupera recursos una vez que un proceso finaliza involuntariamente para evitar fugas de recursos El sistema operativo se basa en tecnicas de software proteccion de memoria de hardware y distincion de supervisor usuario dentro del conjunto de instrucciones del procesador para evitar accidentes de proceso o acciones maliciosas que danen otros procesos y el sistema operativo por lo que el uso de un sistema operativo de tiempo real puede mejorar considerablemente el desempeno y la seguridad del sistema embebido Los sistemas operativos en tiempo real se pueden considerar como una solucion practica para el uso de sistemas embebidos especialmente en escenarios donde se requieren multiples puntos de control para comportarse de manera predecible bajo niveles de prioridad controlados Algunos Ejemplos EditarHaiku sistema operativo QNX PuyOL RT 11 MaRTE OS EasyTasks LynxOS RedHat Embedded Linux eCos Linux SOOS VxWorks Windows CE Linchos UNIX Algunos DuinOS RTAI Symbian BlackBerry 10 Microware OS 9 FreeRTOSPrincipales fabricantes EditarPrincipales fabricantes de sistemas RTOS en 2009 3 Estados Unidos Nucleus RTOS filial de Mentor Graphics Suecia ENEA OSE filial de ENEA AB Estados Unidos Wind River Systems filial de Intel Corporation Referencias Editar a b Williams Lawrence 21 de enero de 2021 Real time operating system RTOS Components Types Examples www guru99 com en ingles estadounidense Consultado el 28 de mayo de 2022 The Role of an RTOS in an Embedded System IntervalZero en ingles estadounidense 7 de abril de 2018 Consultado el 28 de mayo de 2022 Copia archivada Archivado desde el original el 14 de julio de 2014 Consultado el 13 de julio de 2014 Enlaces externos EditarEasyTask OS MaRTE OS FreeRTOSDesarrollo de drivers y aplicaciones en sistemas embebidos FreeRtos enlace roto disponible en Internet Archive vease el historial la primera version y la ultima Ing Marcelo Lorenzati Universidad Nacional de Mar del Plata Foro FreeRTOS en castellano enlace roto disponible en Internet Archive vease el historial la primera version y la ultima SOOS Project Curso de FreeRTOS con microcontroladores PIC DuinOS enlace roto disponible en Internet Archive vease el historial la primera version y la ultima Milos OsaRTOS para PIC Datos Q213666 Multimedia Real time operating systems Q213666 Obtenido de https es wikipedia org w index php title Sistema operativo de tiempo real amp oldid 143903807, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos