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:
Observatie: Procesul 0 se numeste sheduler pentru sistemele cu paginare si swapper pentru sistemele cu evacuare.
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:
Operatiile cele mai importante, realizate de nucleu prin apelul functiei fork sunt:
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