SHPORA.net :: PDA

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

Main
FAQ

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

a.Lansarea altor.prog

Apelul sistem exec apelează un alt program suprapunând pe spațiul de memorie al unui proces o copie a unui fi?ier executabil. Conținutul contextului la nivel utilizator care a existat înaintea apelului exec nu mai este apoi accesibil cu excepția parametrilor lui exec pe care nucleul îi copiază din vechiul spațiu de adresă în cel nou.
Sintaxa apelului este:execve(filename, argv, envp)
Unde:
-filename este numele fi?ierului executabil care a fost apelat;
-argv este un pointer către un vector de pointeri la ?iruri care sunt parametrii programului executabil;
-envp este un pointer către un vector de pointeri la ?iruri care reprezintă mediul programului executat.
Există mai multe funcții de bibliotecă care apelează exec cum ar fi execl, execv, execle, etc. Toate acestea apelează eventual pe execve, din acest motiv acesta este folosit aici pentru a specifica apelul sistem exec.
--algoritm exec
^intrări: ^ (1) nume de fi?ier
^ (2) lista de parametri
^ (3) lista de variabile de mediu
^ie?iri: nimic
{ obține inodul fi?ierului (algoritmul namei);
verifică dacă fi?ierul e executabil, dacă utilizatorul are drept de execuție;
^cite?te header-ele de fi?ier, verifică dacă sunt module încărcabile;
^copiază parametrii lui exec din spațiul vechi de adrese în spațiul sistemului;
^for(fiecare regiune specificată în modului încărcat)
{
^alocă regiuni noi (algoritm allocreg);
^ata?ează regiunile (algoritmul attachreg);
^încarcă regiunea în memorie dacă este cazul (algoritmul loadreg);
}
copiază parametrii lui exec în noua regiune de stivă a utilizatorului;
^procesare specială pentru programele setuid, opțiunu de execuție pas cu pas;
eliberează inodul fi?ierului (algoritmul iput);
}
În primul rând exec accesează fi?ierul prin algoritmul namei pentru a determina dacă este executabil, obi?nuit (nu e director) ?i pentru a determina dacă utilizatorul are drept de execuție asupra programului. Nucleul cite?te apoi header-ul fi?ierului pentru a determina mărimea fi?ierului executabil.