# VxWorks

VxWorks es un sistema operativo de tiempo real desarrollado como software propietario por Wind River Systems. Se puso a la venta la primera versión en 1987. Es utilizado para sistemas embebidos que habitualmente necesitan una respuesta rápida del orden de ms o microsegundos ante interrupciones en su funcionamiento, una reconocida estabilidad y una seguridad certificada. Forma parte, junto con otros sistemas operativos alternativos, de millones de dispositivos electrónicos como cajeros automáticos, impresoras, cámaras fotográficas y en sistemas críticos de complejos productos aeroespaciales como el avión de pasajeros Boeing 787, del robot Curiosity de la NASA, o del avión militar Northrop Grumman X-47B entre otros.

## Características

El sistema operativo esta estructurado en líneas muy generales, con un micronúcleo, que denominan "Wind Kernel", un entorno de trabajo o shell y un programa o conjunto de aplicaciones. Habitualmente se trabaja de manera remota, mediante por ejemplo un ordenador con sistema Linux (habitualmente llamado "host") donde se prepara y se programa el software RTEMS para una vez listo, cargarlo directamente en el dispositivo final.
Las principales características del sistema operativo dependen de la última versión del producto. En la última versión incluye entre otras:
* Un sistema operativo de tiempo real, que ofrece una muy baja latencia (es decir, reacciones muy rápidas de la máquina a una acción, aún a pesar de sacrificar su rendimiento) y una reducida fluctuación al retardo (jitter).
* Hay una separación establecida entre el núcleo y el área de memoria protegida. El núcleo es escalable, modular, se puede ajustar y nuevas versiones en la mayoría de los casos permiten funcionar aplicaciones de versiones anteriores. El micronúcleo de VxWorks 7 consiste solo en 20 kb.
* La interfaz de programación de aplicaciones (API) es compatible con el estándar abierto POSIX de IEEE que asegura un entorno y unos servicios similares en sistemas operativos UNIX y BSD. También es compatible con C++11 y C++14.
* Puede funcionar microprocesadores (CPU) con capacidades de un solo hilo o multi-hilo con multiprocesamiento asimétrico (AMP) y multiprocesamiento simétrico (SMP). En CPU compatibles de 32-bit, 64-bit, de fabricantes como Intel, arquitectura ARM o de la familia arquitectura Power de IBM como PowerPC.
* Acepta compilación de software libre como Clang, y lenguajes de programación como Java, C++.
* Tiene monitor de rendimiento, detección y corrección de errores en código fuente y simbólico.
* Es compatible con estándares certificados como el ISO 26262 para la industria automotriz, el IEC 61508 para la electrónica de consumo, el DO-178C para la aviación, o productos sanitarios de alto riesgo (clase III).
* Trabaja con Protocolo de Información de Encaminamiento (RIP) como sistema de comunicación habitual en enrutadores (router) y redes de comunicación para internet estándar IPv4 e IPv6, con capacidad de dar Calidad de Servicio (QoS).
* Acepta comunicaciones dentro de la norma IEEE 1394, Bluetooth o USB.
* En el área multimedia, puede utilizar archivos con formato JPG, PNG, audio digital en formato PCM, OpenGL ES y OpenVG.
* Es compatible con la interfaz de firmware extensible y unificada (UEFI) con protocolo de seguridad en el arranque mediante firma digital (Security Boot).
* Ofrece seguridad en criptografía.
* Capacidades de virtualización, es decir, ofrece poder dar múltiples cargas de trabajo a la vez para un solo microprocesador.
* Trabaja con dosFS, una organización de archivos compatible con FAT, además de otros como el Sistema de Archivos Interconectado (NFS).
* Tiene un programa informático llamado "Wind River Workbench", basado en el software libre Eclipse, como entorno de desarrollo integrado (IDE) compatible multitud de otros sistemas operativos alternativos.

## Historia

Desde su primera versión, hace varias décadas, se han presentado sucesivas versiones incorporando actualizaciones, corrección de errores y mejorando sus características. En una escala temporal:
* 1980, se presenta el sistema operativo en tiempo real llamado VRTX, de la empresa que posteriormente será Ready Systems y posteriormente Mentor Graphics. A mediados de la década, se crea un compilador y unas herramientas de programación para el núcleo de VRTX, con el nombre de VRTX Works o VxWorks.
* 1987, primera versión de la empresa Wind River, como un auténtico sistema operativo independiente con un conjunto de herramientas de programación. Este sistema operativo, multitarea y en tiempo real, se integra bien con sistemas UNIX y puede trabajar con la mayoría de las comunicaciones de redes basadas en dicha arquitectura. En 1988, Wind River publica los manuales de referencia de la versión 4.
* Década de los años 90: VxWorks versión 5. Puede trabajar con microprocesadores Motorola de la familia 68000, Sun Sparc, x86, PowerPC, ARM o Mips. El sistema de archivos se mejora, mayor personalización del núcleo.
* 1995, la empresa Wind River presenta el conjunto de herramientas para un entorno gráfico llamado "Tornado" para ayudar en el desarrollo de aplicaciones y que se puede ejecutar en sistemas operativos alternativos como UNIX y Windows. El mismo año, la NASA lanza la misión Clementine y utiliza el software de VxWorks.
* 1996, VxWorks 5.3. La compañía del sistema operativo Windows para ordenadores domésticos presenta Windows CE, una versión específica para dispositivos embebidos que tendrá un relativo éxito como competidor de VxWorks.
* 1997 consigue llamar la atención en algunos medios de comunicación de Estados Unidos cuando aterriza en Marte la sonda de la misión Mars Pathfinder de la NASA con su sistema operativo.
* 2002, VxWorks 5.5, mantenida por la empresa hasta el año 2018 después de 16 años.
* 2004, VxWorks 6. Se introduce en el mercado de dispositivos embebidos con Linux, asociándose a Red Hat y presenta Wind River Linux. Se añaden mejoras varias en seguridad, mejor soporte POSIX, actualizaciones para trabajo con redes y soporte discontinuado de los microprocesadores de Motorola. Se presenta la nueva versión del IDE basado en Eclipse, ahora llamado "Wind River Workbench". La mayoría de aplicaciones y controladores de dispositivos de la versión 5.5 son compatibles con la nueva versión del núcleo 6. El mismo año los rovers de la NASA, Spirit y Opportunity, aterrizan en Marte con su sistema operativo.
* 2005, VxWorks 6.2. Se añade compatibilidad con el bus USB.
* 2007, VxWorks 6.4. Versión estable de largo soporte. VxWorks 6.5, mejora las capacidades de redes.
* 2008, VxWorks 6.6. Capacidad de usar CPU multihilos.
* 2009, VxWorks 6.7. Código fuente del sistema personalizable.
* 2011, VxWorks 6.9. Añade compatibilidad con CPU y aplicaciones de 64-bit.
* 2012, VxWorks6.9.2. Capacidad de hasta 32 núcleos de microprocesadores de Intel. El rover Curiosity de la NASA aterriza en Marte con su sistema operativo.
* 2014, VxWorks 7. Se añaden mejoras en la escabilidad, seguridad, estabilidad, conectividad o virtualización del sistema. La mayoría de aplicaciones y controladores de dispositivos de la versión 6 son compatibles con la nueva versión del núcleo 7.