QNX

Sistema operativo QNX
DesarrolladorMora
FamiliaUnix
Lanzamiento inicial(1982 )
Versión actual6.6 (marzo de 2014 )
tipo de núcleomicronúcleo en tiempo real
Plataformas compatiblesIntel 8088 , x86 , MIPS , PowerPC , SH-4 , ARM , StrongARM , XScale
Tipo de licenciaSoftware propietario
LicenciaPropietario ( CLUF )
Sitio webwww.qnx.com/

QNX (pronunciado QNX o Q-nix) es un sistema operativo compatible con POSIX similar a Unix comercial en tiempo real , basado en microkernel y dirigido principalmente al mercado de sistemas integrados . El 12 de septiembre de 2007, las fuentes de todo el sistema operativo y la mayoría de los complementos se pusieron a disposición para fines no comerciales.

Descripción

QNX está diseñado como un sistema microkernel , cuya idea básica es construir el sistema operativo como un conjunto de pequeñas partes que ofrecen un servicio específico: estas partes se denominan "servidores" y también reemplazan a los "controladores de dispositivos" del sistema operativo. sistemas tradicionales

Precisamente en este enfoque radica la diferencia entre un sistema microkernel y el kernel de los sistemas operativos tradicionales: en estos, el sistema operativo se compone desde el principio de muchos módulos agrupados en un único gran software (kernel monolítico) que normalmente no se puede separar individualmente de el resto.

En el caso de QNX, el sistema microkernel permite al usuario ensamblar su propio sistema utilizando solo las partes que realmente necesita, dejando completamente de lado las no deseadas, y esto sin modificar o recompilar el propio sistema operativo.

Al mismo tiempo, es posible ampliar el sistema con partes escritas por el usuario o por otros, sin peligro de causar mal funcionamiento en el resto del sistema operativo. Un sistema operativo en tiempo real con funciones completas, que incluye una pila de redes TCP/IP , un sistema de archivos , un intérprete de comandos y más, puede caber cómodamente en un disquete .

A partir de la versión denominada Neutrino QNX se ha portado, además de CPU x86, a una gran cantidad de procesadores diferentes, siempre que estén equipados con unidad de gestión de memoria (MMU), entre ellos: PowerPC , ARM, StrongARM , MIPS y SH-4 .

Originalmente, QNX proporcionaba una licencia de uso para desarrollo no comercial (QNX NC), pero se suspendió en 2003 y ahora solo ofrece la posibilidad de descargar el sistema completo con una licencia temporal de 30 días. Dado que el sistema de desarrollo, en comparación con uno equivalente para un sistema comparable como Windows CE o Linux RTAI , es bastante costoso, este tipo de limitación en realidad impide el estudio y la difusión de este excelente sistema, que podría terminar encerrándose en un nicho. .

El sistema de desarrollo utiliza la plataforma Eclipse , en la que QNX ha integrado sus herramientas de desarrollo y el sistema operativo. Al estar Eclipse desarrollado en Java , el sistema de desarrollo puede ejecutarse en prácticamente cualquier sistema con Java y una interfaz gráfica compatible, incluidos los sistemas Windows, Unix y Linux y el propio QNX.

Historia

Gordon Bell y Dan Dodge fueron las personas que crearon QNX. En 1980 eran estudiantes de la Universidad de Waterloo , y estaban siguiendo el curso de diseño de Sistemas Operativos, donde se esperaba la escritura de núcleos simples en tiempo real. Ambos convencidos de la posibilidad de explotar comercialmente estos sistemas, fundaron Quantum Software Systems en Kanata , Ontario (un área de alta tecnología en las afueras de Ottawa ) en 1982 . En el mismo año, se lanzó la primera versión de QNX , que se ejecuta en la arquitectura Intel 8088 .

QNX se eligió inicialmente como sistema operativo para la computadora Unisys ICON , diseñada por el distrito educativo de Ontario . QNX se usó principalmente para proyectos "grandes", ya que su kernel de 44 KB era demasiado para los pequeños chips de microcomputadora de la época. En este contexto, QNX se ganó la reputación de ser un sistema robusto y confiable y, por lo tanto, se utilizó para aplicaciones industriales. A fines de la década de 1980, la compañía decidió reescribir el kernel y usar el estándar POSIX ; el resultado fue QNX 4 . Gracias a la interfaz POSIX , la transición del software Unix y BSD a QNX se hizo muy simple.

Alrededor de este tiempo, Patrick Hayden y Robin Burgener desarrollaron un nuevo sistema de ventana gráfica: sistema de ventanas.Este concepto se implementó en una GUI patentada , llamada Photon microGUI . Sin embargo, una versión gráfica del sistema X Window también está disponible en QNX .

A fines de la década de 1990, la compañía reescribió por completo QNX, que fue diseñado desde cero como un sistema operativo para soporte nativo de sistemas multiprocesador ( SMP ). Se agregó soporte completo para las API de especificación POSIX , incluidas las partes de POSIX que aún no han sido implementadas por ningún otro sistema. El resultado fue QNX Neutrino , lanzado en 2001 . Simultáneamente con la publicación del núcleo Neutrino, el sistema QNX se convirtió en miembro del consorcio Eclipse y publicó un conjunto del banco de trabajo Eclipse con complementos dedicados al desarrollo de QNX Neutrino, llamado Momentics .

En 2004 , la empresa fue vendida al grupo Harman International Harman International Industries . El 12 de septiembre de 2007 , el código fuente de QNX se publica bajo una licencia híbrida de código abierto.

QNX ha sido ampliamente utilizado en el entorno automotriz para sistemas telemáticos . Hasta que se vendió al grupo Harman, QNX se utilizó en más de 180 modelos de automóviles diferentes.

El 9 de abril de 2010 , Research In Motion , un fabricante de teléfonos inteligentes BlackBerry , anunció la adquisición de QNX Software Systems. Casi exactamente un año después, el 19 de abril de 2011 , se lanzaba al mercado la BlackBerry PlayBook , una tablet de RIM basada en el sistema operativo QNX (rebautizada para la ocasión como “BlackBerry Tablet OS”).

El sistema Cisco IOS-XR (IOS de ultra alta disponibilidad) se basa en QNX, al igual que el sistema de modularidad del software IOS .

En marzo de 2014 , Apple anunció el lanzamiento del sistema CarPlay para computación móvil en el automóvil, basado en el sistema operativo QNX Neutrino OS.

Arquitectura

QNX es un sistema de microkernel, el kernel en sí contiene solo estas partes:

Cualquier otro software se ejecuta como lo que en otros sistemas se llamaría un "proceso de usuario". En este modo también se ejecuta el proceso del sistema llamado "proc", combinado con el microkernel, y que tiene la tarea de administrar la memoria y la creación de procesos.

El principio básico que hace posible utilizar los servicios del kernel y vincular los diversos procesos entre sí son los mecanismos QNX IPC y el cargador de arranque que puede cargar una imagen del sistema que contiene no solo el kernel, sino cualquier otro recurso deseado, como programas de usuario, compartidos. bibliotecas o bibliotecas compartidas y más.

Comunicación entre procesos

El mecanismo básico de comunicación entre los procesos QNX, sobre el que se han desarrollado todos los demás, lo constituye el paso de un mensaje de un proceso a otro y la espera de la respuesta. Esta función la realiza atómicamente el procedimiento MsgSend . El mensaje se copia, a través del núcleo, desde el espacio de memoria del proceso de envío al espacio de memoria del proceso de recepción. Lo interesante es que si el proceso del destinatario ya está esperando el mensaje, se activará en el mismo momento en que se recibe, sin pasar por el programador. De esta forma, tanto el remitente como el destinatario no tendrán que esperar a que los ciclos del programador completen su operación. Este mecanismo integra algunas funciones de programación del kernel en las funciones de IPC y convierte a QNX en uno de los sistemas de micro kernel más rápidos con el sistema IPC. En muchos sistemas como UNIX , Linux o Windows los mecanismos IPC son mucho más pesados ​​e ineficientes, teniendo que pasar siempre por el kernel y el planificador. Incluso en muchos micro-núcleos, la falta de mecanismos IPC eficientes disminuye en gran medida su rendimiento.

A pesar de estos mecanismos, una comparación directa entre los sistemas de microkernel y los sistemas de kernel monolíticos indica que los sistemas de microkernel generalmente no tienen el mismo rendimiento que los sistemas de kernel monolíticos. Esto se debe a que los servicios de un sistema de micro kernel se implementan necesariamente en diferentes espacios de memoria y, por lo tanto, requieren servicios de comunicación IPC, mientras que los servicios en un kernel monolítico comparten el mismo espacio de memoria y normalmente no requieren servicios IPC. Obviamente, la mayor eficiencia de un kernel monolítico se paga en términos de confiabilidad, ya que un bloqueo en un servicio espacial del kernel probablemente provocará que todo el sistema se bloquee. Un bloqueo en un servicio de micro kernel generalmente solo causará la pérdida de ese servicio y no de todo el sistema. QNX implementa algunos trucos para aumentar el rendimiento, por ejemplo, al limitar el uso de interrupciones y usar técnicas de sondeo para disminuir la cantidad de cambios de contexto (cambio de tareas). También es posible utilizar técnicas de carga de un controlador utilizando DLL o complementos en un solo espacio de proceso. Sin embargo, estas técnicas reducen la seguridad del sistema ya que disminuyen la protección que ofrece la separación de espacios de memoria, que es la clave de los sistemas microkernel . Si desea mantener una estructura de micronúcleo completo, QNX también estará sujeto a degradaciones de rendimiento, especialmente cuando se usa en sistemas con cargas de interrupción muy pesadas.

Gracias a la estructura de microkernel, QNX es también un sistema operativo distribuido . La tecnología utilizada por QNX se denomina procesamiento distribuido transparente y fue desarrollada por Dan Dodge y Peter van der Veen , propietarios de la patente: patente Esta tecnología hace que sea extremadamente fácil crear redes de sistemas QNX que pueden formar una supercomputadora y administrar múltiples aplicaciones en máquinas diferentes.

Foundry27

Foundry27 es la nueva comunidad promovida por el sistema QNX para servir al desarrollo del sistema Neutrino. Los desarrolladores pueden registrarse, bajo la licencia propuesta, y obtener el código fuente y los juegos de herramientas relacionados del sistema operativo. [1]

Sistemas similares

Otros importantes sistemas integrados comparables son los sistemas LynxOS , VxWorks , Linux , THEOS , Threadx , Windows CE , RTEMS , OS-9 , ITRON .

Notas

  1. ^ Comunicados de prensa de QNX: Foundry27

Bibliografía

Otros proyectos

Enlaces externos