¿Cuál es la diferencia entre RTOS y Embedded Linux?
embedded-linux (1)
Linux es un sistema operativo de propósito general (GPOS); su aplicación a los sistemas integrados generalmente está motivada por la disponibilidad de soporte de dispositivos, sistemas de archivos, conectividad de red y soporte de UI. Todas estas cosas pueden estar disponibles en un RTOS, pero a menudo con un soporte menos amplio o con un costo adicional o esfuerzo de integración.
Muchos RTOS no son sistemas operativos completos en el sentido de que lo es Linux, ya que forman parte de una biblioteca de enlaces estáticos que proporcionan solo la programación de tareas, IPC, sincronización de sincronización y servicios de interrupción y poco más, esencialmente solo el núcleo de programación. Dicha biblioteca está vinculada con el código de su aplicación para producir un ejecutable único que su sistema arranca directamente (o mediante un gestor de arranque). La mayoría de los RTOS no admiten directamente la carga y descarga de código dinámicamente desde un sistema de archivos como lo haría con Linux: todo está allí al inicio y se ejecuta hasta que se apaga.
Críticamente Linux no es capaz en tiempo real. Un RTOS proporciona garantías de programación para garantizar un comportamiento determinista y eventos e interrupciones de respuesta oportuna. En la mayoría de los casos esto es a través de un algoritmo de programación preventivo basado en prioridad, donde la tarea de mayor prioridad lista para ejecutarse siempre se ejecuta, inmediatamente, anticipando cualquier tarea de menor prioridad sin un rendimiento específico o abandono de la CPU, o finalización de un tiempo -rebanada.
Linux tiene varias opciones de programación, incluido un programador en tiempo real, pero esto es, en el mejor de los casos, "suave" en tiempo real, un término que no me gusta porque está mal definido, y básicamente significa en tiempo real, la mayoría de las veces, pero a veces no. Si su aplicación no necesita "tiempo duro" en tiempo real, está bien, pero las latencias típicas en Linux en tiempo real estarán en el orden de decenas o cientos de microsegundos, mientras que un kernel en tiempo real RTOS típico puede lograr desde latencias de Cero a unos pocos microsegundos.
Otro problema con Linux incorporado es que necesita importantes recursos de CPU, tal vez> 200MIPS, procesador de 32 bits, idealmente con una MMU, 4Mb de ROM y 16MB de RAM para casi iniciar (lo que puede llevar varios segundos). Por otro lado, un RTOS puede aumentar en milisegundos, ejecutarse en menos de 10 Kb, en microcontroladores desde 8 bits hacia arriba. Esto puede tener un impacto significativo en el costo del sistema para la producción en volumen a pesar de ser ostensiblemente "libre".
Hay productos RTOS más grandes que exhiben algunas de las características de un GPOS como carga dinámica, sistemas de archivos, redes, GUI (por ejemplo, en QNX) y muchos RTOS proporcionan una API POSIX (generalmente secundaria a su API nativa en tiempo real) por ejemplo, VxWorks y nuevamente QNX, por lo que una gran cantidad de código desarrollado para Linux y Unix se puede portar con relativa facilidad. Estos productos RTOS más grandes y completos siguen siendo escalables, por lo que no se incluye la funcionalidad no requerida. Linux en comparación tiene una escalabilidad mucho más limitada.
RTOS y Linux incorporado se utilizan para la programación de sistemas integrados. ¿Es Embedded Linux un RTOS? ¿Alguien puede enumerar la comparación o la diferencia, por favor?