3.1.Swapping
Deseori sunt intalnite situatii in care poate avea loc o supraincarcare a memoriei, datorata numeroaselor procese ce se desfasoara in acelasi timp.
Pentru a pastra toate aceste procese in memorie, este necesara o capacitate mare de memorare si de cele mai multe ori acest lucru nu este posibil.
Din acest motiv a fost necesar sa se gaseasca modalitati de rezolvare a acestei probleme:
Prima strategie se numeste swapping si este cea de care ne vom ocupa mai detaliat in lucrarea de fata. In acest caz procesele sunt depozitate sau aduse in intregime in memorie.
Cea de-a doua statregie este implementarea unei memorii virtuale care sa le permita programelor sa ruleze desi ele sunt situate doar partial in memoria principala.
Functionarea swapping-ului este relativ simpla. In figura urmatoare se poate observa acest lucru,regiunile hasurate reprezentand zonele de memorie nealocate:
Prin literele A-D sunt reprezentate procesele ce sunt alocate in memorie la un moment dat.
In cazul swapping-ului, pe masura ce procesele intra sau parasesc sistemul sunt modificate in mod dinamic numarul de partitii, marimea si pozitia.
Aceasta tehnica insa poate duce la aparitia unui numar mare de goluri de dimensiuni mici.
3.2.1. BitMaps
Hartile de biti ofera o modalitate simpla de verificare a modului in care este gestionata memoria.
Memoria este structurata in unitati de alocare,iar fiecarei unitati de alocare in corespunde un bit din harta de biti. Daca valoare bitul este 0 unitatea de alocare e libera,iar daca este 1 este ocupata.
Deoarece harta de alocare este pastrata in memorie, dimensiunea unei unitati de alocare devine importanta .
Asadar o unitate de alocare mica va presupune existenta unei harti de alocare de dimensiuni relativ mari. Pe de alta parte o unitate de alocare mare poate duce la pierderi la nivel de memorie intrucat spatiul neutilizat dintr-o unitate de alocare ar putea deveni destul de mare. In momentul in care dorim sa se aduca in memorie un proces ce are dimensiunea de n unitati de alocare se va cauta o secventa de n biti nesetati in harta de alocare.
3.2.2.Liste Inlantuite
O alta metoda de verificare a alocarii memoriei este ceea ce foloseste listele inlantuite. Memoria este reprezentata in acest caz ca si o lista inlantuita de segmente, acestea putand fi alocate sau libere (goluri).
Fiecare intrare in lista este compusa din mai multe parti:
-Identificator al tipului, care poate fi S-spatiu sau P-proces
-Adesa la care incepe
-Dimansiunea
-Identificator catre urmatoarea intrare
In momentul in care un proces X se incheie, pot exista 4 combinatii posibile asociate terminarii procesului X dupa cum urmeaza:
3.2.2.1 Algoritmi pentru gestiunea listelor inlantuite
-
Prima potrivire(First fit) – este cel mai simplu algoritm.
In acest caz se va cauta in lista de segmente un spatiu liber sufficient de mare, a unui segment liber capabil sa sustina procesul. Acest segment va fi impartit in doua parti: o parte alocata procesului si o parte libera.
Exemplu:
Daca avem o lista de spatii libere cu dimensiunile de: 10,20,15,50,5, iar un process are nevoie de o dimensiune egala cu 4. Care spatiu liber va fi folosit?
In cazul algoritmului prima potrivire, se alege primul spatiu liber sufficient de mare in cazul nostru 10, iar acesta se sparge intr-o portiune utilizata (4)
si o alta portiune libera 10-4=6.
b)Urmatoarea potrivire (Next fit)
In acest caz se memoreaza pozitia la care s-a gasit un spatiu sufficient de mare, iar la urmatoarea cautare nu se va incepe ca in cazul algoritmului fist fit, ci se va incepe din pozitia cautarii anterioare.
Acest algoritm este un pic mai lent decat algoritmul First fit
c)Cea mai buna potrivire (Best fit)
Cu ajutorul acestui algoritm se cauta in toata lista segmentul cel mai potrivit ca dimensiune pentru procesul curent.
Desi prin intermediul acestui algoritm se incearca evitarea divizarii segmentelor de memorie de dimensiuni mari, rezultatele nu sunt tocmai avantajoase intrucat vor fi create numeroase goluri de dimensiuni mici ce vor duce la fragmentarea memoriei.
d)Cea mai proasta potrivire (Worst fit)
In acest caz va fi ales segmentul cel mai mare de memorie care poate suporta procesul. Performanta acestui algoritm lasa de dorit in comparative cu primele prezentate.
e)Potrivire rapida (quick fit)
In aceasta situatie sunt pastrate mai multe liste de goluri, pentru cele mai uzuale dimensiuni cerute. Noile segmente vor fi depuse in lista cea mai apropiata ca dimensiune. Asadar acest algoritm ofera rapid segmente de memorie de dimensiune potrivita.
Acest algoritm este o tehnica de alocare a memoriei, prin intermediul careia aceasta este divizata in partitii pentru a se putea satisface cererile de acces la memorie.
Buddy system este un algoritm de gestionare a memoriei care exploateaza faptul ca adresele sunt reprezentate cu ajutorul unor numere in cod binary.
Asadar se poate marii viteza de alipire a segmentelor neutilizate rezultate in urma finalizarii unui proces.
Managerul de memorie menține o listă a blocurilor libere de mărime 1,2,4,8,16 până la dimensiunea maximă a memoriei.
Cand un process va trebui alocat se va cauta o zona libera in lista blocurilor a caror dimensiune este de putere a lui 2, imediat urmatoare dimensiunii procesului. Daca nu se va gasi, se va impartii un bloc de dimensiune duble in doua parti adiacente de aici si denumirea de buddies.
Când un bloc este eliberat, managerul de memorie caută în lista buddy-urilor blocuri libere pentru a fi concatenate.
Acest algoritm este destul de inefficient in utilizarea memoriei dearece folosind zone de memorie rotunjite la cele mai apropiate puteri ale lui 2, vor ramane numeroase spatii neutilizate.
Dostları ilə paylaş: |