În timp real Linux

Conceptul de bază de timp real (RT). Hard-timp real și Linux.

Ce este în timp real?

Înainte de a trece la introducerea RT-LINUX, trebuie să ia în considerare câteva idei asociate cu conceptul de „timp real“ (în timp real, RT). Noi spunem că:







„Sistem în timp real este un sistem de informații. În care informațiile corecte de ieșire nu depinde numai de algoritmi, dar și pe informațiile de timp aspectul momeyntov.“

Nu este suficient ca informația este corectă, este necesar ca ea a apărut în intervale de timp strict definite. Rețineți că definiția de mai sus a unui sistem în timp real nu este neapărat rapid, așa cum s-ar putea crede. De exemplu, un sistem de navigație vehicul la început nu s-ar putea parea ca un sistem în timp real, deoarece viteza este scăzută și, de obicei, „suficient“ de timp (de ordinul minutelor) pentru o decizie. Cu toate acestea, în conformitate cu definiția noastră, este într-adevăr de sistem în timp real.

Rețineți că definim „sistem în timp real“, mai degrabă decât de sistem în timp real. Sistemul în timp real, sisteme rapide practic, de a crea iluzia de „realitate“. De obicei toate simulările și jocuri interactive nevoie pentru a crea o impresie de lumea reală, iar cele mai multe imagini generate pe unitatea de timp, cu atât mai bine.

Să considerăm acum mai detaliat conceptul de „Limită de timp“ (restricție temporală), să presupunem că cineva vrea să controleze viteza motorului cu sarcină variabilă pe arbore cu ajutorul unei legi de control PID. (Legea PID este o lege proporțională integrală reglementare diferențială). Din punctul nostru de vedere, legea PID este o funcție cu propriul set de parametri. În acest exemplu, turația motorului - parametrul derivat din motorul și tensiunea de alimentare a motorului - turația motorului de control al parametrilor. Teoria algoritmilor de control, care, prin modul în care este foarte extinsă, nu ia în considerare timpul de calcul al funcției algoritm PID, și anume, din timp pentru a măsura viteza motorului, la punctul în care lucrăm la motor, foarte puțin. În condiții normale, sistemul permite să aibă o ușoară întârziere. O altă caracteristică a legii PID este frecvența, cu alte cuvinte, trebuie în mod constant, la intervale regulate, pentru a calcula funcția PID. În cazul în care intervalul de timp dintre succesive funcția apeluri PID este prea mare, motorul poate ajunge la o rată de nedorit. Rezumând, legea PID poate fi considerată ca o funcție, executată periodic (Pi); cu întârziere admisibilă PID lege maximă (Di), și, în conformitate cu codul PID viteza de execuție procesorului necesită o anumită perioadă de timp (Ci) ..

Pi: Perioada de activitate i.

Di: Întârzierea maximă admisă la un control, i sarcină.

Ci: cel mai rau timp pentru sarcina i.

Nici o problemă de a utiliza un singur sistem de sarcină ca un sistem în timp real. sau procesorul poate efectua o activitate într-un anumit timp sau nu. Dacă el nu este nevoie bystr- să-l înlocuiască mai repede.

Problemele apar atunci când mai multe sarcini și trebuie să împartă procesorul poate fi executat în sistem (CPU) unul de altul. Ne împiedică utilizarea unei resurse partajate clasice, cum ar fi LINUX. Desigur, nu este necesar să menționăm: nici măcar nu încearcă să scrie programe care necesită timp real sub Windows. Și sfat nu este scris nici un fel de program de această platformă.

Nu toate sistemele de timp real sunt identice, nu este același lucru, că sistemul de control al injecției de combustibil pentru motoare de aeronave sau de afișare mPEG-fișiere. În primul caz, cea mai mică întârziere în execuție poate duce la pierderea de vieți omenești și pagube materiale mari, în al doilea caz este o deteriorare ușoară a sistemului - imaginea poate estompa sau cadre de piese vor fi pierdute. Primul tip este cunoscut ca un sistem de „în timp real greu“ (în timp real greu, HRT), și în al doilea rând, ca un sistem de „în timp real moale“ (timp moale reale, SRT) .. Vom trata sisteme de HRT c.

Dezvoltarea sistemelor RT-pass faze diferite: în primul rând, sarcinile sunt determinate, care ar trebui să fie vypolyeno și în care granițele temporale (restricții de timp); în al doilea rând, codul este scris și timpul de execuție finală măsurată a fiecărei sarcini, planificarea și lansarea sarcinilor efectuate, astfel încât să fie sigur că sarcina nu va pierde termenul de finalizare în timp ce sistemul este în funcțiune. Planificarea test se bazează pe utilizarea unei serii de teste pentru întregul grup de probleme, și în cazul în care trece testul, este posibil să se asigure că nici o sarcină va pierde termenul de finalizare. Dacă nu, aveți nevoie pentru a începe în curs de dezvoltare în primul rând, pentru a alege un procesor mai rapid sau a altor algoritmi pentru rezolvarea problemei.

