Optimització de la Memòria Virtual: Hiperpaginació, Principis i TLB
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en catalán con un tamaño de 6,43 KB
Hiperpaginació (Thrashing)
Per tal de col·locar el major nombre de processos en memòria, només es carreguen fragments d'aquests. Quan la memòria està plena, si el sistema operatiu (SO) vol carregar un nou fragment, primer n'ha d'expulsar algun altre. Si s'expulsa un fragment just abans d'usar-lo, s'haurà de tornar a carregar immediatament. Si aquesta situació es repeteix sovint, es produeix la hiperpaginació. El processador passa més temps expulsant i carregant fragments que executant instruccions d'usuari. Es tracta d'encertar, d'acord amb la història recent dels processos, quins són els fragments que no s'utilitzaran en un futur proper.
Principi de localitat i memòria virtual
Els algorismes per evitar la hiperpaginació funcionen gràcies al principi de localitat, que afirma que les referències a memòria (per dades o instruccions) dins d'un procés tendeixen a estar agrupades. Per tant, es pot suposar que, per a períodes de temps curts, només cal que siguin a memòria petits fragments del procés. I, a més, es poden fer suposicions intel·ligents respecte als fragments que s'utilitzaran en un futur proper. Així s'evita la hiperpaginació.
Requeriments de la memòria virtual
La gestió de memòria virtual requereix hardware que suporti la paginació, la segmentació o els dos sistemes simultàniament. A més del hardware, caldrà que el SO pugui encarregar-se de la transferència de pàgines i segments entre memòria principal i memòria secundària. Començarem explicant el hardware involucrat i posteriorment s'explicaran els algorismes del SO.
Memòria virtual paginada
Normalment s'associa el concepte de memòria virtual amb sistemes paginats, malgrat que també pot usar-se en sistemes basats en segmentació. En els sistemes paginats, cada procés té la seva taula de pàgines que es carrega en memòria juntament amb les pàgines. Cada línia de la taula conté el nombre de marc de pàgina on hi ha la pàgina corresponent. Si el sistema és de memòria virtual, cal més informació. Cada entrada de la taula de pàgines conté un bit de presència, per indicar si la pàgina corresponent és a memòria principal o no. Si és a memòria principal, l'entrada conté el nombre de marc de pàgina on és la pàgina corresponent. Si no és a memòria principal, l'entrada conté l'adreça de la pàgina en el disc, o la referència a una altra taula que permeti obtenir l'adreça de la pàgina en el disc. Un bit de modificació indica si la pàgina, des que s'ha carregat en memòria, ha sigut modificada o no. Si no ha sofert cap modificació, no cal que s'actualitzi la informació del disc en eliminar-la de la memòria. Altres bits de control poden servir, per exemple, per gestionar la protecció a nivell de pàgina: un bit per indicar si la pàgina és només de lectura o de lectura i escriptura, un bit per indicar el tipus de pàgina: pàgina d'usuari o pàgina de nucli del sistema operatiu (més bits si es defineixen més de 2 nivells de protecció).
Estructura de la taula de pàgines
La longitud de la taula de pàgines és variable, en funció de la longitud del procés que s'ha de carregar. No es pot fer la suposició de carregar-la en registres; convé fer-ho en memòria principal. El que sí es guarda en un registre del processador és l'adreça física d'inici de la taula de pàgines corresponent.
Buffer de traducció avançada (TLB - Translation Lookaside Buffer)
Atès que la taula de pàgines és a memòria principal, cada referència a memòria virtual implica, com a mínim, dos accessos a memòria física: un per llegir la corresponent entrada de la taula i un per llegir la dada. Pot significar doblar el temps d'accés a memòria. Per solucionar el problema, s'usa una memòria cau, especial per a entrades de taules de pàgines, anomenada buffer de traducció avançada (TLB). El funcionament és similar al de les memòries cau anteriorment explicades: conté les entrades de les taules de pàgines més consultades recentment. Característiques:
- El TLB no conté la taula de pàgines completa, per tant, no pot indexar-se mitjançant el nombre de pàgina, sinó que s'ha de consultar l'adreça completa.
- Cada entrada del TLB conté el nombre de pàgina i l'entrada completa de la taula de pàgines.
- S'utilitza mapat associatiu per consultar simultàniament totes les entrades amb el mateix nombre de pàgina.
- El TLB s'actualitza cada vegada que es canvia el procés.
Cada referència a memòria utilitza una memòria cau de 2 nivells:
- 1r nivell: TLB. Converteix adreça lògica en adreça física.
- 2n nivell: a partir de l'adreça física, es consulta la memòria cau per accedir a la paraula desitjada.
Longitud de pàgina
La longitud de pàgina ve definida pel hardware. Normalment és una potència de 2 per simplificar la traducció d'adreces virtuals a físiques. La longitud exacta és difícil de decidir:
- Pàgines petites: Eviten la fragmentació interna i optimitzen l'ús de la memòria. Més pàgines calen per procés i més grans són les taules de pàgines. En sistemes multiprogramats, pot significar dues falles a memòria per un sol accés: una pel fragment de la taula de pàgines i l'altra per la pàgina.
- Pàgines grans: Els discs transfereixen més eficientment grans blocs de dades / significa menys pàgines en memòria, és a dir, una taxa d'encert del TLB major. Si les pàgines són petites, moltes pàgines són presents en memòria. Després d'un temps, totes les pàgines en memòria contindran les referències més recents i la taxa d'encert serà alta. A mesura que augmenta la pàgina, conté posicions més allunyades de les referències recents. Augmenta la taxa de falles de pàgina. En aproximar-se a la longitud del procés, la taxa d'encert tendeix a valer 1. La taxa de falla de pàgina també es veu afectada pel nombre de marcs de pàgina assignats a cada procés. La taxa d'encert augmenta considerablement en tenir W marcs de pàgina destinats al mateix procés. Evidentment, la taxa d'encert és 1 quan totes les pàgines del procés (N) són presents a memòria principal.