Paginació de memòria

De Viquipèdia
Dreceres ràpides: navegació, cerca

En informàtica la majoria de sistemes operatius moderns (Unix, Linux, Windows...) utilitzen una tècnica de gestió de la memòria anomenada paginació. La paginació divideix la memòria virtual en blocs d'igual mida anomenats pàgines. La paginació és el procés de transferir aquestes pàgines de la memòria principal (normalment memòria RAM) a la memòria secundaria (normalment disc dur).

Funcionament[modifica | modifica el codi]

El procés de conversió d'adreces de memòria virtuals a adreces físiques normalment el duu a terme la unitat de gestió de memòria i l'esquema que ens mostra la relació entre els diferents components que intervenen en aquests procés és el següent:

Funcionament de la MMU

Tant la memòria virtual com la física es divideix en blocs de la mateixa mida. En els cas de la memòria física s'anomenen marcs (de l'anglès frames). Normalment aquests blocs tenen entre 512 bytes i 8 kB depenent del sistema operatiu, de la seva configuració i/o altres factors com el tipus de processador.

És habitual que el nombre de pàgines superi el nombre de marcs (la memòria virtual simula que estem treballant amb més memòria física de la que realment disposem). És evident que hi ha d'haver una translació entre les pàgines i els seus corresponents marcs. Aquesta correspondència la duu a terme la taula de pàgines. Aquesta taula de pàgines conté informació de quan una pàgina està o no carregada en un marc. Aquesta informació es guarda en el que s'anomena el bit de validesa (bit V). Quan la CPU intenta llegir una pàgina sense marc corresponent (bit V a 0) la unitat de gestió de la memòria envia un senyal a la CPU anomenat Error de pàgina (Page fault) i bloqueja el procés en espera de l'operació d'E/S que agafarà un marc que faci estona que no s'utilitzi i el bolcarà al disc dur alliberant així un marc de la memòria principal.

A la taula de pàgines també es guarda altra informació com per exemple el propietari de la pàgina fet que permet controlar l'accés i gestionar la protecció de la memòria.

Paginació vs Intercanvi (swapping)[modifica | modifica el codi]

Tot i que són conceptes similar i que sovint s'utilitzen de forma indistinta cal tenir en compte la diferència que hi ha entre la paginació i l'intercanvi (swapping). La paginació és la transferència de pàgines entre memòria principal i memòria secundaria. L'intercanvi (swapping) és un concepte més general, i fa referència a qualsevol transferència (ja siguin pàgines, segments o altres conjunts d'adreces de memòria) entre memòria principal i memòria secundària.

Paginació a Unix[modifica | modifica el codi]

En un sistema Unix podeu comprovar quina és la mida de pàgina amb un programa com el següent

#include <stdio.h>
#include <unistd.h> // sysconf(3)

int main()
{
printf("La mida de pàgina per aquests sistema és de: %ld bytes\n", sysconf(_SC_PAGESIZE)); //_SC_PAGE_SIZE is OK too.
return 0;
}

Vegeu també[modifica | modifica el codi]