lunes, 17 de noviembre de 2014

3.4 ADMINISTRACIÓN DE MEMORIA VIRTUAL.

La clave del concepto de memoria (almacenamiento) virtual está en la disociación:
  • De las direcciones a las que hace referencia un programa.
  • De las direcciones disponibles en la memoria real (almacenamiento primario).
     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 páginas nuevas que estarán disponibles cuando el proceso las pida, debido a ello, el tiempo de ejecución de un proceso se puede reducir.
ESTRATEGIAS DE ADMINISTRACIÓN.
     Estrategias de Obtención: Determinan cuando se debe de 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 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.


Ventajas y desventajas del uso de la memoria virtual

Ventajas:
Ø  Permite optimizar uso de memoria.
Ø  Mantiene más procesos en memoria principal.
Ø  Mantiene en disco partes del proceso poco usadas (rutinas de atención a errores poco frecuentes, funciones de uso esporádico, datos no usados, etc.).
Ø  Permite que un proceso sea más grande que toda la memoria principal 
Ø  Permite multiprogramación muy efectiva.
Ø  Se encarga el SO => evita al usuario la preocupación por programar con superposición.

Desventajas:
Ø  Fallos de direccionamiento.
Ø  Se genera interrupción, indica fallo de acceso a memoria.
Ø  Proceso pasa a bloqueado, SO a ejecución.
Ø  SO emite solicitud de E/S al disco.
Ø  SO expide otro proceso para que se ejecute 
Ø  Tras traer fragmento a memoria, interrupción de E/S, control al SO, que pasa el proceso a listo.
Ø  Posible hiperpaginación (thrasing).
Ø  SO más tiempo intercambiando fragmentos que ejecutando (ejemplo: si saca de memoria un fragmento que se iba a usar ya).


3.3 ORGANIZACIÓN DE MEMORIA VIRTUAL.

Memoria Virtual
     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 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. 

La necesidad cada vez más imperiosa de ejecutar programas grandes y el crecimiento en poder de las unidades centrales de procesamiento empujaron a los diseñadores de los sistemas operativos a implantar un mecanismo para ejecutar automáticamente programas más grandes que la memoria real disponible, esto es, de ofrecer “memoria virtual”.
     La memoria virtual se llama así porque el programador ve una cantidad de memoria mucho mayor que la real, y en realidad se trata de la suma de la memoria de almacenamiento primario y una cantidad determinada de almacenamiento secundario.
     El sistema operativo, en su módulo de manejo de memoria, se encarga de intercambiar programas enteros, segmentos o páginas entre la memoria real y el medio de almacenamiento secundario. Si lo que se intercambia son procesos enteros, se habla entonces de multiprogramación en memoria real, pero si lo que se intercambian son segmentos o páginas, se puede hablar de multiprogramación con memoria virtual.
     La memoria virtual se apoya en varias técnicas interesantes para lograr su objetivo. Una de las teorías más fuertes es la del `conjunto de trabajo', la cual se refiere a que un programa o proceso no está usando todo su espacio de direcciones en todo momento, sino que existen un conjunto de localidades activas que conforman el `conjunto de trabajo'. Si se logra que las páginas o segmentos que contienen al conjunto de trabajo estén siempre en RAM, entonces el programa se desempeñará muy bien.
