jueves, 19 de enero de 2017

Gestiòn de Memoria Principal

1  Organización y administración del almacenamiento

El almacenamiento principal, es un recurso relativamente caro, por lo que los diseñadores de sistemas operativos intentan optimizar su uso.  En los últimos años ha disminuido su costo, pero sigue siendo más caro en relación con el almacenamiento secundario, y las aplicaciones actuales requieren cantidades mayores de almacenamiento principal. 


La organización del almacenamiento es la forma de considerar el almacenamiento principal, bajo los siguientes esquemas de organización:
*  Sistemas de usuario único
*  Multiprogramación con particiones fijas, con traducción y carga con re-ubicación
*  Multiprogramación con particiones fijas, con traducción y carga absoluta
*  Multiprogramación con particiones variables
*  sistemas de intercambio de almacenamiento
Sea cual sea el esquema de organización de la memoria que se adopte, hay que decidir qué estrategias de deben utilizar para obtener un rendimiento óptimo de la misma. 
Las estrategias de administración del almacenamiento buscan obtener el mejor aprovechamiento y desempeño posible del caro recurso de almacenamiento principal. Se divide en las siguientes categorías:
1)     Estrategias de obtención (¿Cuándo se toma un nuevo programa para colocarlo en memoria? ¿Se toma el programa cuando el sistema lo solicita o se anticipa?)
a)    Estrategias de obtención por demanda
b)    Estrategias de obtención anticipada
2)     Estrategias de colocación (¿En qué lugar del almacenamiento se coloca el siguiente programa?)
3)     Estrategias de reemplazo (¿Qué programas se deben reemplazar, los más antiguos, los menos usados?)

Jerarquía de memoria

La jerarquía de memoria es la organización piramidal de la memoria en niveles que tienen las computadoras.
El objetivo es conseguir el rendimiento de una memoria de gran velocidad al coste de una memoria de baja velocidad, basándose en el principio de cercanía de referencias.


Puntos básicos

Los puntos básicos relacionados con la memoria pueden resumirse en:
Capacidad
Velocidad
Coste por bit
La cuestión de la capacidad es simple, cuanto más memoria haya disponible, más podrá utilizarse.
La velocidad óptima para la memoria es la velocidad a la que el microprocesador puede trabajar, de modo que no haya tiempos de espera entre cálculo y cálculo, utilizados para traer operando o guardar resultados.
En suma, el coste de la memoria no debe ser excesivo, para que sea factible construir un equipo accesible.
Los tres factores compiten entre sí, por lo que hay que encontrar un equilibrio.
Las siguientes afirmaciones son válidas:
A menor tiempo de acceso mayor coste.
A mayor capacidad menor coste por bit.
A mayor capacidad menor velocidad.
Se busca entonces contar con capacidad suficiente de memoria, con una velocidad que sirva para satisfacer la demanda de rendimiento y con un coste que no sea excesivo.
Gracias a un principio llamado cercanía de referencias, es factible utilizar una mezcla de los distintos tipos y lograr un rendimiento cercano al de la memoria más rápida.

Niveles jerárquicos

Los niveles que componen la jerarquía de memoria habitualmente son:
Nivel 0: Registros del microprocesador o CPU
Nivel 1: Memoria caché
Nivel 2: Memoria primaria (RAM)
Nivel 3: Disco duro (con el mecanismo de memoria virtual)
Nivel 4: Cintas magnéticas (consideradas las más lentas, con mayor capacidad, de acceso secuencial)
Nivel 5: Redes (actualmente se considera un nivel más de la jerarquía de memorias)

PARTICIONES

*Particiones estáticas

Esta forma de gestión consiste en dividir la memoria en varias zonas, pudiendo ser cada zona de un tamaño diferente. Esto se ilustra en la figura 6.3. El tamaño de las zonas podrá ser modificado eventualmente por algún usuario responsable de la administración del ordenador.

Los trabajos se traducían mediante compiladores y ensambladores absolutos, para ejecutarse en una partición específica. Una vez introducido un proceso en una partición, permanece en ella hasta su finalización. Si un trabajo se iniciaba, y la partición para la que estaba compilado estaba ocupada, tenía que esperar, aunque estuvieran libres otras particiones. Esto provoca una pérdida de eficiencia.


