QNX

ImprimirCitar
Software de sistema operativo en tiempo real (RTOS)

QNX (o) es un sistema operativo comercial en tiempo real similar a Unix, dirigido principalmente al mercado de sistemas integrados. QNX fue uno de los primeros sistemas operativos microkernel comercialmente exitosos.

El producto fue desarrollado originalmente a principios de la década de 1980 por la empresa canadiense Quantum Software Systems, más tarde rebautizada como QNX Software Systems.

A partir de 2022, se usa en una variedad de dispositivos, incluidos automóviles.

Historia

Gordon Bell y Dan Dodge, ambos estudiantes de la Universidad de Waterloo en 1980, tomaron un curso de sistemas operativos en tiempo real, en el que los estudiantes construyeron un microkernel básico en tiempo real y programas de usuario. Ambos estaban convencidos de que había una necesidad comercial de dicho sistema y se mudaron a la comunidad planificada de alta tecnología de Kanata, Ontario, para iniciar Quantum Software Systems ese año. En 1982, se lanzó la primera versión de QUNIX para la CPU Intel 8088. En 1984, Quantum Software Systems cambió el nombre de QUNIX a QNX en un esfuerzo por evitar cualquier desafío por infracción de marca registrada.

Uno de los primeros usos generalizados del sistema operativo en tiempo real QNX (RTOS) fue en el mundo no integrado cuando se seleccionó como el sistema operativo para el propio diseño de computadora del sistema educativo de Ontario, el Unisys ICON. A lo largo de los años, QNX se usó principalmente para proyectos más grandes, ya que su núcleo de 44k era demasiado grande para caber dentro de las computadoras de un solo chip de la época. El sistema obtuvo una reputación de confiabilidad y se utilizó para operar maquinaria en muchas aplicaciones industriales.

A fines de la década de 1980, Quantum se dio cuenta de que el mercado se estaba moviendo rápidamente hacia el modelo de interfaz de sistema operativo portátil (POSIX) y decidió reescribir el kernel para que fuera mucho más compatible a un nivel bajo. El resultado fue QNX 4. Durante este tiempo, Patrick Hayden, mientras trabajaba como pasante, junto con Robin Burgener (un empleado de tiempo completo en ese momento), desarrollaron un nuevo sistema de ventanas. Este concepto patentado se desarrolló en la interfaz gráfica de usuario (GUI) integrable denominada QNX Photon microGUI. QNX también proporcionó una versión del sistema X Window.

Para demostrar la capacidad del sistema operativo y su tamaño relativamente pequeño, a fines de la década de 1990, QNX lanzó una imagen de demostración que incluía el sistema operativo QNX 4 compatible con POSIX, una interfaz gráfica de usuario completa, un editor de texto gráfico y redes TCP/IP., navegador web y servidor web que caben en un disquete de arranque de 1,44 MB para la PC 386.

Hacia finales de la década de 1990, la empresa, entonces llamada QNX Software Systems, comenzó a trabajar en una nueva versión de QNX, diseñada desde cero para ser compatible con el multiprocesamiento simétrico (SMP) y admitir toda la programación de aplicaciones POSIX actual. interfaces (API) y cualquier nueva API POSIX que se pueda anticipar mientras se conserva la arquitectura del microkernel. Esto resultó en QNX Neutrino, lanzado en 2001.

Junto con el núcleo Neutrino, QNX Software Systems se convirtió en miembro fundador del consorcio Eclipse (entorno de desarrollo integrado). La compañía lanzó un conjunto de complementos de Eclipse empaquetados con el banco de trabajo de Eclipse en 2002 y se denominó QNX Momentics Tool Suite.

