Sunteți pe pagina 1din 7

CAPITOLUL 6.

Sisteme de operare
Un grup special de aplicaţii software sunt cele care dialoghează direct cu un
proces, respectiv interacţionează cu mediul, nu numai cu un eventual operator uman
(ba chiar acesta poate câteodată să lipsească). O astfel de aplicaţie ridică
proiectanţilor cel puţin două mari probleme care măresc gradul de dificultate al
proiectării şi implementării, în cele mai multe situaţii: (1) impunând cerinţe speciale
privind siguranţa în funcţionare (sisteme safety-critical), respectiv, (2) privind
răspunsul în timp real. De aceea, proiectarea unor astfel de sisteme trebuie să fie
realizată conform unor reguli specifice. O categorie aparte de ingineri software şi
informaticieni se ocupă de astfel de sisteme, aceştia trebuind să aibă cunoştinţe
specifice, în special de Ingineria sistemelor.
În acest capitol sunt prezentate sisteme de operare folosite în practică.

6.1. Trăsături specifice


Sistemele utilizate în informatica medicală conducere de proces reprezintă
ansamblul hard-soft destinat legăturii intime, on-line, cu echipamentul/sistemul de
îngrijire a sănătății.
In prezent, sistemele de operare folosite pentru se impun prin modul prin care
răspund unor criterii generale:

a) PENETRABILITATEA (capacitatea si viteza de inradacinare in lumea sistemelor


informatice de azi), manifestata sub forma răspândirii si al asimilării de către
specialişti si utilizatori (cele 2 manifestări conditionandu-se reciproc, pozitiv)
b) INTEGRAREA IN ORIENTARI
- pe termen mediu, caracterizata prin adaptarea unor paradigme ale
ingineriei proiectării
- pe termen scurt, referitor la stilul de programare WINDOWS
c) RAPORTUL BENEFICII/COSTURI
- (ca modalitate de exprimare a eficientei economice), in ceea ce priveşte
cerinţele accesibilitate, compatibilitate cu resursele folosite frecvent si aria
de valorificare cat mai larga
d) SEPARABILITATEA
- este util ca noile facilitaţi sa fie implementate separat pentru a putea
evalua efectele; separabilitatea este tranzitorie, fiind operantă doar pana la
prototip.
Prin prisma acestor cerinţe, tratam următoarele sisteme de operare uzuale:
WINDOWS, UNIX, LINUX, MacOS si cele de timp real OS-9, QNX şi altele.

6.2. Sisteme de operare universale

Astfel de sisteme de operare nu sunt concepute special pentru aplicaţii safety-


critical sau eventual aplicaţii în timp real, cum sunt majoritatea covârşitoare a
aplicaţiilor de conducere de proces. Sub astfel de sisteme de operare pot rula o mare
varietate de aplicaţii cu diverse cerinţe şi destinaţii. De aceea le numim universale.
6.2.1 Windows

Sistemul de operare Windows este de departe cel mai răspândit sistem de


