b.Gestiun semn

[ ]
Nucleul verific recepionarea unui semnal cnd un proces este gata s se ntoarc din modul nucleu n modul utilizator ?i cnd acesta intr sau prse?te starea de sleep la o prioritate sczut programat. Nucleul trateaz semnalele doar cnd 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 ctre proces, nucleul va recunoa?te ?i trata semnalul cnd 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 recepia semnalelor */
^intrri: niciuna
^ie?iri: adevrat, dac procesul recepioneaz semnale pe care nu le ignor;
^fals, n celelalte cazuri
{
^while( cmpul semalului recepionat n intrarea din tabela proceselor nu este 0)
{
^gse?te numrul semnalului trimis ctre proces;
^if( semnalul este de "terminare fiu")
{
^if( se ignor semnalul de "terminare fiu")
elibereaz intrrile din tabela proceselor corespunztoare fiilor aflai n strile zombie;
^else if( intercepteaz semnale de "terminare proces fiu")
^return (adevrat);
}
^else if(dac nu este ignorat semnalul)
^return (adevrat);
^?terge bitul semnalului recepionat din cmpul
semnalului aflat n tabela proceselor;
}
^return (fals);
}
n algoritmul issig, nucleul ?terge indicatorii care marcheaz apariia semnalelor pe care procesul vrea s le ignore dar noteaz existena semnalelor pe care acesta nu le ignor.
Nucleul trateaz semnalele n contextul procesului care le recepioneaz, deci un proces trebuie s ruleze pentru a putea trata semnalele. Exist trei cazuri n tratarea semnalelor: procesul apeleaz exit la recepionarea semnalului, acesta ignor semnalul, sau execut o funcie particular (definit de utilizator).

:

Network | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | () | | | | | | | | | | | | | | | | () | Assembler | Basic, VB | Pascal | , ++ |