Sunteți pe pagina 1din 3

1 Sisteme de operare

Sistemele de operare sunt probabil una dintre cele mai complexe abstracţiuni inventate,
proiectate şi construite de fiinţă umană. Există multe încercări de definire a acestui
concept foarte sofisticat în aparentă, dar simplu în esenţă. Sistemele de operare sunt
maşini virtuale construite cu ajutorul limbajelor de programare (de asamblare sau de nivel
înalt) care permit utilizatorului să controleze, programeze şi să extindă posibilităţile
maşinii hardware pe care sunt implementate.
Un exemplu, devenit clasic, este sistemul de operare Unix, care iniţial a fost conceput ca
un gestionar de fişiere (file manager). Grosso modo, sistemul de operare este un gestionar
de resurse (resource manager). Cu timpul conceptul a evoluat, în sensul că sistemele de
operare au fost extinse să controleze resurse din ce în ce mai complicate şi din afara
cadrului restrâns al unei singure maşini hardware: sisteme multiprocesor, sisteme
distribuite, sisteme de reţele de calculatoare, sisteme de operare globale. Oricine cunoaşte
că, în general, aceste sisteme de operare sunt implementate pe calculatoare de tip
mainframe sau desktop, dar mai putini ştiu că ele sunt prezente în maşini electrocasnice,
automobile (ultimele tipuri conţin în configuraţie o adevărată reţea locala de 4-16 unităţi
centrale), sisteme de telecomunicatii, avioane, navete spaţiale, televizoare, echipamente
de reţea (routere, gateways, PBX, set-up boxes), centrale electrice, etc., şi în general
oriunde fiinţa umană a avut nevoie de ajutorul calculatorului pentru a cunoaşte şi
controla lumea înconjurătoare. În realitate mulţimea sistemelor de operare nu este limitată
la MS DOS, VMS, UNIX sau mai recentul Windows 95/NT, ci este o lume variată,
colorată, cu multe accente exotice.
1.1 Microkernel sau kernel monolitic?
Modalitatea clasică de a proiecta nucleul unui sistem de operare (kernel) constă în a
include în structura lui orice componenta care, în cazul în care ar fi utilizată în mod
defectuos de utilizator, ar putea produce căderea software-ului de sistem. Un astfel de
kernel se numeşte monolitic. Pe la mijlocul anilor '80 a apărut un nou concept în
proiectarea nucleelor sistemelor de operare, numit "microkernel".
Semnificaţia de bază a noţiunii de "microkernel" constă în a construi cât mai mult din
funcţionalitate în procese şi nu în kernelul propriu-zis; sisteme de operare diferite
rezolvă această problemă în moduri specifice. De exemplu, Mach lasă driverele de
periferice în kernel şi plasează serviciile de nivel superior (sistemul de fişiere, etc), în
afara kernelului; altele că de exemplu QNX mută driverele de periferice în afara
kernelului. Adevărul este că distincţia dintre noţiunea de microkernel şi cea de kernel
monolitic devine din ce în ce mai neclară pe măsura ce cele două concepte evoluează. De
exemplu, cele mai multe kernele monolitice moderne implementează acum
multithreading şi paralelism în execuţie. Din punct de vedere arhitectural aceasta
modalitate devine similară cu situaţia în care procesele de kernel rulează toate din
memoria partajata de utilizatori.
Să considerăm trei exemple consacrate:
Mach, despre care mulţi se plâng că este atât de mare încât nu se pune problema să fie un
microkernel. În realitate, noţiunea de microkernel este mai mult definită de
funcţionalitate decât de mărime. Pe de alta parte, mărimea exagerată a lui Mach se
datorează mai mult faptului că o mare parte a lui este generată automat prin generatoare
de stub-uri optimizate insuficient şi de faptul că driverele de periferice sunt incluse în
kernel. Neîndoielnic, Mach este un microkernel. Serviciul de marketing al lui Microsoft
pretinde că Windows NT are o structură de microkernel. O analiză mai atentă a
kernelului arată că, deşi componentele lui sunt separate şi comunică prin "message
passing", de fapt managerii de subsisteme (de procese, de comunicaţie, de periferice, de
fişiere, etc.) sunt implementaţi în spaţiul kernel. Cu toate acestea, interfaţa de programare
Win32 este implementată în spaţiul utilizator. De fapt, însusi David Cutler (directorul
proiectului) recunoaşte în unele ocazii că Windows NT este un fel de hibrid între
conceptele de kernel monolitic şi microkernel. Şi pentru că suntem la Windows NT,
trebuie să recunoaştem că după aproape un deceniu de supremaţie în industria de
software, în sfârsit Microsoft a reuşit să producă un sistem de operare care să înlocuiască
MS-DOS (care, spun unii, poate fi numit oricum, numai sistem de operare nu). Mai că as
fi gata să adresez felicitări, dacă Microsoft nu ar fi scos la iveală (exclusiv din raţiuni
comerciale) un alt caz nefericit: Windows 95. Lăsând la o parte gluma, Windows NT este
un sistem de operare solid, superior tuturor versiunilor existente de Unix şi care în 2-3
ani va constitui o altă sursă de miliarde pentru gigantul din Redmond, Washington.
Dezbaterea "microkernel" contra "kernel monolitic" trebuie abordată exclusiv din punct
de vedere arhitectural. În acelaşi mod în care un procesor RISC nu minimizează în mod
necesar numărul de instrucţiuni, ci mai mult face un compromis între ceea ce este
implementat în setul de instrucţiuni şi ceea ce este implementat în alte modalităţi,
problema esenţială a arhitecturii de microkernel este care servicii sunt implementate în
interiorul lui şi care în exteriorul lui.
1.2 Distribuit, multiprocesor, reţea
Există numeroase implementări (în cercetare şi comerciale) de acest fel dintre care
menţionăm:
Chorus, un sistem de operare distribuit şi multiprocesor "state-of-the-art", realizat de o
companie franceză (cu acelaşi nume), dar care, deşi a fost folosit drept microkernel în
câteva implementări de UNIX, nu s-a impus pe plan comercial;
Amoeba, un sistem de operare bazat pe un microkernel distribuit datorat unei echipe de la
universitatea (liberă) din Amsterdam;
Mach, un sistem de operare bazat pe un microkernel multiprocesor proiectat la
universitatea din Carnegie Melon;
Sprite, un sistem de operare de reţea elaborat la Berkeley;
Windows NT, un sistem de operare multiprocesor cu capabilităţi distribuite şi de reţea;
Plan9, un sistem de operare multiprocesor şi de reţea datorat unei echipe de la Bell Labs.
Din această enumerare am omis numeroase altele, dar cele menţionate reprezintă toate
adevărate "bijuterii" în domeniu. Din punct de vedere al structurii hardware, sistemele
care cuprind mai multe procesoare pot fi: "puternic" cuplate sau "slab" cuplate. Cele
"puternic" cuplate sunt conectate la nivel de memorie, cele "slab" cuplate sunt conectate
la nivel de reţea de calculatoare. Primele se mai numesc "multiprocesoare", ultimele se
mai numsc "multicalculatoare". O altă clasificare poate fi făcută după valoarea timpului
de acces la memorie:
UMA (Uniform Memory Access) în care timpii de acces la memorie sunt egali pentru
toate procesoarele (toată memoria sistemului este globală);
NUMA (Non Uniform Memory Access) în care timpul de acces este variabil (sisteme în
care procesoarele au atât memorie globala cât şi locală);
NORMA (No Remote Memory Acess) în care sistemul este cuplat prin reţea sau
magistrală, neavând memorie globală.
Din punct vedere al structurii software sistemele de operare pot fi de asemenea "puternic"
sau "slab" cuplate. Un sistem "slab cuplat" permite maşinilor unui sistem distribuit să fie
fundamental independente, dar interacţionând într-un anumit grad. Un sistem "puternic
cuplat" software este un sistem distribuit în care utilizatorul vede toate procesoarele ca un
singur procesor virtual şi în fapt structura hardware este total ascunsă de structura
software. Odată înarmaţi cu aceste noţiuni putem să definim intuitiv cuvintele din titlul
acestui paragraf.
Un sistem de operare de reţea este implementat prin software "slab cuplat" ce rulează pe
hardware "slab cuplat".
Un sistem de operare distribuit este caracterizat prin software "puternic cuplat"
implementat pe hardware "slab cuplat".
Un sistem de operare multiprocesor înseamnă software "puternic cuplat" executat pe un
hardware "puternic cuplat".
Sperând că aceste clasificări au reuşit întrucâtva să fixeze noţiunile, ne vom opri aici cu
acest subiect făcând însă observaţia că sistemul de operare comercial care va domina
industria de software va trebui să includă toate cele 3 caracteristici. Windows NT are
bune şanse să ajungă în aceasta poziţie în câţiva ani.
1.3 Timp real
Pentru o lungă perioadă de timp sistemele de operare de timp real au fost utilizate în
principal în aplicaţii specializate care necesită constrângeri din punctul de vedere al
vitezei de răspuns şi a predictibilităţii. Dezvoltarea excepţională a reţelelor de
calculatoare, a Internetului şi necesitatea tot mai stringentă de a suporta aplicatii de timp
real (în special multimedia) pe calculatoare de tip desktop vor impune apariţia de sisteme
de operare de timp real în aşa numita lume "Wintel" (sistem de operare Windows pe
microprocesoare Intel). Proiectarea sistemelor de operare de timp real este mult mai
complicată decât proiectarea sistemelor de operare clasice datorită numeroaselor
condiţionări ce trebuie rezolvate at runtime şi care impun schimbarea în mod dinamic a
comportării unui element de execuţie (proces, task, thread). Prin definiţie, toate aplicaţiile
de tip Internet includ aspecte de timp real. Pentru cei neinitiaţi în acest domeniu să
menţionăm câteva dintre sistemele de operare de timp real comerciale mai cunoscute:
QNX, VxWorks, pSOS, Vrtx, OS/9, Lynx. Majoritatea acestor sisteme de operare sunt
extrem de portabile, fiind implementate pe numeroase procesoare.
O definiţie simplistă a software-ului de timp real ar fi: acel software care trebuie să
opereze în cadrul unor constrângeri specifice de timp.
Din punct de vedere al comportării în timp, aplicaţiile de timp real se împart în 3 mari
categorii:
sporadice - în care activităţile se desfăşoară asincron şi nepredictibil (de exemplu
întreruperile generate de folosirea tastaturii),
aperiodice - în care activităţile se desfăşoară după anumite cicluri, dar la intervale de timp
variabile (fără că neapărat să urmeze o anumită lege matematică), ca de exemplu
decolarea şi aterizarea avioanelor într-un aeroport, şi
periodice - în care evenimentele se petrec la intervale regulate (de exemplu un VCR care
primeşte un cadru de imagine la fiecare 1/60 de secundă).
Bineînţeles că aplicaţii care combină caracteristicile celor trei categorii sunt extrem de
abundente.

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