En 2004, la empresa anunció que se había vendido a Harman International Industries. Antes de esta adquisición, el software QNX ya se usaba ampliamente en la industria automotriz para sistemas telemáticos. Desde la compra por parte de Harman, el software QNX se ha diseñado en más de 200 marcas y modelos de automóviles diferentes, en sistemas telemáticos y en unidades de información y entretenimiento y navegación. La plataforma de aplicaciones QNX CAR estaba funcionando en más de 20 millones de vehículos a mediados de 2011. Desde entonces, la compañía ha lanzado varios productos de middleware, incluidos QNX Aviage Multimedia Suite, QNX Aviage Acoustic Processing Suite y QNX HMI Suite.

Los micronúcleos de Cisco Systems' IOS-XR (IOS de ultra alta disponibilidad, introducido en 2004) y Modularidad de software IOS (introducido en 2006) se basan en QNX.

En septiembre de 2007, QNX Software Systems anunció la disponibilidad de parte de su código fuente.

El 9 de abril de 2010, Research In Motion (más tarde renombrada como BlackBerry Limited) anunció que adquiriría QNX Software Systems de Harman International Industries. El mismo día, se restringió el acceso al código fuente de QNX al público y a los aficionados.

En septiembre de 2010, la empresa anunció una tableta, la BlackBerry PlayBook, y un nuevo sistema operativo BlackBerry Tablet OS basado en QNX para ejecutarse en la tableta.

El 18 de octubre de 2011, Research In Motion anunció "BBX", que luego pasó a llamarse BlackBerry 10, en diciembre de 2011. Los dispositivos Blackberry 10 se basan en BlackBerry PlayBook basado en QNX sistema operativo para dispositivos táctiles, pero adapte la interfaz de usuario para teléfonos inteligentes utilizando el marco de interfaz de usuario nativo de Cascades basado en Qt.

En el Salón del automóvil de Ginebra, Apple hizo una demostración de CarPlay, que ofrece una interfaz de usuario similar a iOS para las unidades principales de los vehículos compatibles. Una vez configurado por el fabricante de automóviles, QNX se puede programar para transferir su pantalla y algunas funciones a un dispositivo Apple CarPlay.

El 11 de diciembre de 2014, Ford Motor Company declaró que reemplazaría Microsoft Auto con QNX.

En enero de 2017, QNX anunció el próximo lanzamiento de su SDP 7.0, con soporte para plataformas Intel y ARM de 32 y 64 bits, y soporte para C++14. Fue lanzado en marzo de 2017.

Tecnología

Como sistema operativo basado en microkernel, QNX se basa en la idea de ejecutar la mayor parte del kernel del sistema operativo en forma de una serie de pequeñas tareas, denominadas Administradores de recursos. Esto difiere del kernel monolítico más tradicional, en el que el kernel del sistema operativo es un programa muy grande compuesto por una gran cantidad de partes, con habilidades especiales. En el caso de QNX, el uso de un microkernel permite a los usuarios (desarrolladores) desactivar las funciones que no necesitan sin tener que cambiar el sistema operativo. En cambio, dichos servicios simplemente no se ejecutarán.

El núcleo QNX, procnto, contiene solo programación de CPU, comunicación entre procesos, redirección de interrupciones y temporizadores. Todo lo demás se ejecuta como un proceso de usuario, incluido un proceso especial conocido como proc que realiza la creación de procesos y la gestión de la memoria al operar junto con el microkernel. Esto es posible gracias a dos mecanismos clave: comunicación entre procesos de tipo llamada a subrutina y un cargador de arranque que puede cargar una imagen que contiene el kernel y cualquier conjunto deseado de programas de usuario y bibliotecas compartidas. No hay controladores de dispositivos en el núcleo. La pila de red se basa en código NetBSD. Junto con la compatibilidad con sus propios controladores de dispositivo nativos, QNX admite su servidor heredado io-net manager y los controladores de red portados desde NetBSD.

