PAGINACIÓN Y SEGMENTACIÓN
La paginación y la
segmentación puras son métodos de manejo de memoria bastante efectivos, aunque
la mayoría de los sistemas operativos modernos implantan esquemas combinados,
es decir, combinan la paginación y la segmentación.
La idea de
combinar estos esquemas se debe a que de esta forma se aprovechan los conceptos
de la división lógica de los programas (segmentos) con la granularidad de las
páginas. De esta forma, un proceso estará repartido en la memoria real en
pequeñas unidades (paginas) cuya liga son los segmentos. También es factible
así el compartir segmentos a medida que las partes necesitadas de los mismos se
van reverenciando (paginas).
Para comprender
este esquema, nuevamente se verá cómo se traduce una dirección virtual en una
localidad de memoria real. Para la paginación y segmentación puras se puede
decir que el direccionamiento es `bidimensional' porque se necesitan dos
valores para hallar la dirección real.
Para el caso
combinado, se puede decir que se tiene un direccionamiento
`tridimensional'.
El sistema debe
contar con una tabla de procesos (TP). Por cada renglón de esa tabla se tiene
un número de proceso y una dirección a una tabla de segmentos. Es decir, cada
proceso tiene una tabla de segmentos. Cuando un proceso hace alguna referencia
a memoria, se consulta TP para encontrar la tabla de segmentos de ese proceso.
En cada tabla de segmentos de proceso (TSP) se tienen los números de los
segmentos que componen a ese proceso.
Por cada segmento
se tiene una dirección a una tabla de páginas. Cada tabla de páginas tiene las
direcciones de las páginas que componen a un solo segmento. Por ejemplo, el
segmento `A' puede estar formado por las paginas reales `a','b','c','p' y `x'.
El segmento `B' puede estar compuesto de las paginas `f','g','j','w' y
`z'. Otro aspecto importante es la
estrategia para cargar páginas (o segmentos) a la memoria RAM.
Se usan más
comúnmente dos estrategias: cargado de páginas por demanda y cargado de páginas
anticipada. La estrategia de cargado por demanda consiste en que las páginas
solamente son llevadas a RAM si fueron solicitadas, es decir, si se hizo
referencia a una dirección que cae dentro de ellas.
La carga
anticipada consiste en tratar de adivinar que paginas serán solicitadas en el
futuro inmediato y cargarlas de antemano, para que cuando se pidan ya no
ocurran fallos de página.
Ese `adivinar'
puede ser que se aproveche el fenómeno de localidad y que las páginas que se
cargan por anticipado sean aquellas que contienen direcciones contiguas a la
dirección que se acaba de referenciar. De hecho, el sistema operativo VMS usa
un esquema combinado para cargar páginas: cuando se hace referencia a una
dirección cuya página no está en RAM, se provoca un fallo de página y se carga
esa página junto con algunas páginas adyacentes. En este caso la página
solicitada se cargó por demanda y las adyacentes se cargaron por anticipación.
No hay comentarios:
Publicar un comentario