operare, fiind orientat spre utilizare facilă, prietenoasă, inclusiv de către nespecialişti.
Desigur, interfaţa vizuală prietenoasă se plăteşte cu un „înveliş” gros, ca un palton
greu, din punctul de vedere al accesului aplicaţiilor la resursele sistemului. De aceea
Windows nu e bun pentru “alergare”, adică pentru aplicaţii în timp real, unde timpul
de răspuns este critic. Însă este imabatabil la nivelul interfeţelor utilizator. Datorită
marii sale penetrabilităţi, există multe medii de dezvoltare şi mult know-how asociat
(literatură, cursuri, forumuri, instructori, specialişti etc.). De aceea uşor vom putea
dezvolta aplicaţii pentru Windows. De fapt, penetrabilitatea deosebită implică un efect
cumulativ care face ca datorită răspîndirii mari, să rezulte pe de o parte venituri mari
pentru compania Microsoft, care permit acesteia posibilităţi mai bune de dezvoltare şi
perfecţionare a generaţiilor succesive (cu excepţia Windows Vista, care a fost un eşec)
şi pe de altă parte eforturi sporite din partea altor companii pentru a elabora medii,
componente şi aplicaţii compatibile cu acest sistem de operare.
Sistemul de operare permite concurenţa. Aceasta acesta este implementata
prin preemţiune, cu ordonare după prioritati, îmbinând dirijarea prin eveniment (event
driven) cu planificare circulara(round-robin).
Un aspect tipic al programării aplicaţiilor sub Windows este Multi-threading
(fire de execuţie multiple). Un fir este o cale de execuţie in interiorul unui proces. De
fiecare data când este iniţializat un nou proces, se creează pentru acesta un fir de
execuţie primar. Acest fir de execuţie va fi reprezentat de codul de pornire al
aplicaţiei, iniţializat de către editorul de legături in interiorul executabilului. Mai
târziu acest cod va apela rutina WinMain() prezenta in orice aplicaţie Windows (sau
rutina main() daca este vorba despre o aplicaţie de tip consola). Acest fir de execuţie
va continua sa fie activ atâta timp cat rutina WinMain() nu returneaza. După
returnarea rutinei WinMain() se va executa de către codul de pornire un apel către
rutina ExitProcess(). In cele mai multe cazuri acest fir primar de execuţie este si
singurul din interiorul procesului. Windows permite insa proceselor sa creeze si fire
de execuţie suplimentare care sa imbunatateasca utilizarea unitatii centrale de către
aplicaţie.
O alta situaţie in care este necesara crearea unui nou fir de execuţie este aceea
in care o aplicaţie execută o operaţie care necesita mult timp si care doreşte sa dea
utilizatorului şansa de a întrerupe operaţia la nevoie. O astfel de aplicaţie spre
exemplu va crea o fereastra de dialog in care exista un buton de anulare a comenzii si
care va fi controlata de un fir de execuţie auxiliar de prioritate superioara firului care
executa operaţia principala. Daca utilizatorul a apăsat butonul de anulare a comenzii,
firul care controlează dialogul va primi foarte rapid controlul unitatii centrale datorita
prioritatii sale.
Desigur crearea de mai multe fire de execuţie intr-un proces nu este soluţia
universala pentru aplicaţii de conducere de proces. Mai mult decat atât, exista situaţii
in care crearea unor fire de execuţie auxiliare poate sa creeze o mulţime de probleme.
De exemplu, daca o operaţie de listare este mutata pur si simplu intr-un alt fir de
execuţie, fără nici o alta protecţie, atunci exista pericolul ca utilizatorul sa modifice
chiar pagina in curs de listare ceea ce ar duce la rezultate impredictibile. O alternativa
ar fi ca pe timpul listării sa se creeze o copie a fişierului original cu care sa lucreze cel
de-al doilea fir, copie care va fi distrusa la terminarea listării. Deci, morala este ca
firele multiple de execuţie pot rezolva o parte dintre problemele existente, introducând
insa probleme noi. De aceea, Windows de fapt nu e adecvat pentru aplicaţii de tip
safety-critical (la care siguranţa în funcţionare este critică) şi nici pentru aplicaţii în
timp real. Cu toate acestea, în configuraţii larg distribuite, este un excelent sistem de
operare pentru nivelul interfeţelor utilizator. Există însă variante de Windows CE
(Compact Edition) care sunt concepute pentru a permite rularea unor aplicaţii simple
de conducere de proces. Ba chiar unele astfel de aplicaţii nepretenţioase, la care
cerinţele de timp real sunt mai relaxate (spre exemplu de Home Automation) pot rula
sub Windows XP.

6.2.2. UNIX

UNIX este un sistem deschis, nelegat de un producător unic (deşi ramura


originală aparţine AT&T). A fost dezvoltat ca un sistem de operare gen “limbă
universală” şi de aceea există versiuni atât pentru marile calculatoare vectoriale (gen
Cray) cât şi pentru staţii grafice şi calculatoare desktop tip PC. Derivate UNIX au fost
dezvoltate atât de universităţi (este de altfel potrivit pentru studiu, întrucât este
suficient de compact pentru a fi studiat pe durata unui an didactic, de asemenea este
disponibil în cod-sursă) cât şi de firme concurente: AIX (IBM), A/UX (Apple), HP,
DEC şi alte firme. La toate firmele, sistemele de operare derivate din UNIX nu au
înlocuit sistemele proprii ci coexistă cu ele. Acest aspect straniu provine din:
- lipsa de unitate şi şanse scăzute de a o depăşi
- sintaxa relativ criptică (greu de asimilat)
- lipsa unor interfeţe pentru dialoguri non-verbale (totuşi, depăşită la unele
variante)
- lipsa unei familii largi de aplicaţii de dezvoltare software

