Gracias por A2A ..
El mejor ejemplo de proyecto basado en RTOS en el mundo real es la nave espacial Mars Pathfinder.
Allí los científicos se han enfrentado a un problema, si conoce RTOS lo sabrá. Era una inversión prioritaria.
- ¿Alguien tiene un código C (para el microcontrolador 8051 incorporado) para calcular el valor RMS de la onda sinusoidal leída por un ADC de 8 bits?
- ¿Por qué usamos un Aaurdino Uno en mega328p en lugar de otro microcontrolador?
- Cómo convertirse en un buen programador integrado
- ¿Por qué son importantes los sistemas integrados, que son herramientas, dispositivos y equipos pequeños, rápidos y muy potentes que se han convertido en parte de nuestra vida cotidiana?
- ¿C ++ es viable para una línea de sistemas integrados? Me encanta C ++ por su flexibilidad, pero ¿crees que se corta en esa línea? Si es así, ¿por dónde empiezo?
Las aplicaciones del Pathfinder fueron programadas por VxWorks RTOS. Dado que VxWorks proporciona una programación de prioridad preventiva de subprocesos, las tareas se ejecutaron como subprocesos con prioridades determinadas por su relativa urgencia.
La tarea de recopilación de datos meteorológicos se ejecutó como un subproceso poco frecuente y de baja prioridad, y utilizó el bus de información sincronizado con bloqueos de exclusión mutua (mutexes). Otros subprocesos de mayor prioridad tenían prioridad cuando era necesario, incluida una tarea de administración de bus de muy alta prioridad, que también accedía al bus con mutexes. Desafortunadamente, en este caso, una tarea de comunicación de larga duración, que tiene mayor prioridad que la tarea meteorológica, pero menor que la tarea de gestión del bus, impidió que se ejecutara.
Pronto, un temporizador de vigilancia notó que la tarea de administración del bus no se había ejecutado durante algún tiempo, concluyó que algo había salido mal y ordenó un reinicio total del sistema. (Más tarde, los ingenieros confesaron que se habían producido reinicios del sistema durante las pruebas previas al vuelo. Los atribuyeron a un problema de hardware y volvieron a centrarse en el software de aterrizaje de misión crítica)
Los ingenieros trabajaron frenéticamente en una réplica de laboratorio para diagnosticar y solucionar el problema, y finalmente detectaron una inversión prioritaria. Una inversión de prioridad ocurre cuando una tarea de alta prioridad es indirectamente precedida por una tarea de prioridad media que “invierte” las prioridades relativas de las dos tareas. Esta es una clara violación del modelo de prioridad que dice que las tareas de alta prioridad solo pueden evitarse mediante tareas de mayor prioridad y brevemente por tareas de baja prioridad que completarán rápidamente su uso de un recurso compartido por las tareas de alta y baja prioridad.
Aquí encontrará más detalles: ¿Qué pasó realmente con el software de la nave espacial Mars Pathfinder?