¿Ventajas de usar un RTOS como QNX o VxWorks en lugar de Linux?

14

Al desarrollar una solución que requiere un sistema operativo en tiempo real, ¿qué ventajas tendría un sistema operativo como QNX o VxWorks sobre Linux?

O para decirlo de otra manera, dado que estos sistemas operativos están diseñados específicamente para uso incorporado en tiempo real, a diferencia de Linux, que es un sistema más general que puede adaptarse al uso en tiempo real, ¿cuándo necesitaría usar uno de estos sistemas operativos en lugar de Linux?

Justin Ethier
fuente

Respuestas:

13

Algunos sistemas embebidos (a) necesitan cumplir requisitos difíciles en tiempo real y, sin embargo (b) tienen hardware muy limitado (lo que hace que sea aún más difícil cumplir esos requisitos).

Si no puede cambiar el hardware, hay varias situaciones en las que se ve obligado a descartar Linux y usar otra cosa:

  • Quizás la CPU ni siquiera tiene una MMU, lo que hace que sea imposible ejecutar Linux (excepto uClinux, y que yo sepa, uClinux no es en tiempo real).
  • Quizás la CPU es relativamente lenta, y la latencia de interrupción en el peor de los casos en Linux no cumple con algún requisito difícil, y algunos otros RTOS ajustados para una latencia de interrupción extremadamente baja en el peor de los casos pueden cumplir con el requisito.
  • Quizás el sistema tiene muy poca RAM. Hace unos años, una configuración mínima de Linux requería alrededor de 2 MB de RAM; una configuración mínima de eCos (con una capa de compatibilidad que le permite ejecutar algunas aplicaciones diseñadas originalmente para Linux) requería alrededor de 20 kB de RAM.
  • Tal vez no haya un puerto de Linux para su hardware, y no haya suficiente tiempo para portar Linux antes de que necesite lanzar (¡juego de palabras!) Su sistema. Muchos de los RTOS más simples tardan mucho menos tiempo en portarse a un nuevo hardware que Linux.
David Cary
fuente
¿Qué tipo de código es portátil entre los diferentes RTOS? También escuché que algunas soluciones son de arriba hacia abajo (usando RTOS), mientras que otras se construyen de abajo hacia arriba (agregando características del sistema operativo al metal desnudo gradualmente a medida que las necesita).
CMCDragonkai
@CMCDragonkai: los programas escritos en la API EL / IX pueden ejecutarse en cualquier sistema operativo compatible con EL / IX. Los programas escritos en la API POSIX pueden ejecutarse en cualquier sistema operativo compatible con POSIX. Los programas escritos en la API de uITRON pueden ejecutarse en cualquier sistema operativo compatible con uITRON.
David Cary
@CMCDragonkai: ¿Quizás los programmers.stackexchange.com serían el lugar más apropiado para hacer preguntas sobre los diferentes RTOS?
David Cary
8

No he hecho ningún trabajo en tiempo real, así que tómalo con un grano de sal ...

Me han dicho que hay dos categorías de "tiempo real": tiempo real duro y tiempo real blando.

"Tiempo real suave" informalmente significa "hacerlo lo más rápido posible". Creo que Linux en una CPU moderna es bueno para este tipo de cosas.

"Tiempo real duro" informalmente significa "hacerlo dentro de una ventana de tiempo requerida". La ventana puede ser bastante pequeña, milisegundos o algo así. Los sistemas de control de vuelo para misiles de crucero o vehículos de lanzamiento satelital parecen ser el ejemplo canónico. Los sistemas de control de procesos industriales también pueden necesitar esto. El gusano Stuxnet parece haber interferido con los sistemas que hacen este tipo de control.

Usaría RTOS en la última situación. RTOS a menudo garantiza la entrega de una interrupción en menos de tantas instrucciones o tics de reloj o lo que sea.

Otra consideración podría ser que un RTOS está diseñado, probado y / o "probado" para no consumir espacio de pila sin límite. Puede vivir dentro de una cierta cantidad mínima de memoria, y cosas como un "OOM Killer" no existen porque probablemente nunca sean necesarias. Algunas de las características más tontas de los primeros FORTRAN provienen de este tipo de requisitos. Cuando compiló un programa FORTRAN II, sabía exactamente cuánta pila y cuánto montón necesitaba, ya que no podía recurrir y no podía asignar nada dinámicamente.

Siendo realistas, la segunda consideración (consumo máximo de memoria garantizado) puede ser más importante en algunas aplicaciones críticas para la seguridad que la "latencia de interrupción garantizada de 0.001 segundos".

También me imagino que despojando el proceso de selección de la hoja de parra de la verborrea de soporte, encontrará que los ingenieros eligen un RTOS porque "los requisitos lo dicen".

Bruce Ediger
fuente