SHPORA.net :: PDA

Login:
đćăèńòđàöèÿ

Main
FAQ

ăóìàíèòàđíûć íàóêè
ćńòćńòâćííûć íàóêè
ìàòćìàòèśćńêèć íàóêè
òćőíèśćńêèć íàóêè
Search:
Title: | Body:

a.Crearea proceselor

Singurul mod prin care un utilizator poate crea un nou proces în UNIX este folosirea apelului sistem fork. Procesul care apelează fork este numit proces părinte, iar noul proces creat este numit proces fiu. Sintaxa pentru apelul sistem fork este: pid=fork();
La revenirea din apelul sistem fork, două procese au copii identice ale contextului la nivel utilizator, excepție făcând valoarea de retur a pid-ului. În procesul părinte, pid-ul are valoarea identificatorului procesului fiu; în procesul fiu, pid-ul are valoarea zero.
Procesul 0, creat intern de către kernel când sistemul este inițializat este singurul proces care nu este creat prin intermediul apelului sitem fork. Nucleul execută următoarea secvență de operații la apelul sistem fork:
1)Alocă o intrare în tabela proceselor penrtru noul proces.
2)Atribuie un identificator unic procesului fiu.
3)Face o copie logică a contextului procesului părinte.
4)Incrementeză contorii tabelei de inoduri ?i fi?iere asociate procesului.
5)Întoarce în procesul părinte numărul identificatorului atribuit procesului fiu ?i valoarea zero în procesul fiu. Descrierea algoritmului:
-Nucleul se asigură mai întâi dacă are resurse disponibile pentru a termina cu succes apelul sistem fork. (Dacă nu sunt resurse disponibile, apelul sistem fork dă gre?.)
-Nucleul găse?te o intrare în tabela proceselor pentru a începe construcția contextului procesului fiu ?i se asigură că utilizatorul care a apelat fork nu are deja prea multe procese în curs de execuție. De asemenea selectează un unic identificator pentru noul proces. -Mai departe nucleul inițializează intrarea din tabela proceselor pentru procesul fiul creat prin copierea diferitelor câmpuri din intrarea procesului părinte. Starea inițială a procesului este "în curs de creare".