-Protección
Si se tiene el esquema hardware del registro base, para lograr la protección de las zonas de memoria basta con añadir un nuevo registro, denominado registro límite. Este registro guarda la última dirección de la partición, y forma también parte del PCB del proceso. El hardware, después de sumar el registro base a la dirección relativa, comprueba que la dirección obtenida no supere el valor del registro límite. Si se supera el valor, se está intentando acceder a una zona que no corresponde al proceso; en esta situación, el hardware genera una interrupción

*Particiones dinámicas

En este método se va asignando la memoria dinámicamente a los procesos, conforme se introducen en la memoria. A cada proceso se le asigna exactamente la memoria que necesita.



El esquema de los registro base y límite sigue siendo válido para la reasignación y la protección. Otro tema a tener en cuenta es la cantidad de memoria por asignar a un proceso recién creado. Si los procesos se crean con un tamaño fijo invariante, la asignación es muy sencilla, se asigna exactamente lo que se necesite.
Si, por el contrario, los segmentos de datos de los procesos pueden crecer, como es el caso de la asignación dinámica de memoria a partir de una pila, que ocurre en muchos lenguajes de programación, aparece un problema cuando un proceso intenta crecer.
Si es de esperar que la mayoría de los procesos crezcan conforme se ejecuten, sería una buena idea asignar un poco de memoria adicional siempre que un proceso pase a la memoria, con el fin de reducir el gasto excesivo asociado con el traslado de procesos que ya no caben en su memoria asignada
Si los procesos pueden tener dos segmentos de crecimiento, como por ejemplo, el segmento de datos, que se utiliza como una pila, y el stack, se sugiere un método alternativo, el de la figura 5-b. 





Fragmentación



La fragmentación: es la memoria que queda desperdiciada al usar los métodos de gestión de memoria. Tanto el primer ajuste, como el mejor y el peor producen fragmentación externa (conocidos como estrategias de Colocación).
La fragmentación es generada cuando durante el reemplazo de procesos quedan huecos entre dos o más procesos de manera no contigua y cada hueco no es capaz de soportar ningún proceso de la lista de espera. Tal vez en conjunto si sea espacio suficiente, pero se requeriría de un proceso de desfragmentación de memoria o compactación para lograrlo. Esta fragmentación se denomina fragmentación externa.
Existe otro tipo de fragmentación conocida como fragmentación interna, la cual es generada cuando se reserva más memoria de la que el proceso va realmente a usar. Sin embargo a diferencia de la externa, estos huecos no se pueden compactar para ser utilizados. Se debe de esperar a la finalización del proceso para que se libere el bloque completo de la memoria.

Fragmentación interna

La fragmentación interna es la pérdida de espacio en disco debido al hecho de que el tamaño de un determinado archivo sea inferior al tamaño del clúster, ya que teóricamente el archivo estaría obligado a ser referenciado como un clúster completo. Los clústeres son contiguos de forma que desde el último bit del archivo situado en el clúster "a" hasta el primer bit del archivo situado en el clúster contiguo (es decir "b") queda un espacio sobrante siempre teniendo la condición de que el archivo del clúster "a" fuera más pequeño que el clúster en sí.
Por eso se sugiere no disponer de un gran tamaño de partición en los discos nuevos donde la capacidad es muy importante. Por ejemplo si nuestro clúster es de 18KB (18.432 bytes) por más que un archivo ocupe menos, en nuestro disco ocupara 18KB. Esto sugiere una pérdida de ese espacio que dice utilizar pero no utiliza.
Por eso, en nuestro ejemplo, un archivo de 3KB ocupara en nuestro disco lo mismo que uno de 10KB, o sea 18 KB. Esa pérdida de espacio se denomina fragmentación interna, y no se corrige con el desfragmentador, sino disminuyendo el tamaño del clúster, algo que habitualmente los usuarios solo pueden conseguir creando particiones más pequeñas.

Fragmentación externa

