QNX ( / ˌ k Ju ˌ ɛ n ɛ k s / o / k Ju n ɪ k s / ) es un comercial de Unix sistema operativo en tiempo real , dirigido principalmente a los sistemas embebidos mercado. QNX fue uno de los primeros sistemas operativos de microkernel comercialmente exitosos . [ cita requerida ] A partir de 2020 [actualizar], se utiliza en una variedad de dispositivos, incluidos automóviles [1] y teléfonos móviles .
Desarrollador | Mora |
---|---|
Familia OS | Tipo Unix |
Estado de trabajo | Actual |
Modelo fuente | Fuente cerrada |
Versión inicial | 1982 |
Último lanzamiento | 7.1 / julio de 2020 |
Objetivo de marketing | Sistemas embebidos |
Gerente de empaquetación | Capaz de usar el marco Pkgsrc del proyecto NetBSD |
Plataformas | Actual: x86-64 , ARM32 , ARM64 Anterior: MIPS , PowerPC , SH-4 , StrongARM , XScale |
Tipo de grano | RTOS ( microkernel ) |
Licencia | Propiedad |
Página web oficial | blackberry |
El producto fue desarrollado originalmente a principios de la década de 1980 por la empresa canadiense Quantum Software Systems , que luego pasó a llamarse QNX Software Systems . La empresa fue finalmente adquirida por BlackBerry Limited en 2010. [2]
Descripción
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 Resource Managers. 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 capacidades especiales. En el caso de QNX, el uso de un microkernel permite a los usuarios (desarrolladores) apagar cualquier función que no necesiten sin tener que cambiar el sistema operativo. En cambio, estos servicios simplemente no se ejecutarán.
Para demostrar la capacidad del sistema operativo y su tamaño relativamente pequeño, a finales 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, editor de texto gráfico, redes TCP / IP, navegador web y servidor web que todos caben en un disquete de arranque de 1,44 MB para el 386 PC. [3] [4]
QNX Neutrino (2001) se ha adaptado a varias plataformas y ahora se ejecuta en prácticamente cualquier familia de unidades de procesamiento central (CPU) moderna que se utilice en el mercado integrado. Esto incluye PowerPC , x86 , MIPS , SH-4 y los estrechamente interrelacionados de ARM , StrongARM y XScale .
QNX ofrece una licencia para usuarios académicos y no comerciales. [5]
La tableta BlackBerry PlayBook diseñada por BlackBerry utiliza una versión de QNX como sistema operativo principal. Los dispositivos de BlackBerry que ejecutan el sistema operativo BlackBerry 10 también se basan en QNX.
QNX también se utiliza en sistemas de información y entretenimiento para 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 . [6]
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 su producto QNX OS for Safety .
El sistema operativo QNX también contenía un navegador web conocido como 'Voyager'. [7]
Historia
Gordon Bell y Dan Dodge , ambos estudiantes de la Universidad de Waterloo en 1980, tomaron un curso ( CS452 ) en 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 existía una necesidad comercial de un sistema de este tipo y se trasladaron 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 de 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 fue seleccionado como el sistema operativo para el diseño de computadora del propio sistema educativo de Ontario , el Unisys ICON . A lo largo de los años, QNX se utilizó principalmente para proyectos más grandes, ya que su núcleo de 44k era demasiado grande para caber dentro de las computadoras de un chip de la época. El sistema obtuvo una reputación de confiabilidad [ cita requerida ] y se usó en el funcionamiento de 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 en un nivel bajo. El resultado fue QNX 4. Durante este tiempo, Patrick Hayden , mientras trabajaba como pasante, junto con Robin Burgener (un empleado a tiempo completo en ese momento), desarrolló un nuevo sistema de ventanas. Este concepto [8] 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 .
Hacia fines de la década de 1990, la compañía (ahora llamada QNX Software Systems) comenzó a trabajar en una nueva versión de QNX, diseñada desde cero para ser capaz de multiprocesamiento simétrico (SMP) y para admitir todas las interfaces de programación de aplicaciones POSIX (API) actuales. ) y cualquier API POSIX nueva que se pueda anticipar sin dejar de conservar la arquitectura del microkernel. Esto resultó en QNX Neutrino, lanzado en 2001.
Junto con el kernel de Neutrino, QNX Software Systems se convirtió en miembro fundador del consorcio Eclipse . La compañía lanzó un conjunto de complementos de Eclipse empaquetados con el banco de trabajo Eclipse en 2002, y se denominó QNX Momentics Tool Suite.
En 2004, la compañía anunció que había sido vendida 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 diferentes de automóviles , en sistemas telemáticos y en unidades de información y entretenimiento y navegación. [ cita requerida ] La plataforma de aplicaciones QNX CAR se estaba ejecutando en más de 20 millones de vehículos a mediados de 2011. [9] 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 del IOS-XR de Cisco Systems ( IOS de ultra alta disponibilidad, introducido en 2004) [10] [11] y la modularidad del software IOS (introducido en 2006) [12] se basan en QNX.
En septiembre de 2007, QNX Software Systems anunció la disponibilidad de parte de su código fuente. [13]
El 9 de abril de 2010, Research In Motion anunció que adquiriría QNX Software Systems de Harman International Industries. [2] El mismo día, el acceso al código fuente de QNX fue restringido para el público y los aficionados. [14]
En septiembre de 2010, la compañía anunció una tableta , BlackBerry PlayBook y un nuevo sistema operativo BlackBerry Tablet OS basado en QNX para ejecutarse en la tableta. [15]
El 18 de octubre de 2011, Research In Motion anunció "BBX", [16] que luego pasó a llamarse BlackBerry 10 , en diciembre de 2011. [17] Los dispositivos Blackberry 10 se basan en el sistema operativo BlackBerry PlayBook QNX para dispositivos táctiles, pero se adaptan la interfaz de usuario para teléfonos inteligentes que utilizan 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 proporciona una interfaz de usuario similar a iOS para unidades principales en 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. [18] [19]
El 11 de diciembre de 2014, Ford Motor Company declaró que la compañía reemplazaría Microsoft Auto con QNX. [1]
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. [20]
Tecnología
El kernel de 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 en conjunto con el microkernel . Esto es posible gracias a dos mecanismos clave: comunicación entre procesos de tipo subrutina-llamada 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 dispositivo en el kernel. La pila de red se basa en código NetBSD . [21] Junto con su soporte para sus propios controladores de dispositivos nativos, QNX soporta su servidor de administrador io-net heredado y los controladores de red portados desde NetBSD. [22]
La comunicación entre procesos de QNX consiste en enviar un mensaje de un proceso a otro y esperar una respuesta. Esta es una sola operación, llamada MsgSend
. El mensaje es copiado, por el kernel, [ cita requerida ] desde el 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 programador de la CPU. Por lo tanto, enviar un mensaje a otro proceso y esperar una respuesta no significa "perder el turno" de 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 de 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 en el espacio de usuario de la mensajería tipo QNX para Linux . El mal manejo de este problema sutil es la razón principal del desempeño decepcionante de algunos otros sistemas de microkernel, como las primeras versiones de Mach . [ cita requerida ] El proceso del destinatario 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 estaban destinadas a funcionar a través de este mecanismo, y los datos transferidos se copiaron durante el paso del mensaje. 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 razones 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 duro en tiempo real .
El cargador de arranque es el otro componente clave del sistema de microkernel mínimo. Debido a que los programas de usuario pueden integrarse en la imagen de inicio, el conjunto de controladores de dispositivo y bibliotecas de soporte necesarios para el inicio no necesitan estar, ni están, en el kernel. Incluso funciones como la carga de programas no están en el kernel, sino en bibliotecas de espacio de usuario compartido 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 el multiprocesamiento simétrico y la afinidad del procesador , denominado multiprocesamiento enlazado (BMP) en la terminología de QNX. BMP se utiliza para mejorar el acceso al caché y para facilitar la migración de aplicaciones no seguras para SMP a computadoras multiprocesador.
Neutrino es compatible con la programación prioritaria preventiva 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 programador de partición adaptable sigue siendo estrictamente prioritario cuando el sistema está subcargado. También se puede configurar para ejecutar un conjunto seleccionado de subprocesos críticos estrictamente en tiempo real , incluso cuando el sistema está sobrecargado.
Historial de versiones de QNX RTOS
Historial de QNX RTOS [23]
Versión | Fecha | Medio de distribución | Notas |
---|---|---|---|
1981 | Fundada QUNIX . | ||
Beta | 1983 | Como 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 se bifurca de QNX 4.24 | |
4.25 | 1997 | QNX 4.25 continúa después de la bifurcación con QNX / Neutrino 1.0. |
Historial de versiones de QNX / Neutrino
Historia del microkernel de QNX / Neutrino: bifurcado de QNX 4.24 en 1996.
Lanzamiento | Fecha | Notas |
---|---|---|
1.0 | 1996 | QNX / Neutrino 1.0 como bifurcado de 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 (parche A) | 28 de septiembre de 2001 | |
6.2 | 4 de junio de 2002 | QNX 6.2 (momentos) |
6.2 (parche A) | 18 de octubre de 2002 | QNX 6.2 |
6.2.1 | 18 de febrero de 2003 | QNX 6.2.1 (momentos) |
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á bifurcado para producir BBX, como se anunció el 18 de octubre de 2011, y luego se presentó en una vista previa, 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 |
Procesamiento distribuido transparente
Debido a su arquitectura de microkernel , QNX también es un sistema operativo distribuido . Dan Dodge y Peter van der Veen poseen la patente estadounidense 6.697.876: Sistema operativo de kernel distribuido basado en las características de procesamiento distribuido del sistema operativo QNX conocidas comercialmente como Procesamiento Distribuido Transparente. Esto permite que los kernels de QNX en dispositivos separados accedan a los servicios del sistema de los demás utilizando efectivamente el mismo mecanismo de comunicación que se usa para acceder a los servicios locales.
Foros
OpenQNX es un portal comunitario de QNX establecido y que se ejecuta de forma independiente. Está disponible un canal de IRC y acceso a grupos de noticias a través de la web. Los desarrolladores del sitio representan diversas industrias. [24]
Foundry27 es una comunidad QNX basada en la web establecida por la empresa. Sirve como un centro para el desarrollo de QNX Neutrino donde los desarrolladores pueden registrarse, elegir la licencia y obtener el código fuente y el kit de herramientas relacionado del RTOS. [25]
Ver también
- Comparación de sistemas operativos
- BlackBerry 10
- Android Auto
- CarPlay , anteriormente iOS en el automóvil
- Windows Embedded Automotive
- Ford Sync
- Alianza abierta de teléfonos
- NNG
Referencias
- ↑ a b Burns, Matt (11 de diciembre de 2014). "Ford abandona Microsoft para QNX en la última plataforma tecnológica en el vehículo" . TechCrunch . Consultado el 26 de febrero de 2015 .
- ^ a b "RIM para comprar el software QNX" . El globo y el correo . Toronto. La prensa canadiense . 9 de abril de 2010 . Consultado el 9 de abril de 2010 .
- ^ Hildebrand, Dan (6 de junio de 1997). "Piense en pequeño. (El desafío web de 1,44 M)" . marc.info .
- ^ "¡Cómo lo hicimos!" . Archivado desde el original el 28 de noviembre de 1999 . Consultado el 3 de agosto de 2020 .
- ^ "Sistema operativo QNX Neutrino Realtime" . QNX . 2010-07-15 . Consultado el 15 de octubre de 2012 .
- ^ "Tamaños de construcción de wolfSSL para QNX Embedded RTOS" . wolfSSL . 17 de septiembre de 2010 . Consultado el 13 de febrero de 2019 .
- ^ http://www.qnx.com/products/middleware/graphics/voyager.html
- ^ US5745759
- ^ COCHE QNX http://www.qnx.com/products/qnxcar/
- ^ Personal de QNX (17 de agosto de 2004). "QNX ofrece un microkernel extremadamente confiable para un sistema de enrutamiento masivamente escalable" . Consultado el 16 de marzo de 2012 .
- ^ "Mejores prácticas operativas de CRS-1 e IOS XR" . Cisco .
- ^ Brad Reese- BradReese.Com (26 de septiembre de 2006). "¿Qué sistema operativo está detrás de IOS?" . Consultado el 16 de marzo de 2012 .
- ^ Leroux, Paul (12 de septiembre de 2007). "QNX publica el código fuente de Neutrino y abre el proceso de desarrollo" . www.qnx.com .
- ^ "foundry27: Ver página Wiki: UpdatedQNXSourceAccessPolicyFAQ" . community.qnx.com .
- ^ RIM presenta The BlackBerry PlayBook , comunicado de prensa oficial, 27 de septiembre de 2010
- ^ Molen, Brad (18 de octubre de 2011). "Research in Motion anuncia BBX, 'combina lo mejor de BlackBerry y QNX ' " . Engadget . Consultado el 20 de enero de 2013 .
- ^ Arthur, Charles (7 de diciembre de 2011). "RIM fabricante de BlackBerry obligado a eliminar el nombre de BBX para el nuevo software" . Guardián . Londres . Consultado el 20 de enero de 2013 .
- ^ "Apple Inc CarPlay lleva las funciones de iPhone a GM, BMW, Ford y otros tableros de automóviles" . Puesto financiero . Consultado el 28 de marzo de 2014 .
- ^ "BlackBerry's QNX: por qué es tan valioso para Apple, Google, industria automotriz" . ZDNet . Consultado el 27 de octubre de 2014 .
- ^ "BlackBerry QNX lanza su plataforma de software integrado más avanzada y segura para conducción autónoma y coches conectados" . 2017-01-04.
- ^ Core Networking 6.4: Pila y fundición de redes de próxima generación de Neutrino27 [1]
- ^ "foundry27: Ver página wiki: Drivers_wiki_page" . community.qnx.com .
- ^ Lévénez, Éric (1 de mayo de 2011). "Historia de UNIX" . levenez.com . Consultado el 18 de mayo de 2011 .
- ^ Portal de la comunidad OpenQNX: anunciar
- ^ Comunicados de prensa de QNX: Foundry27
Otras lecturas
- Dan Hildebrand (1992). "Una descripción arquitectónica de QNX" . Actas del taller sobre micro-kernels y otras arquitecturas de kernel : 113–126. ISBN 1-880446-42-1.
enlaces externos
- Página web oficial
- QNX en Curlie
- Desarrollo para teléfonos QNX
- Fundición27
- Comunidad de usuarios de QNX
- Aplicaciones de código abierto
- GUIdebook> GUI> QNX
- QNX utilizado para centrales nucleares canadienses
- Disquete de demostración de QNX