Creeaza.com - informatii profesionale despre


Evidentiem nevoile sociale din educatie - Referate profesionale unice
Acasa » scoala » informatica
SISTEME DE OPERARE - NOTIUNI INTRODUCTIVE

SISTEME DE OPERARE - NOTIUNI INTRODUCTIVE


SISTEME DE OPERARE - NOTIUNI INTRODUCTIVE

1.1. SISTEME DE OPERARE. SCURT ISTORIC.

Un sistem de operare poate fi vazut ca o colectie de rutine software ce ofera utilizatorului posibilitatea folosirii eficiente a sistemului de calcul, concurand la dezvoltarea programelor de aplicatie. El gestioneaza resursele sistemului de calcul, cum ar fi procesorul, memoria si dispozitivele de intrare/iesire.



Sistemul de operare apare ca o interfata intre componenta hardware a unui sistem de calcul si utilizator. Programele de aplicatie folosesc facilitatile oferite de acesta pentru a obtine accesul la resursele sistemului de calcul : fisiere, dispozitive de intrare/iesire.

Una din functiile majore ale unui sistem de operare este de a optimiza utilizarea tuturor resurselor unui sistem de calcul : timp unitate centrala, spatiu de memorie interna, registre, dispozitive de intrare/iesire.

Evolutia sistemelor de operare

Prelucrarea seriala

Primele calculatoare, fabricate intre anii 1945 - 1955 dispuneau numai de echipamentul hard. Aceste calculatoare apartineau generatiei intai de calculatoare si aveau la baza constructiei lor tuburile electronice. La acest sistem de calcul, programatorul introducea programul (codificat in binar sau hexazecimal) in memorie, de la o consola sau un panou. Programele erau lansate in executie prin incarcarea adresei primei instructiuni in registrul numarator de program (PC). Rezultatele erau obtinute prin examinarea unor registri sau locatii de memorie. Dispozitivele de intrare/iesire, daca existau, trebuiau controlate direct de catre program, prin citirea sau scrierea la porturi. Evident, programarea in limbaj masina determina o productivitate mica atat din punctul de vedere al utilizatorului, cat si din punctul de vedere al hardware-ului.

Aparitia tranzistorului a revolutionat construirea echipamentelor de calcul (generatia a doua). Apar primele echipamente periferice : cititorul de cartele, imprimanta, banda magnetica. Pentru utilizarea noilor echipamente de I/O sunt programate rutine de interfata, drivere, care asigura legatura dintre dispozitivul I/O, memorie si UCP. Aceste rutine sunt considerate, istoric, ca primele programe care fac parte dintr-un sistem de operare. Ele erau grupate in biblioteci si puteau fi apelate de catre programele de aplicatie, editorul de legaturi ocupandu-se de includerea lor in codul obiect al programului.

Apar de asemenea programe software : compilatoare, editoare de texte, incarcatoare, programe de depanare (debugger). Aplicatiile, scrise in limbaje de programare, sunt transformate in cod masina de catre compilatoare. Un alt program, numit incarcator, se ocupa de incarcarea programului executabil in memorie. Utilizatorul plaseaza programul si datele de intrare la un dispozitiv de intrare. Incarcatorul transfera programul in memorie si executia poate incepe. Programul executabil citeste datele de la dispozitivul de intrare si trimite rezultatele la un dispozitiv de iesire, cum ar fi imprimanta sau ecranul monitorului. Odata incarcat in memorie, programul poate rula pe diverse seturi de date de intrare.

Rutinele de I/O si programul incarcator fac parte din sistemul de operare; compilatoarele, editoarele de texte si programele de depanare sunt programe sistem, ele nefacand parte din sistemul de operare.

Dezavantajul acestor sisteme este faptul ca este necesara prea des interventia umana. Astfel, operatorul este cel care lanseaza in executie citirea cartelelor, incarca de pe banda (sau cartele, disc, tambur) compilatorul si il lanseaza in executie. Urmeaza incarcarea programului compilat in memorie si lansarea acestuia in executie.

