Documente noi - cercetari, esee, comentariu, compunere, document
Documente categorii

Ce sunt si prin ce se caracterizeaza sistemele de operare?

Ce sunt si prin ce se caracterizeaza sistemele de operare?

Este important de notat ca nu toate computerele au sisteme de operare. Computerul care controleaza un cuptor cu microunde, spre exemplu, nu necesita o astfel de componenta software complexa. Are un set limitat de instructiuni de efectuat si hardware ce nu necesita upgrade-are. Computerul unui cuptor cu microunde ruleaza acelasi program de fiecare data.

Computerul unui cuptor cu microunde

nu necesita sistem de operare

Pentru sistemele de calcul ce depasesc in complexitate cuptorul cu microunde, insa, sistemul de operare este cheia catre o eficienta ridicata.



Sistemul de operare este componenta software ce realizeaza interconectarea funtionala a resurselor calculatorului si ofera o interfata cu utilizatorul. 

Toate calculatoarele personale au sisteme de operare. Cele mai comune dintre acestea sunt cele din familiile Windows si Macintosh.

La nivelul cel mai simplu, un sistem de operare face doua lucruri:

gestioneaza resursele hardware si software ale sistemului. Acestea includ procesorul, memoria interna, memoria externa, etc.

ofera un mod stabil si consistent in care aplicatiile pot conlucra cu hardware-ul fara a "cunoaste" toate detaliile despre acesta.

Prima functie este deosebit de importanta, deoarece aplicatiile si metodele de input "intra in competitie" pentru atentia unitatii centrale si isi "cer" dreptul la memorie interna, memorie externa si mijloace I/O pentru scopurile lor. Din acest punct de vedere, sistemul de operare joaca rolul "parintelui corect", asigurandu-se ca fiecare aplicatie primeste resursele necesare si se "impaca", in acelasi timp, cu celelalte. Sistemul de operare va gestiona, deci, resursele limitate ale sistemului de calcul, in scopul rularii la un gard cat mai ridicat de eficienta a aplicatiilor.

A doua functie, oferirea unei interfete consistente pentru aplicatii, este deosebit de importanta daca sistemul de operare va fi instalat pe mai multe tipuri de computere, sau exista posibilitatea ca hardware-ul sa fie upgrade-at. Ori acestea sunt cerinte elementare in prezent.

O interfata solida cu aplicatiile permite creatorului de software care programeaza o aplicatie pe un anumit sistem de calcul sa aiba mai mult sau mai putin siguranta ca programul va rula corect si pe un altul de acelasi tip, chiar in situatia in care cantitatile de memorie interna sau externa de pe cele doua computere difera. Chiar daca un computer individual este unic, sistemul de operare poate asigura rularea programelor si dupa upgrade-ari si update-ari, deoarece el, si nu programul-aplicatie, are functia de a gestiona hardware-ul si de a ii distribui resursele.

Windows 98 este un exemplu bun pentru flexibilitatea pe care o poate oferi un sistem de operare, ruland cu succes pe hardware de la mii de producatori si putand face fata la mii de tipuri de imprimante, memorii externe si alte periferice, in orice combinatie posibila.

In vasta familie a sistemelor de operare exista, in principal, patru tipuri, clasificate in functie de componentele pe care le controleaza si de aplicatiile pentru care ofera suport. Aceste mari categorii sunt:

Sistemele de operare in timp real ("Real Time Operating Systems" - ROTS) folosite pentru a controla masini mari, instrumente stiintifice si sisteme industriale. Un RTOS are de obicei o interfata cu capacitati reduse, o functie semnificativa a sa fiind gestionarea resurselor computerului, astfel incat o anumita operatie sa fie executata in exact aceeasi durata de timp de fiecare data. Intr-un sistem complex, miscarea unei componente mai devreme decat trebuie doar pentru ca resursele care o opereaza sunt active se poate dovedi la fel de fatala precum ramanerea ei nemiscata cand resursele sunt ocupate.


Sistemele de operare monoutilizator, monoprogramare ("single-user, single task") sunt proiectate, dupa cum sugereaza si denumirea lor, pentru a gestiona resursele computerului astfel incat un utilizator sa poata executa eficient o actiune la un moment dat. Palm OS (pentru computerele de tip palm-top) este un exemplu de sistem de operare monoutilizator monoprogramare modern.

