SHPORA.net :: PDA

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

Main
FAQ

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

b.Incarc,sist si.proc

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;
}