Prelucrarea in loturi

Urmatorul pas in evolutia sistemelor de operare a fost automatizarea secventelor de operatii necesare dezvoltarii si executarii programelor. Scopul a fost cresterea utilizarii resurselor si productivitatii programarii prin reducerea sau chiar eliminarea operatiilor manuale.

Vom numi faza de elaborare a unui program una dintre urmatoarele activitati :

- editarea textului sursa al programului;

- compilarea unui program;

- editarea legaturilor unui program;

- lansarea in executie a programului;

- depanarea programului.

Prin lucrare vom intelege o succesiune de astfel de faze relative la un program.

Interventia umana intre faze presupune o mare pierdere de timp si o utilizare ineficienta a echipamentului. Pentru imbunatatirea performantelor, a aparut conceptul de incarcare automata a lucrarilor si a fazelor. Pentru aceasta a fost creat un mic program rezident, denumit monitor, care are ca principala sarcina asigurarea inlantuirii lucrarilor si fazelor. Programatorul trebuie sa insereze, printre cartelele programului si ale datelor sale, unele cartele speciale numite cartele de comanda, care se adreseaza acestui monitor rezident. Pentru ca acesta sa le recunoasca, cartelele de comanda au in primele coloane simboluri speciale. Prin aceasta regula de diferentiere s-a definit de fapt un limbaj de control al lucrarilor. Prin intermediul lui se comanda trecerea de la o faza la alta sau de la o lucrare la alta.


Monitorul contine pe langa incarcator si rutinele I/O si un interpretor de comenzi, capabil sa recunoasca si sa execute o serie de comenzi cum ar fi LOAD si RUN.

Monitorul rezident este acum programul permanent activ. Pentru desfasurarea inlantuirilor de faze, este necesar ca operatiile I/O sa fie facute de catre monitor si nu de catre programul utilizator, pentru a depista cartelele ce-i sunt adresate (cartelele de comanda). Toate cererile de I/O ale utilizatorului sunt solicitate de acesta monitorului prin intermediul apelurilor sistem.

De asemenea, programului utilizator nu-i este permis sa modifice zona de memorie a monitorului rezident si nici sa comande oprirea intregului sistem. Daca nu ar fi asa, inlantuirea automata a fazelor si lucrarilor ar putea fi compromisa.

Iata deci ca unele comenzi nu sunt accesibile utilizatorilor. Apar, astfel, doua moduri de lucru :

- monitor ( sau supervizor, master, sistem, privilegiat), in care pot fi folosite toate facilitatile sistemului;

- utilizator (sau slave, neprivilegiat), in care apar unele restrictii.

Prelucrarea in loturi reuseste sa imbunatateasca utilizarea resurselor sistemului. Totusi, timpul intre intrarea unei lucrari si momentul cand iesirea sa este receptionata poate fi destul de lung, datorita operatiilor I/O. Pentru micsorarea acestui timp, se folosesc canale DMA, controlere periferice si mai tarziu procesoare dedicate operatiilor de I/O, ceea ce determina ca operatiile de I/O sa poata fi executate in paralel cu executia programului.

De exemplu, o portiune din memoria principala poate fi folosita de catre buffere de I/O. Astfel, in timpul executiei unui program, pot fi citite (concurent) datele de intrare pentru cealalta lucrare. Cand aceasta devine activa, procesorul poate obtine datele de intrare la rata de transfer a memoriei (mult mai mare decat viteza de citire a cartelelor). De asemenea, rezultatele unei lucrari retinute in aceeasi zona de buffere I/O pot fi listate sau afisate in timp ce procesorul executa o alta lucrare .

O tehnica mai sofisticata este tehnica SPOOLing (Simultaneous Peripheral Operations OnLine), care foloseste discuri magnetice (sau benzi magnetice) pentru memorarea datelor de intrare, respectiv de iesire ale lucrarilor. Operatiile de citire de pe cartele si memorare pe aceste discuri auxiliare, precum si operatiile de citire de pe discuri si afisare la imprimanta sunt realizate de catre monitorul Spooling in paralel cu executia programului curent. Pe discuri se pot retine datele corespunzatoare mai multor lucrari, asigurand astfel o incarcare la intreaga capacitate a dispozitivelor periferice.