Sistemele de operare monoutilizator, multiprogramare ("single-user, multitasking") sunt cele pe care majoritatea utilizatorilor din prezentat le au instalate pe computerele lor de tip desktop sau laptop. Windows 98 si MacOS sunt exemple de sisteme de operare care ii permit unui utilizator unic sa ruleze mai multe programe in acelasi timp. Spre exemplu, este posibil ca un utilizator Windows sa scrie un document intr-un editor de text si sa descarce in acelasi timp un fisier de pe Internet, imprimand simultan textul unui mesaj e-mail.

Sistemele de operare multiutilizator ("multiuser") permit mai multor utilizatori sa beneficieze de resursele computerului simultan. Sistemul de operare face posibila echilibrarea cerintelor diversilor utilizatori, "asigurandu-se" ca fiecare program pe care acestia il folosesc are resurse suficiente si separate (astfel incat o eroare la unul dintre utilizatori sa nuu afecteze intreaga "comunitate"). Unix si VMS sunt exemple de sisteme de operare multiuser.

Este important de notat diferenta dintre sistemele de operare multiuser si sistemele de operare single-user care permit lucrul in retea. Windows 2000 si Novell Netware au suport pentru sute si mii de utilizatori in retea, dar nu sunt de tip multiuser. Administratorul de sistem este singurul "user" al Windows 2000 sau Netware. Suportul pentru retea si acceptarea celorlalti membri ai ei reprezinta, in planul sistemului de operare, un program rulat de catre utilizatorul-administrator.




Cand un computer este pus in functiune, primul program care ruleaza este, de obicei, un set de instructiuni pastrate in memoria  ROM. Acestea examineaza hardware-ul sistemului, verificand functionarea corecta a componentelor in ansamblu. POST ("POWER-ON SELF Test") verifica CPU, memoria si BIOS-ul pentru a detecta eventualele erori. Dupa ce POST a fost incheiat cu succes, software-ul (numit si "firmware") incarcat in ROM va incepe sa activeze memoriile externe. Majoritatea computerelor moderne, cand activeaza HDD, "gasesc" prima parte a sistemului de operare: bootstrap loader-ul.

Bootstrap loader este un mic program care are o unica functie: incarca sistemul de operare in memoria de lucru si ii permite sa isi inceapa "activitatea". In forma sa cea mai simpla, el pregateste driverele care controleaza diverse subsisteme hardware ale computerului, precum si portiunile de memorie "insarcinate" cu sistemul de operare, informatiile particulare utilizatorului si structurile de date ce faciliteaza comunicarea in cadrul subsistemelor sau intre subsisteme diferite. Dupa efectuarea acestor pasi, controlul asupra computerului revine sistemului de operare.

Functiile sistemului de operare sunt grupate, in general, in urmatoarele categorii:

gestiunea procesorului

gestiunea memoriei interne si externe

gestiunea componentelor hardware

interfata cu aplicatiile

interfata cu utilizatorul

Producatorii implementeaza in general numeroase programe utilitare si functii auxiliare in sistemele de operare, dar esenta acestora este definita de cele cinci elemente mentionate mai sus.

Voi descrie in continuare "uneltele" folosite de sistemul de operare pentru a indeplini fiecare dintre aceste functii.

Gestiunea procesorului


Principala unitate software cu care sistemul de operare lucreaza pentru a planifica activitatea procesorului este ori un " process", ori un " thread", in functie de tipul sistemului de operare cu care lucram.

Am putea fi tentati sa percepem un proces ca pe o aplicatie, dar aceasta reprezentare ne ofera o imagine incompleta a felului in care procesele se raporteaza la sistemul de operare si software. Aplicatiile in care imtervenim direct (precum editoarele de text sau jocurile) sunt, intr-adevar, procese in sine, dar pot provoca si initierea altor procese, precum comunicarea cu alte echipamente sau computere. Exista si numeroase procese care ruleaza fara a da utilizatorului dovezi directe ale existentei lor. Un proces este, deci, o componenta software care efectueaza anumite actiuni si care poate fi controlata de catre un utilizator, de catre alte aplicatii sau de catre sistemul de operare.

