miércoles, 21 de octubre de 2015

3.4 Administración de Memoria Virtual



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úsquedalatencia y transferencia.

Para un mejor entendimiento visita este VIDEO donde te explicaran sobre el tema: 

3.3 Organización de Memoria Virtual



Almacenamiento virtual significa la capacidad de direccionar un espacio de almacenamiento mucho mayor que el disponible en el almacenamiento primario de determinado sistema de computación.
Esta tecnología apareció en 1960 en la Universidad de Manchester (Inglaterra), en el sistema “Atlas”.
La ilusión de la memoria virtual está 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 él, está en memoria real y el resto almacenado en el disco, y puede ser referenciado fácilmente.
Debido a que sólo la parte de memoria virtual que está almacenada en la memoria principal, es accesible a la CPU, según un programa va ejecutándose, la proximidad de referencias a memoria cambia, necesitando que algunas partes de la memoria virtual se traigan a la memoria principal desde el disco, mientras que otras ya ejecutadas, se pueden volver a depositar en el disco (archivos de paginación).
 Los métodos más comunes de implementación son mediante:
• Técnicas de paginación.
• Técnicas de segmentación.
• Una combinación de ambas técnicas.

 

3.3.1 Evaluación de las Organizaciones de Almacenamiento

                                  
Almacenamiento virtual "significa la capacidad de direccional un espacio de almacenamiento mucho mayor que el disponible en el almacenamiento primario de determinado sistema de computación”.
Esta tecnología apareció en 1960 en la Universidad de Manchester (Inglaterra), en el sistema “Atlas”.
Los métodos más comunes de implementación son mediante:
·         Técnicas de “paginación”.
·         Técnicas de “segmentación”.
·         Una combinación de ambas técnicas.
Las direcciones generadas por los programas en su ejecución no son, necesariamente, aquellas contenidas en el almacenamiento primario (memoria real), ya que las direcciones virtuales suelen seleccionarse dentro de un número mucho mayor de direcciones que las disponibles dentro del almacenamiento primario.
La evolución en las organizaciones de almacenamiento puede resumirse como sigue:
Real:
  • Sistemas dedicados a un solo usuario.
  • Real:
  • Sistemas de multiprogramación en memoria real:
  • Multiprogramación en partición fija:
  • Absoluta.
  • Relocalizadle (reubicadle).
  • Multiprogramación en partición variable.
  • Virtual:
  • Multiprogramación en almacenamiento virtual:
  • Paginación pura.
  • Segmentación pura.
  • Combinación paginación / segmentación.

 

3.3.2 Paginación

 

En sistemas operativos de computadoras, los sistemas de paginación de memoria dividen los programas en pequeñas partes o páginas. Del mismo modo, la memoria es dividida en trozos del mismo tamaño que las páginas llamados marcos de página. De esta forma, la cantidad de memoria desperdiciada por un proceso es el final de su última página, lo que minimiza la fragmentación interna y evita la externa.
En un momento cualquiera, la memoria se encuentra ocupada con páginas de diferentes procesos, mientras que algunos marcos están disponibles para su uso. El sistema operativo mantiene una lista de estos últimos marcos, y una tabla por cada proceso, donde consta en qué marco se encuentra cada página del proceso. De esta forma, las páginas de un proceso pueden no estar contiguamente ubicadas en memoria, y pueden intercalarse con las páginas de otros procesos.
En la tabla de páginas de un proceso, se encuentra la ubicación del marco que contiene a cada una de sus páginas. Las direcciones lógicas ahora se forman como un número de página y de un desplazamiento dentro de esa página (conocido comúnmente como offset). El número de página es usado como un índice dentro de la tabla de páginas, y una vez obtenida la dirección del marco de memoria, se utiliza el desplazamiento para componer la dirección real o dirección física. Este proceso se realiza en una parte del computador específicamente diseñada para esta tarea, es decir, es un proceso hardware y no software.
De esta forma, cuando un proceso es cargado en memoria, se cargan todas sus páginas en marcos libres y se completa su tabla de páginas.

 

3.3.3 Segmentación

Segmentación                                       
En un esquema de segmentación un espacio de direcciones lógicas es un conjunto de segmentos. Cada segmento tendrá un nombre y un largo. Las direcciones van a hacer referencia tanto al nombre como al desplazamiento dentro del segmento.
<nro. Segmento, desplazamiento>
Mecanismo de traducción de direcciones.-
Se lleva una tabla de segmento por cada proceso, cada entrada a la tabla de segmento lleva la siguiente información: segment base (dirección base del segmento)
Segment limit (largo del segmento)
Protección.-                                                     
La protección se asegura verificando cada acceso a la memoria con la tabla de segmentos para asegurar que se está direccionando dentro del espacio de direcciones lógicas del proceso.
Además el mecanismo de traducción de direcciones asegura que no se direccione fuera de un segmento en particular. Existen también bits de protección para cada entrada de la tabla de segmentos que indicaran si el segmento es read only o read-write.
Segmentos Compartidos.-                  
Similar a lo visto para paginación. Se comparte la totalidad de un segmento
Fragmentación.-
El sistema operativo deberá asignar memoria utilizando algunos algoritmos ya vistos (first fit, worst fit, best fit) Cuando el sistema operativo intenta cargar un segmento y no hay ningún segmento disponible de tamaño suficiente para almacenarlo se procederá a compactar la memoria.
Paginación por demanda.-
Es similar a lo visto para la paginación introduciendo el concepto de swapping. Los procesos residen en el disco y al ser ejecutados deben ser cargados en memoria. Cuando un proceso va a ser ejecutado, el mismo es swappeado a memoria, utilizando lazy swapping. El lazy swapping nunca trae páginas a memoria si no van a ser ejecutadas. Se necesita determinar si un página está en memoria o en disco, por lo cual se utiliza el bit de válido / inválido de la tabla de páginas. Si el bit = 1 la página es válida y está cargada en memoria si es 0 la página es inválida y no está cargada en memoria (esta en disco).
Cuando un proceso intenta acceder a una página que no está cargada en memoria ocurre un page fault (tomo de página). El procedimiento para manejar un page fault es el siguiente:
1. Verificar si la referencia a la página es válida (se utiliza una tabla interna (generalmente llevada en PCB) donde se indica las páginas válidas.
2. Si la referencia no es válida, se cancela la ejecución del proceso.
3. Encontrar un frame disponible para cargarla (la página está en disco)(por ejemplo de la free frame list)
4. Solicitar operación de I/O para leer la página de disco cargarla en el frame obtenido.
5. Modificar la tabla interna y la tabla de páginas para que ahora está página figure como que está en memoria.
6. Continuar con la ejecución del proceso en la instrucción en la que fue interrumpido.

 

 

3.3.4 Sistemas de Paginación Segmentación


Sistemas de Paginación / Segmentación
Ofrecen las ventajas de las dos técnicas de organización del almacenamiento virtual [7, Deitel].
El tamaño de los segmentos es múltiplo del de las páginas.
No es necesario que todas las páginas de un segmento se encuentren al mismo tiempo en el almacenamiento primario.
Las páginas de almacenamiento virtual, que son contiguas en este almacenamiento, no necesitan ser contiguas en el almacenamiento real.
El direccionamiento es tridimensional con una dirección de almacenamiento virtual “v = (s,p,d)”:
• “s” es el número del segmento.
• “p” es el número de página.             
• “d” es el desplazamiento en la página donde se encuentra asignado el elemento deseado.
Inicio: Fin:
Traducción Dinámica de Direcciones en Sistemas de Paginación / Segmentación Se considera la traducción dinámica de direcciones de virtuales a reales en un sistema de paginación / segmentación utilizando la combinación de transformación asociativa / directa (ver Figura 3.31 [7, Deitel]).
El proceso en ejecución hace referencia a la dirección virtual v = (s,p,d) (ver Figura 3.32 [7, Deitel]).
Las páginas de referencia más reciente tienen entradas en un almacenamiento asociativo.
Se realiza una búsqueda asociativa para intentar localizar (s,p) en el almacenamiento asociativo:
• Si se encuentra (s,p), entonces el marco de página “p ’ ” en el cual reside dicha página en la memoria real, se concatena al desplazamiento “d” para formar la dirección de memoria real “r” correspondiente a la dirección virtual v= (s,p,d).
• Si no se encuentra (s,p), entonces:
o La dirección base “b” de la tabla de segmentos se añade al número de segmento “s” formando la dirección “b + s” de la entrada de la tabla de mapa de segmentos para el segmento “s” de la memoria real.
o La entrada de la tabla de mapa de segmentos indica la dirección base “s ’ ” de la tabla de páginas para el segmento “s”.
o El número de página “p” se añade a “s ’ ” formando la dirección “p + s ’ ” de la entrada en la tabla de páginas para la página “p” del segmento “s”:
 Indica que “p ’ ” es el número del marco correspondiente a la página virtual “p”.
 “p ’ ” se concatena con el desplazamiento “d” formando la dirección real “r ” que corresponde a la dirección virtual v = (s,p,d).
Si el segmento “s” no se encuentra en el almacenamiento primario se produce un “fallo de pérdida de segmento”, cuyo caso el S. O. localiza el segmento en el almacenamiento secundario, crea una tabla de páginas para el segmento y carga la página apropiada en el almacenamiento primario, pudiendo producir reemplazos de páginas. Si el segmento “s” está en el almacenamiento primario y si la referencia a la tabla de mapa de páginas indica que la página deseada no se encuentra en el almacenamiento primario, se produce un “fallo de pérdida de página”, en tal caso el S. O. obtiene el control, localiza la página en el almacenamiento secundario y la carga, pudiendo reemplazar otra página.
Si una dirección de almacenamiento virtual está más allá del final del segmento se genera un “fallo de desbordamiento de segmento”, el que debe ser atendido por el S. O.
Si los bits de protección indican que la operación que se va a ejecutar en la dirección virtual referida no se permite, se genera un “fallo de protección de segmento”, el que también debe ser atendido por el S. O.
Si se utiliza un mecanismo de transformación directa pura, manteniendo el mapa completo dentro del almacenamiento primario, la referencia promedio de almacenamiento virtual requeriría:
• Un ciclo de almacenamiento para acceder a la tabla de mapa de segmentos.
• Un segundo ciclo de almacenamiento para hacer referencia a la tabla de mapa de páginas.
• Un tercer ciclo de almacenamiento para referenciar al elemento deseado del almacenamiento real.
Cada referencia a un elemento comprende tres ciclos de almacenamiento:
• El sistema correría casi a 1 / 3 de su velocidad nominal.
• La traducción de direcciones insumiría 2 / 3 del tiempo.
Con la utilización de registros asociativos (por ej. 16 registros), se logran velocidades de ejecución del 90 % o más de la velocidad total de procesamiento de sus procesadores de control.
La estructura de tablas de procesos, de mapas de segmentos y de mapas de páginas puede consumir un porcentaje importante del almacenamiento primario cuando se ejecutan un gran número de procesos.
La traducción procede mucho más rápido si todas las tablas están en el almacenamiento primario, lo que resta espacio para los procesos.
Inicio: Fin:
Compartimiento en un Sistema de Paginación / Segmentación
Se implementa disponiendo entradas en tablas de mapa de segmentos para diferentes procesos que apunten a la misma tabla de mapa de páginas (ver Figura 3.33 [7, Deitel]).
El compartimiento requiere una administración cuidadosa por parte del S. O., ya sea en sistemas de paginación, segmentación o paginación / segmentación, pues se debe considerar qué sucedería si una nueva página reemplazara a otra página compartida por muchos procesos.

SEGMENTACION/PAGINACION
                         
Tanto la Segmentación como la paginación ofrecen significativas ventajas, algunos sistemas (Multics y la Serie 370 de IBM) combinan ambas técnicas en donde los segmentos tienen un tamaño multiplo de página.
Este método utiliza Segmentación y Paginación tal y como su nombre lo indica, el proceso es el siguiente: - Se hace la solicitud de acceso por medio de una dirección “V” la cual contiene los campos Segmento, Página y Desplazamiento. Con el campo Segmento, lo que se trata es de accesar a una Tabla de segmentos, cada campo de dicha tabla apunta directamente a la tabla de páginas asignada para ese segmento conteniendo una dirección que será sumada a una dirección en la Tabla Asociativa para por fin formar una dirección real con el desplazamiento de “V”.
En un sistema con un número muy grande de procesos, segmentos o páginas, ésta estructura puede consumir una parte muy importante de la memoria real. La cuestión es que la traducción de direcciones puede realizarse con rapidez pero si se tienen demasiadas tablas, el sistema puede soportar menos procesos y bajar su rendimiento
 Sistema de paginación
Los sistemas de paginación son los utilizados para dividir los programas en páginas y así poder utilizar programas de mayor tamaño que la memoria principal, ya que las paginas no son cargadas todas a la vez en la memoria principal. l traspaso de datos entre los distintos niveles de almacenamiento se realiza eventualmente en páginas de longitud fija, tal y como ocurre en la actualidad en los sistemas de memoria virtual. El tamaño de la página es un parámetro del sistema y no está determinado por las longitudes de registro elegidas por los programadores. Al usarse la paginación, los datos serán lógicamente independientes del tamaño de página, pero tendrán que ser físicamente “empaquetados” para que encajen en las páginas.
En los casos en que se usa hardware de almacenamiento a niveles múltiples, el traspaso se hace por bloques, semejantes a las páginas. Esta técnica se conoce con el nombre de promoción o staging.
 Segmentación
El objetivo de la segmentación al igual que el de la paginación es el de dar la facilidad de realizar programas que sean más grandes que la memoria principal, pero la segmentación, a diferencia de la paginación, puede dividir los programas en segmentos que no necesariamente sean del mismo tamaño, pero para poder cargar un segmento en memoria al igual que para cargar una página debe de existir el suficiente espacio contiguo de memoria principal para cargarlo.
La segmentación en ocasiones puede ser usada al mismo tiempo que la paginación.


Ventajas:

Con respecto a la performance del sistema: Se cuenta con una memoria virtualmente más extensa con la misma memoria real. Se utiliza mucho más eficientemente la memoria real.
Este esquema permite que la parte de los programas que no se utiliza no ocupe lugar en la memoria y en cambio quede disponible para agregar más programas en la mezcla de multiprogramación.
Con respecto al desarrollo de aplicaciones: Al eliminar las restricciones de memoria permite diseñar los sistemas más fácilmente, en menor tiempo y a menos costo. Hace más sencillo el mantenimiento y la ampliación de los programas. Hace más justificable el diseño e implementación de algunas aplicaciones, cuyos requerimientos de memora varíen bastante en su ejecución de acuerdo al volumen y complejidad de las transacciones. con respecto a la operación del computador: Permite que un equipo de una memoria real menor pueda ser usado sin dificultad como back-up en caso de necesidad. Hace innecesario efectuar ciertos procedimientos cuyo único propósito es un mejor aprovechamiento de la memoria real. Simplifica las actividades de planificación.

Desventajas:

Costo asociado a la transformación de direcciones; memoria adicional que requiere para almacenar las tablas que debe mantener el sistema operativo (memoria real de la parte residente del sistema operativo)para indicar: la cantidad de memoria real implementada, las secciones que están presente en la memoria real y sus direcciones de ubicación, y elementos de juicio para determinar qué secciones se tratarán de dejar en memoria real y cuáles no, o que sección será desplazada cuando otra sección de memoria virtual deba ser llevada a memoria real; pequeño desperdicio de memoria que se produce en la última página de un programa (ya que rara vez el tamaño del programa es múltiplo del tamaño de las páginas); merma en el rendimiento del computador si es incorrectamente utilizada; posible incremento del tiempo de ejecución de cada programa como consecuencia de la paginación (operaciones de entrada/salida que demorarán la ejecución del programa).
                                
Los procedimientos de implementación de la memoria virtual se basan en que cuando se ejecuta un programa, éste está parcialmente en memoria, es decir, sólo hay cargada aquella zona de código y datos que se necesitan en ese instante de tiempo, y no el programa completo. La memoria virtual es la separación entre la memoria lógica disponible para el usuario y la memoria RAM, se implementa generalmente con el método de paginación por demanda aunque también se puede implementar en un sistema con segmentación.

Memoria Virtual
El término memoria virtual se asocia a dos conceptos que normalmente a parecen unidos:
El uso de almacenamiento secundario para ofrecer al conjunto de las aplicaciones la ilusión de tener mas memoria RAM de la que realmente hay en el sistema. Esta ilusión de existe tanto a nivel del sistema, es decir, teniendo en ejecución mas aplicaciones de las que realmente caben en la memoria principal, sin que por ello cada aplicación individual pueda usar mas memoria de la que realmente hay o incluso de forma mas general, ofreciendo a cada aplicación mas memoria de la que existe físicamente en la maquina.
Ofrecer a las aplicaciones la ilusión de que están solas en el sistema, y que por lo tanto, pueden usar el espacio de direcciones completo. Esta técnica facilita enormemente la generación de codigo, puesto que el compilador no tiene porque preocuparse sobre dónde residirá la aplicación cuando se ejecute.
Espacio De Direcciones
Los espacios de direcciones involucrados en el manejo de la memoria son de tres tipos:
Direcciones físicas: son aquellas que referencian alguna posición en la memoria física.
Direcciones lógicas: son las direcciones utilizadas por los procesos. Sufren una serie de transformaciones, realizadas por el procesador (la MMU), antes de convertirse en direcciones físicas.
Direcciones lineales: direcciones lineales se obtienen a partir de direcciones lógicas tras haber aplicado una transformación dependiente de la arquitectura.
Los programas de usuario siempre tratan con direcciones virtuales; nunca ven las direcciones físicas reales.

Unidad De Manejo De Memoria
La unidad de manejo de memoria (MMU) es parte del procesador. Sus funciones son:
Convertir las direcciones lógicas emitidas por los procesos en direcciones físicas.
Comprobar que la conversión se puede realizar. La dirección lógica  podría no tener un dirección física asociada. Por ejemplo, la pagina correspondiente a una dirección se puede haber trasladado a una zona de almacenamiento secundario temporalmente.
Comprobar que el proceso que intenta acceder a una cierta direccion de memoria tiene permisos para ello.
La MMU se Inicializa para cada proceso del sistema. Esto permite que cada procesop pueda usar el rango completo de direcciones lógicas (memoria virtual), ya que las conversiones de estas direcciones serán distintas para cada proceso.
En todos los procesos se configura la MMU para que la zona del núcleo solo se pueda acceder en modo privilegiado del procesador.
La configuración correspondiente al espacio de memoria del núcleo es idéntica en todos los procesos.