La comunicación entre procesos QNX consiste en enviar un mensaje de un proceso a otro y esperar una respuesta. Esta es una sola operación, llamada MsgSend. El kernel copia el mensaje del espacio de direcciones del proceso de envío al del proceso de recepción. Si el proceso de recepción está esperando el mensaje, el control de la CPU se transfiere al mismo tiempo, sin pasar por el planificador de la CPU. Por lo tanto, enviar un mensaje a otro proceso y esperar una respuesta no resulta en "perder el turno" para la CPU. Esta estrecha integración entre el paso de mensajes y la programación de la CPU es uno de los mecanismos clave que hace que el paso de mensajes QNX sea ampliamente utilizable. La mayoría de los mecanismos de comunicación entre procesos de Unix y Linux carecen de esta estrecha integración, aunque existe una implementación de espacio de usuario de mensajería tipo QNX para Linux. El mal manejo de este problema sutil es la razón principal del rendimiento decepcionante de algunos otros sistemas de microkernel, como las primeras versiones de Mach. El proceso receptor no necesita estar en la misma máquina física.

Todas las operaciones de E/S, las operaciones del sistema de archivos y las operaciones de red debían funcionar a través de este mecanismo, y los datos transferidos se copiaron durante el paso de mensajes. Las versiones posteriores de QNX reducen la cantidad de procesos separados e integran la pila de red y otros bloques de funciones en aplicaciones individuales por motivos de rendimiento.

El manejo de mensajes se prioriza según la prioridad del hilo. Dado que las solicitudes de E/S se realizan mediante el paso de mensajes, los subprocesos de alta prioridad reciben el servicio de E/S antes que los subprocesos de baja prioridad, una característica esencial en un sistema de tiempo real estricto.

El gestor de arranque es el otro componente clave del sistema microkernel mínimo. Debido a que los programas de usuario pueden integrarse en la imagen de inicio, el conjunto de controladores de dispositivos y bibliotecas de soporte necesarios para el inicio no necesitan estar, y no están, en el kernel. Incluso funciones como la carga de programas no están en el kernel, sino que están en bibliotecas de espacio de usuario compartidas cargadas como parte de la imagen de arranque. Es posible colocar una imagen de arranque completa en la ROM, que se utiliza para sistemas integrados sin disco.

Neutrino admite multiprocesamiento simétrico y afinidad de procesador, denominado multiprocesamiento enlazado (BMP) en la terminología QNX. BMP se utiliza para mejorar el acceso a la memoria caché y para facilitar la migración de aplicaciones seguras que no son SMP a equipos con varios procesadores.

Neutrino admite la programación prioritaria estricta y la programación de partición adaptativa (APS). APS garantiza porcentajes mínimos de CPU para grupos seleccionados de subprocesos, aunque otros pueden tener mayor prioridad. El planificador de particiones adaptativo sigue siendo estrictamente prioritario cuando el sistema tiene poca carga. También se puede configurar para ejecutar un conjunto seleccionado de subprocesos críticos estrictamente en tiempo real, incluso cuando el sistema está sobrecargado.

El sistema operativo QNX también contenía un navegador web conocido como 'Voyager'.

Debido a su arquitectura de microkernel, QNX también es un sistema operativo distribuido. Dan Dodge y Peter van der Veen tienen U.S. Patente 6,697,876: Sistema operativo de kernel distribuido basado en las funciones de procesamiento distribuido del sistema operativo QNX conocidas comercialmente como procesamiento distribuido transparente. Esto permite que los núcleos QNX en dispositivos separados accedan a los servicios del sistema de cada uno usando efectivamente el mismo mecanismo de comunicación que se usa para acceder a los servicios locales.

Lanzamientos