Otro factor importante es si los programas exhiben un fenómeno llamado `localidad', lo cual quiere decir que algunos programas tienden a usar mucho las instrucciones que están cercanas a la localidad de la instrucción que se está ejecutando actualmente.

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.
                                        Relocalizable (reubicable).
                          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.2 MEMORIA REAL.

La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la información contenida en ella es de más rápido acceso. Solo la memoria cache es más rápida que la principal, pero su costo es a su vez mayor.

     Cuando no existe memoria virtual no hay diferenciación entre el espacio de direcciones y la memoria real; el espacio de direcciones que puede ser usado en los programas tiene idéntico tamaño al espacio de memoria real posible. Si se utiliza memoria virtual, el espacio de direcciones disponibles para los programas es aquel determinado por el tamaño de la memoria virtual implementada y no el espacio de direcciones provisto por la memoria real disponible (el espacio de la memoria virtual será mayor que el de la memoria real).

     La organización y administración de la “memoria principal”, “memoria primaria” o “memoria real” de un sistema ha sido y es uno de los factores más importantes en el diseño de los Sistemas Operativos. 

        Los términos “memoria” y “almacenamiento” se consideran equivalentes. 
        Los programas y datos deben estar en el almacenamiento principal para:
  • Poderlos ejecutar.
  • Referenciarlos directamente

3.1 POLÍTICA Y FILOSOFÍA.

Filosofía.
     La memoria principal puede ser considerada como un arreglo lineal de localidades de almacenamiento de un byte de tamaño. Cada localidad de almacenamiento tiene asignada una dirección que la identifica.
     Una de las funciones básicas que debe implementar un SO es la Administración de la Memoria para tener un control sobre los lugares donde están almacenados los datos y procesos que actualmente se están utilizando.
     Sea cual sea el esquema de organización del almacenamiento que se adopte para un sistema específico es necesario decidir que estrategias se deben utilizar para obtener un rendimiento óptimo.
Políticas.
     FIFO: Los procesos se despachan de acuerdo a su tiempo de llega a la cola de procesos listos, si un proceso llega al procesador sale hasta que termine. La política FIFO actualmente no se usa como el esquema principal de un sistema, pero si por ejemplo cuando se usa una política de prioridades y hay procesos con la misma prioridad, a estos se les podría aplicar FIFO.
     Round Robin: Los procesos se despachan en la forma que lo hace el FIFO, pero se les asigna una cantidad limitada de tiempo (CUANTUM) en el procesador, si no termina en ese lapso se manda al final de la lista de procesos listos.
     SJF (Prioridad del trabajo más corto): Se ejecuta primero el proceso en espera que tiene el menor tiempo estimado. SJF favorece a los procesos cortos, ya que los largos podrían llegar a rezagarse mucho tiempo e incluso nunca ejecutarse.
     SRT: (Tiempo restante más corto). En SJF una vez que un proceso comienza su ejecución continúa hasta terminar. En SRT, un proceso en ejecución puede ser desposeído por uno nuevo de menor tiempo de ejecución.

     HRN: (Prioridad de la tasa de respuesta más alta): Política no apropiativa que corrige el retraso excesivo de procesos grandes que produce el SJF, para así no caer en un favoritismo excesivo por los procesos cortos, lo logra usando una formula basada en el tiempo de espera y el tiempo de servicio, con lo cual la prioridad de cada trabajo no solo está en función del tiempo de servicio sino también del tiempo que ha esperado para ser atendido.

UNIDAD 3: ADMINISTRACIÓN DE MEMORIA.

La administración de memoria se refiere a los distintos métodos y operaciones que se encargan de obtener la máxima utilidad de la memoria, organizando los procesos y programas que se ejecutan de manera tal que se aproveche de la mejor manera posible el espacio disponible. Para poder lograrlo, la operación principal que realiza es la de trasladar la información que deberá ser ejecutada por el procesador, a la memoria principal.
     Actualmente esta administración se conoce como Memoria Virtual ya que no es la memoria física del procesador sino una memoria virtual que la representa. Entre algunas ventajas, esta memoria permite que el sistema cuente con una memoria más extensa teniendo la misma memoria real, con lo que esta se puede utilizar de manera más eficiente. Y por supuesto, que los programas que son utilizados no ocupen lugar innecesario.
     Las técnicas que existen para la carga de programas en la memoria son: partición fija, que es la división de la memoria libre en varias partes (de igual o distinto tamaño) y la partición dinámica, que son las particiones de la memoria en tamaños que pueden ser variables, según la cantidad de memoria que necesita cada proceso.

     Entre las principales operaciones que desarrolla la administración de memoria se encuentran la reubicación, que consiste en trasladar procesos activos dentro y fuera de la memoria principal para maximizar la utilización del procesador; la protección, mecanismos que protegen los procesos que se ejecutan de interferencias de otros procesos; uso compartido de códigos y datos, con lo que el mecanismo de protección permite que ciertos procesos de un mismo programa que comparten una tarea tengan memoria en común.