Ambele tipuri de prelucrari sunt seriale, UCP nu se ocupa de alt program (sau lucrare) pana nu-l termina pe cel curent.

Multiprogramarea (generatia a treia)

Timpul de inactivitate al UCP impus de perioadele de asteptare poate fi redus substantial daca in memoria interna ar coexista mai multe programe ce pot solicita UCP atunci cand acesta asteapta terminarea unei operatii de I/O pentru lucrarea curenta.

Multiprogramarea este o metoda de executie a mai multor programe concurente pe un singur procesor (se simuleaza n procesoare pe un singur procesor fizic). SO, in acest caz, trebuie sa asigure repartizarea memoriei interne intre programele ce se executa concurent, planificarea proceselor, alocarea unitatii centrale, distribuirea dupa necesitati a dispozitivelor periferice, protectia programelor etc.

In figura, pc. b), este prezentat un posibil scenariu pentru executia concurenta a doua programe.

Pentru imbunatatirea utilizarii resurselor, sistemele actuale permit ca doua sau mai multe programe sa emita cereri de acces la aceeasi resursa. Numarul de procese existente in memorie, care isi disputa resursele sistemului de calcul, defineste gradul de multiprogramare.

Este necesara clarificarea mai multor termeni.

O instanta a unui program in executie se numeste proces sau task.

Sistemele multitasking (sau multiproces) sunt sistemele ce permit ca mai multe procese sa se execute simultan.

Sistemele de operare multiacces (sau multiutilizator) sunt sistemele ce permit accese simultane la un sistem de calcul prin intermediul mai multor terminale, fie ca utilizatorii acceseaza unul si acelasi program, fie ca fiecare ruleaza programul propriu.

Motive pentru multiprogramare :

- impartirea unei aplicatii in doua sau mai multe procese;

- furnizarea de servicii interactive mai multor utilizatori simultan;

- cresterea factorului de utilizare a UCP-ului.

Sisteme cu partajarea timpului (time-sharing)

Sunt sisteme ce au la baza multiprogramarea si multiaccesul. Elementele globale ce definesc aceste sisteme sunt :

- tehnica divizarii timpului;

- multiplexarea resurselor intre mai multi utilizatori independenti.

In time-sharing, termenul de multiplexare semnifica partajarea resurselor sistemului astfel incat se creeaza efectul de utilizare simultana a resurselor de catre mai multe procese, fiecare avand senzatia ca sistemul ii apartine integral.

Un astfel de sistem de operare trebuie sa asigure:

- protectia memoriei - programele utilizator trebuie sa fie protejate intre ele pentru a nu permite accesul neautorizat, fiecare program fiind limitat la spatiul sau de memorie;

- independenta utilizatorilor - se stabileste o cuanta de timp pentru fiecare utilizator; chiar daca programul nu s-a terminat in acest timp, UCP comuta la alt program aflat in starea de executie (READY);

- alocarea resurselor programelor utilizatorului - este efectuata de monitorul rezident in memoria interna : spatiu de memorie interna, timp UCP, tratarea cererilor de intrerupere de la terminale etc.;

- alocarea memoriei - este efectuata printr-o tehnica de alocare si control al transferului paginilor intre memoria externa si cea interna.

Sisteme in timp real

Au fost construite pentru a controla sisteme din lumea reala.

Istoriceste, primele sisteme de calcul in timp real se confundau cu sistemele de supraveghere si conducere a proceselor tehnologice. Se foloseau traductoare de masura sau sesizoare care preluau datele direct din mediul inconjurator sau de la un proces si le transmiteau sistemului de calcul.

Sistemele in timp real sunt acele sisteme care trebuie sa produca un raspuns corect intr-un timp predefinit. Daca aceasta limita de timp este depasita, se pot produce rezultate false sau functionari incorecte ale sistemului.

