SHPORA.net :: PDA

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

Main
FAQ

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

b.Gestiun semn

Nucleul verifică recepționarea unui semnal când un proces este gata să se întoarcă din modul nucleu în modul utilizator ?i când acesta intră sau părăse?te starea de sleep la o prioritate scăzută programată. Nucleul tratează semnalele doar când un proces se întoarce din modul nucleu în modul utilizator. Astfel, un semnal nu are un efect imediat într-un proces care rulează în modul nucleu. Dacă un proces rulează în modul utilizator ?i nucleul tratează o întrerupere care presupune trimiterea unui semnal către proces, nucleul va recunoa?te ?i trata semnalul când se va întoarce din întrerupere. Astfel, un proces niciodată nu se va executa în modul utilizator înainte de tratarea semnalelor importante. Algoritm pentru recunoa?terea semnalelor:
^algoritmul issig /* test pentru recepția semnalelor */
^intrări: niciuna
^ie?iri: adevărat, dacă procesul recepționează semnale pe care nu le ignoră;
^fals, în celelalte cazuri
{
^while( câmpul semalului recepționat în intrarea din tabela proceselor nu este 0)
{
^găse?te numărul semnalului trimis către proces;
^if( semnalul este de "terminare fiu")
{
^if( se ignoră semnalul de "terminare fiu")
eliberează intrările din tabela proceselor corespunzătoare fiilor aflați în stările zombie;
^else if( interceptează semnale de "terminare proces fiu")
^return (adevărat);
}
^else if(dacă nu este ignorat semnalul)
^return (adevărat);
^?terge bitul semnalului recepționat din câmpul
semnalului aflat în tabela proceselor;
}
^return (fals);
}
În algoritmul issig, nucleul ?terge indicatorii care marchează apariția semnalelor pe care procesul vrea să le ignore dar notează existența semnalelor pe care acesta nu le ignoră.
Nucleul tratează semnalele în contextul procesului care le recepționează, deci un proces trebuie să ruleze pentru a putea trata semnalele. Există trei cazuri în tratarea semnalelor: procesul apelează exit la recepționarea semnalului, acesta ignoră semnalul, sau execută o funcție particulară (definită de utilizator).