SHPORA.net :: PDA

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

Main
FAQ

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

c.Gestiun semn

Acțiunea implicită este de a apela exit în modul nucleu, dar un proces poate specifica o acțiune specială, pe care s-o execute la recepționarea unui anumit semnal cu ajutorul apelul sistem signal. Sintaxa apelului este :
oldfunction=signal (signum, function);
unde:
-signum este numărul semnalului pentru care procesul specifică acțiunea;
-function este adresa funcției (utilizatorului) pe care procesul dore?te s-o apeleze la recepția semnalului. Apelul întoarce valoarea oldfunction care a fost valoarea lui function în cel mai recent apel al lui signal cu parametrul signum.
Procesul poate apela signal cu valoarea 1 sau 0 în loc de adresa funcției: procesul va ignora viitoarele apariții ale semnalului dacă valoarea parametrului este 1 ?i se întoarce în nucleu dacă valoarea lui este 0 (valoarea implicită).
^algoritmul psig /* Algoritm pentru tratarea semnalelor */
^intrări: niciuna
^ie?iri: niciuna
{
^obține numărul semnalului setat în intrarea din tabela proceselor;
^?terge numărul semnalului din intrarea tabelei proceselor;
^if( utilizatorul apelase funcția sistemsignal pentru ignorarea acestui semnal)return;
^if( utilizatorul a specificat funcția care să trateze semnalul)
{
^obține adresa virtuală utilizator a interceptorului de semnale păstrat în u area;
^?terge intrarea din u area care a conținut adresa interceptorului de semnal;
^modifică contextul nivelului utilizator:
artificial crează structura stivei utilizator pentru a mima apelarea funcției de interceptare a semnalului;
^modifică contextul nivelului sistem: scrie adresa interceptorului de semnal în câmpul PC al ^contextului regi?trilor salvați;
^return;
}
^if (semnalul este de tipul care face ca sistemul să creeze o imagine internă unui proces)
{
^crează fi?ierul numit "core" în directorul curent;
^scrie conținutul contextului nivelului utilizator în fi?ierul "core";
}
^apelează imediat algoritmul exit;
}
^Când tratează un semnal nucleul determină tipul semnalului ?i ?terge bitul semnalului tratat din intrarea corespunzătoare tabelei proceselor, setat când procesul a recepționat semnalul. Dacă funcția de tratare a semnalului are valoarea implicită, nucleul va descărca imaginea din memorie a procesului pentru anumite tipuri de semnale înainte de a face exit.