b.Salvarea context

Сделай свою wap-шпаргалку =) попробуй конструктор сайтов http://www.panweb.com/


^algoritmul inthand /* rutina detratare a ^оntreruperii */
^intrare: niciuna
^ie?ire: niciuna
{
^salveazг (introduce) stratul context curent;
^determinг sursa de оntrerupere;
^gгse?te vectorul de оntrerupere;
^apeleazг rutina de tratare a оntreruperii;
^reface (scoate din stivе) stratul context anterior;
}
Interfaюa de apel sistem a nucleului a fost descrisг ca un apel normal de funcюie. Compilatorul C folose?te o bibliotecг de funcюii predefinite (biblioteca C) care conюine denumirile apelurilor sistem.
Funcюiile de bibliotecг invocг o instrucюiune care schimbг modul de execuюie al procesului оn modul nucleu ?i determinг nucleul sг оnceapг execuюia codului pentru apelurile sistem.Aceastг instrucюiune este numitг "trap" ?i este vгzutг ca o excepюie. Rutinele de bibliotecг sunt executate оn modul utilizator, dar interfaюa de apel sistem este un caz special de rutina de tratare a оntreruperii.
^algoritmul syscal /* algoritmul pentru invocarea unui apel sistem */
^ intrare: numгrul apelului sistem
^ ie?ire: rezultatul apelului sistem
{
gгse?te intrarea оn tabela de apeluri sistem corespunzгtoare numгrului de apel sistem;
^determinг numгrul de parametri pentru apelul sistem;
^copie parametrii din spaюiul de adrese utilizator оn u area;
^salveazг contextul curent pentru оntoarcerea forюatг );
^invocг codul apelului sistem in nucleu;
^if (apare eroare оn timpul execuюiei apelului sistem)
{
seteazг registrul 0 din registrul context salvat utilizator cu numгrul erorii;
^оntoarce bitul de transport оn registrul PS din contextul registrului salvat utilizator;
}
^else
^seteazг registrul 0, 1 din registrul context salvat utilizator ca valori de retur din apelul sistem;
}