Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Evacuarea proceselor - UNIX

linux



+ Font mai mare | - Font mai mic



Evacuarea proceselor - UNIX

Nucleul evacueaza un proces daca are nevoie de spatiu in memorie, aceasta necesitate aparand in unul din urmatoarele cazuri :



1. Apelul sistem fork trebuie sa aloce spatiu pentru un proces fiu;

2. Apelul sistem brk mareste dimensiunea unui proces;

3. Un proces se mareste prin cresterea naturala a stivei sale;

4. Nucleul doreste sa elibereze spatiu in memorie pentru procesele care au fost evacuate anterior si acum trebuiesc reancarcate .

Cazul apelului fork iese din discutie deoarece este singurul caz in care memoria interna ocupata anterior de catre proces nu este abandonata.

Cand nucleul decide ca un proces poate fi ales pentru evacuarea din memoria principala, el decrementeaza contorul de referin]a al fiecarei regiuni a procesului si evacueaza regiunea daca contorul a ajuns la 0. Nucleul aloca spatiu pe un dispozitiv de evacuare si blocheaza procesul in memorie(pentru cazurile 1-3), impiedicand procesul incarcator sa il evacueze in timp ce se deruleaza operatia curenta de evacuare. Nucleul salveaza adresa de evacuare a regiunii in intrarea din tabela de regiuni.

Nucleul transfera maximum de date posibile in fiecare operatie I/O direct intre zona de swap si spatiul de adrese al utilizatorului evitand buffer-le cache. Daca hardware-ul nu poate transfera mai multe pagini intr-o operatie, software-ul nucleului trebuie sa transfere succesiv cate o pagina. Rata de transfer a datelor si mecanismul sau depind, printre alti factori, de posibilitatile controlerului de disc si de implementarea gestiunii memoriei. De exemplu, daca memoria este organizata pe pagini, datele care trebuiesc evacuate este posibil sa nu fie contigue in memoria fizica. Nucleul trebuie sa obtina adresele de pagina ale datelor de evacuat iar driverul de disc poate folosi multimea adreselor de pagina pentru a initializa operatii I/O. Procesul incarcator asteapta terminarea fiecarei operatii I/O inainte de a evacua alte date.

Nu este necesar ca nucleul sa scrie intreg spatiul virtual de adrese al unui proces pe dispozitivul de evacuare. In schimb, el copiaza memoria fizica asignata unui proces in spatiul alocat pe dispozitivul de swap, ignorand adresele virtuale neasignate. Cand nucleul incarca inapoi in memorie procesul, el cunoaste tabela adreselor virtuale ale procesului, astfel incat reasigneaza procesul la adresele virtuale corespunzatoare.

Figura 11.6 ofera un exemplu de mapare a imaginii din memoria interna a unui proces in zona de evacuare.

Procesul contine 3 regiuni pentru text, date si stiva: regiunea de text se termina la adresa virtuala 2ko, iar regiunea de date incepe la adresa virtuala 64ko, ramanand un spatiu de 62 ko in spatiul virtual de adresa. Cand nucleul evacueaza procesul, el evacueaza paginile de la adresele virtuale 0, 1ko, 64ko, 65ko, 66ko, si 128ko; nu se aloca spatiu in zona de swap pentru golul de 62 ko dintre regiunile de date si text, sau pentru golul de 61 ko dintre regiunile de date si stiva, dar spatiul de pe dispozitivul de evacuare este umplut contiguu.

Figura 11.6 Maparea spatiului procesului pe dispozitivul de swap

Cand nucleul incarca procesul in memorie, el stie ca acesta are un gol de 62 ko prin consultarea tabelei map a procesului din memorie si asigneaza memorie fizica in concordanta cu aceasta. Figura 11.7 prezinta acest caz.


Figura 11.7 Incarcarea unui proces in memorie

Teoretic, tot spatiul de memorie ocupat de un proces, inclusiv uarea si stiva nucleului, este elegibila pentru a fi evacuat, desi nucleul poate sa blocheze temporar o zona de memorie cat timp o operatie este in desfasurare. Totusi, in mod practic, implementarile nucleului nu evacueaza uarea daca aceasta contine tabelele de translatare a adreselor pentru proces. Implementarea stabileste de asemenea, daca un proces se poate autoevacua sau daca el trebuie sa ceara altui proces sa il evacueze.

1 Evacuarea in cazul apelului sistem fork

Descrierea apelului sistem fork(Paragraful 8.1) a presupus ca procesul parinte a gasit suficienta memorie pentru a crea contextul procesului fiu. In alte conditii, nucleul evacueaza procesul fara eliberarea memoriei ocupate de copia parintelui din memoria interna. Cand se termina evacuarea, procesul fiu exista pe dispozitivul de swap; procesul parinte pune procesul fiu in starea 'gata de executie' (Figura 7.1) si revine in modul utilizator. Deoarece procesul fiu este in starea 'gata de executie', procesul incarcator il poate incarca in cele din urma in memorie, unde il va planifica; procesul fiu isi va termina partea de apel fork si va reveni in modul utilizator.

2 Evacuarea in cazul apelului sistem brk

Daca un proces necesita mai multa memorie fizica decat ii este alocata in mod curent, ca rezultat al cresterii stivei utilizatorului, sau ca rezultat al invocarii apelului sistem brk si daca are nevoie de mai multa memorie fizica decat este disponibila nucleul executa o evacuare extinsa a procesului.

El rezerva spatiu suficient pe dispozitivul de swap pentru a include spatiul de memorie al procesului, inclusiv noul spatiu solicitat. Apoi, nucleul actualizeaza modul de translatare a adreselor luand in calcul noua memorie virtuala, dar nu asigneaza memorie fizica(intrucat nu este disponibila). In final, nucleul evacueaza procesul printr-o operatie de evacuare normala, completand cu zero spatiul nou alocat in zona de swap (Figura 11.8).

 

Figura 11.8 Actualizarea tabelei map din memorie pentru

evacuarea extinsa

Cand nucleul va incarca mai tirziu procesul in memorie, acesta va aloca memorie fizica in concordanta cu noua tabela map. Cand procesul isi va relua executia, el va avea memorie suficienta.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1228
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved