lunes, 26 de octubre de 2015

3.4 administracion de memoria virtual

Estrategias de Obtención


Determinan cuando se debe de transferir una pagina o un segmento de almacenamiento secundario al primario. Las estrategias de obtencion por demanda esperan a que un proceso en ejecucion haga referencia a una pagina o un segmento antes de traer la pagina o el segmento de almacenamiento primario. Los esquemas de obtencion anticipada intentan determinar por adelantado a cuales paginas o segmentos hara referencia un proceso.

Estrategias de Colocación


Determinan en que lugar del almacenamiento primario se debe colocar una pagina o un segmento entrante. Una pagina entrante se puede colocar en cualquier marco de pagina disponible.

Estrategias de Reemplazo


Sirven para decidir cual pagina o segmento se debe desplazar para dar espacio a una pagina o segmento entrante cuando esta completamente ocupado el almacenamiento primario.

Principio de Optimalidad


Para obtener un rendimiento optimo, la pagina que se debe reemplazar es aquella que tardara mas tiempo en ser utilizada. Esta estrategia optima de reemplazo se denomina OPT o MIN.

Reemplazo de Páginas aleatorio


Es una tecnica sencilla. Todas las paginas que se encuentran en el almacenamiento principal tienen la misma probabilidad de ser elegidas para el reemplazo. Esta estrategia podria seleccionar cualquier pagina para ser reemplazada, incluyendo la siguiente pagina la que se hara referencia. Las decisiones de reemplazo aleatorio se de paginas se pueden tomar rapidamente y con un numero significativo de marcos de pagina. 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 pagina se registra en el instante que entro en el almacenamiento primario. Cuando se necesita reemplazar una pagina, se escoge la que ha permanecido en el almacenamiento durante el mayor tiempo.


Anomalias PEPS


Belady, Nelson y Shelder descubrieron que al utilizar el reemplazo de paginas PEPS, ciertos patrones de referencia a pagina originan mas fallas de paginas cuando aumenta el numero de marcos de pagina asignados a un proceso. Este fenomeno se denomina Anomalia PEPS o anomalia Belady. La columna de la izquierda indica el patron de referencias a paginas de un proceso. La primera tabla muestra como dicho patron a referencia de paginas hace que las paginas se carguen a memoria y se reemplacen en secuencia PEPS cuando se asignan tres marcos de paginas a proceso.
La segunda tabla muestra como se comporta este proceso en las mismas circunstancias, pero con cuatro marcos de paginas asignados, a la izquierda de cada tabla se indica si la nueva referencia a una pagina ocasiona o no una falla de pagina. Cuando el proceso se ejecuta en cuatro paginas, experimenta una falla de pagina mas que cuando se ejecuta con tres.

Reemplazo de páginas de la menos reciente utilizada


Se selecciona para su reemplazo, a aquella pagina que no se ha sido utilizada durante mayor tiempo. La estrategia se basa en que la heuristica de localidad segun en el cual el pasado reciente es un buen indicador del futuro cercano, de modo que LRU exige que se marque cada pagina 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 paginas de la menos frecuentemente utilizada (LFU)


La pagina 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 paginas corren cierto riesgo de tomar decisiones equivocadas. Esto sucede por el simple hecho de que no se puede predecir con precision el futuro.

Modificaciones de PEPS; reemplazo de paginas por reloj y reemplazo de paginas con segunda oportunidad


La estrategia PEPS puede decidir reemplazar una pagina muy utilizada que ha permanecido en memoria durante mucho tiempo. Esta posibilidad se puede evitar reemplazando solo aquellas paginas cuyos bits de referencia valgan O.
La variante de PEPS denominada "con segunde oportunidad" examina el bit de referencia de la pagina mas antigua; si este bit vale O, se selecciona de inmediato la pagina para ser reemplazada. Si el bit de referencia vale 1, se le asigna el valor O y la pagina se pasa al final de la lista y se considera en esencia como una pagina nueva; gradualmente dicha pagina se desplaza hacia el principio de la lista, donde sera seleccionada para reemplazo solo si su bit de referencia sigue valiendo O. En esencia, esto da a la pagina una segunda oportunidad de permanecer en el almacenamiento principal si su bit de referencia cambia a 1 antes de que la pagina llegue al principio de la lista. La variacion 'z' del reloj" del algoritmo de la segunda oportunidad dispone las paginas 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 pagina toma el valor O, el apuntador se mueve al siguiente elemento de la lista (simulando el movirl1iento de esta pagina al final de la lista PEPS).

Paginación bajo demanda


Considere como podria cargarse un programa ejecutable desde el disco a la memoria. Una opcion consiste encargar el programa completo en memoria fisica en el momento de ejecutar el programa. Sin embargo, esta tecnica presenta el problema de que puede que no necesitemos inicialmente todo el programa en la memoria.
Las paginas de un proceso deben cargarse por demanda. No se debe transferir ninguna pagina al almacenamiento secundario al primado hasta que un proceso en ejecucion haga explicitamente referencia a ella. Hay varias razones por las cuales es atractiva esta estrategia. Los resultados de la teoria de la computabilidad, especifica mente el problema de la detencion (Mi67) (He77), indican que no se puede predecir con precision la trayectoria de ejecucion que seguira un programa. Asi pues, cualquier intento de cargar paginas con anticipacion a su uso puede hacer que se carguen las paginas equivocadas.
La paginacion por demanda garantiza que las unicas paginas que se transfieren al almacenamiento principal son aquellas que requieren los procesos. El trabajo extra requerido para decidir cuales paginas se deben transferir al almacenamiento principal es minimo. Las estrategias de obtencion anticipada de paginas G pueden requerir mucho tiempo de ejecucion adicional

¿Qué es la paginación anticipada?


En la paginacion anticipada, el sistema operativo intenta predecir las paginas que necesitara un proceso y entonces carga dichas cuando hay espacio disponible.

Mientras el proceso se ejecuta con sus paginas actuales, el sistema carga las demas paginas que estaran disponibles cuando las requiera el proceso.

El S. O. intenta predecir las paginas que un proceso va a necesitar y a continuacion precarga estas paginas cuando hay espacio disponible Mientras el proceso ejecuta sus paginas actuales, el sistema carga paginas nuevas que estaran disponibles cuando el proceso las pida, debido a ello, el tiempo de ejecucion de un proceso se puede reducir.

 

Tamaño de la pagina


Generalmente el almacenamiento real se divide en marcos o celdas de pagina de tamano fijo.

Los interrogantes tienen que ver con el tamano de las paginas, si todas las paginas tendran igual tamano, si en caso de utilizar paginas de diferente tamano las paginas mayores deben ser o no multiplos enteros de las menores, etc.

Algunas consideraciones para determinar el tamano de pagina son las siguientes:

  • Cuanto mas pequeno sea el tamano de una pagina, mas paginas y marcos de paginas habra y mayores seran las tablas de pagina.

El desperdicio de almacenamiento debido al tamano excesivo de las tablas de pagina se llama “fragmentacion de tablas”.

Esto indica la necesidad de paginas mas grandes.

  • Con paginas grandes, grandes cantidades de informacion que nunca llegaria a ser referenciada, se paginaran hacia el almacenamiento primario

3.3 organizacion de memoria virtual

organizacion de memoria virtual

Mediante un esquema se ejecutan programas que no se encuentran totalmente en memoria principal. Por lo tanto, un programa puede tener un tamaño mayor a la memoria fisica disponible.

Los metodos mas comunes para poner en practica el almacenamiento visrual son:

  • Paginacion.
  • Segmentacion
Conceptos Basicos:
  • Las direcciones referidas por un proceso se denominan Direcciones Virtuales o Logicas (L). Por otra parte, las direcciones disponibles en memoria principal se denominan Direcciones Fisicas (F).
  • En el momento de ejecucion de los programas, las direcciones logicas deben hacerse corresponder con las direcciones fisicas, mediante una aplicacion m: L ----> F , la cual se denomina Mapeo de Memoria (Mapping).
La memoria virtual ha llegado a ser un componente esencial de la mayoría de los S.O actuales. Y como en un
instante dado, en la memoria solo se tienen unos pocos fragmentos de un proceso dado, se pueden mantener más procesos en la memoria.

La memoria virtual también simplifica la carga del programa para su ejecución llamado reubicación, este procedimiento permite que el mismo programa se ejecute en cualquier posición de la memoria física.

 

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. 


Paginación


¿Qué es la paginación?

 
El termino memoria virtual se asocia normalmente con sistemas que emplean paginación, aunque también se puede usar memoria virtual basada en la segmentación. El uso de la paginación en la memoria virtual fue presentado por primera vez en el computador Atlas.

Cada proceso tiene su propia tabla de paginas y cuando carga todas sus paginas en la o memoria principal. Puesto que solo algunas de las páginas de un proceso pueden estar en la memoria principal, se necesita un bit en cada entrada de la tabla para indicar si la pagina perteneciente esta presente en la memoria principal o no. Si el bit indica que la pagina esta en la memoria, la entrada incluye también el número de marco para esa pagina.

Otro bit de control necesario en la entrada de la tabla de páginas es el bit de modificación (M), para indicar si el contenido de la página correspondiente se ha alterado desde que la página se cargo en la memoria principal. Si no ha habido cambios, no es necesario escribir la página cuando sea sustituida en el marco que ocupa actualmente.
Segmentación.
Implicaciones de la memoria virtual 

La segmentación permite al programador contemplar la memoria como si constara de varios espacios de direcciones o segmentos. Los segmentos pueden ser de distintos tamaños, incluso de forma dinámica. Las referencias a la memoria constan de una dirección de la forma (numero de segmento, desplazamiento).

Esta organización ofrece al programador varias ventajas sobre un espacio de direcciones no segmentado:
1. Simplifica la gestión de estructuras de datos crecientes. Si el programador no conoce a priori cuan larga puede llegar a ser una estructura de datos determinada, es necesario suponerlo a menos que se permitan tamaños de segmentos dinámicos. Con memoria virtual segmentada, a la estructura de datos se le puede asignar a su propio segmento y el S.O expandirá o reducirá el segmento cuando se necesite.
2. Permite modificar y recopilar los programas independientemente, sin que sea necesario recopilar o volver a montar el conjunto de programas por completo.
3. Se presta a la comparición entre procesos. Un programador puede situar un programa de utilidades o una tabla de datos en un segmento que puede ser referenciado por otros procesos.
4. Se presta a la protección. Puesto que un segmento puede ser construido para albergar un conjunto de procedimientos y datos bien definido, el programador o el administrador del sistema podrán asignar los permisos de acceso de la forma adecuada.



Organización

 
En el estudio de la segmentación simple, se llego a la conclusión de que cada proceso tiene su propia tabla de segmento y que, cuando todos los segmentos se encuentran en la memoria principal, la tabla de segmentos del proceso se crea y se carga en la memoria. Cada entrada de la tabla contiene la dirección de comienzo del segmento correspondiente de la memoria principal, así como su longitud. La misma estructura se necesitara al hablar de un esquema de memoria virtual basado en la segmentación donde las entradas de la tabla de segmentos pasan a ser mas complejas.

Puesto que solo algunos de los segmentos de un proceso estarán en la memoria principal, se necesita un bit en cada entrada de la tabla de segmentos para indicar si el segmento correspondiente esta presente en la memoria principal. Si el bit indica que el segmento esta en la memoria, la entrada incluye también la dirección de comienzo y la longitud del segmento.

Otro bit de control necesario en la entrada de la tabla de segmentos es un bit de modificación que indique si el contenido del segmento correspondiente ha sido modificado desde que se cargo por última vez en la memoria principal. Si no ha habido cambios, no será necesario escribir en el disco el segmento cuando llegue el momento de reemplazarlo en el espacio que ocupa actualmente


Sistema de paginación / 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 vera como 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) (Ver figura 3.3.4.1). 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.