|
Informatica este o stiinta recenta si nu a avut inca timp sa se structureze pe capitole strict delimitate si bine definite. Dezvoltarea exploziva din ultimele doua decenii a facut ca ordonarea materialului sa urmareasca cu greu abundenta de noi informatii atat in domeniul tehnicii de calcul cat si in privinta numeroaselor probleme in rezolvarea carora aceasta poate fi utilizata.
Nu exista o teorie unica a informaticii ci multe teorii care se suprapun partial: arhitectura ordinatoarelor si evaluarea performantelor lor, conceperea si verificarea circuitelor, algoritmica si analiza algoritmilor, conceptia si semantica limbajelor de programare, structuri si baze de date, principiile sistemelor de operare, limbaje formale si compilare, calcul formal, coduri si criptografie, demonstratie automatica, verificarea si validarea programelor, timp real si logici temporale, tratarea imaginilor, sinteza imaginilor, robotica etc. Fiecare dintre aceste domenii are problemele sale deschise, unele celebre, de exemplu gasirea unei semantici pentru limbajele de programare obiectuala.
Pe plan didactic, insa, s-au conturat anumite discipline care sa asigure studentilor posibilitatea de a accede la problematica vasta a informaticii. Printre altele se studiaza si SISTEMELE DE OPERARE care intervin intr-un sistem de calcul.
1.1 SISTEME DE OPERARE. DEFINITIE
Un sistem de operare (SO) este un set de programe care are doua roluri primordiale:
-asigura o interfata intre utilizator si sistemul de calcul, extinzand dar si simplificand setul de operatii disponibile;
-asigura gestionarea resurselor fizice (procesor, memorie interna, echipamente periferice) si logice (procese, fisiere, proceduri, semafoare), implementand algoritmi destinati sa optimizeze performantele.
De exemplu, cele doua componente ale definitiei pot fi:publicitatea (interfata) si valoarea produsului (gestionarea resurselor). Exemple de SO sunt sistemele MS-DOS, WINDOWS si UNIX.
1.2. LOCUL SISTEMULUI DE OPERARE INTR-UN SISTEM DE CALCUL
Componentele unui sistem de calcul sunt:
1.-Hardware care furnizeaza resursele de baza (UC, memorie, dispozitive I/O).
2.-Sistem de operare - care controleaza si coordoneaza utilizarea hardware-ului pentru diferite programe de aplicatii si diferiti utilizatori.
3.-Programe de aplicatie - care definesc caile prin care resursele sistemului sunt utilizate pentru a rezolva problemele de calcul ale utilizatorilor (compilare, sisteme de baze de date, jocuri video, programe business etc.).
4.-Utilizatori - care pot fi persoane, masini, alte calculatoare etc.
Fig.1.1. Schema componentelor unui sistem de calcul.
Acum zece ani, un sistem de operare era doar o piesa de baza a softului care rula pe o masina si permitea manipularea fisierelor, conversa cu orice periferic si lansa programe. Acum sistemele de operare au devenit mai complexe, functionand ca intermediari intre utilizator si hardware, realizand executarea programelor utilizator cu mai mare usurinta si utilizand eficient hardware-l calculatorului.
In conceptia lui A. Tanenbaum, un calculator este organizat pe mai multe niveluri. Trecerea de pe un nivel pe altul se poate face prin interpretare sau prin traducere.
Daca avem doua limbaje de programare Li si Li+1 , se poate trece din Li+1 in Li prin interpretare sau prin traducere.
Interpretare. Programul scris in Li+1 este executat pas cu pas, in sensul ca instructiunile din Li+1 se executa pe rand, fiecare instructiune din Li+1 fiind o data de intrare pentru Li . Instructiunea din Li+1 are o secventa echivalenta de instructiuni care se executa in Li . Nu se genereaza un nou program in Li . Traducere. Intreg programul din Li+1 se inlocuieste cu un nou program in Li , generat prin inlocuirea fiecarei instructiuni din Li+1 cu o secventa echivalenta in Li .
Considerand un sistem de calcul cu 6 niveluri, SO se plaseaza ca in urmatoarea schema:
Nivel 5
NIVELUL LIMBAJULUI ORIENTAT PE PROBLEMA
Traducere (compilator)
Nivel 4
NIVELUL LIMBAJULUI DE ASAMBLARE
Traducere(asamblor)
Nivel 3
NIVELUL SISTEMULUI DE OPERARE
Interpretare partiala
Nivel 2
NIVELUL ARHITECTURII SETULUI DE INSTRUCTIUNI (ISA)
Interpretare(microprogram) sau executare directa
Nivel 1
NIVELUL MICROARHITECTURII
Hard
Nivel 0
NIVELUL LOGIC DIGITAL
Dupa Tanenbaum, calculatorul este foarte flexibil iar hardul si softul sunt echivalente sau, asa cum spunea Lenz, "hardul este soft pietrificat". In schema de mai sus, numai nivelul 0 (nivelul circuitelor) este hard pur. Celelalte niveluri pot fi implementate hard sau soft in functie de optimul planificat.
Observam ca, in schema, SO este pe nivelul 3. SO contine toate instructiunile ISA (Instructions Set Architecture),de pe nivelul 2, plus apelurile sistem (system calls). Un apel sistem invoca un serviciu predefinit al SO, de fapt una din instructiunile acestuia. Noile facilitati (apelurile sistem) adaugate pe nivelul 3 sunt realizate de un interpretor care le executa pe nivelul 2 si care, din motive istorice, se numeste SO. Instructiunile de pe nivelul 3 care sunt identice cu cele de pe nivelul 2 sunt executate direct de microprogram. Spunem ca nivelul 3 este un nivel hibrid deoarece unele instructiuni de pe nivelul 3 sunt interpretate de SO (apelurile sistem) iar altele sunt interpretate direct de microprogram.
1.3. SARCINILE SISTEMULUI DE OPERARE
Pornind de la definitia unui SO, se pot identifica responsabilitatile sale, prezentate in continuare.
1.3.1. Asigurarea interfetei cu utilizatorul
Trebuie precizat ca interfata SO ↔ utilizator este constituita din orice instrument care permite comunicarea intre un SO si un operator (utilizator), indiferent daca este hard sau soft. In cvasitotalitate, interfetele in SO sunt soft si pot lua urmatoarele forme.
1.3.1.1. Monitoare
Unele calculatoare contin, stocat intr-o memorie ROM interna, un program numit monitor care se lanseaza automat la pornirea calculatorului si ii permite operatorului sa efectueze operatii simple asupra sistemului de calcul, cum ar fi: inspectarea si modificarea registrelor procesorului, vizualizarea continutului memoriei etc. De obicei, monitorul este un complementar al SO, in sensul ca porneste cand nu a putut fi incarcat SO. Este specific sistemelor de calcul mai vechi, actualmente existand putine sisteme de calcul care inglobeaza un monitor.
1.3.1.2. Interfete in linie de comanda (interfete text)
Interfetele in linie de comanda sunt reprezentate, in general, de un program numit interpretor de comenzi, care afiseaza pe ecran un prompter, primeste comanda introdusa de operator si o executa. Comenzile se scriu folosind tastatura si pot fi insotite de parametri. Aproape toate sistemele de operare includ o interfata in linie de comanda, unele foarte bine puse la punct (UNIX) iar altele destul de primitive (MSDOS, WINDOWS).
1.3.1.3 Interfete grafice
Interfetele grafice sunt cele mai populare. Se prezinta sub forma unui set de obiecte grafice (de regula suprafete rectangulare) prin intermediul carora operatorul poate comunica cu SO, lansand operatii, setand diferite optiuni contextuale etc.
Vom prezenta, comparativ, caracteristicile celor doua tipuri de interfete cu calculatorul.
Interfata in linie de comanda.
Avantaje:
-Permite scrierea clara si explicita a comenzilor, cu toti
parametrii bine definiti.
-Ofera flexibilitate in utilizare.
-Comunicarea cu SO se face mai rapid si eficient.
Dezavantaje:
-Operatorul trebuie sa cunoasca bine comenzile si
efectele lor.
-Este mai greu de utilizat de catre neprofesionisti.
Interfata grafica
Avantaje:
-Este intuitiva si usor de folosit.
-Poate fi utilizata de neprofesionisti.
-Creeaza un mediu de lucru ordonat.
-Permite crearea si utilizarea unor aplicatii complexe,
precum si integrarea acestora in medii de lucru unitare.
Dezavantaje:
-Anumite operatii legate, de exemplu, de configuratia
sistemului pot sa nu fie accesibile din menuurile si
ferestrele interfetei.
-Interfata ascunde anumite detalii legate de preluarea
si executia comenzilor.
-Foloseste mai multe resurse si este mai putin flexibila.
In general, exista doua componente principale:
-comenzi, care sunt introduse de utilizator si prelucrate de interpretorul de comenzi inainte de a ajunge la SO;
-apeluri sistem, care sunt folosite direct de catre programatorii de sistem si indirect de catre programatorii de aplicatii, apar in programe si se declanseaza in timpul executiei acestor programe, fiind asemanatoare cu procedurile.
Apelurile sistem definesc propriu zis arhitectura unui SO, adica aparenta sa catre exterior, aspectul functional al sistemului. Se poate considera ca ele indeplinesc acelasi rol pentru SO ca si lista de instructiuni pentru procesor.
Un aspect care devine tot mai important este acela al standardizarii interfetelor unui SO. Asigurarea unei interfete uniforme ( atat la nivel de comenzi cat si la apeluri sistem) ar permite portabilitatea aplicatiilor, adica posibilitatea de a trece un program de aplicatii de sub un SO sub altul, fara modificari.
1.3.2. Gestiunea proceselor si a procesoarelor
Un program in executie sub controlul unui SO este un proces. Pentru a-si indeplini sarcinile, procesele au nevoie de resurse, cum ar fi: timpul de lucru al UC (unitatea centrala), memorii, fisiere, dispozitive I/O. Apare evidenta necesitatea ca resursele sa fie utilizate in comun. O serie de mecanisme speciale au fost introduse in SO pentru a servi la gestionarea proceselor la diferite niveluri de detaliu. In practica exista o legatura stransa si cu nivelul de intrerupere al calculatorului. Gestiunea procesorului este privita ca o parte componenta a gestionarii proceselor.
1.3.3. Gestionarea memoriei
Acest modul controleaza, in primul rand, utilizarea memoriei interne. Intotdeauna o portiune a acestei memorii este necesara pentru insusi SO, iar restul este necesar pentru programele utilizator. Frecvent, mai multe programe utilizator se afla simultan in memorie, ceea ce presupune rezolvarea unor probleme de protectie a lor, de cooperare intre aceste programe sau intre programe si SO, precum si a unor probleme de impartire a memoriei disponibile intre programele solicitante.
Memoria externa este implicata in activitatea modulului de gestionare a memoriei. Mecanismele swapping si de memorie virtuala folosesc memorie externa pentru a extinde capacitatea memoriei interne.
1.3.4. Gestionarea perifericelor
Modul de gestionare a perifericelor cuprinde toate aspectele operatiilor de introducere si extragere a informatiei: pregatirea operatiei, lansarea cererilor de transfer de informatie, controlul transferului propriu zis, tratarea erorilor.
La majoritatea echipamentelor periferice actuale transferurile de intrare/iesire (I/O=input/output) se desfasoara indiferent de procesor, rolul SO fiind acela de a asigura aceste transferuri cu ajutorul sistemului de intreruperi.
1.3.5. Gestionarea fisierelor
Fisierul este entitatea de baza a unui SO, cea care pastreaza informatia. Toate operatiile legate de fisiere (creare, stergere, atribute, copiere, colectie de fisiere, securitatea informatiei) sunt coordonate de SO caruia ii revine un rol important in acest caz.
1.3.6. Tratarea erorilor
SO este acela care trateaza erorile aparute atat la nivel hard cat si la nivel soft. Tratarea unei erori inseamna mai intai detectarea ei, apoi modul de revenire din eroare pentru continuarea lucrului, mod care depinde de cauza erorii si de complexitatea SO. Unele erori sunt transparente utilizatorului, altele trebuiesc neaparat semnalate. De asemenea unele erori sunt fatale si duc la oprirea SO. Mecanismul principal de tratare a erorilor este ca SO sa repete de un numar definit de ori operatia esuata pana la desfasurarea ei cu succes sau pana la aparitia erorii fatale. La ora actuala SO moderne acorda un rol foarte important conceptului de siguranta in functionare si de protectie a informatiei.
1.4. CARACTERISICILE SISTEMELOR DE OPERARE
Formulam in continuare cele mai importante caracteristici ale sistemelor de operare.
1.4.1. Modul de introducere a programelor in
sistem
Din acest punct de vedere sistemele de operare pot fi:
-SO seriale, in care se accepta introducerea lucrarilor de la un singur dispozitiv de intrare;
-SO paralele, in care introducerea lucrarilor se face de la mai multe dispozitive de intrare;
-SO cu introducerea lucrarilor la distanta.
De exemplu, sistemele UNIX si WINDOWS sunt paralele si cu introducere la distanta, pe cand sistemul MS-DOS este serial.
1.4.2. Modul de planificare a lucrarilor pentru
executie
Exista:
-SO orientate pe lucrari, care admit ca unitate de planificare lucrarea, alcatuita din unul sau mai multe programe succesive ale aceluiasi utilizator;
-SO orientate pe proces, care admit ca unitate de planificare procesul.
SO moderne sunt orientate pe proces.
1.4.3. Numarul de programe prezente simultan
in memorie
Sistemele pot fi:
-SO cu monoprogramare (cu un singur program in memoria principala);
-SO cu multiprogramare (cu mai multe programe existente, la un moment dat, in memoria principala).
De exemplu, sistemele UNIX si WINDOWS sunt cu multiprogramare. Sistemul MS-DOS este ceva intre monoprogramare si multiprogramare.
1.4.4. Gradul de comunicare a proceselor in
multiprogramare
Sistemele de operare cu multiprogramare pot fi:
-SO monotasking, in care programele existente in memorie nu au un obiectiv comun, nu comunica si nu-si pot sincroniza activitatile;
SO multitasking, in care programele existente in memorie au un obiectiv comun si isi sincronizeaza activitatile.
UNIX si WINDOWS sunt multitasking. MS-DOS este un hibrid; prin operatiile de redirectare si indirectare MS-DOS nu este monotasking pur (redirectare - sort<date.txt ; indirectare - dir|sort|more
1.4.5. Numarul de utilizatori simultani ai SO
SO monouser ( cu un singur utilizator) ;
-SO multiuser (cu mai multi utilizatori).
UNIX si WINDOWS sunt multiuser, MS-DOS este monouser.
1.4.6. Modul de utilizare a resurselor
Dupa modul se utilizare a resurselor, sistemele de operare pot fi :
-SO cu resurse alocate (resursele alocate proceselor sunt alocate acestora pe toata desfasurarea executiei) ;
-SO in timp real (permit controlul executarii proceselor in interiorul unui interval de timp specificat);
-SO cu resurse partajate (resursele necesare proceselor sunt afectate acestora periodic, pe durata unor cuante de timp).
Daca resursa partajata este timpul unitatii centrale, SO devine partajat.
SO in timp real sunt utilizate pentru conducerea directa, interactiva, a unui proces tehnologic sau a altei aplicatii. Procesul va transmite catre SO in timp real parametrii procesului iar SO va transmite catre proces deciziile luate. Informatiile despre proces sunt luate in considerare in momentul comunicarii lor iar raspunsul sistemului trebuie sa fie extrem de rapid, deci timpii de executie a programelor trebuie sa fie mici.
Accesul la resursele sistemului poate fi :
-direct (caz particular SO in timp real, cand se cere o valoare partajabila maxima a timpului de raspuns) ;
-multiplu (acces la resursele sistemului pentru un mare numar de utilizatori) ;
-time sharing (alocarea timpului se face pe o cuanta de timp) ;
-la distanta (prelucrarea se face asupra unor date distribuite si dispersate geografic).
1.4.7. SO pentru arhitecturi paralele
SO paralele, folosite in multe procesoare
SO distribuite , folosite in multe calculatoare.
1.5. COMPONENTELE SISTEMELOR DE OPERARE
Majoritatea sistemelor de operare, pentru a raspunde rolului de interfata cu utilizatorii, sunt organizate pe doua niveluri:
-nivelul fizic, care este mai apropiat de partea hardware a sistemului de calcul, interferand cu aceasta printr-un sistem de intreruperi;
-nivelul logic, care este mai apropiat de utilizator, interferand cu acesta prin intermediul unor comenzi, limbaje de programare, utilitare etc.
Potrivit acestor doua niveluri, sistemele de operare cuprind in principal doua categorii de programe:
-programe de control si comanda, cu rolul de coordonare si control al tuturor functiilor sistemelor de operare, cum ar fi procese de intrare iesire, executia intreruperilor, comunicatia hardware-utilizator etc.;
-programe de servicii (prelucrari), care sunt executate sub supravegherea programelor de comanda si control, fiind utilizate de programator pentru dezvoltarea programelor sale de aplicatie.
In general, putem considera ca un SO este format din doua parti: partea de control si partea de serviciu.
1.5.1. Partea de control
Partea de control realizeaza interfata directa cu hardul. Ea contine proceduri pentru:
-gestiunea intreruperilor;
-gestiunea proceselor;
-gestiunea memoriei;
-gestiunea operatiilor de intrare/iesire;
-gestiunea fisierelor;
-planificarea lucrarilor si alocarea resurselor.
1.5.2. Partea de serviciu
Partea de serviciu contine instrumente de lucru aflate la dispozitia utilizatorului. Ea exploateaza partea de control, dar transparent pentru utilizator.
Partea de serviciu cuprinde soft aplicativ. Dupa destinatia lor, serviciile pot fi de :
-birotica ;
-baze de date ;
-dezvoltare de aplicatii/programe ;
-retele de calculatoare ;
-produse soft pentru prelucrarea informatiilor din diverse domenii.
1.6. STRUCTURA SISTEMELOR DE OPERARE
In sistemele de operare apar, in general, doua aspecte structurale:
-kernel (nucleu);
si
-user (utilizator).
Nucleul (kernel) are urmatoarele principale functii:
-asigurarea unui mecanism pentru crearea si distrugerea proceselor;
-realizarea gestionarii proceselor, procesoarelor, memoriei si perifericelor;
-furnizarea unor instrumente pentru mecanismele de sincronizare a proceselor;
-furnizarea unor instrumente de comunicatie care sa permita proceselor sa isi transmita informatii.
Trebuie facuta diferenta intre procesele sistem, care au privilegii mari, si procesele utilizator, cu un grad de privilegii mult mai mic.
Dupa structura lor, sistemele de operare se clasifica in :
-SO modulare , formate din entitati cu roluri bine definite ;
-SO ierarhizate, in care o entitate poate folosi componente de nivel inferior (de exemplu, partea de serviciu poate folosi partea de control);
-SO portabile, pentru care efortul de a trece SO de pe un calculator pe altul este mic, mai mic decat cel de a-l rescrie .
Sistemele UNIX si WINDOWS sunt portabile. Cele mai vechi, de exemplu RSX, nu erau portabile.
1.7. DEZVOLTAREA ISTORICA A SISTEMELOR DE
OPERARE
In dezvoltarea istorica a sistemelor de operare, dupa aparitia lor, s-au adus multe imbunatatiri, atat in strategia SO cat si in implementarea SO. (De exemplu; multiprogramare, multitasking, timesharing etc.). Un lucru este acum evident: puternica interdependenta hard↔soft, adica intre arhitectura sistemului de calcul si arhitectura SO.
Au existat perioade in care sistemul de calcul avea performante mai scazute iar SO venea sa suplineasca aceste neajunsuri (ex. procesoare 8biti, 8080, si sisteme de operare CP/M); in alte perioade situatia este inversa, adica un sistem de calcul are performante puternice iar sistemul de operare nu reuseste sa utilizeze la maxim toate facilitatile hard (de exemplu situatia actuala, cand sistemele de operare, atat WINDOWS cat si UNIX, nu reusesc sa utilizeze in modul cel mau eficient toate facilitatile procesoarelor PENTIUM).
Interdependenta intre arhitectura sistemelor de calcul si structura sistemelor de operare consta si in faptul ca, cel mai adesea, s-a implementat in hard o parte a functiilor SO. Exemple:
a) Actuala componenta BIOS (Basic I/Osystem) dintr-un PC era o componenta a sistemului de operare CP/M.
b) Managementul de memorie este actualmente implementat ca modul hard in procesor. Pentru generatiile trecute era o componenta a sistemului de gestiune a memoriei dintr-un SO.
c) Memoria CACHE, foarte utilizata astazi si implementata exclusiv in memoria interna, in hard discuri etc, era o componenta a sistemului de operare UNIX in administrarea fisierelor.
In noile sisteme de operare, a aparut o noua notiune, aceea de micronucleu (microkernel). In sistemele clasice cu kernel, acesta era o componenta rezidenta permanent in memorie, in sensul ca era o parte indivizibila a SO. Insa un astfel de nucleu este foarte mare si greu de controlat. De aceea, constructorii de SO au inlocuit nucleul cu un micronucleu, o componenta de dimensiuni mai mici, rezidenta in memorie si indivizibila. In micronucleu au ramas serviciile esentiale, cum ar fi : repornirea unui proces, facilitatile de comunicare intre procese prin mesaje, rudimente de management de memorie, cateva componente de intrare-iesire de nivel foarte jos. Restul serviciilor, inclusiv driverele, au fost mutate in afara micronucleului, in zona de « aplicatii utilizator ».
SO cu micronucleu functioneaza pe principiul client/server prin intermediul mesajelor. De exemplu, daca un proces vrea sa citeasca un fisier, el va trimite un mesaj cu ajutorul micronucleului catre o alta aplicatie care ruleaza in spatiul utilizator si care actioneaza ca un server de fisiere. Aceasta aplicatie va efectua comanda iar rezultatul ei va ajunge inapoi la procesul apelant, tot prin intermediul unor mesaje. In acest fel se poate crea o interfata bine definita pentru fiecare serviciu, adica un set de mesaje pe care serverul le intelege. Se pot instala usor noi servicii in sistem, servicii care pot fi pornite fara a fi necesara reformarea nucleului. Se pot crea in mod simplu servicii proprii de catre utilizatori.
In concluzie, SO cu micronucleu au avantajul unei viteze mai mari, obtinute prin eliberarea unei parti de memorie, si dezavantajul unui timp pierdut cu schimbul de mesaje. Se pare, insa, ca viteza mare va duce la inlocuirea sistemelor clasice cu sisteme cu micronucleu.
In SO UNIX, un exemplu de micronucleu este ONX al firmei Quantum Software. ONX respecta standardele POSIX 1003.1, care se refera la interfata dintre aplicatiile C si serviciile nucleului, POSIX 1003.2, care se refera la interfata la nivel de SHELL si POSIX 1003.4, care se refera la SO in timp real.
ONX contine un micronucleu de 8KO in care sunt implementate planificarea si inter-schimbarea proceselor, tratarea intreruperilor, servicii de retea de nivel scazut. Un sistem minimal ONX adauga la acest micronucleu un controlor de procese care creeaza si controleaza procesele in memorie. Micronucleul contine 14 apeluri sistem.