b.Incarc,sist si.proc

[ ]
Mre?te regiunea la mrimea potrivit ?i copiaz codul (cea mai scurt descriere) din spaiul de adrese al nucleului n noua regiune: acest cod formeaz acum contextul la nivel de utilizator al procesului 1. Procesul 1 seteaz apoi contextul registrului utilizator salvat, se ntoarce din modul nucleu n modul utilizator ?i execut codul care fusese copiat din nucleu. Procesul 1 este un proces la nivel utilizator care este n opoziie cu procesul 0, care este un proces la nivel nucleu ?i care se execut n modul nucleu. Codul pentru procesul 1, copiat din nucleu, const din apelul funciei sistem exec pentru execuia programului "/etc/init". Procesul 1 apeleaz exec ?i execut programul n mod normal. Procesul 1 este n mod normal numit init, pentru c el este rspunztor pentru iniializarea noilor procese.
De ce nucleul copiaz codul apelului sistem exec n spaiul de adrese utilizator al procesului 1? Ar putea s invoce versiunea intern a exec-lui direct din nucleu, dar asta ar fi mai complicat dect implementarea deja descris.
--algoritmul start /* algoritm pentru boot-area sistemului */
^intrri: niciuna
^ie?iri: niciuna
{
^iniializarea tuturor structurilor de date ale sistemului;
^pseudo-montarea rdcinii;
^pregtirea mediului pentru procesul 0;
^apel fork pentru procesul 1:
{
/* procesul 1 */
^aloc regiune;
^ata?eaz regiunea la spaiul iniial de adrese;
^cre?te mrimea regiunii n concordan cu codul ^care va fi copiat n ea;
^copiaz codul din spaiul nucleu pentru a iniializa spaiul utilizator pentru a executa init;
^schimb modul din modul nucleu n modul utilizator;
/* init niciodat nu va fi aici... ca rezultat al modului schimbat nainte, init execut /etc/init ?i devine un proces utilizator "normal" care respect apelurile sistem */
}
/* procesul 0 continu aici */
^apel fork pentru procesele nucleu;
/* procesul 0 invoc swapper-ul pentru a face management-ul alocrii spaiului de adrese pentru proces n memoria proncipal ?i a dispozitivelor de swap. Acesta este un ciclu infinit; procesul 0 este n mod obo?nuit n a?teptare n bucl, dac nu este ceva de fcut pentru el */
^execut codul pentru algoritmul swapper;
}

:

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