Procesele, si nu aplicatiile, sunt controlate si planificate pentru executia de catre CPU de sistemul de operare.

Intr-un sistem de operare monoprogramare, planificarea este mai putin complexa: sistemul de operare initiaza rularea aplicatiei, suspendandu-i executia doar suficient timp pentru a se "ocupa" de intreruperi si de intrarile din partea utilizatorului. Intreruperile sunt semnale speciale transmise de hardware sau de software catre CPU. Uneori, sistemul de operare va planifica prioritatea proceselor astfel incat intreruperile sa fie "mascate", cu alte cuvinte va ignora intreruperile din anumite surse pentru a permite unei activitati sa fie incheiata cat mai repede posibil. Exista intreruperi (precum cele de eroare sau semnalizatoare de probleme legate de memorie) care sunt atat de importante incat nu pot fi ignorate. Acestea se numesc "intreruperi nemascabile" (Non-Maskable Interrupts" - NMIs).

Intreruperile complica putin executarea proceselor intr-un sistem monoprogramare, dar nivelul de complexitate creste si mai mult in cazul sistemelor de operare multipro-gramare, cand executia aplicatiilor trebuie organkizata astfel incat sa para ca mai multe activitati au loc in acelasi timp. Acest lucru este complicat deoarece CPU poate efectua o singura actiune la un moment dat. Pentru a crea impresia de executare simultana a mai multor task-uri, sistemul de operare trebuie sa comute intre procese diferite de mii de ori pe secunda. Iata cum "procedeaza":

un proces ocupa o anumita cantitate de RAM, folosindu-se in acelasi timp, si de registrii, queue-urile din si spatiul de memorare alocat sistemului de operare

cand doua procese sunt executate in regim multiprogramare, sistemul de operare aloca un anumit numar de cuante CPU unui program

dupa numarul respectiv de cuante sistemul de operare face copii ale resurselor necesare procesului respectiv

in continuare sistemul de operare incarca resursele necesare procesului concurent si ii permite un numar de cuante CPU

cand aceste cuante se incheie, sistemul de operare retine resursele incarcate de procesul si il incarca pe urmatorul (sau, in cazul in care sunt numai doua procese concurente, pe primul).



Toate informatiile necesare pentru a avea in vedere fiecare proces la comutare sunt pastrate intr-un pachet de date numit "process control block". Acesta contine printre altele:

un numar de identificare al procesului

continutul registrilor

o lista a fisierelor deschise de catre proces

prioritatea procesului

situatia tuturor dispozitivelor de intrare/iesire necesare procesului.

Comutarea intre procese are loc fara interventie directa din partea utilizatorului, si fiecare proces primeste suficiente cuante CPU pentru a-si putea indeplini functiile intr-un interval de timp rezonabil. Pot aparea probleme, totusi, daca utilizatorul incearca sa ruleze pre multe procese in acelasi timp. Sistemul de operare in sine necesita cateva cuante CPU pentru a efectua salvarea de informatii si comutarea. Daca au fost initializate suficiente procese, iar sistemul de operare nu a fost proiectat impecabil, acesta din urma poate incepe sa utilizeze vasta majoritate a cuantelor CPU disponibile numai in scopul comutarii intre procese si nu in cel al executiei lor. Fenomenul este cunoscut sub numele de "thrashing", iar pentru intreruperea sa este in general necesara o interventie directa din partea utilizatorului.

In cazul sistemelor de calcul cu doua sau mai multe procesoare, sistemul de operare va imparti activitatea intre acestea echilibrand pe cat posibil cerintele proceselor cu cuantele disponibile pe fiecare procesor.

Sistemele de operare asimetrice folosesc un procesor pentru necesitatile proprii, impartind procesele aplicatiilor intre celelalte.

Sistemele de operare simetrice  se "impart" intre diferitele procesoare, chiar daca sistemul de operare in sine este unicul care ruleaza la un moment dat.

Gestiunea memoriei

Cand un sistem de operare gestioneaza unitatile de memorie ale computerului, el are doua functii principale de indeplinit:

fiecare proces trebuie sa beneficieze de suficienta memorie interna in care sa fie executat, nefiindu-i permis sa ocupe memoria alocata unui proces concurent.

tipurile diferite de memorie din sistem trebuie utilizate eficient, astfel incat fiecare proces sa poata rula in conditii optime

Prima functie face necesara face necesara stabilirea de catre sistemul de operare a unor bariere de memorie pentru tipurile de software si pentru aplicatiile individuale.

Pentru a exemplifica, vom considera un sistem imaginar cu 1 megabyte de RAM. In timpul procesului de boot-are, sistemul de operare este proiectat sa "urce" la nuvelul superior al memoriei disponibile, apoi sa "coboare" cat este necesar pentru a satisface necesitatile sale proprii de functionare. Sa presupunem ca sistemul de operare are nevoie de 300 kB pentru a functiona. In continuare sistemul de operare avanseaza spre nivelurile de jos ale memoriei RAM si aloca memoria necesara driver-elor pentru diverse subsisteme hardware. In cazul computerului nostru imaginar, driver-ele ocupa maxim 200 kB. Cu alte cuvinte, dupa ce sistemul de operare se incarca complet mai raman 500kB RAm de pentru procesele aplicatiilor.

Aplicatiile sunt incarcate in memoria de lucru in blocuri a caror dimensiune este determinata de sistemul de operare. Daca dimensiunea unui bloc este, spre exemplu, de 2 kB, atunci fiecarui proces incarcat i se va aloca o cantitate de memorie egala cu un multiplu de 2 kB. Aplicatiile vor fi incarcate in aceste blocuri de dimensiuni fixate, care incep si se termina la bariere stabilite de cuvinte de 4 sau 8 bytes. Aceste blocuri si bariere ne asigura ca o aplicatie individuala nu va fi incarcata in spatiul alocat unei alteia.

Gestiunea componentelor hardware

"Drumul " de la sistemul de operare la o parte din componentele computerului "trece" printr-un program special numit "driver". Functia de baza a driver-ului este aceea de a juca rolul de translator intre semnalele electrice ale subsistemelor hardware si limbajele de programare evoluate ale sistemului de operare si aplicatiilor. Driver-ele preiau datele descrise de sistemul de operare drept fisiere si le traduc in serii de biti plasate in locatii anume pe memoriile externe, sau in serii de impulsuri electrice  cazul imprimantelor.

Sistemul de operare va aloca frecvent blocuri de prioritate mare anumitor driver-e, astfel incat resursa hardware aferenta sa fie eliberata si pregatitapentru noi utilizari cat mai repede posibil.

Unul dintre motivele pentru care driver-ele sunt separate de sistemul de operare este necesitatea adaugarii de noi functii acestora, si deci subsistemelor hardware, fara a necesita modificarea, recompilarea sau redistribuirea sistemului de operare in sine.

Gestiunea intrarilor si a iesirilor tine in special de cea a queue-urilor si buffer-elor, facilitati de memorare speciale care preiau serii de biti de la un dispozitiv (precum tastatura sau un port serial) le stocheaza, apoi le transmit unitatii centrale de prelucrare la o viteza suficient de redusa pentru  ca aceasta sa le poata prelucra. Aceasta functie este deosebit de importanta cand mai multe procese ruleaza simultan, ocupand timpul procesorului. Sistemul de operare va instrui un buffer sa continue sa accepte intrari de la dispozitiv, dar sa opreasca transmisia de date catre CPU pe perioada suspendarii procesului care necesita aceste intrari. Apoi, cand procesul respectiv devine activ din nou, sistemul de operare ii va comanda buffer-ului sa transmita date. Acest proces permite unei tastaturi sau unui modem, spre exemplu, sa comunice cu utilizatori sau computere externe la o viteza mare, chiar daca exista momente cand CPU nu poate folosi intrari din aceste surse.



Interfata cu aplicatiile

Asa cum driver-ele ofera un mod in care aplicatiile se pot folosi de subsistemele hardware fara a "cunoaste" fiecare detaliu despre modul lor de operare, asa numitele "Application Program Interfaces" (APIs) permit programatorilor de aplicatii sa utilizeze functiile computerului si ale sistemului de operare fara a cunoaste detaliile operarii CPU la un moment dat. Vom demonstra importanta acestui fapt printr-un exemplu: crearea unui fisier pe hard-disk.

Un programator care creeaza o aplicatie ce stocheaza datele preluate de la un instrument stiintific, spre exemplu, va trebui sa-i ofere cercetatorului-utilizator posibilitatea de a specifica un nume pentru fiecare fisier creat. Sistemul de operare ar putea oferi o functie API numita MakeFile pentru creearea fisierelor. Cand scrie programul, informaticianul va introduce o comanda precum aceasta:

MakeFile[1,%Name,2]

In acest exemplu, instructiunea ii comanda sistemului de operare sa creeze un fisier care va permite acces direct la date (1), va avea un nume specificat de utilizator (%Nume) si o dimensiune dependenta de cantitatea de date stocate in el. Iata modul in care sistemul de operare transforma instructiunile respective in actiuni:

pentru inceput, interogheaza disk-drive-ul pentru a "afla" locatia primei zone libere de memorie

avand aceasta informatie, sistemul de operare creeaza un articol in sistemul de fisiere, specificand locatiile de inceput si de sfarsit, numele si tipul fisierului, precum si daca acesta a fost arhivat sau nu, utilizatorii care au permisiunea sa acceseze si sa modifice fisierul si data si ora crearii sale.

in final, sistemul de operare trece la inceputul fisierului informatii care il identifica pe acesta din urma si care il "leaga" de aplicatia de care apartine.

In procesul de mai sus, interogarile catre disk-drive si adresele de la inceputul si sfarsitul fisierului sunt in formate ce depind in mare parte de producatorul si modelul HDD.

Deoarece programatorul si-a "instruit" aplicatia sa foloseasca API-ul pentru HDD, el nu este nevoit sa cunoasca toate codurile de instructiuni, tipurile de date si codurile de raspuns pentru fiecare tip de hard-disk existent. Sistemului de operare, in conexiune cu driver-ele subsistemelor hardware, ii revine "responsabilitatea" detaliilor mereu in schimbare ale hardware-ului. In aceste conditii, tot ce trebuie sa faca programatorul este sa introduca codul API.

Interfata cu utilizatorul

In timp ce API ofera un mod mai consistent in care aplicatiile pot folosi resursele sistemului de calcul, interfata cu utilizatorul ("user interface" - UI) structureaza interactiunea dintre utilizator si computer.

In ultimii ani, aproape toate progresele in materie de interfete au avut loc in domeniul GUI ("Graphical User Interface"), de cea mai mare atentie beneficiind doua modele: Macintosh de la Apple si Windows de la Microsoft. Exista, insa, si alte interfete cu utilizatorul, unele grafice, altele nu.

Unix, spre exemplu, are interfete numite "shells", care sunt mai flexibile si mai puternice decat cele standard. Programe precum Korn Shell si C Shell sunt interfete pe baza de text care adauga utilitati importante, scopul lor principal fiind facilitarea manipularii functiilor sistemului de operare de catre utilizator. Interfete grafice precum X-Windows si Gnome fac sistemele de operare Unix si Linux mai asemanatoare cu Windows si Macintosh din punctul de vedere al utilizatorului.

Este important de retinut ca, in toate exemplele de mai sus, interfata cu utilizatorul este un program, sau un set de programe, situat cu un strat mai sus decat sistemul de operare in sine. Centrul functional al sistemului de operare, cel care gestioneaza intregul sistem de calcul, se afla in componenta numita kernel (nucleu). Display manager-ul este o portiune separata, desi in stransa cu nucleul. Legaturile dintre kernel-ul sistemului de operare si interfata cu utilizatorul, utilitatile si celelalte componente software definesc multe din diferentele dintre sistemele de operare existente in prezent, si vor continua sa le defineasca si in viitor.

biologie

botanica






Upload!

Trimite cercetarea ta!
Trimite si tu un document!
NU trimiteti referate, proiecte sau alte forme de lucrari stiintifice, lucrari pentru examenele de evaluare pe parcursul anilor de studiu, precum si lucrari de finalizare a studiilor universitare de licenta, masterat si/sau de doctorat. Aceste documente nu vor fi publicate.