# Pàgina de memòria

Una pàgina, pàgina de memòria o pàgina virtual és un bloc contigu de longitud fixa de memòria virtual, descrit per una única entrada a la taula de pàgines. És la unitat de dades més petita per a la gestió de la memòria en un sistema operatiu de memòria virtual. De la mateixa manera, un marc de pàgina és el bloc contigu de longitud fixa més petit de memòria física en què el sistema operatiu assigna pàgines de memòria.
Una transferència de pàgines entre la memòria principal i un magatzem auxiliar, com ara una unitat de disc dur, s'anomena paginació o intercanvi.

## Explicació

La memòria de l'ordinador es divideix en pàgines perquè la informació es pugui trobar més ràpidament.
El concepte s'anomena per analogia a les pàgines d'un llibre imprès. Si un lector volgués trobar, per exemple, la paraula 5.000 del llibre, podria comptar des de la primera paraula. Això requeriria molt de temps. Seria molt més ràpid si el lector tingués una llista de quantes paraules hi ha a cada pàgina. A partir d'aquest llistat, podrien determinar a quina pàgina apareix la paraula número 5.000 i quantes paraules comptar en aquesta pàgina. Aquesta llista de paraules per pàgina del llibre és anàloga a una taula de pàgines d'un sistema de fitxers informàtic.

## Mida de la pàgina
### Compensació de la mida de la pàgina

La mida de la pàgina normalment ve determinada per l'arquitectura del processador. Tradicionalment, les pàgines d'un sistema tenien una mida uniforme, com ara 4.096 bytes. Tanmateix, els dissenys de processadors solen permetre dues o més mides de pàgina, de vegades simultànies, a causa dels seus avantatges. Hi ha diversos punts que poden tenir en compte per triar la millor mida de pàgina.

### Mida de la taula de pàgines

Un sistema amb una mida de pàgina més petita utilitza més pàgines, la qual cosa requereix una taula de pàgines que ocupi més espai. Per exemple, si un espai d'adreces virtuals 2 ³² està assignat a 4 Pàgines KiB (2$^{12}$ bytes), el nombre de pàgines virtuals és de 2$^{20}$= ($^{232}$/2$^{12}$). Tanmateix, si la mida de la pàgina augmenta a 32 KiB (2$^{15}$ bytes), només calen 2 $^{17}$ pàgines. Un algorisme de paginació de diversos nivells pot reduir el cost de memòria d'assignar una taula de pàgines gran per a cada procés dividint encara més la taula de pàgines en taules més petites, fent paginació efectiva de la taula de pàgines.

### Ús de TLB

Com que cada accés a la memòria s'ha de mapejar des de l'adreça virtual a la física, llegir la taula de pàgines cada vegada pot ser bastant costós. Per tant, sovint s'utilitza un tipus de memòria cau molt ràpid, la memòria intermèdia de traducció (TLB). El TLB és de mida limitada, i quan no pot satisfer una sol·licitud determinada (un error de TLB) s'han de cercar manualment les taules de pàgines (ja sigui en maquinari o programari, segons l'arquitectura) per a l'assignació correcta. Les mides de pàgina més grans signifiquen que una memòria cau TLB de la mateixa mida pot fer un seguiment de quantitats més grans de memòria, la qual cosa evita les costoses errades de TLB.

### Fragmentació interna

Poques vegades els processos requereixen l'ús d'un nombre exacte de pàgines. Com a resultat, és probable que l'última pàgina només estigui parcialment plena, perdent una mica de memòria. Les mides de pàgina més grans provoquen una gran quantitat de memòria malbaratada, ja que es carreguen més parts de memòria potencialment no utilitzades a la memòria principal. Les mides de pàgina més petites garanteixen una coincidència més propera amb la quantitat real de memòria necessària en una assignació.

### Accés al disc

Quan es transfereix des d'un disc rotatiu, gran part del retard és causat pel temps de cerca, el temps que triga a col·locar correctament els capçals de lectura/escriptura per sobre dels plats de disc. Per això, les grans transferències seqüencials són més eficients que diverses transferències més petites. Transferir la mateixa quantitat de dades del disc a la memòria sovint requereix menys temps amb pàgines més grans que amb pàgines més petites.

## Referències

* ↑ Christopher Kruegel. «Operating Systems (CS170-08 course)» (en anglès). cs.ucsb.edu, 03-12-2012. Arxivat de l'original el 10 agost 2016. [Consulta: 13 juny 2016].
* ↑ Martin C. Rinard. «Operating Systems Lecture Notes, Lecture 9. Introduction to Paging» (en anglès). people.csail.mit.edu, 22-08-1998. Arxivat de l'original el 2016-06-01. [Consulta: 13 juny 2016].
* ↑ «Virtual Memory: pages and page frames» (en anglès). cs.miami.edu, 31-10-2012. Arxivat de l'original el 11 juny 2016. [Consulta: 13 juny 2016].
* ↑ Error: hi ha arxiuurl o arxiudata, però calen tots dos paràmetres.Kazemi, Darius. «[Darius Kazemi RFC-11]» (en anglès). 365 RFCs, 11-01-2019.