Deci, elementul esential ce caracterizeaza un sistem in timp real este timpul de raspuns. Timpul de raspuns este definit ca intervalul de timp intre momentul in care se produce un eveniment si momentul de timp in care sistemul de calcul reactioneaza (cu un mesaj de raspuns) la acel eveniment.

Din punctul de vedere al sincronizarii dintre evenimentele externe si actiunile interne (task-uri), avem:

task-uri ciclice, periodice - se foloseste intreruperea de ceas pentru comutarea intre task-uri.

De ex., pentru task-urile de culegere de date se definesc rate de esantionare. Comutarea se poate face la aparitia intreruperii de ceas sau, daca rata de esantionare este mai mica decat frecventa intreruperii de ceas, se pot numara intreruperile de ceas pana cand se atinge valoarea timpului pentru lansarea task-ului in executie;

task-uri aperiodice, bazate pe evenimente - la aparitia unui eveniment, task-ul corespunzator este lansat in executie, el trebuind sa raspunda intr-un interval de timp bine definit. La majoritatea sistemelor, aparitia evenimentului informeaza sistemul printr-o intrerupere. Se poate folosi si tehnica de polling, in care sistemul interogheaza senzorii pentru a vedea daca a aparut evenimentul.

Ex.: initierea unor actiuni de alarma datorita cresterii temperaturii sau presiunii peste limita impusa.

sisteme interactive - sunt cele mai raspandite sisteme in timp real. Cererea de timp real este, de obicei, exprimata ca 'timpul mediu de raspuns nu trebuie sa depaseasca'

Ex.: rezervari pentru hoteluri, avioane etc.

Sisteme distribuite (generatia a patra)

Sunt sisteme formate din mai multe UCP-uri interconectate. Controlul sistemului poate fi centralizat sau distribuit (controlul se realizeaza prin cooperarea tuturor nodurilor).

Sistemele de operare se pot clasifica in :

- NOS (Network Operating Systems) - fiecare calculator are resursele proprii pe care le gestioneaza folosind un sistem de operare local. Resursele unui alt calculator din retea pot fi accesate prin intermediul componentei ce se ocupa de controlul si gestiunea retelei.

Fiecare masina ruleaza propriul sistem de operare si are propriul utilizator (utilizatori).

La reteaua Novell,SO local este DOS iar cel al retelei Novell Netware.

- DOS (Distributed Operating Systems) - vede resursele ca un tot unitar (ca un singur sistem) si le gestioneaza ca atare. Accesul se realizeaza folosind mecanisme globale (la nivel global), nu locale. Utilizatorii nu sunt constienti (aware??) pe ce masina ruleaza programele lor si unde sunt localizate fisierele pe care le acceseaza; de aceasta se ocupa eficient sistemul de operare.

1.2. SISTEMUL DE OPERARE UNIX

1.2.1. Caracteristici generale

UNIX este un sistem de operare interactiv, multiutilizator si multitasking, cu partajarea timpului, permitand exploatarea eficienta a capacitatii de prelucrare puse la dispozitie. Nu este un sistem in timp real. Structura lui este data in figura de mai jos. Figura prezinta trei nivele : hardware, nuclu si utilizator. Apelurile sistem si bibliotecile reprezinta granita intre programele utilizator si nucleu. Unele functii din programele utilizator sunt mapate de catre biblioteci in apeluri sistem (= primitivele, serviciile oferite de sistemul de operare). Programele in limbaj de asamblare folosesc direct apelurile sistem, fara a apela functii din biblioteci. Bibliotecile sunt legate cu programul la compilare si astfel vor face parte din programul executabil.

In figura, apelurile sistem sunt impartite in doua categorii :

cele care interactioneaza cu subsistemul de fisiere;

cele care interactioneaza cu subsistemul de control al proceselor.

