Calculatoare
Scheme de alocare a memoriei: Alocare unica, alocare cu partitii fixe, variabileExista mai multe scheme de alocare de la foarte simple la foarte complexe. In general, sunt de doua categorii: -sisteme care transporta procesele, inainte si inapoi, intre memoria principala si disc (swapping si paging); - sisteme care nu fac acest lucru ( fara swapping si paging). a)-Pentru sistemele cu alocare contigua, exista schemele: -alocare unica; -alocare cu partitii fixe ( alocare statica); -alocatii cu partitii variabile (alocare dinamica); -alocare cu swapping. b)Pentru sistemele cu alocare necontigua: -alocare paginata (simpla sau la cerere); -alocare segmentata (simpla sau la cerere); -alocare segmentata-paginata (simpla sau la cerere). Alocare unica a) Alocare unica cu o singura partitie Este un tip de alocare folosit in primele sisteme de operare care lucrau monouser. Este cea mai simpla schema in care toata memoria interna este destinata sistemului de operare, fara nici o schema de administrare a memoriei. Desigur, ea tine de domeniul istoriei. b) Alocare unica cu doua partitii Este cazul sistemului de operare MS-DOS. Principalul dezavantaj consta in faptul ca nu se ofera solutii pentru multiprogramare. Alocare cu partitii fixe (alocare statica) Memoria este impartita static in mai multe partitii, nu neaparat de dimensiuni egale. In fiecare partitie poate rula cel mult un proces, gradul de multiprogramare fiind dat de numarul partitiilor. De obicei, impartirea in partitii si dimensionarea acestora se face la inceput de catre operator. Programele sunt incarcate in memorie prin niste cozi de intrare. Este posibil ca sa existe o singura coada de intrare in memorie sau diferite cozi la diferitele partitii. Din coada de intrare un program intra in cea mai mica partitie destul de mare, insa, pentru a-l primi. Spatiul neocupat de program in aceasta partitie ramane pierdut si in acest fapt consta dezavantajul schemei. Exista atat fragmentare interna cat si fragmentare externa. In aceasta alocare aparea pentru prima data si un mecanism de protectie a memoriei care era asigurat de sistemul de chei de protectie si chei de acces. Sistemul de memorie era impartit in pagini de 2KO si fiecare pagina avea o cheie de protectie. Aceasta era pusa printr-o instructiune cod-masina a calculatorului. Pentru ca un program sa fie rulat intr-o zona a memoriei, trebuia sa fie prezentate cheile de acces pentru fiecare pagina utilizata. La identitatea cheii de acces cu cea de protectie, se permitea accesul in pagina respectiva. Existau si chei de acces care deschideau orice cheie de protectie (de exemplu cheia de acces zero), precum si chei de protectie deschise de orice cheie de acces. Alocare cu partitii variabile
In aceasta alocare numarul, locatia si dimensiunea partitiilor variaza dinamic. Ne mai fiind fixata dimensiunea partitiilor, care pot fi ori prea mari ori prea mici fata de program, creste mult gradul de utilizare al memoriei. In schimb se complica alocarea si dealocarea memoriei si urmarirea acestor operatii. Cand se incarca un proces in memorie, i se aloca exact spatiul de memorie necesar, din memoria libera creandu-se dinamic o partitie. Cand se termina un proces, partitia in care a fost procesul devine memorie libera, ea unificandu-se cu spatiul de memorie libera existent pana atunci. Pentru gestionarea unei astfel de alocari, sistemul de operare trebuie sa aiba doua tabele -tabela partitiilor ocupate; -tabela partitiilor libere. Principala problema este alegerea unui spatiu liber; aceasta alegere trebuie facuta cu minimizarea fragmentarii interne si externe. Exista anumiti algoritmi de alegere a spatiului liber. -FFA (First Fit Algoritm), prima potrivire. Se parcurge lista spatiilor libere, care este ordonata crescator dupa adresa de inceput si se alege primul spatiu de dimensiune suficienta. Acest algoritm este folosit in sistemul SO MINIX, creat de Tannenbaum. -BFA (Best Fit Algoritm) , cea mai buna potrivire. Se parcurge lista spatiilor libere si se alege spatiul cu dimensiunea cea mai mica in care incape programul. In acest fel se minimizeaza fragmentarea interna. In cazul in care lista spatiului liber este ordonata crescator dupa dimensiunea spatiilor libere, se alege evident primul spatiu liber. In acest caz FFA si BFA coincid. BFA este utilizat in SO MS-DOS. -WFA (Worst Fit Algoritm) , cea mai proasta potrivire. Se parcurge lista spatiilor libere ordonata crescator dupa dimensiune si se alege ultimul spatiu din lista. Din punct de vedere al vitezei si al gradului de utilizare al memoriei, FFA si BFA sunt superioare strategiei WFA. Alocarea prin swapping In acest tip de alocare, un proces, in majoritatea cazurilor in stare de asteptare, este evacuat temporar pe disc, eliberand memoria principala. Reluarea executiei procesului se face prin reincarcarea sa de pe disc in memoria principala. Swap inseamna a face schimb si, intr-adevar, este vorba de o schimbare de pe memoria principala pe una externa si inapoi . Problema principala in swapping este: ce procese sunt evacuate din memorie pe disc ? Exista un algoritm bazat pe prioritati, numit Rollout-Rollin, conform caruia, la aparitia unui proces cu prioritate ridicata, vor fi evacuate procesele sau procesul cu prioritatea cea mai scazuta. O alta problema este: la ce adresa din memorie va fi readus procesul evacuat. De obicei, daca alocarea este statica, procesul va fi readus in aceeasi partitie din care a plecat. In cazul alocarii dinamice, procesul va fi adus in orice loc al memoriei. Pentru ca alocarea prin swapping sa aiba eficienta, este necesar ca memoria externa (harddiscul) sa aiba doua caracteristici: o capacitate suficient de mare si un timp de acces foarte mic. Capacitatea mare este necesara deoarece pe disc trebuie sa se evacueze toate imaginile proceselor, numarul lor putand ajunge, la un moment dat, foarte mare. Timpul de acces trebuie sa fie foarte mic. In caz contrar, costul swappingului memoriedisc poate deveni inconvenabil. O conditie esentiala pentru micsorarea costului este ca timpul de executie al procesului sa fie mult mai mare decat timpul de swapping. O alta problema apare atunci cand un proces necesita date noi in timpul executiei si, implicit, zone suplimentare de memorie. Este situatia asa numitelor procese cu dimensiune variabila in timpul executiei. Daca, datorita cererii suplimentare de memorie, se depaseste zona de memorie afectata procesului, atunci sistemul de operare trebuie sa intervina. Exista urmatoarele posibilitati: sa incheie fortat procesul care a formulat cerere de suplimentare a memoriei si sa se considere aceasta cerere ca o eroare de executie; -sa returneze decizia procesului, in sensul ca acesta va decide daca isi va incheia activitatea sau o va continua strict in zona de memorie care i-a fost impusa;-in cazul alocarii dinamice, sa evacueze procesul pe disc, si sa astepte eliberarea unei zone de memorie satisfacatoare pentru proces. Trebuie mentionat ca inca suntem in modul de alocare contiguu, deci spatiul de adresare al unui proces nu poate depasi capacitatea memoriei interne. In concluzie, putem spune ca principalul avantaj al alocarii prin swapping este faptul ca se simuleaza o memorie mai mare decat cea fizica existenta. Principalul dezavantaj este costul swappingului care uneori poate fi destul de mare.
|