Este tipo de fragmentación aparece como consecuencia de las distintas políticas de ajuste de bloques que tiene un sistema de ficheros, o al utilizar asignaciones dinámicas de bloques en el caso de la memoria. En el sistema de ficheros, la sucesiva creación y eliminación de ficheros de distintos tamaños puede conducir al aislamiento de los bloques libres de un disco y, dependiendo de la política de ajuste, su no elección para futuros ficheros.
En la memoria del sistema la fragmentación se produce cuando los procesos asignados han ocupado posiciones no contiguas de memoria dejando demasiados bloques libres de pequeño tamaño, en los que no "caben" nuevos procesos.
En sistemas de ficheros la desfragmentación trata de resolver este problema, alineando los bloques de datos contiguos y juntando los bloques libres, produciendo así fragmentos mayores que sí serán elegidos para futuros ficheros. En la memoria principal se soluciona compactando los procesos para que estos ocupen posiciones contiguas y dejar los bloques libres juntos, o también se soluciona con la paginación de memoria.

Condensación

 Esta técnica consiste en fusionar dos huecos de memoria libre adyacentes en uno sólo que tendrá como capacidad la suma de los dos originales. Cuando un trabajo termina, el sistema operativo trata de unir todos los espacios libres en uno solo, para tener un espacio suficiente para que pueda entrar otro programa en memoria. Mediante la condensación de huecos se pueden recuperar los bloques contiguos de almacenamiento más grande que sea posible. Gracias a esto, la velocidad de acceso es mayor. Por ejemplo, necesitamos 4K de nuestra memoria, pero tenemos dos huecos, cada uno de 2K. Unimos los dos huecos y tenemos uno de 4K que nos sirve para almacenar este proceso.
Compactación del almacenamiento

Una forma de solucionar la fragmentación externa es usando compactación. Consiste en desplazar todas las localizaciones de memoria ocupada a un extremo de la misma, así quedan dos partes bien diferenciadas, la memoria ocupada y la memoria libre.
La compactación no siempre es posible, ya que es necesario que la relocalización sea dinámica y se efectúa en el momento de la ejecución. Además, otro inconveniente que presenta es que es una técnica costosa, ya que requiere recursos del sistema y puede provocar que el tiempo de respuesta aumente. El sistema debe detener todo mientras efectúa la compresión, lo que puede afectar los tiempos de respuesta.

4.1.4 Estrategias para la administración de memoria
De las diversas organizaciones de memoria tratadas en el tema anterior únicamente las que realizan una asignación no contigua (paginación, segmentación y segmentación paginada) del almacenamiento permiten implantar una administración virtual de la memoria. Para cualquiera de las tres formas de organizar esta memoria virtual habrá que determinar:

Estrategias de obtención. Determinan cuándo se debe transferir una página o un segmento del almacenamiento secundaria 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 traerla/lo. Los esquemas de obtención anticipada intentan determinar por adelantado a qué páginas o segmentos hará referencia un proceso. Si la probabilidad de una referencia es alta y hay espacio disponible, entonces se trae al almacenamiento primario la página o segmento antes de que se haga la referencia explícita

v Estrategias de colocación. Determinan en qué lugar de la memoria principal se debe colocar una página o un segmento entrante. Los sistemas de paginación vuelven trivial la decisión de colocación, porque una página entrante se puede ubicar en cualquier marco de página disponible. Los sistemas con segmentación requieren estrategias de colocación como las tratadas en el contexto de los sistemas de multiprogramación con particiones dinámicas.

v Estrategias de reemplazo. Sirven para decidir qué página o segmento se debe desplazar para dejar espacio a una página o segmento entrante cuando está completamente ocupada la memoria principal.

Una estrategia de asignación de memoria determina el lugar donde será cargado un nuevo proceso en base a un criterio.

Las estrategias de asignación son:



1. PRIMER AJUSTE. El Sistema Operativo asigna el primer bloque de memoria libre con espacio suficiente para satisfacer la información. La búsqueda de este bloque es de manera secuencial.



2. MEJOR AJUSTE. El sistema operativo busca el bloque de memoria que represente el menor desperdicio según el requerimiento.



3. PEOR AJUSTE. El sistema operativo asigna el bloque mas grande que encuentre.

No hay comentarios.:

Publicar un comentario