Subsistemul de fisiere administreaza fisierele, aloca spatiu pentru fisiere, controleaza accesul la fisiere si primeste datele utilizator. Driverele de dispozitiv sunt module nucleu care controleaza operarea cu dispozitivele periferice. Dispozitivele bloc sunt dispozitive cu acces aleator, iar cele de tip caracter au acces serial. Mecanismul de buffer-are se foloseste doar in cazul dispozitivelor bloc.

Fisierele si dispozitivele I/O sunt tratate uniform, adica folosind acelasi set de apeluri sistem. Prin operatia de montare/demontare, sistemul de fisiere ce poate fi accesat de un utilizator isi poate modifica dinamic dimensiunea. Utilizatorii pot transfera fisiere de pe si pe statii UNIX aflate la distanta, statii legate in retea.

Subsistemul de control al proceselor este responsabil de sincronizarea proceselor, comunicarea intre procese, administrarea memoriei si planificarea proceselor.

Cele doua subsisteme interactioneaza la incarcarea unui fisier in memorie in vederea executiei lui.


Modulul de administrare a memoriei controleaza alocarea memoriei. Daca la un moment dat sistemul nu mai are suficienta memorie fizica pentru procese, nucleul muta unele procese din memoria interna intr-o zona din memoria externa (hard disc), numita spatiu de swap.

Modulul de planificare aloca UCP tuturor proceselor. El se ocupa de alegerea procesului cu cea mai mare prioritate, pe care il va lansa in executie atunci cand procesului curent i s-a terminat cuanta de timp sau asteapta o resursa. Procesul care a fost inlocuit va fi lansat in executie cand va avea cea mai mare prioritate din sistem.

Modulul de control al hardware-ului este responsabil pentru tratarea intreruperilor si comunicarea cu masina de calcul. Unele dispozitive precum discurile si terminalele intrerup UCP in timpul executiei unui proces. Nucleul trateaza intreruperea si apoi continua procesul intrerupt din punctul unde a ramas. Intreruperile nu sunt tratate de alte procese (sistem), ci de functii ale nucleului, apelate in contextul procesului curent.

Nucleul sistemului de operare (kernel) este partea minimala a unui sistem de operare ce ramane rezidenta in memorie pe tot parcursul rularii masinii.

In cazul Unix-ului, nucleul este scis in limbajul C, fiind practic independent de masina pe care opereaza; de aici rezulta portabilitatea acestui sistem de operare.

Shell este interpretorul de comenzi UNIX. El nu este parte integranta a sistemului de operare, fiind lansat ca orice alt program. Astfel, utilizatorul are posibilitatea sa aleaga el ce program sa fie lansat la inceputul sesiunii de lucru (un program mai intuitiv, grafic).

Caracteristici ale sistemului de operare Unix:

- se asigura protectia fisierelor si executiei lor prin existenta unor parole si drepturi de acces;

- dispune de intrari/iesiri generalizate prin care operatiile de intrare/iesire sunt integrate in sistemul de fisiere;

- gestiunea memoriei este realizata conform unui algoritm de swapping. La versiuni ulterioare, operatiile de gestiune a memoriei si planificare a proceselor folosesc mecanismul de paginare;

- dispune de apeluri sistem pentru gestiunea proceselor : creare, distrugere, sincronizare, comunicare, lansarea in executie a altor procese, rezultand astfel un arbore de procese. Procesele parinte si fii partajeaza acelasi segment de cod, avand insa segmente diferite de date. Gestiunea proceselor se face dupa un algoritm simplu de determinare a prioritatilor;

- acoperirea unei vaste game de aplicatii : compilatoare, sisteme de gestiune a bazelor de date (Oracle, Gupta), retele de calculatoare, inteligenta artificiala, simulare, gestiune, statistica, instruire asistata de calculator etc.;

- ofera unelte pentru dezvoltarea de programe (compilatoare pentru cele mai moderne limbaje de programare existente astazi: Pascal, C, C++, Fortran) si preparare de documente (scrierea comoda a tabelelor, a expresiilor matematice, fizice si chimice, desenele si graficele, cele rezonabile, pot fi descrise pentru a fi elaborate automat);