Pentru a rezuma. Sarcinile sunt definite trei valori de timp: Pi, Di și Ci. Sistemul trebuie să se asigure că timpul de execuție a sarcinilor, de exemplu, dacă îndeplinesc următorul set de sarcini, toate sarcinile vor rămâne în interiorul frontierelor sale provizorii. Asigurați-vă că timpul de execuție - acest lucru înseamnă că sistemul trebuie să fie previzibil (previzibil). A spune că sistemul este un sistem în timp real sau sistemul este previzibil, de obicei înseamnă același lucru.

Care este relația dintre sistemul de operare și în timp real?

punerea în aplicare semantică a semnalelor de control - programator limite de timp și responsabile depind de sistemul de operare.







Sistemul de operare este necesar pentru a menține și de a gestiona îndeplinirea tuturor sarcinilor, și de a gestiona întreruperi. Sistemul de operare trebuie să ofere:
  • Algoritmul de planificare.
  • Mecanismul de comunicare inter-proces (semafoarele, mesaje.)
  • managementul preryvaniemi.
  • Lansarea sarcini specificate pentru fiecare puncte de timp.

În comparație cu sistemul „normal“ de operare, sistemul de operare în timp real este scopul de a reduce complexitatea. Nu avem nevoie de sistem de operare, care face o mulțime de lucruri pe care este important este faptul că sarcinile sunt conduse cu previzibilitate și viteză.

Mai preferați sunt astfel de sisteme de operare, în cazul în care contextul variază, de obicei, 10 cicluri de timp, în cel mai rău caz 12 decât sistemul de operare, care, deși în medie apare la 3, dar poate fi condiționată de 20 de sloturi de timp.

Nu este surprinzător faptul că în timp real sistem de operare mai lent decât sistemul de operare convențional. Uneori, în scopul de a obține un comportament previzibil, ar trebui să dezactivați chiar memoria cache, respectiv, cu pierderea de productivitate. Cache procesor cu unități de conducte și algoritmi de predicție ramură sunt dușmanii predictibilitate și, prin urmare, sistemele în timp real.

POSIX RT rassshireniya.

POSIX este prescurtarea de la sisteme portabile de operare Interfață (Portable Operating System Interface). Standard, conceput pentru a realiza portabilitatea software-ului la nivel de cod sursă. Cu alte cuvinte, programul de sistem de operare compatibil POSIX trebuie să fie compilate și rula pe orice alt POSIX, chiar dacă acesta este de la un alt furnizor. standardul POSIX definește interfața sistemului de operare ar trebui să ofere aplicații: setul de apeluri de sistem (set de apeluri de sistem). standardul POSIX dezvoltat de IEEE (Instiute de Inginerie Electrică și Electronică) și standardizate ANSI (American National Standards Institute) și ISO (International Standards Organization). Evident, POSIX se bazează pe UNIX. Cele mai multe sisteme de operare, inclusiv Windows NT, caută de la o versiune pentru a fi compatibil cu standardul POSIX.

Lucrările privind definiția POSIX este împărțită în mai multe grupuri de lucru formate din reprezentanți ai companiilor de calculator, companii de software, oficiali guvernamentali și persoane fizice, profesioniști într-un anumit domeniu programirrovaniya. Fiecare grup are grija de dezvoltarea oricărui aspect al sistemului de operare. De exemplu, un grup numit POSIX.4 se ocupă cu probleme legate de timp real.

POSIX-on-uri sunt concepute pentru a spori controlul sistemului de management al sistemului de operare.

LINUX 2.0 suportă mai multe apeluri în timp real sistem-POSIX. dar acest aspect al LINUX, vom discuta într-un articol viitor. Versiunea 2.2. Este posibil să fie 100% compatibil cu POSIX 1003.1b.

Real Time Linux (în timp real Linux, RT-LINUX)

Victor Yodiken și Michael Barabanov dezvoltat RT-LINUX ca Departamentul de Informatică Institutul de minerit și tehnologie, situat în New Mexico. Michael a făcut această parte lucrare de diploma, Master of informatică. Cea mai recentă versiune disponibilă 0.6. La momentul scrierii acestui articol, RT-LINUX a fost disponibil numai pentru platforma Intel.

