Document, comentariu, eseu, bacalaureat, liceu si facultate
Top documenteAdmitereTesteUtileContact
      
    


 


Ultimele referate adaugate

Adauga referat - poti sa ne ajuti cu un referat?

Politica de confidentialitate



Ultimele referate descarcare de pe site
  CREDITUL IPOTECAR PENTRU INVESTITII IMOBILIARE (economie)
  Comertul cu amanuntul (economie)
  IDENTIFICAREA CRIMINALISTICA (drept)
  Mecanismul motor, Biela, organe mobile proiect (diverse)
  O scrisoare pierduta (romana)
  O scrisoare pierduta (romana)
  Ion DRUTA (romana)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  Starea civila (geografie)
 

Ultimele referate cautate in site
   domnisoara hus
   legume
    istoria unui galban
   metanol
   recapitulare
   profitul
   caract
   comentariu liric
   radiolocatia
   praslea cel voinic si merele da aur
 
despre:
 
Apeluri sistem
Colt dreapta
Vizite: ? Nota: ? Ce reprezinta? Intrebari si raspunsuri
 
b7q6qd
In mod uzual, programele de aplicatii se executa in mod utilizator, iar sistemul de operare ruleaza in mod nucleu. In acest fel se asigura controlul sistemului de operare asupra operatiilor critice. Desi aplicatiile pierd din performanta prin limitarile impuse de modul utilizator, cresterea stabilitatii in functionare justifica din plin aceasta abordare. In acest moment putem studia ce se intampla atunci cand un program cere sistemului de operare furnizarea unui anumit serviciu. O asemenea cerere poarta numele de apel sistem (system call) si consta din urmatorii pasi:
- programul, care ruleaza in modul utilizator al procesorului, depune parametrii apelului sistem pe care il solicita intr-o anumita zona de memorie; practic, mecanismul este similar apelurilor de proceduri
- se executa o instructiune speciala (in general o intrerupere software), care trece procesorul in modul nucleu
- se salveaza informatiile legate de programul intrerupt care sunt necesare pentru reluarea ulterioara a executiei sale
- se identifica serviciul cerut si se apleaza rutina corespunzatoare
- rutina respectiva preia parametrii apelului din zona in care au fost depusi, ii verifica si, daca nu sunt erori, realizeaza actiunea ceruta; rezultatele obtinute sunt la randul lor depuse intr-o zona de memorie cunoscuta programului de aplicatie
- la terminarea rutinei, procesorul revine in mod utilizator si se reia executia programului din punctul in care a fost intrerupt (utilizand informatiile memorate anterior in acest scop); programul poate prelua rezultatele apelului din zona in care au fost depuse
Se poate observa ca executia unui apel sistem este mare consumatoare de timp. Din fericire, puterea de calcul a procesoarelor moderne este suficient de mare incat sa reduca in limite acceptabile pierderea de performanta datorata apelurilor sistem, iar cresterea fiabilitatii sistemului de calcul in ansamblul sau justifica din plin aceasta abordare.



In concluzie, avantajele oferite de apelurile sistem:
- Posibilitatea scrierii de cod care sa fie partajat de mai multe programe, fata de a scrie, de fiecare data, codul in interiorul fiecarui program
- Posibilitatea optimizarii codului partajat
- Protectia oferita prin ascunderea operatiilor privilegiate in spatele apelurilor sistem
- Facilitarea scrierii programelor datorita exportului unei interfete de programare unice inspre programe, indiferent de marca sau standardul dispozitivului respectiv.
In linii mari, apelurile sistem se grupeaza in cinci clase:
- control al proceselor
- manipularea fisierelor
- manipularea dispozitivelor de I/O
- administrarea unor anumite informatii (de exemplu data/ora)
- comunicatia
Gestiunea proceselor
------------------- Scopul unui sistem de calcul este sa execute programele utilizatorilor
Pentru sporirea eficientei, este necesar ca operatiile de I/O sa se execute in paralel cu activitatea CPU.
La un moment dat pot exista in memorie mai multe programe. Anumite programe se excuta, altele asteapta operatii de I/O.
Unitatea de baza pentru activitatea unui sistem de calcul este procesul.
Un proces este o secventa de instructiuni care se afla in executie la un moment dat.
Exemple de procese
Este momentul sa introducem un nou termen, si anume cel de proces. Asa cum utilizatorul poate lansa in executie mai multe programe in paralel, la randul sau un program are posibilitatea de a se imparti in mai multe secvente de instructiuni care se executa tot in paralel. Deoarece aceste secvente concura intre ele pentru obtinerea accesului la procesor, rezulta ca notiunea de program nu mai este atat de importanta pentru sistemul de operare. Putem defini un proces ca o secventa de instructiuni care se executa intotdeauna una dupa alta, mereu in aceeasi ordine, si niciodata in paralel sau concurent. Sistemul de operare gestioneaza de fapt procese. Atunci cand se lanseaza in executie un program, se creaza un nou proces, care contine instructiunile si datele programului respectiv; la randul sau, acest proces poate crea alte procese, cu propriile date si instructiuni.
Activitatea in sistemul de calcul este impartita intre executia de procese si executia sistemului de operare.
Responsabilitatile sistemului de operare:
- Sa permita crearea / stergerea de procese
- Sa permita suspendarea si reluarea executiei unui proces
- Sa ofere mecanisme pentru sincronizarea proceselor
- pentru comunicatia inter-proces
- pentru detectarea si eliminarea interblocajelor
- gestiunea resurselor pentru procese

