Notiunea de proces, Incarcarea sistemului de operare, Caracteristicile



Notiunea de proces. Incarcarea sistemului de operare

Exercitiu: Incercati sa va amintiti, fara sa apelati la caiet, definitia procesului.

Sistemul de operare Unix are drept concept fundamental conceptul de proces. Procesul poate fi definit, in prima instanta, ca fiind un program in executie (daca stiti ce este acela un proces, sunati la 8989899 si spuneti ce este un proces !). Procesul este o entitate dinamica, in timp ce programul este o entitate statica. Pentru un program executabil dat pot exista mai multe procese asociate, numite instante . Caracteristica cea mai importanta a unui proces este identificatorul procesului (PID). Acesta este un numar natural nenul prin care se identifica in mod unic procesele, mai precis locul unde sunt memorate caracteristicile procesului din tabela proceselor. Procesele sunt de doua tipuri: procese utilizator si procese nucleu.



Incarcarea sistemului de operare Unix se face astfel:

  • Se initializeaza structurile de date proprii (ale nucleului);
  • Se monteaza sistemul de fisiere
  • Se creaza procesul 0, numit swapper, care este planificatorul de procese El face parte din nucleu si este considerat proces sistem.
  • Se creaza procesul 1, numit init , care este parintele tuturor proceselor aparute ulterior in sistem;
  • Se executa procesul init care initializeaza structurile proprii de date, apoi citeste fisierul /etc/inittab pentru a decide asupra proceselor ce vor fi create si fisierul /etc/rc pentru a lansa procesele sistem care ruleaza in memorie pe durata intregii functionari a sistemului, numite procese background sau demoni . Procesul init citeste fisierul /etc/ttys pentru a determina numarul terminalelor din sistem si creaza cate un proces fiu pentru fiecare terminal. Dupa aceea, procesul init trece in starea blocat pana la terminarea unuia dintre procesele fiu. Fiecare proces fiu asociat unui terminal executa programul login care solicita introducerea numelui si parolei utilizatorului. Datele introduse sunt verificate prin compararea cu datele din fisierul /etc/passwd. Daca utilizatorul are acces la sistem, atunci acest proces fiu lanseaza interpretorul de comenzi ales de utilizator. In caz contrar, programul login solicita reintroducerea numelui si parolei.

Observatie: Procesul 0 se numeste sheduler pentru sistemele cu paginare si swapper pentru sistemele cu evacuare.

3.2 Caracteristicile unui proces

Dupa cum aminteam ceva mai inainte, un proces utilizator poate sa se execute in mod utilizator si in modul nucleu . In modul utilizator procesele nu au acces decit la propria zona de cod, date si stiva utilizator. In modul nucleu un proces contine instructiuni privilegiate si poate avea acces la structurile de date ale nucleului. Nucleul, in termeni de procese, nu este un proces separat ci devine parte integranta a procesului utilizator. Spatiul virtual de adrese al unui proces este cuprins intre 0 si adresa virtuala maxima accesibila procesului si are trei segmente: segmentul de cod, segmentul de date si segmentul de stiva.

Procesele iau nastere, sunt executate si dispar prin folosirea unor apeluri sistem (functii sistem). Orice proces Unix, cu exceptia procesului 0, este creat prin apelul functiei sistem fork. Procesul nou creat se numeste proces fiu, iar procesul care a apelat functia fork se numeste proces parinte. Initial, imaginile celor doua procese in memorie sunt identice, apoi ele pot avea propria imagine in memorie. Procesul fiu poate executa acelasi cod sau altul. Fisierele deschise de procesul parinte inainte de apelul fork vor fi partajate intre parinte si fiu. Pentru executarea codului se foloseste functia exec. Mecanismul executarii unei comenzi shell este urmatorul:

  • Shell-ul citeste linia de comanda si desparte comanda de argumentele sale;
  • Se apeleaza functia fork in urma careia vor aparea cele doua procese:parintele (procesul care executa codul shell-ului) si fiul (procesul ce va executa comanda respectiva);
  • Procesul parinte printr-un apel al functiei wait cedeaza procesorul fiului si intra in starea de asteptare;
  • Procesul fiu lanseaza un apel exec prin care executa un nou program (comanda data). Nucleul incarca in zona de memorie a shell-ului noul program, iar procesul este continuat cu acest program, caruia ii sunt transmise argumentele;
  • La incheierea executiei programului se apeleaza functia sistem exit, care determina terminarea procesului fiu si reda controlul procesului parinte (acesta iese din starea de asteptare); Dupa terminarea sa, procesul fiu intra in starea zombie: desi s-a terminat, numai procesul parinte poate elimina procesul fiu din tabela proceselor.

Operatiile cele mai importante, realizate de nucleu prin apelul functiei fork sunt:

  • Aloca o noua intrare in tabela proceselor;
  • Asociaza un descriptor unic procesului fiu;
  • Realizeaza o copie logica a imaginii memoriei parintelui;
  • Comunica parintelui descriptorul de proces al fiului;
  • Trece procesul fiu in starea intrerupt (in memorie sau evacuat pe disc);

In Unix exista mecanisme prin care se realizeaza sincronizarea proceselor, folosindu-se mai multe tipuri de semnale ce pot fi schimbate intre procese. Nu este cazul sa detaliem acest aspect (poate anul viitor cand veti putea programa in limbajul C), dar voi aminti doar functia kill care trimite semnale de terminare catre procese (mai multe amanunte in capitolul urmator).


Daca ati citit cu destula atentie lectiile de pana acum veti putea sa raspundeti corect intrebarilor cuprinse in Testul nr. 1


  1. Cum se numeste procesul folosit la conectarea in sistem ?
    login
    passwd
    init
  2. Cum se numeste procesul parinte al tuturor proceselor din sistem ?
    swapper
    init
    demon
  3. Cum se numesc procesele care se activeaza la aparitia unui eveniment ?
    demoni
    procese fii
    procese zombie
  4. Un proces ia nastere prin apelul functiei sistem
    WAIT
    EXEC
    FORK
  5. Un proces fiu nu are acces la
    fisierele deschise de parinte
    nici un fisier din sistem
    fisierele deschise de ceilalti fii ai procesului parinte
  6. Procesul ruleaza in mod nucleu atunci cand
    realizeaza un apel de sistem sau apare o intrerupere de ceas
    se afla evacuat pe disc
    se afla in starea READY PREEMPTAT
  7. Procesul care si-a incheiat executia dar apare in tabela proceselor este
    proces ORFAN
    proces ZOMBIE
    proces SISTEM
  8. Ce semnifica prescurtarea PID ?
    identificatorul procesului
    nu are semnificatie
    identificatorul parintelui unui proces