Astfel, deşi UNIX este un sistem de operare:


- cu trăsături de timp real
- robust
- rapid
- compact
- suficient de modularizat pentru a putea “coborî” la nivelul unui echipament mai
modest (în acest sens, a se vedea paragraful următor: majoritatea sistemelor de
operare în timp real dedicate provin din UNIX)
- oferă nativ facilităţi puternice de comunicare în reţea

nu este folosit pe scară largă iar în perspectivă nu se anunţă lansarea unui sistem
UNIX, orientat obiecte, care să aibă suportul de dezvoltare care să permită realizarea
uşoară şi rapidă de aplicaţii de conducere în timp real, la concurenţă cu Windows din
punctual de vedere al GUI (Graphical User Interface).
În România se folosesc aplicaţii şi sisteme UNIX în sisteme de date
distribuite, sisteme bancare, la vamă, TAROM şi în unele sisteme în timp real pentru
conducere de proces în arhitectură deschisă. De asemenea e utilizat de ENEL pentru
aplicaţia sa de facturare.
În general UNIX nu e răspîndit datorită preţului ceva mai ridicat la
calculatoarelor pe care poate rula, darorită lipsei mediilor de dezvoltare şi a altor
aplicaţii uzuale, precum şi datorită lipsei specialiştilor şi expertizei necesare (de fapt
toate acestea nu lipsesc dar sunt rare).

6.2.3. LINUX

Este un sistem de operare conceput a fi un fel de UNIX capabil să ruleze pe un


PC obişnuit. Nu este compatibil întru totul cu UNIX dar este mic, compact, suficient
de sigur pentru a rula în special servere de Internet. O bună parte din dezavantajele
UNIX sunt şi ale LINUX. Astfel, are interfaţă criptică, greu de folosit (există totuşi
câteva interfeţe grafice spectaculoase), nu sunt prea multe medii de programare care
generează cod pentru LINUX, lipsesc multe drivere necesare pentru a face
funcţionale unele configuraţii, nu sunt prea mulţi dezvoltatori software specializaţi
pentru acest sistem de operare. Există versiuni de LINUX în timp real, însă
dezavantajele de mai sus fac ca utilizarea unor astfel de sisteme de operare să nu fie
prea răspândită.

6.2.4. MacOS

Sistemul de operare al companiei Apple seamănă ca şi posibilităţi cu Windows,


însă calculatoarele produse de companie sunt mult mai puţin răspândite decât
calculatoarele PC. Însă oferta firmei este imbatabilă pentru sistemele de editare din
publicitate, presă, tipografii (este aproape un standard ca o astfel de firmă să
folosească calculatoare şi software Apple). Concluzia este că nu este un sistem de
operare pentru aplicaţii de conducere de proces.

6.3. Sisteme de operare dedicate


Aici, termenul “dedicat” se referă la preeminenţa facilităţilor speciale, cerute
de context, oferite de sistem, de cele mai multe ori facilităţi de timp real. Problema
este aici legată doar de timpul de răspuns. Sistemele de operare dedicate provin în
marea lor majoritate din UNIX, dar cu adaptări care să permită rularea pe maşini mai
modeste ca performanţe (nu neapărat calculatoare relativ puternice, ca staţiile de lucru
pentru UNIX). Descendenţa UNIX (“UNIX-like”) se reflectă de multe ori şi în “X”
conţinut în nume.
Există mai multe subfamilii de sisteme de operare dedicate mai reprezentative,
din care enumerăm:

- OS-9 (Microware Systems Corporation, 1993, apoi RadiSys) cu varianta mai


compactă OS-9000 pentru microsisteme.A fost iniţial elaborat pentru compatibiliate
cu procesoarele Motorola. Există versiuni
OS-9000 pentru Motorola 680x0, Intel 80386, şi PowerPC.
- QNX (Quantum Sofware Systems Ltd., 1992), mai răspândit în România decât
celelalte sisteme.
Compania oferă şi un mediu de dezvoltare QNX Software Development Platform
şi de asemenea o interfaţă grafică microGUI. Sub acest sistem de operare
companii din România au dezvoltat aplicaţii diverse utilizate în conducerea
proceselor în industrie.
- VxWorks/MicroWorks (WindRiver Systems Inc., 1993) folosit de NASA pentru
unele din misiunile sale spaţiale (Mars Pathfinder, Stardust, roboţii de pe Marte
Spirit şi Opportunity, etc.). Dezvoltarea aplicaţiilor pe această platformă se face în
C sau C++. Există şi un mediu integrat de editare specializat, dezvoltat tot de
Wind River sub numele de Workbench