In sistemul DOS, ciclul de viata al unui program este urmatorul:
- utilizatorul lanseaza de la tastatura o comanda, care reprezinta numele unui program
- sistemul de operare identifica programul, il incarca de pe disc in memorie si il lanseaza in executie, predandu-i acestuia controlul asupra procesorului si a calculatorului in general
- daca programul se termina in mod corect, sistemul de operare preia din nou controlul si asteapta introducerea unui noi comenzi
Desigur, modelul este simplificat; de exemplu nu s-a luat in considerare cazul in care comanda data de utilizator este gresita. Cu toate acestea, avem deja o imagine asupra actiunilor pe care le are de efectuat sistemul de operare pentru a asigura executia unui program. Se observa imediat si principala slabiciune a sistemului DOS: programul o data lansat capata practic control total asupra calculatorului, din care cauza nu poate fi oprit daca incearca sa efectueze operatiuni care compromit functionarea sistemului de calcul. Un sistem de operare, pentru a fi stabil, trebuie sa poata interveni intotdeauna atunci cand un program se comporta anormal. Acest lucru este posibil prin intermediul intreruperilor.
Nu exista posibilitatea de a executa mai multe programe in mod simultan.
Sistemul de operare DOS nu are posibilitatea sa opreasca la un moment dat executia unui program pentru a incarca altul.
Sistemele de operare moderne introduc o serie de facilitati noi, cum ar fi: interfata grafica, posibilitatea de a lansa comenzile cu ajutorul mouse-ului in locul tastaturii etc. Dincolo de aceste imbunatatiri de detaliu, exista o noutate fundamentala: se pot executa in paralel mai multe programe. Implementarea acestei facilitati implica rezolvarea unor probleme cu care sistemul DOS nu se confrunta.
In realitate, un calculator tipic contine un singur procesor, care poate executa o singura instructiune la un moment dat. Devine astfel evident ca nu este vorba cu adevarat de paralelism. Politica adoptata este urmatoarea: daca mai multe programe sunt lansate in paralel, procesorul va executa pe rand cate o secventa de instructiuni din fiecare; datorita vitezei mari a procesoarelor, aceasta executie intrepatrunsa a programelor nu este vizibila pentru utilizator, care are impresia ca paralelismul este real. Numim acest model executie concurenta, deoarece programele sunt in concurenta pentru obtinerea controlului asupra procesorului. Concurenta este utila si in sistemele cu mai multe procesoare, pentru ca intotdeauna se vor putea lansa in executie mai multe programe decat procesoarele disponibile.
Pentru realizarea efectiva a concurentei trebuie sa se previna aparitia interferentelor intre programe; altfel spus, fiecare program in parte trebuie sa se execute ca si cum ar fi singurul existent, fara a fi perturbat in vreun fel de concurenta descrisa mai sus. De fapt, problema fundamentala consta in faptul ca programele isi disputa o serie de resurse comune: procesorul, memoria, dispozitivele periferice. Sarcina sistemului de operare este de a permite programelor accesul controlat la aceste resurse, astfel incat sa nu se influenteze intre ele.
In privinta memoriei, gestiunea sa este asigurata cu ajutorul mecanismului de paginare. Desigur, acesta trebuie folosit cu mare atentie, deoarece erorile pot avea efecte grave. De asemenea, accesul la periferice este strict controlat prin faptul ca nu este posibil decat prin intermediul apelurilor sistem, deci al sistemului de operare.
In cele din urma, resursa comuna cea mai importanta o reprezinta procesorul. Un program ale carui instructiuni sunt executate de procesor trebuie sa poata fi suspendat temporar din executie, pentru ca alte programe sa beneficieze si ele de procesor. Asa cum s-a vazut mai sus, singura modalitate de a opri un program aflat in executie este aparitia unei intreruperi.
Din punct de vedere al sistemului de operare, fiecare proces existent la un moment dat se gaseste in una din urmatoarele stari:
- in executie (run) - instructiunile sale sunt executate de procesor la momentul curent
- gata de executie (ready) - asteapta momentul in care va fi planificat pentru a fi executat de procesor
- in asteptare (wait) - asteapta terminarea unui apel sistem pe care l-a efectuat anterior; un asemenea proces nu concura momentan pentru planificarea la procesor
Desigur, nu pot fi in executie la un moment dat decat cel mult atatea procese cate procesoare exista in calculator.
Motivul pentru care procesele care au efectuat un apel sistem inca neterminat nu pot fi planificate la procesor este urmatorul: un apel sistem este mare consumator de timp. In plus, in cazul multor periferice (si in principal discul hard) este mai eficient sa nu fie servita imediat fiecare cerere de acces, ci sa se astepte sosirea mai multor cereri care sa fie tratate impreuna. Un proces poate fi deci obligat sa astepte un timp foarte lung pana la terminarea unui apel sistem; intrucat in tot acest timp nu-si poate continua executia, nu are sens sa fie luat in considerare pentru planificarea la procesor.
Conditiile in care un proces poate trece dintr-o stare in alta sunt sintetizate in figura urmatoare:
| Figura |
Un proces aflat in executie poate parasi aceasta stare in una din urmatoarele situatii:
- la terminarea sa (normala sau fortata, in urma unei erori)
- la efectuarea unui apel sistem, caz in care este trecut in asteptare
- atunci cand instructiunile sale au fost executate un timp suficient de lung si este randul altui proces sa fie planificat
Primele doua cazuri sunt evidente: in ambele situatii, sistemul de operare preia controlul chiar la cererea procesului respectiv sau in urma unei erori a acestuia (situatie in care s-a generat o intrerupere). In ultimul caz, tot sistemul de intreruperi vine in ajutor: in orice calculator exista un periferic numit ceas de timp real, a carui sarcina este de a genera cereri de intrerupere la intervale regulate de timp. Sistemul de operare poate deci sa masoare timpul cat un proces se afla in executie si sa-l intrerupa atunci cand a sosit momentul. Fara acest mecanism, implementarea concurentei ar fi practic imposibila.
In oricare din aceste cazuri, sistemul de operare trebuie sa aleaga unul din procesele gata de executie pentru a fi planificat la procesor. Componenta sistemului de operare care indeplineste aceasta sarcina se numeste planificator (scheduler). Exista mai multi algoritmi de planificare. Oricare ar fi cel ales, trebuie sa respecte o cerinta fundamentala: orice proces gata de executie sa nu fie obligat sa astepte decat un timp finit pana la planificarea sa la procesor (altfel spus, nici un proces sa nu astepte un timp nelimitat pana cand procesorul ii va executa instructiunile).
Pentru reprezentarea unui proces in memorie trebuie sa existe o metoda de a pastra informatiile despre acesta.
Process Control Block
Informatii necesare pentru un PCB:
- Starea procesului
- Numarul
- Program Counter (adresa urmatoarei instructiuni care trebuie executata)
- Continutul registrilor microprocesorului
- Informatii necesare planificatorului
- Informatii despre memorie
- Contabilizarea executiei
- Informatii despre disp. I/O (Lista fisierelor deschise)
Procese concurente
----------------- La un moment dat, mai multe procese se pot executa in acelasi timp.
Tipuri de procese:
- independente: ordinea executiei lor nu este importanta - cele doua procese nu partajeaza aceleasi date
- cooperative: partajeaza anumite date. Ordinea executiei a doua procese cooperative este importanta.
Necesitatea sincronizarii si comunicarii interproces.
Procesele cooperative pot comunica prin partajarea segmentului de date sau doar prin accesul la fisiere (sau prin apelul la metode de comunicare interproces).
Thread (proces usor) / proces
Crearea de procese
----------------- Un proces poate crea alte procese folosind un apel sistem.
Proces parinte si proces fiu
Partajarea resurselor intre procesele parinte si fiu
Dupa crearea unui proces
- Procesul parinte poate sa continue executia in mod concurent cu fiul
- Procesul parinte poate astepta terminarea executiei fiului
Exemplu UNIX:
Process Identifier (pid)
Instructiunea fork()
Planificarea proceselor
---------------------- Rolul planificarii proceselor
Planificatorul de procese
Exemple de planificatoare: FIFO, Shortest-Job-First, Priority, Cozi cu prioritati diferite
Despre algoritmi de planificare a proceselor si despre metode de sincronizare in cursul din anul II.

Colt dreapta
Creeaza cont
Comentarii:

Nu ai gasit ce cautai? Crezi ca ceva ne lipseste? Lasa-ti comentariul si incercam sa te ajutam.
Esti satisfacut de calitarea acestui document, eseu, cometariu? Apreciem aprecierile voastre.

Nume (obligatoriu):

Email (obligatoriu, nu va fi publicat):

Site URL (optional):


Comentariile tale: (NO HTML)


Noteaza documentul:
In prezent fisierul este notat cu: ? (media unui numar de ? de note primite).

2345678910

 
Copyright© 2005 - 2024 | Trimite document | Harta site | Adauga in favorite
Colt dreapta