b.Incarc,sist si.proc

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


Mгre?te regiunea la mгrimea potrivitг ?i copiazг codul (cea mai scurtг descriere) din spaюiul 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 opoziюie 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 funcюiei sistem exec pentru execuюia 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 rгspunzгtor pentru iniюializarea noilor procese.
De ce nucleul copiazг codul apelului sistem exec оn spaюiul de adrese utilizator al procesului 1? Ar putea sг invoce versiunea internг a exec-lui direct din nucleu, dar asta ar fi mai complicat decвt implementarea deja descrisг.
--algoritmul start /* algoritm pentru boot-area sistemului */
^intrгri: niciuna
^ie?iri: niciuna
{
^iniюializarea tuturor structurilor de date ale sistemului;
^pseudo-montarea rгdгcinii;
^pregгtirea mediului pentru procesul 0;
^apel fork pentru procesul 1:
{
/* procesul 1 */
^alocг regiune;
^ata?eazг regiunea la spaюiul iniюial de adrese;
^cre?te mгrimea regiunii оn concordanюг cu codul ^care va fi copiat оn ea;
^copiazг codul din spaюiul nucleu pentru a iniюializa spaюiul 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 alocгrii spaюiului 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 fгcut pentru el */
^executг codul pentru algoritmul swapper;
}