Sistem de operare în timp real

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Un sistem de operare în timp real sau în timp real (prescurtat RTOS) este un sistem de operare specializat pentru suportul aplicațiilor de sisteme în timp real . Aceste sisteme sunt utilizate în mod obișnuit în domeniul industrial ( controlul proceselor , pilotarea robotului , transferul de date în telecomunicații ) sau în cazul în care este necesar să se obțină un răspuns de la sistem într-un timp prestabilit.

Un sistem de operare în timp real nu trebuie neapărat să fie rapid: intervalul de timp în care sistemul de operare / aplicație trebuie să reacționeze nu este important; important este că răspunde într-un timp maxim prestabilit. Cu alte cuvinte, sistemul trebuie să fie previzibil sau mai degrabă determinist , în sensul că în sistem se poate cunoaște momentul real (în cel mai bun sau cel mai rău caz, termeni care provin din cel mai bun caz / cel mai rău caz din limba engleză) a unui proces dat. sau prelucrare.

În practică, un sistem în timp real trebuie să garanteze că o procesare (sau o sarcină ) se termină într-o anumită constrângere de timp sau termen . Pentru a asigura acest lucru, programarea operațiunilor trebuie să fie fezabilă . Conceptul de fezabilitate a planificării este baza teoriei sistemelor în timp real și este ceea ce ne permite să spunem dacă un set de sarcini este executabil sau nu în funcție de constrângerile de timp date.

Sarcini periodice / aperiodice și dure / moi în timp real

Sarcinile unui sistem în timp real pot fi:

  • periodic : atunci când o sarcină constă dintr-o succesiune de activități activate în mod regulat
  • aperiodic : atunci când o sarcină constă dintr-o succesiune de activități activate la intervale neregulate.
  • sporadic : atunci când o sarcină constă dintr-o secvență de activități activate într-un mod imprevizibil (de obicei sarcini care corespund solicitărilor utilizatorilor)

Sarcinile periodice sunt tipice unui sistem discret de control al timpului .

Când avem de-a face cu sarcini de tip periodic, vorbim și despre perioada de execuție, ceea ce înseamnă intervalul de timp dintre două execuții ale unei sarcini periodice. Este obișnuit ca termenul să coincidă cu inversul perioadei, deoarece aceasta este limita maximă de execuție a unei sarcini.

Cu toate acestea, sarcinile unui sistem în timp real pot fi:

  • soft în timp real : o sarcină care nu își respectă termenul (în jargon se spune că încalcă termenul ) cauzează daune ireparabile sistemului. Depășirea termenului limită produce o degradare a performanței proporțională cu timpul necesar depășirii termenului limită.
  • greu în timp real : o sarcină care, dacă își depășește temporar termenul, provoacă daune ireparabile sistemului.
  • „oricând” : sunt sarcini care procesează iterativ aceleași date pentru a le „rafina” din ce în ce mai mult. Datele procesate de sarcini oricând îndeplinesc cerințele minime de calitate și de calitate maximă. Prin urmare, sunt considerați „duri” până când datele ating calitatea minimă, devin „moi” înainte de a atinge calitatea maximă, după care nu vor mai rula

Practic, această distincție se traduce prin cuantificarea diferită a costurilor unei posibile inexactități temporale a sistemului. Un exemplu de sarcină soft în timp real poate fi un DVD player, în care nerespectarea constrângerilor duce la o degradare a calității filmului, dar nu afectează continuarea redării; în timp ce o sarcină dificilă în timp real poate fi controlerul de temperatură al nucleului unei centrale nucleare, unde nerespectarea constrângerilor de timp poate provoca un dezastru evident.

Caracteristicile unui sistem în timp real

Un sistem în timp real ar trebui să aibă următoarele caracteristici:

  • Planificare optimă: toate sarcinile sunt cunoscute a priori, precum și constrângerile de timp, prin urmare ar trebui să fie posibil să aveți un planificator care să implementeze o planificare care să minimizeze funcția de cost cât mai mult posibil prezentat înainte.
  • Partajarea resurselor: sarcinile sunt entități separate, dar contribuie la același scop, prin urmare nu este necesar să existe spații de adresă separate.
  • Garanție de execuție: toate sarcinile în timp real trebuie să se încheie în termenul limită, astfel încât, în cazul în care o nouă sarcină sosește sau o sarcină nu se poate finaliza în termenul limită, o notificare prealabilă a sistemului poate fi utilizată pentru a împiedica executarea noii sarcini sau pentru a recupera execuția sarcinii pe care urmează să o parcurgă.
  • Previzibilitatea apelurilor de sistem : sistemul trebuie să fie capabil să evalueze timpii de calcul ai fiecărei sarcini pentru a determina programarea fezabilă, de aceea fiecare apel de sistem trebuie să aibă un timp maxim de execuție bine definit, astfel încât să nu introducă întârzieri nedeterminate.

