SHPORA.net :: PDA | |
Main FAQ ăóìàíèòàđíûć íàóêè ćńòćńòâćííûć íàóêè ìàòćìàòèśćńêèć íàóêè òćőíèśćńêèć íàóêè 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. |