QNX

De Viquipèdia
Salta a: navegació, cerca
Infotaula de programariQNX
Desenvolupador(s) Research In Motion
Versió inicial 1982
Tipus sistema operatiu encastat i sistema operatiu
Més informació
Lloc web Web oficial
Modifica dades a Wikidata

QNX (pronunciat Q.N.X. o Q-nic) és un sistema operatiu de temps real basat en Unix que compleix la norma POSIX. És desenvolupat principalment per a ús en sistemes incrustats. Desenvolupat per QNX Software Systems empresa canadenca.

Està disponible per les següents arquitectures: x86, MIPS, PowerPC, SH4 (fins i tot a la Dreamcast en una versió molt limitada d'aquest), ARM, StrongARM i xScale.

QNX està basat en una estructura de microkernel, que proporciona característiques d'estabilitat avançades davant d'errades de dispositius, aplicacions, etc.

Photon o Photon microGUI és el sistema de finestres (servidor i client) de QNX, tot i que també funciona una versió de XWindows.

Els sistemes operatius de temps reals són interessant per les situacions on és absolutament necessari una presa continua de, per exemple, mostres de dades. Basant-se en aquest interès, existeixen diversos projectes per crear versions en temps real d'altres sistemes.

Està orientat a l'ús en microcontroladors i sistemes crítics.

Història[modifica | modifica el codi]

Primers passos de la companyia

Gordon Bell[1] i Dan Dodge,[2] estudiants de la Universitat de Waterloo l'any 1980, s’apuntaren a un curs de computació en disseny de sistemes operatius, en el qual els estudiants van construir un nucli de sistema operatiu bàsic en temps real. Tots dos estaven convençuts que hi havia una necessitat comercial d'aquest sistema i es traslladaren a la ciutat canadenca Kanata, Ontàrio, aquell mateix any, van crear l’empresa Quantum Software Systems. El 1982, es va llançar la primera versió de QUNIX per a la CPU Intel 8088.

El 1984 , en un intent d’evitar-se problemes amb les lleis de marques registrades, es va canviar el nom pel de QNX. Un dels primers usos que es va donar al sistema operatiu de temps real (RTOS) de QNX va ser destinat al món dels sistemes no-encastats, quan va ser seleccionat pel disseny d'ordinadors del sistema educatiu d'Ontario, el Unisys ICON. Durant la resta d’anys, QNX va ser destinat per aplicacions amb més abast, donat que el seu nucli de 44k era massa gran per adaptar-se a les computadores d’un sol xip de l’època. El sistema va obtenir una gran reputació degut a la seva fiabilitat, i se’n va donar ús del mateix a aplicacions industrials.

A finals dels anys 80, Quantum es va adonar que el mercat es movia ràpidament cap al model POSIX i van decidir reescriure el nucli per poder tenir més comptabilitat a baix nivell. El resultat d’aquesta decisió va ser el QNX 4. Durant aquest temps, Patrick Hayden amb l’ajut de Robin Burgener, van desenvolupar un nou sistema d'enfinestrament.[3] Aquest concepte patentat va ser desenvolupat al la GUI anomenada QNX Photon microGUI. QNX també va proporcionar una versió del sistema X Window System.

Cap a finals de la dècada dels 90, la companyia (ara anomenada QNX Software Systems) començà a treballar en una nova versió de QNX, dissenyada des de zero per poder integrar SMP, per donar suport a les actuals qualsevol properes APIs POSIX mentre seguia conservant l’arquitectura mirokernel.

Entada als anys 2000

Junt amb el nucli Neutrio, QNX Software Systems es va convertir en un membre fundador del consorci Eclipse. La companyia va llançar una suite de plug-ins empaquetats amb el workbench d'Eclipse el 2002 sota el nom de QNX Momentics Tool Suite.

El 2004, la companya va anunciar  que havia segut venuda a la companyia Nord Americana Harman International Industries. Abans d’aquesta adquisició, QNX software va ser utilitzat de forma amplia en l’industria de la automoció per a sistemes telemàtics. Des de la compra de Harman, QNX ha dissenyat software per a més de 200 marques diferents de automoció. A meitat del 2011, més de 20 milions de vehicles utilitzaven la plataforma QNX CAR Aplication Platform. Des d’aleshores, la companyia ha llançat diferents middlewares incloent-hi la QNX Aviage Multimedia Suite la QNX Aviage Acoustic Proccessing Suite i la QNX HMI Suite.

El septembre de  2007, QNX Software Sistems va anunciar la disponibilitat de parts del seu codi font, però uns anys més tard, el 9 d’Abril de 2010, el mateix día que la companyia canadenca Research in Motion (actualment BlackBerry) va anunciar l’adquisició de QNX Software Systems es va restringir l’accés al codi font de QNX del públic en general.

El setembre del mateix any, BlackBerry treia al mercat la tablet BlackBerry PlayBook la qual utilitzaría un nou sistema operatiu (BlacBerry Tablet OS) basat en QNX.

QNX en el sector dels telèfons intel·ligents

El 18 d’octubre de 2011, Research In Motion va anunciar BBX la qual va ser posteriorment anomenada BlackBerry 10 el desembre del mateix any. Els dispositius Blackberry 10 van ser basats en el sistema operatiu BlackBerry PlayBook QNX per a dispositius tàctils, però adaptaren la interfície d’usuari per a smartphones.

QNX en el sector de l’automoció

Al març del 2014, al  Saló de l’Automòbil de Ginebra, Apple va fer una demostració del sistema CarPlay, el qual donava una interfície molt semblant a la de iOS però en les consoles dels vehicles. Un cop configurat per la marca, QNX podia ser programat per transferir la seva pantalla i certes funcionalitats al dispositiu Apple CarPlay.

El desembre del mateix any, la marca automobilística Ford, va anunciar que reemplaçaria el sistema operatiu que muntaven (Microsoft Auto)[4] per QNX.

QNX a l’actualitat

Al gener de 2017, QNX va anunciar el seu pròxim llançament de la seva plataforma de desenvolupament SDP 7.0,[5] amb suport per a per a les plataformes de 32 i 64 bits d’ARM i Intel. Finalment aquesta va ser llançada el març d’aquest mateix any.

Arquitectura[modifica | modifica el codi]

El nucli QNX conté el planificador de la CPU (en anglès Scheduler), la comunicació entre processos, la redirecció de les interrupcions i els temporitzadors. La resta corre com a procés d’usuari,[6] això és possible mitjançant dos mecanismes; comunicació entre processos del tipus de crides a subrutienes i un Boot loader el qual pot carregar una imatge(ISO) tant del Sistema Operatiu com de qualsevol col·lecció desitjada de programes escollits per l’usuari i llibreries compartides, eliminant així la necessitat de que el nucli contingui el conjunt de drivers del dispositiu i les llibreries de suport necessàries.

La pila de xarxa[7] está basada en codi NetBSD. El Boot Loader es un altre component clau en el sistema de microkernel.

Comunicació entre processos

La comunicació entre processos de QNX consisteix en l’enviament de missatges d'un procés a un altre i esperar la resposta. Toto això es fa amb una sola operació (MsgSend). El Missatge es copiat pel nucli des de l'espai d'adreces del procés que l'envia al procés que el reb. Si el procés que ha de rebre el missatge està esperant al missatge, el control de la CPU es cedit a l'hora sense necessitat d'utilitzar el planificador de la CPU; d’aquesta forma s'evita que aquest procés perdi la prefencia del planificador. Aquesta integració entre el pas de missatges i el planificador de la CPU es un dels mecanismes clau que fa el sistema de QNX àmpliament utilitzable.

Entrada/Sortida

Totes les operacions d’Entrada/Sortida, arxius d’operacions del sistema i operacions de xarxa estan dissenyades per funcionar amb el mecanisme prèviament explicat, les dades transferides son copiades durant el pas de missatges. Les últimes versions de QNX, a més, redueixen el nombre de processos separats, integren la pila de xarxa i altres blocs de funcions a aplicacions individuals per motius de rendiment.

Com que les peticions d'entrada/sortida son realitzades mitjançant el pas de missatges i el maneig d'aquestos es prioritzat segons la prioritat del thread. Els threads amb més proritat rebran abans una operació del tipus entrada/sortida que un de menys prioritat, una característica essencial en els sistemes hard real-time.

Boot loader

El Boot loader es un altre component clau en el sistema del microkernel. Com que els programes d’usuari poden ser creats en una imatge d’arranc, no hi ha la necessitat de que el nucli contingui el conjunt de drivers del dispositiu i les llibreries de suport necessàries. També és possible inserir una imatge d’arranc dins una ROM, això és utilitzat en els sistemes encastats sense disc.

Processament transparent distribuït

Degut a l’arquitectura distribuïda, es considerat també un sistema operatiu distribuït. Aquest, permet separar els nuclis QNX en diferents dispositius i accedir entre ells als sistemes de serveis, utilitzant el mateix mecanisme de comunicació que en l’accés als serveis propis del nucli.

Variants QNX[modifica | modifica el codi]

El Sistema Operatiu de QNX està dissenyat per a poder ser utilitzat en diferents plataformes i per a ser implementat en una gran varietat d'entorns, per això disposa de 3 variants: QNX Neutrino RTOS, QNX OS for Safety i QNX OS for Medical.

QNX Neutrino RTOS[8]

Aquest sistema operatiu a temps real està destinat per sistemes encastats relacionats amb el sector de l’automoció, mèdic, de transport, militar i industrial. Ofereix un microkernerel amb una arquitectura modular per poder optimitzar el sistema a l’ús de l’usuari.

Neutrino, a més, suporta l’ús de diferents infraestructures com ARMv7, ARMv8 i x86 i suport per a gràfics accelerats per CPU, també suporta el processament multisimètric i CPU pinning, anomenat Bound Multiprocessing[9] (BMP) en la terminologia de QNX. Aquesta tecnologia és utilitzada per millorar els accesos a la caché i facilitar la migració segura d'aplicacions que no disposen de SMP a processadors multi-core.

QNX OS for Safety[10]

Disposa de dos estàndards de seguretat: ISO 26262 en ASIL D[11] i IEC 61508 en SIL 3. Aquest Sistema Operatiu ofereix una plataforma destinada a la creació de sistemes de seguretat crítics destinats al mercat de l’automatització industrial, mèdic, generació d’energies i transport ferroviari. El Sistema suporta l’ús de diverses plataformes com x86 i dispositius ARM multi-core via SMP.

QNX OS for Medical[12]

Es tracta d’una plataforma software modular destinada per a sistemes mèdics encastats la qual compleix amb la norma IEC 62304.

Aquesta plataforma es 100% compatible amb el sistema operatiu QNX estàndard.

Referències[modifica | modifica el codi]

  1. Gordon Bell. [Consulta: 30/06/2017]
  2. Dan Dodge. [Consulta: 30/06/2017]
  3. Windowing system. [Consulta: 30/06/2017]
  4. Microsoft Auto. [Consulta: 30/06/2017]
  5. «SDP 7.0» (en anglès). QNX. [Consulta: 30 juny 2016].
  6. «Process Architecture» (en anglès). Oracle. [Consulta: 30 juny 2017].
  7. Protocol Stack. [Consulta: 30/06/2017]
  8. «QNX Neutrino RTOS» (en anglès). QNX. [Consulta: 30 juny 2017].
  9. «Multicore Processing» (en anglès). QNX. [Consulta: 30 juny 2017].
  10. «QNX OS for Safety» (en anglès). QNX. [Consulta: 30 juny 2017].
  11. ASIL D. [Consulta: 30/06/2017]
  12. «QNX OS for Medical» (en anglès). QNX. [Consulta: 30 juny 2017].

Enllaços externs[modifica | modifica el codi]