Programarea sistemelor în timp real

Cei mai utilizați algoritmi de planificare pentru sistemele în timp real sunt în esență trei:

EDD are următoarele caracteristici

  • Toate sarcinile ajung simultan
  • Prioritatea este statică
  • Nu necesită preluare
  • Minimizați latența .

EDF are următoarele caracteristici:

  • Sarcinile pot ajunge oricând.
  • Prioritate dinamică bazată pe data limită viitoare.
  • Folosiți abilitatea sarcinilor pentru a-i preveni pe ceilalți.
  • Minimizați latența.

RM poate fi utilizat numai pentru sarcini periodice, are următoarele caracteristici:

  • Sarcinelor li se atribuie o prioritate statică proporțională cu frecvența sosirii.
  • Un grup de sarcini poate fi programat dacă funcția de utilizare U este cunoscută U_lub <U <1

Funcția U exprimă rata de utilizare a procesorului, funcția este limitată în partea de sus și este SupU = 1 , indicată cu U_lub factor de utilizare minim. Vom spune că o funcție poate fi cu siguranță programată cu Rate Monotonic dacă U <U_lub , în schimb nu este programabilă dacă U> 1 . Dacă U_lub <U <1 nu suntem siguri de programabilitate. Algoritmul EDF în unele circumstanțe este mai bun decât RM, deoarece garantează programabilitatea pur și simplu pentru U <1

Factori care subminează predictibilitatea

Produsele familiilor Windows și Unix nu îndeplinesc caracteristicile tipice ale unui sistem în timp real: de exemplu, în timp ce gestionează execuția mai multor procese cu pre-lansare , nu este posibil să se prevadă în niciun fel care este timpul de execuție al un singur proces. În plus, utilizarea hard disk-urilor pentru stocarea datelor, a dispozitivelor USB sau a altor dispozitive care introduc latențe de execuție ridicate de către CPU , face imposibilă stabilirea cu certitudine a timpului necesar pentru a găsi informațiile utile pentru executarea corectă a codului.

Există mai mulți factori care fac ca sistemul de operare să reacționeze imprevizibil . Printre acestea, principalele sunt următoarele:

  • DMA : Poate fura autobuzul de la CPU întârziind executarea unei sarcini critice. Într - un sistem în timp real , prin urmare , este de preferat să o dezactivați sau să- l utilizați în modul în care autobuzul felie de timp este în mod constant alocate și fixat la DMA , chiar dacă nu există operațiuni care urmează să fie efectuate.
  • Cache : poate provoca imprevizibilitate, deoarece există cazuri în care eșuează și poate provoca întârzieri în accesarea memoriei de către CPU . Prin urmare, având în vedere cel mai rău caz, preferăm să nu-l folosim deloc.
  • Mecanisme de gestionare a memoriei: aceste tehnici nu trebuie să introducă întârzieri imprevizibile în timpul executării sarcinilor critice, de exemplu, paginarea poate provoca erori de pagină intolerabile pentru un sistem dur în timp real. De obicei, se utilizează segmentarea sau partiționarea memoriei statice.
  • Întreruperi : sunt generate de dispozitivele periferice atunci când au unele informații de schimbat cu CPU . Aceste întreruperi în timpul executării unei sarcini critice generează întârzieri imprevizibile și, prin urmare, se preferă dezactivarea acestora.
  • Sisteme de gestionare a energiei: sunt mecanisme hardware care pot încetini procesorul sau îl pot face să execute cod util pentru a disipa mai puțină energie. Este clar că într-un sistem în timp real este important să respectați un termen, mai degrabă decât să consumați puțină energie, astfel încât aceste mecanisme sunt dezactivate.

Alegerea sistemului de operare în timp real

Printre RTOS-urile comerciale găsim conforme cu POSIX (de exemplu LynxOS care este compatibil cu Unix ) și non-conform cu POSIX, cum ar fi VxWorks (care acceptă parțial standardele POSIX ). În ceea ce privește sistemele Open Source, este posibil să se utilizeze Linux , cu măsurile de precauție adecvate, sau RTAI / Xenomai .

Probleme Linux în timp real

Exemple de sisteme de operare RT

Unele sisteme de operare capabile să funcționeze în timp real pe arhitecturi hardware adecvate sunt:

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT