Aplicații de timp real Țîr Șerban
IntroducereAplicațiile de timp real reprezintă o clasă de produse software caracterizate prin parametrii specifici. Aceste aplicații sunt dezvoltate cu ustensile speciale de dezvoltare și sunt destinate exploatării pe platforme cu sisteme de operare speciale (sisteme de operare concepute pentru acest tip de aplicații). Dintre cele mai populare sisteme de operare de timp real menționăm: QNX pentru platforme bazate pe microprocesoare din familia Intel i86 și OS/9 pentru platforme cu microprocesoare Motorola din seria 68xxx. Semnalăm, de asemenea, existența unor module software de tip add-on, care transformă sistemele de operare comerciale de uz general (MS-DOS, MS Windows NT, SCO UNIX) în sisteme de operare cu facilități și funcționalități de timp real. În lumea platformelor bazate pe microprocesoare din familia Intel i86, liderul mondial in tehnologia sistemelor de operare de timp real este firma Canadiana QNX Software Systems Ltd. care a dezvoltat sistemul de operare QNX de la care și-a și luat numele. QNX a ajuns acum la versiunea 4.24 și este pe deplin compatibil cu setul de standarde POSIX , adăugând în plus funcții legate de procesarea în timp real. Ce înseamnă sistem de operare de timp realUn sistem de operare este considerat de timp real, dacă se poate garanta un timp maxim de răspuns, cum ar fi de pildă intervalul de timp scurs de la apariția unei întreruperi hardware, până la execuția primei instrucțiuni din rutina de deservire a întreruperii respective, interval numit latență de întrerupere. Pentru exemplificare, în cazul sistemului de operare de timp real QNX și a unui sistem cu microprocesor Intel Pentium 133 MHz, latența de întrerupere este de 4,3 microsecunde. Este necesar ca valorile maxime admisibile ale acestor intervale timp să fie bine precizate de către proiectantul sistemului de operare de timp real, deoarece depășirea lor este inadmisibilă, indiferent de gradul de utilizare al microprocesorului, de ocuparea memoriei sau cantitatea ei etc. Exemplu de aplicație specifică de timp real În cele ce urmează, dorim să prezentăm o aplicație specifică de
timp real, dezvoltată de firma E.D.C.G din București și care rulează
sub sistemul de operare de timp real QNX. Aplicația este în exploatare
la Secția de Cale Ferată Roșiori și are ca scop supravegherea și comanda
alimentării cu energie electrică a tuturor elementelor din subordinea
secției, care sunt dispuse în teren de-a lungul a 180 kilometri de
cale ferată. Aceste elemente sunt grupate în: Scopul aplicației este acela de a înlocui vechea instalație total
uzată, atât fizic, cât și moral cu o nouă structură formată din punct
de vedere hardware dintr-un sistem compatibil IBM PC dotat cu o interfața
de comunicație specifică (PROFIBUS), și din punct de vedere software,
din programul de aplicație mai sus menționat. Funcțiile vechiului
sistem au fost îmbogățite cu altele noi. Aplicația rezultată poate
realiza: Aplicația este tipică de timp real și a fost dezvoltată cu un efort relativ redus (patru persoane în decurs de patru luni). Aceasta performanță se datorează pe lângă îndemânarea programatorilor și facilităților sistemului de operare de timp real QNX, a interfeței Photon microGUI și a ustensilelor de dezvoltare disponibile în Photon Application Builder interfațate cu compilatorul Watcom C/C++ 10.6 pentru QNX. Structura aplicațieiPentru a ușura dezvoltarea, a exploata la maxim performanțele sistemului și pentru a asigura o extindere ulterioară fără dificultăți, aplicația a fost împărțită în mai multe taskuri care se execută simultan. Fiecare task este dedicat îndeplinirii unei funcții specifice. (vezi figura Structura aplicației.) Lansarea proceselor în execuție simultană se face cu funcții de tip spawn (funcții binecunoscute în sistemele compatibile POSIX). Comunicația între procesele paralele se face prin mai multe modalități standard POSIX, cum ar fi : memorie partajată (share memory), mesaje, semnale, proxy-uri și pipe-uri. Comunicația cu echipamentele locale de tip rețea PROFIBUS este realizată de task-ul serial. Acesta actualizează ciclic în zona de memorie partajată starea sistemului electroenergetic din fiecare stație și transmite spre execuție comenzile aflate într-o coadă din aceeași memorie partajată. Modificarea stării sistemului electroenergetic este detectată de task-ul chgdetect. Orice modificare de stare declanșează formarea și transmiterea unui mesaj specific QNX către task-ul sinoptic. Task-ul sinoptic realizează interfața grafică cu operatorul uman. Acesta actualizează în același timp și fișierele de jurnal cronologic al evenimentelor apărute în sistem. Determinarea prezenței sau absenței tensiunilor pe fiecare linie se face pe baza datelor din zona de memorie partajată de către task-ul linesfill, valorile calculate fiind apoi înscrise în memoria partajată. Comenzile preluate de la operatorul uman prin intermediul interfeței grafice sunt formate și înscrise în coada din memoria partajată de către task-ul output. Task-ul beep este activat de către task-ul sinoptic pentru avertizarea sonoră a operatorului uman în cazul apariției de modificări în starea sistemului. Semnalele sonore sunt diferențiate în funcție de gravitatea evenimentului apărut. De înregistrarea, respectiv redarea, convorbirilor operative se ocupa task-ul sound. Acesta este implementat peste driverul Audio (pentru placi de sunet) al sistemului de operare QNX. Prelucrarea statistică a evenimentelor apărute în sistemul de alimentare cu energie electrică se realizează periodic de către task-ul makeproto. Cel mai bun argument în favoarea bunei calități a aplicației este faptul că funcționează în exploatare curentă din luna decembrie 1997 fără întrerupere, zilnic, 24 de ore din 24.
BYTE România - iunie 1998
(C) Copyright Computer Press Agora |