c.Terminarea proces

Сделай свою wap-шпаргалку =) попробуй конструктор сайтов http://www.panweb.com/


Un proces о?i poate sincroniza execuюia cu terminarea unui proces fiu prin execuюia apelului sistem wait. Sintaxa pentru acest apel sistem este:pid=wait (stat_addr);
unde pid este identificatorul de proces al fiului din starea zombie, iar stat_addr este adresa unui оntreg din spaюiul utilizator ce va conюine codul de ie?ire al fiului.
--algoritm wait
^intrгri: adresa unei variabile de pгstrare a stгrii procesului ce executг exit
^ie?iri: identificatorul fiului, codul de ie?ire al fiului
{
^if(procesul оn a?teptare nu are procese fii)
^return(eroare);
^for(;;)/* cicleazг pвnг la instrucюiunea return din interiorul buclei */
{
^if(procesul оn a?teptare are un fiu оn starea zombie)
{
^alege un fiu aflat оn starea zombie;
^adaugг timpul de folosire a CPU la pгrinte;
^elibereazг intrarea fiului din tabela de procese;
^return(ID-ul fiului, codul de ie?ire al fiului);
}
^if(procesul nu are fii)
^return eroare;
^a?teaptг cu o prioritate оntreruptibitг pe ^evenimentul :(se iese din procesul fiu);
}
^ }
Nucleul cautг un fiu al procesului оn starea zombie ?i dacг nu gгse?te nici unul оntoarce o eroare. Dacг gгse?te un fiu оn starea zombie, extrage PID-ul ?i parametrul furnizat apelului sistem exit al fiului ?i оntoarce aceste valori la terminarea apelului sistem. Un proces ce executг exit poate astfel preciza diferite coduri de retur pentru a da sens execuюiei apelului exit, dar multe programe nu le stabilesc оn mod explicit оn practicг. Nucleul adaugг timpul acumulat de execuюia procesului fiu оn modurile utilizator ?i nucleu la cвmpurile corespunzгtoare din u area a procesului pгrinte ?i оn final elibereazг poziюia din tabela proceselor ce fusese ocupatг de procesul оn stare zombie. Aceastг poziюie devine disponibilг pentru noi procese.
Dacг procesul ce executг wait are procese de tip fiu, dar niciunul dintre acestea nu se aflг оn starea zombie, el trece оn a?teptare la o prioritate оntreruptibilг pвnг la sosirea unui semnal.