Iată câteva caracteristice ale acestor sisteme de operare:

- entităţi şi stări: entităţile se numesc diferit (procese – la QNX, taskuri – la


MicroWorks) iar stările sunt cele uzuale pentru un sistem în timp real (gata de
execuţie, blocat, pended – blocat datorită indisponibilităţii unor resurse, delayed –
aşteptare de durată determinată, suspended la MicroWorks în timp ce la QNX
avem o subîmpărţire şi mai detaliată, spre exemplu blocat prin send, receive,
reply, signal etc.)
- strategii de alocare a unităţii centrale – se foloseşte planificarea circulară
(round-robin) care poate fi inhibată (la MicroWorks prin cuantă de timp nulă în
subrutina kernelTimeSlice() ) sau reglată fin (la QNX se poate decrementa
dinamic prioritatea unui fir); cuanta de timp este variabilă sau fixă (spre exemplu,
la QNX este 100 ms)
- priorităţi – sunt zeci (la QNX sunt 32) sau sute (la MicroWorks sunt 256);
priorităţile nu respectă aceeaşi ordonare la toate sistemele de operare, pot fi însă la
toate modificate dinamic
- comunicare – se folosesc mesaje şi variabile comune; mesajele pot fi normale
(aşezate în cozi FIFO în lista de mesaje) sau urgente (puse în coadă conform
principiului LIFO) la MicroWorks iar la QNX mesajele pot fi divizate în mai
multe părţi (cu mai multe zone-tampon); recurgerea la semnale se foloseşte mai
ales pentru tratarea excepţiilor
- sincronizare – mecanismele sunt cele cunoscute; granularitatea duratelor de
aşteptare poate ajunge foarte fină (spre exemplu la MicroWorks există nanosleep()
care permite întârzieri de ordinul nanosecundelor); la comunicarea prin zone
comune de memorie, se poate implementa excluziunea reciprocă prin semafoare.

Există variante extrem de compacte: spre exemplu QNX are un micronucleu de 8


ko, iar OS-9 are un nucleu multitasking de 28 ko.
Operaţiile de intrare/ieşire se asigură prin mecanisme unificate gen UNIX.
Programarea se face în C/C++ sau în limbaj de asamblare (spre exemplu la OS-9 se
foloseşte limbajul de la Motorola 68000). QNX furnizează chiar şi o interfaţă grafică
asemănătoare cu Windows (nu la fel de sofisticată).
Sistemele de operare prezentate pot fi înscrise în întregime în memorii fixe
(ceea ce presupune un anumit stil special de a scrie programele sistemului respectiv!).
De asemenea, toate oferă suport pentru comunicaţie pe magistrale field-bus (legături
multipunct) sau Ethernet.

Există pe piaţă şi alte sisteme de operare care pot fi utilizate pentru sisteme
înglobate (embedded), spre exemplu TinyOS care este conceput mai ales pentru a rula
pe microsisteme (cu resurse reduse, de aceea se numeşte Tiny) din reţele de senzori
Wireless. Este scris în limbajul nesC (un dialect C) sub forma unor taskuri şi procese
colaborative. Este un sistem deschis, Open-Source, născut ca o colaborare între
University of California, Berkeley şi Intel Research. Actualmente s-a consolidat o
întreagă comunitate mondială de dezvoltatori şi utilizatori ai acestui sistem, TinyOS
Alliance.
Windows CE (Windows Embedded Compact) poate fi de asemenea folosit în
aplicaţii înglobate (embedded) deoarece este diferit de un Windows trunchiat, având
un nucleu diferit, mai compact şi deci implicit mai sigur (nucleul ocupă mai puţin de 1
Mb de memorie). De asemenea, îndeplineşte cerinţele de timp real, poate fi configurat
să ruleze fără Hard-disk şi din memorie fixă. Are un sistem de întreruperi cu 256
priorităţi, permite multi-threading, are interfaţă simplificată şi timp de execuţie bun
(redus). Este folosit pe PocketPC, pe telefoane mobile inteligente (Windows Mobile
for Smartphone), pe unele dispozitive industriale şi sisteme înglobate. O bună parte
din sistemul de operare este disponibilă sub formă de cod sursă. Însă trebuie luat în
considerare că este compatibil doar cu procesoarele Intel x86 şi compatibile, MIPS,
ARM şi Hitachi SuperH. Un mare avantaj este puterea mediului de dezvoltare Visual
Studio.NET sub care se pot dezvolta aplicaţii pentru această platformă, fiind la
dispoziţia utilizatorilor .NET Compact Framework ca un subset pentru acest sistem de
operare. Aceste avantaje transformă acest sistem de operare într-o alternativă
interesantă pentru anumite aplicaţii pentru sisteme înglobate.

