Definitia si functiile sistemelor de operare
Componenta software a unui calculator are rolul de a stoca, procesa si regasi informatiile si ea este divizata în:
programe de sistem sau sistemul de operare (SO)
programe de aplicatie care rezolva problemele utilizatorilor.
Definitie. Un sistem de operare este un sistem de programe care gestioneaza resursele hardware din cadrul unui SC si realizeaza suportul de baza pe care programele de aplicatie pot fi scrise si executate folosind eficient resursele SC (memoria, mP dispozitivele I/O).
SO este o colectie de programe (sistem de programe) care are doua componente principale:
nucleul sau programele de baza se încarca de pe HD în memoria interna la pornirea SC si realizeaza :
legatura cu rutinele BIOS,
legatura ce cereril 424i89e e programelor de aplicatie si
gestioneaza resursele SC necesare în timpul executarii programelor de aplicatie ale utilizatorilor ;
comenzile / programele utilitare sunt cele care realizeaza servicii pentru utilizarea eficienta a resurselor SC .
Deosebirea dintre aceste doua componente ale SO este ca nucleul se executa în mod supervizor cu privilegii extinse asupra memoriei si a celorlalte resurse, în timp ce programele utilitare se executa în mod utilizator cu privilegii reduse la fel ca si un program de aplicatie.
Functia de baza a SO este "ascunderea" complexitatii hardware prin furnizarea unui set de instructiuni mult mai accesibil si degrevat de detalii pentru comanda dispozitivelor periferice.
Functiile generale a unui sistem de operare sunt urmatoarele
functia de comanda si control a executiei programelor utilizatorilor;
functia de gestiune a memoriei evidentiaza resursele de memorie utilizate, realizeaza alocarea/dealocarea memoriei si asigura un sistem de protectie a datelor si programelor;
functia de gestiune a procesorului analizeaza si decide ce proces va utiliza procesorul realizând alocarea si ulterior dealocarea acestuia la expirarea cuantei de timp sau la finalizarea executiei programului, prelucreaza si modifica starea fisierelor si programelor;
functia de gestiune a dispozitivelor periferice initializeaza si verifica starea resurselor SC, formateaza HD (hard disk), formateaza FD (floppy disk), defineste structura sistemului de fisiere si gestioneaza (asigura partajarea) resurselor SC;
Locul sistemului de operare în cadrul unui SC este prezentat în figura 3.1.
Figura 3.1. Locul sistemului de operare în cadrul unui SC
Vom prezenta caracteristicile SO din cadrul fiecarei generatii de calculatoare. Primele SO au aparut în cadrul generatiei a doua de calculatoare.
Generatia II avea urmatoarele caracteristici din punct de vedere software:
pentru prima data este o separatie clara între proiectare, construire, operare, programare si întretinere;
aceste calculatoare au nevoie de camere speciale cu aer conditionat si un operator profesionist care executa programele;
prelucrarea se face pe loturi "batch processing" si presupune formarea unui fisier cu extensia .bat si lansarea lui; job-urile sunt citite pe banda magnetica dupa care sunt executate succesiv;
apar primele limbaje evoluate de programare:
o FORTRAN (FORmula TRANslation) în anul 1956 pentru probleme tehnico-stiintifice
o ALGOL (ALGOrithmic Language) în 1958 pentru probleme stiintifice, cu putine date initiale, dar cu numeroase prelucrari aritmetice si logice
o COBOL (Common Business Oriented Language) în 1959 pentru calcule economice
Generatia a III avea urmatoarele caracteristici din punct de vedere software:
contine SO complex constituit din milioane de linii de limbaj de asamblare scrise de mii de programatori;
cea mai importanta tehnica aparuta a fost multiprogramarea; de la citirea si executia job cu job utilizând ineficient unitatea centrala, s-a trecut la o solutie mai eficienta partajarea memoriei cu job-uri diferite în fiecare partitie; un sistem multiprogramat cu trei job-uri în memorie este:
Partitia 3: job 3 |
Partitia 2: job 2 |
Partitia 1: job 1 |
SO |
Astfel, în acelasi interval de timp pot exista mai multe programe active în SC, concurând pentru memorie, I/O si UC. Unele programe sunt orientate catre calcule (utilizând intens UC), iar altele catre citire scriere a dispozitivelor I/O. Se pot intercala cele doua clase de programe pentru a obtine un timp de prelucrare global cât mai bun. Intercalarea programelor permite utilizarea mai eficienta a resurselor SC prin suprapunerea operatiilor de I/O cu operatiile UC. Acest mod de organizare este gestionat de SO (programul de supervizare). Multiprogramarea se poate defini ca intercalarea operatiilor UC cu operatiile I/O pentru mai multe programe. În cadrul multiprogramarii se poate întâmpla ca un proces cu prioritate mare sa ocupe UC un timp îndelungat si în acest fel se împiedica executia altor procese. Neajunsul se poate înlatura folosind un SO cu divizare în timp.
aveau abilitatea de a citi job-urile de pe cartele perforate pe discuri magnetice; astfel când un job era terminat SO putea încarca un nou job de pe disc în partitia libera pentru a-l executa; aceasta tehnica se numeste "spooling" (de la "Simulation Peripherical Operation On Line") si era de asemenea utilizata pentru iesire;
timpul de raspuns între citirea unui job si afisarea rezultatelor rularii, prin utilizarea tehnicii de "time sharing", ca varianta a multiprogramarii, în care fiecare utilizator are linia lui de terminal; într-un sistem "time sharing", unitatea centrala poate fi alocata între cele trei job-uri încarcate în partitiile de memorie, la un moment dat, iar serviciile oferite de SO se împarte între aceste job-uri. Divizarea în timp ("time sharing") reprezinta împartirea timpului de executie al UC între toate procesele active (task-uri active) din SC. Cuantele de timp alocate fiecarui proces pot fi inegale de la un proces la altul. Utilizarea diviziunii în timp a programelor (proceselor) în sistemele monoprocesor creaza conceptul de procesor virtual sau sistem de calcul virtual.
apar limbaje de programare de nivel înalt ca: PL/1, ALGOL60/68, FORTRAN IV,V, COBOL, LISP etc
Generatia a IV avea urmatoarele caracteristici din punct de vedere software:
caracteristica principala o constituie interfetele "user-friendly" ceea ce înseamna ca pentru utilizatorii care nu stiu nimic despre aceste calculatoare si nu au intentia sa învete, acestea sunt interfete prietenoase care-i ghideaza în utilizarea calculatorului;
cele doua SO care au dominat calculatoarele personale si statiile de lucru sunt:
o Microsoft MS-DOS
o UNIX
o dezvoltare interesanta are loc la mijlocul anilor 1980 prin cresterea retelelor de calculatoare personale lucrând cu retele de SO si SO distribuite;
în SO în retea utilizatorii pot copia fisiere de pe o masina pe alta si pot executa si lista programe de pe o masina pe alta; fiecare masina lucreaza cu propriul ei SO si propriul ei utilizator; în contrast un SO distribuit este unul ce apare utilizatorilor sai ca un sistem monoprocesor traditional dar totusi actual el este compus din mai multe microprocesoare (multiprocesor) si functiile SO sunt distribuite între acestea.
3.3. Conceptele sistemului de operare
Câteva dintre trasaturile mai importante referitoare la SO sunt:
SO este o masina virtuala (extinsa), adica el transforma operatiile de nivel înalt efectuate de programator în operatii reale care tin seama de detaliile de programare a dispozitivelor hardware.
SO este administrator de resurse, el gestioneaza procesele, memoriile, dipozitivele periferice, alocându-le pe rând programelor care sunt în competitie pentru a le ocupa.
SO are o interfata cu programele utilizator realizata printr-o multime de "instructiuni extinse" ("extended instructions") numite "apeluri sistem" ("system call") apartinând SO. Cele doua concepte importante cu care opereaza apelurile de sistem sunt:
procesul
fisierul
Utilizatorii se situeaza deasupra SO si folosesc facilitatile oferite de acesta pentru a-si defini, realiza si exploata propriile programe de aplicatie.
Interfata dintre SO si programele utilizator este definita de apelurile sistem prin intermediul carora se pot crea, sterge si utiliza diferite utilitare ale SO. Cele mai importante sunt procesele si fisierele. Exemplificarile sunt orientate catre MS-DOS si UNIX.
Conceptul de baza în orice SO este procesul. Un proces este un program în executie care contine:
programul executabil,
date si stiva,
program "counter",
"poiter" de stiva si alti registri,
toate formând informatia necesara executiei unui program.
Pentru a întelege în mod intuitiv rolul proceselor este bine sa ne gândim la sistemul "time-sharing". În acest sistem SO periodic decide sa opreasca executia unui proces si pornirea executiei altui proces, de exemplu deoarece primului dintre ele i-a expirat cuanta de timp alocata de unitatea centrala în secunda trecuta. Când un proces este temporar oprit, el va trebui mai târziu repornit din starea în care a fost oprit. Aceasta înseamna ca toate informatiile despre proces trebuie sa fie salvate explicit pe durata suspendarii. De exemplu daca procesul are câteva fisiere deschise, pozitia exacta din fisier unde era procesul, trebuie sa fie înregistrata undeva, astfel încât la restartare sa se poata citi din el. În multe SO aceste informatii despre proces, altele decât continutul propriu spatiului de adresa, este memorat în tabela SO ("table process"), care este o arie sau lista înlantuita de structuri, una pentru fiecare proces curent existent în executie.
Un proces poate crea la rândul lui alte procese formându-se o structura arborescenta.
În sistemele de operare de multiprogramare, cum este UNIX, este important sa se pastreze urma fiecarui proprietar utilizator de sistem. În fiecare sistem, fiecare utilizator autorizat îi este asignat un "uid" ("user identification"). Fiecare proces are asignat uid-ul proprietarului. Simular, utilizatorii pot fi divizati în grupuri având câte un identificator de grup gid ("group identification"). Uid si gid joaca un rol în protectia informatiei.
O alta categorie vasta de apeluri sistem sunt legate de fisierele sistem. O functie majora a SO este sa ascunda particularitatilr hard disk-ului si a altor dispozitive periferice. Apelurile de sistem sunt în mod evident necesare la crearea, schimbarea, mutarea, citirea si scrierea fisierelor. Înainte ca un fisier sa poata fi citit, el trebuie deschis si dupa aceea el poate fi citit si ulterior închis, asa ca apelurile sunt provocate de aceste operatii.
SO trebuie sa suporte conceptul de director, ca un mod de grupare a fisierelor împreuna. Apelurile de sistem sunt folosite pentru crearea, schimbarea si stergerea directoarelor. Directoarele pot cuprind la rândul lor alte directoare si fisiere.
Ca si procesele fisierele sunt organizate ca arbori, dar similitudinea se opreste aici. Ierarhia de procese, de obicei nu este foarte adânca (uzual maxim 3), în timp ce ierarhia de fisiere poate fi mult mai adânca.
Fiecare fisier într-o ierarhie de fisiere este specificat prin nume împreuna cu numele cai ("path name") pornind din vârful ierarhiei de directoare care-i directorul radacina ("root directory").
Fisierele trebuie protejate, de exemplu la UNIX fisierele si directoarele sunt protejate printr-un cod de protectie compus dintr-un cmp pentru proprietar, altul pentru grup si altul pentru orice altceva. Fiecare câmp are un bit de acces la citire, scriere sau executie.
Multe SO, inclusiv MS-DOS si UNIX, fac o abstractizare, permitând utilizatorului sa execute operatii de I/O ca un fisier special. În acest mod pentru citirea si scrierea lor pot fi utilizate aceleasi apeluri sistem care sunt utilizate pentru citirea si scrierea fisierelor.
În MS-DOS si UNIX când un proces este startat, fisierul descriptor 0, numit fisier de intrare standard ("standard input") este atasat sa refere terminalul de citire. Fisierul descriptor 1, numit fisier de iesire standard ("standard output") refera terminalul de scriere. Fitierul descriptor 2, numit fisier de eroare standard ("standard error") refera terminalul de iesire, dar în mod normal este utilizat pentru scrierea mesajelor de eroare. În final vom descrie relatia dintre procese si fisiere numita "pipe". Un "pipe" este un pseudo fisier scurt care este utilizat sa conecteze doua fisiere între ele:
A
Când procesul A doreste sa trimita date procesului B, el scrie în "pipe" la fel ca într-un fisier de iesire. Procesul B poate citi datele de la "pipe" la fel ca dintr-un fisier de intrare. Aceasta comunicare dintre procese este privita ca fisier de citire/scriere obisnuit.
3.4. Clasificarea sistemelor de operare
Perfectionarea continua a componentelor hardware ale unui SC implica perfectionarea si modificarea atât a sistemelor de operare, cât si a componentelor software instalate pe acel SC. În timp, aceste perfectionari si modificari au creat dificultati în privinta utilizarii unor programe de pe un sistem de calcul pe altul, sau sub diverse sisteme de operare. Din aceste motive, pentru un SO si în general pentru produsele software, sunt importante urmatoarele atribute:
compatibilitatea - posibilitatea recunoasterii acestora de alte SO sau produse software si invers;
portabilitatea - instalarea si executia acestora pe diverse SC;
SO pot fi clasificate dupa structura interna în 4 grupe:
sisteme compacte ( monolitice) ( de exemplu CP/M, MS-DOS).Acest tip de SO este o colectie de proceduri existente toate simultan si în care:
fiecare procedura poate apela orice alta procedura;
fiecare procedura are definita o interfata prin care comunica parametri si rezultatele altor proceduri;
orice procedura este vizibila pentru oricare alta(fapt esential întrucât nu exista niveluri ierarhizate), deci nu se aplica principiul ascunderii informatiilor si al accesului controlat la date ca în cazul unor sistem mai evoluate cum sunt cele ierarhizate;
Anumite SO monolitice prezinta însa germenii unor structuri incipiente, alcatuite din 2 niveluri:
zona Kernel (nucleu) în care SO lucreaza în mod supervizor si care contine o tabela de servicii;
zona user (utilizator) în care SO lucreaza în mod utilizator rulând programele de aplicatie, în care anumite operatii sunt interzise
sisteme ierarhizate (pe 5 sau 6 niveluri) cum ar fi spre exemplu:
nivelul 5: operator
nivelul 4: programe utilizator
nivelul 3: gestiunea intrarilor si iesirilor
nivelul 2: comunicarea între operator si procese
nivelul 1: gestiunea memoriei
nivelul 0; multiprogramare si alocare de procese
Organizarea unui SO pe niveluri ierarhizate reprezinta o generalizare a modelului monolitic. În aceasta structura ierarhizata fiecare nivel prezinta o realitate virtuala nivelului superior adiacent, furnizându-i un set de servicii si preluând de la nivelul adiacent inferior alt set de functii.
SO pe masini virtuale Sunt sisteme bazate pe "time-sharring" care furnizeaza concepte de:
Multiprogramare,
masina extinsa (virtuala) cu o interfata mai convenabila hardware.
SO pe model "client-server" Ideea de baza este mutarea de cod cât mai mult pe nivelurile superioare pastrând un nucleu minimal (rezident permanent în memorie). Aceasta înseamna implementarea celor mai importante functii ale SO în procese utilizator. În afara proceselor utilizator care fac servicii SO si care se mai numesc si executanti sau servere (separate complet între ele) mai exista în zona utilizator si procese utilizator de tip "client". În zona kernel se gestioneaza dialogul între client si server. Prin kernel circula mesajele antre client si server. Acest tip de SO este adaptabil structurilor distribuite, în care clientul nu trebuie sa stie daca mesajul este preluat local sau la distanta (pe un alt calculator prin retea) si deci este permisa prezenta server-elor pe masini diferite. Deci nucleul unui sistem distribuit gestioneaza tranzactiile pe retea (schimbul de mesaje).
SO pot fi clasificate în functie de modul de alocare al resurselor în:
cu resurse alocate;
cu resurse distribuite, se aloca distribuit resurse fiecarui proces;
SO se mai pot clasifica dupa aria de aplicatii pe care o satisface:
SO pentru prelucrarae pe loturi ("batch" si "time-sharing"). Un sistem secvential ("batch") executa la un moment dat un singur program, care trebuie terminat înainte de a lua în considerare un alt program, cum este MS-DOS. Un sistem "time-sharing" ofera la mai multi utilizatori accesul simultan la facilitatile unitatii centrale. Un sistem "time-sharing" este de fapt un calculator multiprogramat care permite mai multor utilizatori sa foloseasca simultan resursele sistemului, având impresia ca fiecaruia i se acorda o atentie deosebita.
Majoritatea tipurilor de SO recunosc programul ca cea mai mica unitate de prelucrare, caruia i se poate atribui o identitate si pe care un utilizator o poate prezenta spre executie. Unele sisteme ofera în plus posibilitatea ca un program sa fie considerat ca un ansamblu de sarcini ("task") ale caror executie (inclusiv în paralel) contribuie la atingerea obiectivului urmarit de acel program.
SO în timp real
SO pentru multiprogramare, acestea accepta la un moment dat mai multe programe în memoria centrala partajata care se pot afla în diverse stadii de executie. Executia se realizeaza prin multiplexarea unitatii cntrale. Acest sistem poate sa permita executia secventiala ("time-sharing") sau interactiva.
SO pentru prelucrare paralela (multiprocesor) dispun de mai multe procesoare, care pot sa execute simultan unul sau mai multe programe. Utilizarea efectiva a prelucrarii multiple necesita atributul de multiprogram. Executia simultana a unui singur program de catre mai multe unitati presupune existenta posibilitatii de a descompune acest program în mai multe sarcini ("multitasking")
SO se pot clasifica dupa numarul de utilizatori care au acces la calculator în:
monoutilizator - sistemele secventiale (MS-DOS) în care serviciile SO sunt oferite-la un moment dat- doar unui singur utilizator;
multiutilizator - sistemele "time-sharing" (RSX-11M, UNIX) la care serviciile SO sunt accesate simultan de aplicatii ale mai multor utilizatori.
SO se pot clasifica dupa modul de prelucrare în:
sisteme monotasking în care SO executa la un moment dat un singur program (task, proces) ce nu poate fi divizat în unitati mai mici;
sisteme multitasking sau multiprocesor, SO executa simultan (în paralel) mai multe programe (task-uri sau procese), de exemplu RSX-11M, UNIX.
SO se pot clasifica dupa unitatea de prelucrare în:
sisteme care recunosc programul, ca cea mai micaunitate de prelucrare, caruia i se atribuie o identitate si pe care un utilizator o poate prezenta spre executie; de exemplu MS-DOS;
sisteme care ofera în plus posibilutatea ca un program sa fie considerat ca un ansamblu de sarcini - task ale caror executie (inclusiv în paralel) contribuie la atingerea obiectivului urmarit de acel program; de exemplu RSX-11M;
sisteme în care progranul este considerat ca un ansamblu de procese ce lucreaza în paralel; de exemplu UNIX.
SO se mai clasifica în functie de retea în:
sisteme în care reteaua este instalata peste SO; de exemplu MS-DOS, RSX-11M, UNIX;
sisteme în care reteaua este înglobata în SO.
|