SHPORA.net :: PDA

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

Main
FAQ

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

c.Terminarea proces

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.