Historia de RTOS QNX
Versión Fecha Medio de distribución Notas
1981 QUNIX Fundada.
Beta 1983 As QNX Beta
1.0 1984
2.0 1987 Elementos de 4.3BSD como TCP/IP y PPP se fusionaron en QNX 2.0.
2.21 1989 QNX 2.21
4.0 1990 QNX 4.0
4.1 1994 Elementos de 4.4BSD en QNX 4.1
4.2 1995 QNX 4.2
4.22 1995 QNX 4.22
4.24 1995 QNX/Neutrino 1.0 está desactivado QNX 4.24
4.25 1997 QNX 4.25 continúa después de la tenedor con QNX/Neutrino 1.0.
QNX/Neutrino Microkernel history— Forked from QNX 4.24 in 1996.
Liberación Fecha Notas
1.0 1996 QNX/Neutrino 1.0 forked desde QNX 4.24
2.0 1998 QNX/Neutrino 2.0
2.10 1999 QNX/Neutrino 2.10 (QRTP)
6 18 de enero de 2001 QNX RTOS 6
6.1.0 2001 QNX RTOS 6
6.1.0 (patch A) 28 de septiembre de 2001
6.2 4 de junio de 2002 QNX 6.2 (Momentics)
6.2 (patch A) 18 de octubre de 2002 QNX 6.2
6.2.1 18 de febrero de 2003 QNX 6.2.1 (Momentics)
6.3 3 de junio de 2004 QNX 6.3
6.3.0 SP1 ?
6.3.0 SP2 ?
6.3.0 SP3/
OS 6.3.2
?
6.3.2 ?
6.4.0 30 de octubre de 2008 QNX Neutrino RTOS 6.4.0
6.4.1 Mayo de 2009 QNX Neutrino RTOS 6.4.1
6.5.0 Julio de 2010 QNX Neutrino RTOS 6.5.0 está preparado para producir BBX,
como anunció el 18 de octubre de 2011, y más tarde previsto,
llamado "BlackBerry 10 OS" el 1 de mayo de 2012.
6.5 SP1 11 de julio de 2012 QNX Neutrino RTOS 6.5 SP1
6.6 28 de febrero de 2014 QNX 6.6
7.0 4 de enero de 2017 QNX SDP 7.0, primera versión con soporte de 64 bits
7.1 23 de julio de 2020 QNX SDP 7.1

Usos

La tableta BlackBerry PlayBook diseñada por BlackBerry utiliza una versión de QNX como sistema operativo principal. El sistema operativo BlackBerry 10 también se basa en QNX.

QNX también se utiliza en los sistemas de infoentretenimiento de los automóviles y muchos de los principales fabricantes de automóviles ofrecen variantes que incluyen una arquitectura QNX integrada. Es compatible con bibliotecas SSL/TLS populares como wolfSSL.

En los últimos años, QNX se ha utilizado en sistemas de accionamiento automatizado o ADAS para proyectos de automoción que requieren una certificación de seguridad funcional. QNX proporciona esto con sus productos QNX OS for Safety.

QNX Neutrino (2001) se ha portado a varias plataformas y ahora se ejecuta prácticamente en cualquier familia de unidades de procesamiento central (CPU) modernas que se utilizan en el mercado integrado. Esto incluye PowerPC, x86, MIPS, SH-4 y los estrechamente interrelacionados ARM, StrongARM y XScale.

Licencias

QNX ofrece una licencia para usuarios académicos y no comerciales.

Comunidad

  • OpenQNX es un Portal Comunitario QNX establecido y funciona independientemente. Está disponible un canal IRC y Newsgroups. Diversas industrias están representadas por los desarrolladores en el sitio.
  • Foundry27 es una comunidad QNX basada en la web establecida por la empresa. Sirve como centro de desarrollo QNX Neutrino donde los desarrolladores pueden registrarse, elegir la licencia, y obtener el código fuente y el conjunto de herramientas relacionados del RTOS.

Contenido relacionado

Algoritmo de Shor

Algoritmo de Shor es un algoritmo de computadora cuántica para encontrar los factores primos de un número entero. Fue desarrollado en 1994 por el...

Tabla de asignación de archivos

Tabla de asignación de archivos es un sistema de archivos desarrollado para computadoras personales. Desarrollado originalmente en 1977 para su uso en...

Distancia de hamming

En la teoría de la información, la distancia de Hamming entre dos cadenas de igual longitud es el número de posiciones en las que los símbolos...
Más resultados...
Tamaño del texto:
Copiar