domingo, 11 de diciembre de 2011

Sistemas Operativos

                                     
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.

// http://html.rincondelvago.com/administracion-de-memoria.html


3.1.- Política Y Filosofía Administración Memoria


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 procesos y datos 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 .las estrategias de administración del almacenamiento determinan el comportamiento de la administración de memoria cuando se siguen ciertas políticas:

· ¿Cuándo se toma un nuevo programa para colocarlo en memoria?
· ¿Se toma el programa cuando el sistema lo solicita específicamente o se intenta anticiparse a las particiones del sistema?
· ¿En qué lugar del almacenamiento principal se coloca el programa por ejecutar?
· ¿Se colocan los programas lo más cerca unos de otros en los espacios disponibles de la memoria principal para reducir al mínimo el desperdicio de espacio, o se colocan los programas lo más rápido posible para reducir al mínimo el tiempo de ejecución?
· Si se necesita colocar un nuevo programa en el almacenamiento principal y éste está lleno, ¿Cuál de los otros programas se desaloja?

Se han realizado sistemas que utilizan cada una de estas estrategias de administración.
Los programas y datos necesitan estar en el almacenamiento principal para ser ejecutados o para poder hacer referencia de ellos. Los que no se necesitan de inmediato pueden guardarse en el almacenamiento secundario.

Unix permite procesos múltiples y en un proceso puede generar otro fácilmente. La planificación del procesador usa un algoritmo basado en prioridades. La administración de memoria es un algoritmo de regiones variables con intercambios. Inicialmente los algoritmos realizados se eligieron por sencillez, no por velocidad ni complejidad. El desarrollo inicial se hizo bajo un espacio muy pequeño de memoria.
Los recursos de memoria totales eran insuficientes para justificar algoritmos complejos, por lo que UNIX intercambiaba el contenido en memoria de los procesos.

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 (Shortest job first - 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 (Sortest Remaining Time Scheduling): 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: (Highest Response Ratio Next): 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.



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 S. O. (Ver la figura 3.2.1)
        Los términos “memoria” y “almacenamiento” se consideran equivalentes.
        Los programas y datos deben estar en el almacenamiento principal para:
Poderlos ejecutar.
Referenciarlos directamente.

http://sistemasoperativos.angelfire.com/html/3.2.html


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.





      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 él, está en memoria real y el resto almacenado en el disco, y puede ser referenciado fácilmente.

ESTRATEGIAS DE ADMINISTRACION

Estrategias de colocación en almacenamiento

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 ADMINISTRACIòN DE LA MEMORIA VIRTUAL
 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 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 cuáles páginas 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 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 Optimalidad: 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).

PAGINACIÓN POR DEMANDA.

Las páginas de un proceso deben cargarse por demanda. No se debe transferir ninguna página al almacenamiento secundario al primado hasta que un proceso en ejecución haga explícitamente referencia a ella. Hay varias razones por las cuales es atractiva esta estrategia.

Los resultados de la teoría de la computabilidad, específica mente el problema de la detención (Mi67) (He77), indican que no se puede predecir con precisión la trayectoria de ejecución que seguirá un programa. Así pues, cualquier intento de cargar páginas con anticipación a su uso puede hacer que se carguen las páginas equivocadas.

La paginación por demanda garantiza que las únicas páginas que se transfieren al almacenamiento principal son aquéllas que requieren los procesos.

El trabajo extra requerido para decidir cuáles páginas se deben transferir al almacenamiento principal es mínimo. Las estrategias de obtención anticipada de páginas G pueden requerir mucho tiempo de ejecución adicional. 

PAGINACION ANTICIPADA

En la paginación anticipada, el sistema operativo intenta predecir las páginas que necesitará 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.

LIBERACIÓN DE PÁGINAS.

Los programas que ya no requieran páginas específicas deberán desechar tales páginas de sus conjuntos de trabajo. Por lo regular hay un tiempo durante el cual permanecen en el almacenamiento principal las páginas que ya no se requieran. Cuando es evidente que ya no será necesaria una página, un usuario podrá dar una orden de "liberación voluntaria de página" para liberar el marco de página. Esto eliminaría el retraso que implica dejar que el proceso deseche poco a poco la página de su conjunto de trabajo.

TAMAÑO DE PÁGINA.
El tamaño será de acuerdo a las aplicaciones deseadas para un sistema en particular. Los factores que determinan los tamaños son:

Cuanto menor sea el tamaño de la página, más páginas y marcos de página habrá y mayores tendrán que ser la tabla.

Dependiendo del tamaño de la información se determina si se usan páginas pequeñas o grandes.

Cuanto menor sea la página, 'menor será la fragmentación interna.