6.4. Concluzii

Desigur, este greu de decis în primă abordare, ce sistem de operare vom folosi
pentru aplicaţia noastră. După cum am văzut la începutul acestui capitol, există mai
multe abordări (echipamente dedicate versus PC-uri industriale) şi configuraţii
posibile pentru aplicaţii on-line, pentru conducere de proces (în sens larg). Rezultă că
o primă modalitate de selecţie a sistemului de operare o reprezintă configuraţiile şi
posibilităţile echipamentelor folosite. Astfel, spre exemplu, un mic sistem dedicat nu
va avea resurse pentru a rula UNIX, dar poate “încape” pe el QNX.
După cum s-a arătat la începutul acestui capitol, mai există şi alte criterii care
dictează alegerea. S-a văzut spre exemplu cât de mult contează penetrabilitatea unui
produs, în alegerea sa. Este aici un cerc “vicios” (forţând aici termenii): cu cât un
sistem de operare este mai penetrabil, cu atât va fi mai răspândit, deci pe de o parte
şansa de a-l utiliza va creşte mai mult (îl vom prefera altor produse deoarece “am
auzit de el”, eventual chiar îl cunoaştem bine, personalul firmei nu are nevoie de
pregătire suplimentară, clientul e şi el mai degrabă dispus să accepte ceva cunoscut
etc.) iar firma furnizoare, având volum mai mare de vânzări, va avea resurse pentru
dezvoltare în continuare şi pentru un marketing şi mai agresiv etc. Cel mai probabil,
pentru un sistem de operare mai răspândit vor fi disponibile mai multe aplicaţii, mai
multe medii de dezvoltare, mai multe facilităţi, care vor spori şi mai mult
atractivitatea acestuia. Acesta este motivul pentru care unele aplicaţii de timp real (cu
cerinţe nu foarte severe) se scriu în prezent chiar sub Windows, deşi acesta nu poate fi
considerat sistem de operare în timp real. Bineînţeles, dacă se adoptă o asemenea
soluţie, trebuie să cunoaştem limitele a ceea ce obţinem. Nu vom realiza niciodată o
aplicaţie pentru conducerea unui motor electric sau a unui avion de luptă direct sub
Windows dar procesul poate fi condus de un DSP de exemplu, acesta legat la un PC
care să ofere interfaţa grafică spectaculoasă şi uşor de folosit de sub Windows.
Alegerea sistemului de operare este dictată şi de considerente de siguranţă. La
arhitectura deschisă, se preferă la nivelul din mijloc servere UNIX cu mirroring pentru
hard-discuri. Un exemplu de aplicaţie de acest gen este la „Electrica” Timişoara, unde
serverul cu clienţii şi facturarea este pe un calculator UNIX cu 2 unităţi centrale şi 4
hard-discuri.
În rezumat, alegem după:

- echipamente, cerinţe şi resurse disponibile


- instruirea şi experienţa personalului propriu
- cerinţe de siguranţă în funcţionare
- viteza de reacţie cerută
- facilităţi ale sistemelor de operare
- existenţa mediilor şi suportului de dezvoltare a aplicaţiilor (inclusiv biblioteci,
ierarhii, exemple de aplicaţii asemănătoare etc.)
- preţ
şi alte considerente.

În România se folosesc, după cum s-a arătat, în special familia Windows,


eventual soluţii UNIX (nu aşa de răspândite), iar QNX este cel mai răspândit sistem
dedicat.

S-ar putea să vă placă și