- comunicare intre utilizatori. UNIX este la ora actuala cel mai raspandit SO care practica posta electronica. Conceptul fundamental cu care opereaza este acela de casuta postala. Aceasta este o zona in memoria interna sau mai degraba pe disc, proprie fiecarui utilizator, unde acesta depune mesajele pentru diversi destinatari si unde le primeste pe cele ce-i sunt adresate. Periodic, sistemul expediaza mesajele catre destinatari. Tot periodic, sau la cerere, utilizatorul este informat asupra 'corespondentei' lui;

- intretinere si dezvoltare facila.

1.2.2. Variante UNIX

Berkeley Unix (BSD=Berkeley Software Distribution)

Introduce mecanismul de paginare pentru gestiunea memoriei virtuale (pana in acel moment se folosea mecanismul de swapping al memoriei pentru a asigura facilitatile de multiprogramare).

Elaboreaza protocolul TCP/IP (Transport Control Protocol/Internet Protocol) pentru interconectarea dintre retele diferite de calculatoare, conectabile prin linii telefonice sau prin alte sisteme (Arpanet, Internet).

Dezvolta un mecanism general de asigurare a comunicatiilor, numit mecanism de comunicatie interprocese; in acest mod se puteau stabili modalitati de comunicare intre orice tipuri de procese. Grupul Berkeley a decis sa implementeze un nou mecanism de comunicatie intre procese, numit socket (socket-ul este echivalentul adresei de retea a unui proces). Se permite astfel comunicarea bidirectionala intre procese.

Doua alte extinderi pe care le aduce versiunea Berkeley sunt : vi si csh. Vi este un editor de texte in mod ecran. Csh este un interpretor de comenzi care poseda un limbaj de programare inspirat din C.

Sistemul de fisiere, care permite accesul mai rapid, si facilitatile de lucru in retea aduse sistemului UNIX de grupul Berkeley, au permis salturi semnificative ale performantei. Ulterior, toate extinderile Berkeley au fost incluse si de AT&T in implementarile sale de UNIX, System V.

Unix System V (AT&T)

O modificare fundamentala a constituit-o introducerea conceptului de stream (??), care aduce procedeele de comunicatie interprocese la un nivel comparativ cu mecanismul de socket BSD. Prin stream se asigura o tratare modularizata, performanta a comunicatiilor interprocese. Acest mecanism implementeaza un protocol de comunicatie in retea numit RFS (Remote File System), care asigura utilizatorilor posibilitati de interconectare si partajare a resurselor.

In ciuda concurentei, Unix System V s-a impus ca singura implementare importanta de Unix.

HP-UX (Hewlett-Packard)

HP-UX este sistemul de operare al statiilor de lucru HP Apollo din familia 9000 (seriile 300/400/700) si al minicalculatoarelor Hewlett-Packard 9000 din seria 800.

Istoriceste derivat din 4.3BSD, incepand cu versiunea 8.0HP-UX a luat o optiune hotarata spre System V. HP-UX este un sistem foarte echilibrat, respectand toate standardele uzuale (SVID,POSIX,ANSI,XPG) acolo unde este cazul si inovand cu curaj acolo unde problema portabilitatii este neimportanta. Incepand cu versiunea 8.0 HP-UX contine functii de timp real si suporta arhitecturile multiprocesor din seria 9000, oferind capacitati de multiprocesare simetrica.

Sistemul include automat X Windows System version 11 release 5, cu o interfata Motif si un front-end grafic specific (VUE = Visual User Environment). Sunt, de asemenea, automat incluse : NFS (Network File System) si PC-NFS ??, TCP/IP (si serviciile uzuale : ftp), RPC (Remote Procedure Call), interfata audio. Conectivitatea este excelenta. Se pot utiliza discuri flexibile DOS. Interoperabilitatea cu retele de PC-uri este usor de realizat. Pentru dezvoltarea de programe se ofera mediul SoftBench (produs separat) care simplifica enorm realizarea produselor de amploare. Sistemul ofera atat biblioteca de functii BSD cat si cea System V.





Politica de confidentialitate


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.