Computació en temps real

De Viquipèdia
Dreceres ràpides: navegació, cerca
Un clar exemple de sistema en temps real: l'airbag.

Un sistema en temps real es defineix com aquell sistema en el que el seu correcte funcionament no depèn únicament del resultat lògic del càlcul, sinó també del temps en què aquest es realitza. En altres paraules, la computació en temps real consisteix en realitzar còmput en l'instant de temps precís. Les característiques que tenen com a objectiu complir qualsevol d'aquests sistemes són:

  • Rapidesa
  • Predictibilitat
  • Fiabilitat
  • Adaptabilitat

Normalment aquests sistemes estan formats per dues parts: un "sistema controlador" i un "sistema controlat". El sistema controlador és aquell que s'encarrega de fer funcionar correctament el sistema controlat mitjançant la interacció amb l'entorn i la informació recollida d'aquest amb l'ajuda de sensors.[1]

A diferència d'un sistema de còmput casual, l'objectiu no és realitzar una operació amb la major rapidesa possible, sinó que ha d'actuar en el moment adequat i a una velocitat controlada. Així doncs, podem dir que un sistema en temps real està subjecte a interactuar en un temps concret (en anglès, anomenat com real-time constraints). Segons la interacció, podem classificar-los en dos tipus:

  • Tasques periòdiques: la tasca ha de ser executada cada T períodes de temps (per exemple, un sonar).
  • Tasques aperiòdiques: la tasca es crea i es destrueix en l'instant que és utilitzada.

Una de les principals dificultats a l'hora de dissenyar un sistema en temps real és la lluita contra les fallades, ja que un error pot provocar que es desestabilitzi i acabi realitzant una tasca inesperada o no desitjada.

L'airbag n'és un bon exemple, ja que aquest sistema de seguretat implementat en els vehicles ha de reaccionar quan sorgeix un estímul (en aquest cas, quan detecta un xoc) i amb la major rapidesa possible, doncs activar-se en un instant anterior o posterior podria posar en joc la vida del tripulant.

Història[modifica | modifica el codi]

Els anomenats sistemes encastats van ser els que van propiciar l'aparició d'aquest tipus de computació a partir del 1970. Aquests necessitaven de respostes ràpides, amb un ordre de prioritat marcat i amb interaccions de dades, així van aparèixer sistemes operatius capaços de complir aquests requsisits. Els més remarcables van ser el RTOS o sistema operatiu en temps real per les seves sigles en anglés, i el RDOS o sistema operatiu en temps real d'operació de disc.

La popularització de la computació en temps real no va ser sinó fins a l'aparició del microprocessador MOS 6502, el qual va ser presentat per varies empreses en alguns dels seus dissenys, tals com Nintendo (amb la Nintendo Family Computer ), Atari (amb la seva Atari 2600 i Atari 800) o Apple (amb l'Apple II) a finals dels 70 i principis dels 80. Amb aquests es podien portar a terme les tasques dels sistemes en temps real i estaven a l'abast de qualsevol.

Classificació[modifica | modifica el codi]

Els sistemes de temps real estan formats per unitats de treball denominades com tasques. Segons la gravetat d'acció en cas de fallada, en podem distingir dos tipus:

  • Tasques hard real-time: són de nivell crític, determinístiques; un error en aquestes tasques poden provocar un error fatal en el sistema. Les restriccions de temps s'han de cumplir sempre.
  • Tasques soft real-time
    • Tasques essencials: aquestes tasques sempre s'acaben realitzant encara que no sigui en el temps requerit.
    • Tasques no-essencials: poden ser abortades sense que afectin greument al sistema en cas que no es facin a temps.

La principal diferència és que un error en els sistemes hard pot provocar que aquest es col·lapsi i no realitzi el càlcul esperat, o en el pitjor dels casos, un procés erroni que desemboqui en un comportament inesperat[2], mentre que els sistemes soft es poden permetre reaccionar amb una lleu variança en el temps de resposta.

Característiques[modifica | modifica el codi]

Tots els sistemes en temps real pretenen complir els següents requeriments per ser considerats com a correctes[3]:

  • Puntualitat: les tasques han de ser executades en el moment indicat, ni amb anterioritat ni posteriorment.
  • Correcte manipulació en pics de càrrega: el sistema no ha de col·lapsar-se quan arribi en moments crítics d'ús màxim.
  • Predictible: s'ha de poder determinar en quin moment una tasca és executada, quan es crea, quan es destrueix, etc.
  • Tolerància a errors: en cas que no es pugui evitar una fallada, el sistema ha de ser capaç de recuperar-se.
  • Manteniment: un sistema en temps real ha d'estar habilitat per poder realitzar-li un manteniment constant, doncs no es pot permetre que s'espatlli i quedi inutilitzat periòdicament.

Desavantatges[modifica | modifica el codi]

Com qualsevol sistema, els de temps real presenten una sèrie de desavantatges que han de ser mencionats[3]:

  • Programació costosa: el nivell d'abstracció pot provocar que el codi sigui molt difícil de comprendre.
  • Difícil d'entendre, mantenir i reutilitzar.
  • Verificació i testeig de les restriccions de temps quasi impossible d'obtenir.
  • El sistema pot col·lapsar-se donades algunes circumstàncies en ocasions (per factors físics, per exemple).

Implementació[modifica | modifica el codi]

Degut que aquests programes necessiten d'unes característiques especials (polítiques de planificació, processament, programació, comunicació entre les tasques, interrupcions de sistema, etc), no poden ser implementats amb un sistema operatiu quotidià, s'han d'utilitzar els anomenats sistemes operatius de temps real (real-time operating systems, RTOS).

Vegeu també[modifica | modifica el codi]

Referències[modifica | modifica el codi]

  1. Stankovic, John A.. «Real-Time Computing». , 16-04-1992.
  2. «Real-time computing» (en anglès). [Consulta: 08-05-2015].
  3. 3,0 3,1 «Real-Time Systems» (en anglès). Insup Lee, primavera 2009. [Consulta: 15-05-2015].