Gestió de memòria

De Jose Castillo Aliaga
Ir a la navegación Ir a la búsqueda

Introducció

La seua labor és la de portar el control de quines parts de la memòria estan en ús i quines no ho estan, assignar memòria a processos quan la necessiten i retirar quan acaben, administrar l'intercanvi entre la memòria central i el disc quan la memòria central no siga suficient per contenir tots els processos.

En aquest tema començarem estudiant el sistema de gestió de la memòria més simple sencill, després progressarem gradualment analitzant sistemes cada vegada més elaborats.


Administració de la memòria sense intercanvi

Els sistemes d'administració de la memòria es poden dividir en dues classes: els que mouen els processos entre la memòria central i el disc durant l'execució (intercanvi i paginació) i aquells que no ho fan. Els segons són més simples, l'intercanvi i la paginació són estratagemes produïdes principalment per la insuficiència de la memòria central per contenir tots els programes al mateix temps.


Gestió de la memòria sense reasignació

En aquest cas, el compilador assigna a les dades e instruccions direccions físiques que no poden cambiar durant l'execució del programa. És un sistema molt sencill, però al no ser reasignables les direccions de memòria, dificulta la multiprogramació i la protecció de la memòria. El problema és que, abans de la compilació, deuriem conèixer les direccions de memòria que tindrà disponible el programa.

Els sistemes operatius amb aquesta gestió han de ser monotarea. Per exemple MS-DOS

Gestió de la memòria amb reasignació

Ens interessa que el compilador no genere direccions definitives, sinó reassignables. Si la reassignació es fa en temps de càrrega es diu estàtica i si es fa en temps d'execució es diu dinàmica. Els processos no saben la direcció real que estan utilitzant. Per a ells, sempre comença per la 0.

Si la reassignació és estàtica, la Unitat de Gestió de la Memòria (MMU), conté un registre base al qual se li sumarà la direcció de la memòria que necessite el procés. Però el valor d'aquest registre no pot canviar durant l'execució del programa. El canviar aquesta direcció implicaria poder moure el procés a un altre lloc de la memòria. El problema de la estàtica és que no podem compactar la memòria i podem provocar fragmentació.

Amb la reassignació dinàmica, podem recol·locar els processos per deixar buits majors.

Reassignaciodinamina.png


Gestió de la memòria amb intercanvi

Amb la reassignació dinámica apareixen possiblitats noves com la càrrega dinàmica, que permet carregat parts del programa sols quant fan falta i l'enllaç dinàmic, per a les biblioteques dinàmiques.

Per a possibilitar la càrrega dinàmica, és necessari comptar amb un mecanisme per a passar els fragments de programa de la RAM al disc o dels disc a la RAM quant fan falta. Aques mecanisme es diu swapping. I es parla de swap in quant es carrega en al RAM i swap out quant es passa al disc. L'encarregat de implementar aquest mecanisme és el Planificador a mig plaç.

El planificador a mig plaç necessita un criteri per a elegir el procés que entrarà a la RAM i un criteri per a elegir a la víctima que es quedarà fora. Amés, necessita un espai reservat en disc per a poder fer-ho.

Aquest espai és la partició swap de Linux o el fitxer pagefile.sys de Windows. En el cas de Windows, el fitxer està per defecte en c:, encara que es pot canviar.