Implementarea Proceselor în Unix

Previzualizare curs:

Extras din curs:

2.2. IMPLEMENTAREA PROCESELOR ÎN UNIX

Structurile de date folosite de nucleu pentru gestiunea proceselor sunt :

- structura de proces (1 per proces) care contine câmpuri ce trebuie sa fie accesibile nucleului tot timpul :

- parametrii pentru planificare : prioritatea, timpul de UCP consumat recent, timpul cât a stat în starea suspendat ultima oara; toate acestea sunt folosite pentru a stabili care proces se selecteaza pentru rulare;

- imaginea în memorie : pointeri catre tabela de pagini asociata procesului, în cazul în care procesul este rezident în memoria principala sau adresa pe dispozitivul de swap (disc);

- semnale : un câmp pentru semnale care arata semnalele primite de proces dar netratate înca;

- alte informatii : identificatorul de proces, identificatorii de utilizator si grup efectivi, identificatorul procesului parinte, starea curenta a procesului, evenimentul pe care îl asteapta.

- structura utilizator (1 per proces) care contine câmpuri necesare doar în timpul când procesul se afla în starea de executie:

- pointer spre structura de proces;

- toti identificatorii de grup sau de utilizator asociati procesului;

- un tablou, fiecare element indicând modul în care procesul va reactiona la semnalul corespunzator (ignorare, tratare, terminare proces);

- terminalul de control identificat ca "terminalul de login" asociat procesului, daca exista vreunul;

- parametrii si rezultatele/erorile apelurilor sistem;

- pointer catre inodul directorului curent si catre inod-ul directorului radacina (root);

- o copie a registrilor generali, a indicatorului de stiva (SP), a numaratorului de instructiuni (PC) care este scrisa în momentul comutarii din modul utilizator în modul nucleu;

- informatii privind tabela de fisiere deschise;

- tabela de regiuni (1 per proces), în care fiecare element contine date despre o regiune:

- un pointer catre inod-ul fisierului care este încarcat în regiune (în cazul regiunilor de tip text);

- tipul regiunii : text (cod), memorie comuna (date comune), date private sau stiva;

- localizarea regiunii în memoria fizica;

- dimensiunea regiunii (în Ko) si un câmp care indica tipul de acces permis procesului (read-only, read-write, read-execute);

- starea regiunii, care poate sa fie o combinatie de :

- blocata;

- în acces (în cerere);

- tocmai se încarca în memorie;

- valida (a fost deja încarcata în memorie);

- adresa tabelei de pagini;

- adresa virtuala de început a regiunii;

Obs. : Regiunile partajate pot avea adrese virtuale diferite în fiecare proces

Fiecare proces are atât o faza utilizator (lucreaza în mod utilizator), cât si o faza sistem (lucreaza în mod sistem, nucleu). Instructiunile obisnuite sunt executate în mod utilizator, iar apelurile sistem în mod sistem. Corespunzator, procesului îi sunt asociate doua stive.

Comutarea între modul utilizator si sistem se realizeaza în cazurile :

- generare exceptie;

- apelurile sistem prin care utilizatorul solicita diverse servicii oferite de sistemul de operare; cele care realizeaza operatii de intrare/iesire conduc la suspendarea procesului apelant pe durata transmiterii datelor;

- sosire întreruperi de la periferice.

Nucleul pastreaza intern o tabela a proceselor active ce contine structurile de proces ale proceselor active, indiferent daca ele sunt în memorie sau pe disc (în urma procesului de swapping). De asemenea, pastreaza intern si o tabela de regiuni.

Cu ajutorul apelului sistem fork() se creeaza un nou proces astfel :

- se aloca procesului nou (numit proces fiu) o intrare libera din tabela de procese;

- se asigneaza un ID unic procesului fiu;

- se completeaza câmpurile structurii de proces a procesului fiu (multe sunt copiate de la procesul parinte : grupul parintelui, UID-urile real si efectiv, valoare nice a parintelui etc.). Nucleul initializeaza parametrii pentru planificare : valoarea initiala a prioritatii, folosirea UCP-ului etc.;

- se aloca memorie pentru regiunile de date si stiva, copiindu-se continutul celor corespunzatoare parintelui. În mod obisnuit, nu este necesara alocarea unei zone pentru cod, deoarece se partajeaza cel existent;

- daca sistemul lucreaza cu memorie paginata, vor fi construite noi tabele de pagini pentru regiunile de date si stiva;

- se aloca memorie pentru structura utilizator si se copiaza informatiile din structura utilizator a parintelui. Astfel, vor fi pastrate valorile descriptorilor fisierelor deschise.

Observații:

Universitatea Stefan Cel Mare Suceava, Cursul de "Sisteme de Operare"

capitolele 2.2 - 2.3.4

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Implementarea Proceselor in Unix.doc
Alte informații:
Tipuri fișiere:
doc
Nota:
5/10 (1 voturi)
Nr fișiere:
1 fisier
Pagini (total):
7 pagini
Imagini extrase:
7 imagini
Nr cuvinte:
3 529 cuvinte
Nr caractere:
18 752 caractere
Marime:
27.61KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Curs
Domeniu:
Sisteme de Operare
Predat:
la facultate
Materie:
Sisteme de Operare
Profesorului:
Gaitan Vasile
Sus!