RT-Linux rezolvă problema din nou. În schimb, pentru a schimba kernel-ul Linux, încercând să facă previzibil, ceea ce va fi independent de nucleul principal al kernel-ului său mic - planificator. Main LINUX nucleu ruleaza pe partea de sus a procesorului de partajare cu alte sarcini în timp real acest nucleu. Linux utilizează echivalentul procesor c alte sarcini în timp real mai mare precizie LINUX este o sarcină de fond, și se execută numai, în cazul în care nu executat, nici una dintre sarcinile în timp real.

În acest moment, mulți cititori ar putea fi confundat, deoarece ei cred că sistemul de operare este tot-puternic, și nu ar trebui să fie tratate în acest fel.

Mai ales să fie încântați să știe că instalarea și îndepărtarea planificator poate în mod dinamic, deoarece este compilat ca modul.

kernel Linux (ca sistem de operare) dezactivează, de obicei, întrerupe ca mijloace de sincronizare sau punerea în aplicare a secțiunilor critice. Dacă în momentul când Linux dezactivează întrerupe există o întrerupere de ceas, acest lucru rămâne blocat și, în consecință, pierderea de precizie temporală. RT-LINUX aplicat o soluție originală: toate apelurile către cli, ITS și IRET (comenzi de asamblare de control întrerupere) se înlocuiesc cu S_CLI, S_STI și S_IRET, iar LINUX nu poate dezactiva întrerupe.

Implicit planificator care vine cu RT-LINUX, acest lucru este ceea ce planificator de prioritate cu prioritățile fixe pentru LINUX evidențiate cel mai scăzut prioretet. În cazul în care sarcinile în timp real să ia tot timpul de procesor, atunci Linux nu va primi timp și poate da impresia că sistemul este oprit.

În cazul RT-LINUX, nu avem doar un sistem în timp real, dar, de asemenea, un sistem de operare clasic. Putem conduce WEB, în timp ce măsurat și controlat de un obiect fizic.

Instalare RT-LINUX.

Pentru conversia în LINUX RT-LINUX, trebuie să modificați codul sursă al kernel-un patch care vine de la nucleu RT-LINUX și compila. Acum, cum să o facă. Cred că fișierul RTLinux-0.6-2.0.33.tgz este în directorul / usr / src și că a fost extras la /usr/src/rtlinux-0.6 director. De asemenea, presupun că kernel-ul sunt deja configurate (make config), și apoi:

Noul kernel-ul par a fi nucleu „normal“, dar este deja pregătită într-un sistem în timp real. /usr/src/rtlinux-0.6-2.0.33/testing director diverse programe demonstrative.

În afară de exemplele care vin cu distribuție (director de testare), puteți lua interenet (Internet) este un alt exemplu pregătit de Oleg, care ne permite să creați o hartă a sarcinilor de timp. Unul dintre fișierele planificatorului programului demo cu modificările, el nu numai planificate sarcini, dar, de asemenea, trimite informații referitoare la deciziile luate. Aceste informații sunt colectate și stocate într-un fișier care poate fi afișată grafic. Ca rezultat, vom vedea în ce ordine diversele sarcini efectuate și ca o sarcină cu o prioritate mai mare preempts sarcini cu prioritate mai mică. Linux, deoarece problema nu a fost depusă.

Fiecare sarcină are o axă orizontală. Dreptunghiuri arată timp problema de utilizare a procesorului (în cazul nostru am avut un sistem mono-procesor, și doar o singură sarcină Mogdy fie pe unitate de timp). În acest exemplu, fiecare sarcină limite sunt egale cu perioada lor. Perioada fiecărei sarcini, intervalul de timp (reprezentant) în cursul căreia trebuie efectuat sarcina. Sarcini în partea superioară, au cea mai mare prioritate și capacitatea de a capta alte sarcini CPU care au avut loc în timp egal cu 600.

Viitorul RT-LINUX.

Există deja o versiune multi-procesor de RT-Linux. Numărul de servicii oferite de RT-LINUX sunt în mod intenționat minime, nu este nevoie să includă caracteristici care nu au nevoie într-adevăr, în cazul în care aveți nevoie pentru a menține un sistem previzibil. Cu toate acestea, unele extensii sunt deja disponibile, cum ar fi semafoarele, precum și capacitatea de a gestiona sarcinile de timp real, prin intermediul / proc / sys.

Cu câteva săptămâni în urmă a început crearea de RT-LINUX manuală.

concluzie

mulți ingineri care au dorit să utilizeze un sistem în timp real au fost obligați să folosească MS-DOS și de a construi toate driverele necesare, sau să cumpere un sistem în timp real la apariția RT-LINUX (pentru prețuri exorbitante). Acum, dezvoltatorii au un sistem complet de operare pentru a dezvolta aplicații pe același sistem în cazul în care acestea vor fi difuzate. De fapt, putem rula mai multe aplicații în timp real, și în același timp, navigarea pe web și fără nici o problemă.