Las diferentes organizaciones de
almacenamiento virtual generalmente implementadas son [7, Deitel]:
·
Paginación.
·
Segmentación.
·
Segmentación y paginación.
Las estrategias para la administración de sistemas
de almacenamiento virtual condicionan la conducta de los sistemas de
almacenamiento virtual que operan según esas estrategias.
Se consideran las siguientes estrategias:
·
“Estrategias de búsqueda”:
o Tratan de los casos en que una página o segmento
deben ser traídos del almacenamiento secundario al primario.
o Las estrategias de “búsqueda por demanda” esperan
a que se haga referencia a una página o segmento por un proceso antes de
traerlos al almacenamiento primario.
o Los esquemas de “búsqueda anticipada” intentan
determinar por adelantado a qué páginas o segmentos hará referencia un proceso
para traerlos al almacenamiento primario antes de ser explícitamente
referenciados.
·
“Estrategias de colocación”:
o Tratan del lugar del almacenamiento primario donde
se colocará una nueva página o segmento.
o Los sistemas toman las decisiones de colocación de
una forma trivial ya que una nueva página puede ser colocada dentro de
cualquier marco de página disponible.
·
“Estrategias de reposición”:
o Tratan de la decisión de cuál página o segmento
desplazar para hacer sitio a una nueva página o segmento cuando el
almacenamiento primario está completamente comprometido.
Es un método
mediante el cual, un sistema operativo simula tener más memoria principal que
la que existe físicamente. Para implementar la memoria virtual se utiliza un
medio de almacenamiento secundario de alta velocidad de acceso, generalmente en
disco duro de la máquina. Un sistema de memoria virtual se implementa
utilizando paginación como método de administración de memoria básica y algún
mecanismo de intercambio (para descargar páginas de la memoria principal hacia
el disco duro y para cargar esas páginas de nuevo a la memoria).
La memoria virtual es una
técnica para proporcionar la simulación de un espacio de memoria mucho mayor
que la memoria física de una máquina. Esta “ilusión” permite que los programas
se hagan sin tener en cuenta el tamaño exacto de la memoria física. La ilusión
de la memoria virtual esta soportada por el mecanismo de traducción de memoria,
junto con una gran cantidad de almacenamiento rápido en disco duro. Así en
cualquier momento el espacio de direcciones virtual hace un seguimiento de tal
forma que una pequeña parte de el, esta en memoria real y el resto almacenado
en el disco, y puede ser referenciado fácilmente.
Estrategias de
administración de la memoria virtual
Estrategias del mejor
ajuste: Un trabajo que entre en el sistema se colocará en el espacio vació del
almacenamiento principal en el que quepa mejor y que deje la menor cantidad
posible de espacio sin utilizar.
Estrategias del primer
ajuste: Un trabajo que entre en el sistema se colocara en el almacenamiento
principal en el primer vació disponibles lo bastante grande para contenerlo.
Estrategias del peor ajuste:
Consiste en colocar un programa en el almacenamiento primario en el espacio
vació donde peor se ajusta es decir en el espacio más grande posible.
Estrategias de obtención:
Determina cuando se debe transferir una página o un segmento de almacenamiento
secundario al primario. Las estrategias de obtención por demanda esperan a que
un proceso en ejecución haga referencia a una página o a un segmento antes de
traer la página o el segmento de almacenamiento primario. Los esquemas de
obtención anticipada intentan determinar por adelantado a cuales paginas o
segmentos hará referencia un proceso.
Estrategias de
colocación: Determinan en qué lugar del almacenamiento primario se debe colocar
una página o un segmento entrante. Una página entrante se puede colocar en
cualquier marco de página disponible.
Estrategias de reemplazo:
Sirven para decidir cuál página o segmento se debe desplazar para dar espacio a
una página o segmento entrante cuando está completamente ocupado el
almacenamiento primario.
Estrategias de Colocación:
Determinan en qué lugar del almacenamiento primario se debe colocar una página
o un segmento entrante. Una página entrante se puede colocar en cualquier marco
de página disponible.
Estrategias de Reemplazo:
Sirven para decidir cuál página o segmento se debe desplazar para dar espacio a
una página o segmento entrante cuando está completamente ocupado el
almacenamiento primario.
La memoria virtual ha
llegado a ser un componente esencial de la mayoría de los sistemas operativos
actuales. Y como en un instante dado, en la memoria sólo se tienen unos pocos
fragmentos de un proceso dado, se pueden mantener más procesos en la memoria.
Es más, se ahorra tiempo, porque los fragmentos que no se usan no se cargan ni
se descargan de la memoria. Sin embargo, el sistema operativo debe saber cómo
gestionar este esquema.
La memoria
virtual también simplifica la carga del programa para su ejecución llamada
reubicación, este procedimiento permite que el mismo programa se ejecute en
cualquier posición de la memoria física
Estrategias de Reemplazo de página:
Las rutinas de
administración de almacenamiento del Sistema operativo deben decidir que página
del almacenamiento primario se debe desplazar para dejar espacio a una página
entrante (Ah71).
Principio de Optimalizad:
Para obtener un rendimiento óptimo, la página que se debe reemplazar es aquella
que tardará más tiempo en ser utilizada. Esta estrategia óptima de reemplazo se
denomina OPT o MIN.
Reemplazo de Páginas
aleatorio: Es una técnica sencilla. Todas las páginas que se encuentran en el
almacenamiento principal tienen la misma probabilidad de ser elegidas para el
reemplazo. Esta estrategia podría seleccionar cualquier página para ser
reemplazada, incluyendo la siguiente página la que se hará referencia. Las
decisiones de reemplazo aleatorio se de páginas se pueden tomar rápidamente y
con un número significativo de marcos de página. Es un esquema que casi no se
utiliza por su enfoque aleatorio de acertar o errar.
Reemplazo de páginas de
primeras entradas-primeras salidas (PEPS): Cada página se registra en el
instante que entró en el almacenamiento primario. Cuando se necesita reemplazar
una página, se escoge la que ha permanecido en el almacenamiento durante el
mayor tiempo.
Anomalías PEPS: Belady,
Nelson y Shelder descubrieron que al utilizar el reemplazo de páginas PEPS,
ciertos patrones de referencia a página originan más fallas de páginas cuando
aumenta el número de marcos de página asignados a un proceso. Este fenómeno se
denomina Anomalía PEPS o anomalía Belady. La columna de la izquierda indica el
patrón de referencias a páginas de un proceso. La primera tabla muestra como
dicho patrón a referencia de páginas hace que las páginas se carguen a memoria
y se reemplacen en secuencia PEPS cuando se asignan tres marcos de páginas a
proceso. La segunda tabla muestra cómo se comporta éste proceso en las mismas
circunstancias, pero con cuatro marcos de páginas asignados, a la izquierda de
cada tabla se indica si la nueva referencia a una página ocasiona o no una
falla de página. Cuando el proceso se ejecuta en cuatro páginas, experimenta
una falla de página más que cuando se ejecuta con tres.
Reemplazo de páginas de
la menos reciente utilizada: Se selecciona para su reemplazo, a aquella página
que no se ha sido utilizada durante mayor tiempo. La estrategia se basa en que
la heurística de localidad según en el cual el pasado reciente es un buen
indicador del futuro cercano, de modo que LRU exige que se marque cada página
con el instante en que .se hace referencia a ella. Por el trabajo adicional que
requiere no se usa a menudo en los sistemas actuales; lo que se hace es utilizar
estrategias que ese aproximen a la LRU y que no ocasionen grandes costos.
Reemplazo de páginas de
la menos frecuentemente utilizada (LFU): La página por remplazar es aquella que
ha sido utilizada menos frecuentemente o a la que se ha hecho referencia con
menos frecuencia.
Al parecer estos esquemas
de reemplazo de páginas corren cierto riesgo de tomar decisiones equivocadas.
Esto sucede por el simple hecho de que no se puede predecir con precisión el
futuro.
Reemplazo de páginas de
la no utilizada recientemente (NUR): Como es deseable reemplazar una página que
no estaba en el almacenamiento primario, la estrategia NUR se lleva a la
práctica con la adición dedos bits de hardware por página. Esos bits son:
Bit de Referencia = O si
no se ha hecho referencia a la página
=
1 se ha hecho regencia a la página,
Bit de Modificación = O
si la página no ha sido modificada
=
1 si la página ha sido modificada.
El bit de modificación se
denomina a menudo Bit sucio. La estrategia NUR trabaja: Inicialmente, los bits
de referencias de todas las páginas valen cero. Cuando ocurre una referencia a
una página, su bit de referencia toma el número uno. Cuando se va a reemplazar
una página a la que no se ha hecho referencia .Si una página no ha sido objeto
de una referencia se comprueba si ha sido modificada. Si lo ha sido se
reemplaza. Pues requiere menos trabajo que el reemplazo de una página
modificada, la cual debe escribirse en el almacenamiento secundario. De otro
modo hay que reemplazar una página modificada.
Los bits de referencia de
las páginas activas cambiarán a 1 casi de inmediato. Según se ha descrito el
esquema NUR origina la existencia de cuatro grupos de páginas:
Grupo 1 sin referencia no
modificado
Grupo 2 sin referencia
modificado
Grupo 3 con referencia no
modificado
Grupo 4 con referencia
modificado
Las páginas de los dos
primeros grupos se reemplazarán primero, y las de los últimos grupos, al final.
Las páginas de un grupo se seleccionan aleatoriamente para ser reemplazadas.
Obsérvese que el grupo 2 parece describir una situaci6n irreal en la que las
páginas han sido modificadas, pero no se ha hecho referencia a ellas; sin
embargo, esto es una consecuencia simple de la reiniciación periódica de los
bits de referencia (pero no de los bits de modificaci6n) y es perfectamente
razonable.
Modificaciones de PEPS;
reemplazo de páginas por reloj y reemplazo de páginas con segunda oportunidad:
La estrategia PEPS puede decidir reemplazar una página muy utilizada que ha
permanecido en memoria durante mucho tiempo. Esta posibilidad se puede evitar
reemplazando sólo aquellas páginas cuyos bits de referencia valgan O.
La variante de PEPS
denominada “con segunde oportunidad” examina el bit de referencia de la página
más antigua; si este bit vale O, se selecciona de inmediato la página para ser
reemplazada. Si el bit de referencia vale 1, se le asigna el valor O y la
página se pasa al final de la lista y se considera en esencia como una página
nueva; gradualmente dicha página se desplaza hacia el principio de la lista,
donde será seleccionada para reemplazo sólo si su bit de referencia sigue
valiendo O. En esencia, esto da a la página una segunda oportunidad de
permanecer en el almacenamiento principal si su bit de referencia cambia a 1
antes de que la página llegue al principio de la lista. La variación ‘z’ del
reloj” del algoritmo de la segunda oportunidad dispone las páginas en una lista
circular, en lugar de en una lista lineal.
Un
apuntador a la lista se desplaza alrededor de la lista circular en la misma
forma que gira la manecilla de un reloj. Cuando el bit de referencia de una
página toma el valor O, el apuntador se mueve al siguiente elemento de la lista
(simulando el movirl1iento de esta página al final de la lista PEPS).
Un sistema de
paginación por demanda es similar a un sistema de paginación con intercambios.
Los procesos residen en memoria secundaria (en el disco). Cuando queremos
ejecutar un proceso, lo metemos en memoria. Sin embargo, en vez de intercambiar
todo el proceso hacia la memoria, utilizamos un intercambiador perezoso. Un
intercambiador perezoso nunca reincorpora una página a memoria a menos que se
necesite. Como ahora consideramos un proceso como una secuencia de páginas, en
vez de un gran espacio contiguo de direcciones, el término intercambio es
técnicamente incorrecto. Un intercambiador manipula procesos enteros, mientras
que un paginador trata con las páginas individualmente de un proceso.
Cuando un proceso se
reincorpora, el paginador lleva a memoria las páginas necesarias. Así evita
colocar en la memoria páginas que no se utilizarán, reduciendo el tiempo de
intercambio y la cantidad de memoria física necesaria.
Este esquema requiere
apoyo del hardware. Generalmente se añade un bit más a cada entrada de la tabla
de páginas: un bit válido-inválido. Cuando este bit está asignado como válido,
indica que la página asociada se encuentra en memoria. Si el bit está como
inválido, este valor indica que la página está en disco. Una página marcada
como inválida no tendrá ningún efecto si el proceso nunca intenta acceder a esa
página.
¿Pero qué
sucede si el proceso trata de usar una página que no se incorporó a la memoria?
Si adivinamos mal y el proceso trata de acceder a una página que no se trajo a
memoria, ocurrirá una trampa de fallo de página. El hardware de paginación, al
traducir la dirección mediante la tabla de páginas, observará que el valor del
bit es inválido, generando una trampa para el sistema operativo (error de
dirección no válido). Normalmente, un error de dirección no válida es
consecuencia de intentar utilizar una dirección de memoria ilegal; en este
caso, el proceso deberá terminar. Sin embargo, en esta situación la trampa es
el resultado del fallo de página del sistema operativo al no transferir a
memoria una parte válida del proceso, tratando de minimizar el tiempo adicional
de transferencia de disco y los requisitos de memoria. Por tanto, debemos
corregir esta omisión.
¿Qué es la paginación
anticipada?
En la paginación anticipada,
el sistema operativo intenta predecir las páginas que necesitara un proceso y
entonces carga dichas cuando hay espacio disponible.
Mientras el proceso se
ejecuta con sus páginas actuales, el sistema carga las demás páginas que
estarán disponibles cuando las requiera el proceso.
El S. O.
intenta predecir las páginas que un proceso va a necesitar y a continuación
precarga estas páginas cuando hay espacio disponible Mientras el proceso
ejecuta sus páginas actuales, el sistema carga paginas nuevas que estarán
disponibles cuando el proceso las pida, debido a ello, el tiempo de ejecución
de un proceso se puede reducir.
Un proceso usuario puede
emitir una “liberación voluntaria de página” para liberar el marco de página
cuando ya no necesitara esa página. Se puede eliminar el “desperdicio” y
acelerar la ejecución.
El inconveniente es que
la incorporación de mandatos de liberación de páginas dentro de los programas
de usuarios puede ser peligroso y retrasar el desarrollo de aplicaciones.
“Los compiladores y S. O.
deberían detectar automáticamente situaciones de liberación de página mucho
antes de lo que es posible con estrategias de conjuntos de trabajo”.
Estrategias de reemplazo
de páginas
Menos frecuentemente
utilizada (LFU)
• Se reemplaza la página
a la que se ha hecho referencia con menos frecuencia.
No utilizada
recientemente (NUR)
• Las páginas
no utilizadas recientemente, es poco probable que sean referenciadas en un
futuro cercano. Por ello se las elige para el reemplazo.
Al diseñar una máquina hay que tomar una
decisión sobre el mejor tamaño de página. Como podrá suponer, no hay un tamaño
único que sea el mejor, pero existen varios factores que apoyan tamaños
distintos. Los tamaños son invariablemente potencias de dos, que suelen ir de
512 (29) a 16384 (214) bytes.
¿Cómo seleccionamos el tamaño de página? Un
factor es el tamaño de la tabla de páginas. Para un espacio de memoria virtual
establecido, al reducir el tamaño aumenta el número de páginas y, por tanto, el
tamaño de la tabla de páginas. Para una memoria virtual de 4 MB habría 4096 páginas
de 1K bytes, pero sólo 512 páginas de 8192 bytes. Como cada proceso activo debe
tener su propia tabla de páginas, sería deseable un tamaño de página grande.
Por otra parte, la memoria se utiliza mejor
con páginas pequeñas. Una parte de la última página estará asignada pero no
totalmente ocupada (fragmentación interna). Suponiendo que los tamaños de los
procesos y de la página son independientes, podemos esperar que, en promedio,
se desperdiciara la mitad de la última página de cada proceso. Esta pérdida
representaría sólo 256 bytes en una página de 512 bytes, pero serían 4096 bytes
en una página de 8192. Para minimizar la fragmentación interna necesitamos un
tamaño de página pequeño.
Otro problema es el tiempo necesario para leer
o escribir una página. El tiempo de E/S está compuesto por tiempo de búsqueda, latencia y transferencia.
Para un mejor entendimiento visita este VIDEO donde te explicaran sobre el tema:
Para un mejor entendimiento visita este VIDEO donde te explicaran sobre el tema: