UNIDAD 3 :

Administración de Memoria.

 

3.1 Memoria Real

Un sistema de multiprogramación, el SO debe encargarse de realizar un reparto trasparente, eficiente y seguro de los recursos. En el caso de la memoria el SO con el apoyo del hardware de gestión de memoria del procesador debe repartir un espacio de memoria independiente para cada proceso, evitando una posible interferencia voluntaria e involuntaria.

 

Supongamos que en una familia hay tres niños y los tres quieren ver programas de televisión diferentes, estos simularan ser los procesos y el papá de estos llega y decide quien va a ver la televisión en su programa (este simula ser el Sistema operativo) bajo ciertos criterios, tomando en cuenta que la televisión serán los recursos del sistema

 

 

 

 

 

 

SUS CARACTERÍSTICAS DESEABLES SON:

Es decir proporcionarle a cada proceso o actividad la memoria suficiente para que trabaje, siendo como mínimo el tamaño de su proceso. Supongamos que tenemos una cola de procesos, la cual ya paso por el sistema operativo y este determino su orden, debe haber suficiente espacio para ejecutarse, sino dependerá de la administración que es lo que pasara con ese proceso (si se manda al final o si se detiene la cola hasta desocupar un hueco lo bastante grande para el)

Supongamos que tenemos dos procesos en  espera y el sistema operativo asigna los recursos a uno de  ellos, pero también tiene que vigilar que este proceso termine su ejecución sin ningún problema o sea que no sea interrumpido o desplazado por el otro proceso. Como en el ejemplo del papá y los niños el papá tiene que estar vigilando a los niños para que uno de ellos no le vaya a cambiar de programa

Se puede dar el caso de que un proceso no utilice toda la memoria que se le asigne pero al mismo tiempo existe un proceso al cual no le alcanza el bloque de memoria asignado entonces toma prestado la parte de memoria que no utiliza el primer proceso, aunque debemos aclarar que ésto es muy tedioso para el S.O. pues este para ejecutar un proceso tendrá que ir de un bloque de memoria a otro

 

 

3.1.1 ADMINISTRACIÓN DEL ALMACENAMIENTO

Las estrategias de administración del almacenamiento determinan el comportamiento de una organización de almacenamiento determinada cuando se siguen diferentes políticas: 

¿Cuándo se toma un nuevo programa para colocarlo en memoria? 

¿Se toma el programa cuando el sistema lo solicita o se intenta anticipar a las peticiones del sistema? 

¿En que lugar del almacenamiento principal se coloca el siguiente programa por ejecutar? 

¿Los programas se colocan lo más cercano posible o lo más rápido posible?

 

3.1.2 JERARQUÍA

Los programas y los datos necesitan estar en el almacenamiento principal para ser ejecutados o para poder hacer referencia a ellos

Dato Necesario  si   a   Memoria Principal  

Dato Necesario  no  Memoria Secundaria.

Valores de la Jerarquía de Memoria

 

Nivel de Memoria

 

Capacidad

 

 

Tiempo/Acceso

 

 

Tipo/Acceso

 

 

Registros

 

64  a 256 Bytes

 

1 a 5 ns

Palabra

 

Memoria Cache

 

 

8 Kb a 2 Mb

 

 

5 a 20 ns

 

Palabra

Memoria Principal

128 Mb a 64 Mb

60 a 200 ns

Palabra

Disco

50 Mb a 40 Gb

10 a 30 ms

Sector

 

 

 En los sistemas con varios niveles de almacenamiento hay muchas transferencias constantes de programas y datos entre los diferentes niveles. Estas transferencias consumen recursos del sistema, como tiempo de la UCP, que de otro modo podría utilizarse con provecho ¿Una solución? Memoria Cache

MEMORIA CACHE: una cache almacena una copia de los datos recientemente referenciados en un dispositivo más rápido que aquel en el que residen y que normalmente es un disco. 

Ventajas

  1. Permite explotar el principio de proximidad de referencias 

  2. Posibilita la realización de lectura adelantada(prefetching) de bloques antes de que estos sean solicitados 

  3. Permite mejorar el rendimiento de las operaciones de escritura utilizando políticas de escritura diferida o retardada.

 

3.1.3 ESTRATEGIA DE ADMINISTRACIÓN DE MEMORIA

Las estrategias de la administración del almacenamiento se ajustan para obtener un mejor aprovechamiento posible del recurso de almacenamiento principal

   - E de obtención (Por Demanda y Anticipada) 

   - E. De colocación 

   - E de reemplazo

Determinan cuando debe obtenerse la siguiente parte del programa o los datos que se van a transferir del almacenamiento secundario al principal. La más usual es por demanda. En la cual es el usuario el que va pidiendo los datos y el Sistema operativo realiza exactamente lo demandado por el usuario, aunque esta tecnica es algo tardada 

Tienen que ver con la determinación de la parte del almacenamiento principal donde se colocará un programa entrante

E. Del Mejor Ajuste. Un trabajo que entre en el sistema se colocara en el hueco del almacenamiento principal en el que mejor ajuste y que deje la menor cantidad posible de espacio sin utilizar. esta tecnica es muy buena para el ahorro de espacio de memoria pero su contra seria que para poder ajustarse en un hueco de memoria el sistema operativo debe recorrer toda la memoria para encontrar un hueco en el cual entre y se desperdicie el minimo de memoria

por ejemplo buscamos un hueco para un proceso de 10kb el S.O. analiza la memoria y localizo un hueco muy grande en el que puede entrar pero no se inserta en este bloque sino sigue comparando ahora el segundo es el mas adecuado (el de 15) y asi sucesivamente hasta que llega al de 10 y como tiene el espacio necesario y no se desperdicia memoria determina que este es el hueco indicado para su ejecucion

E. Del Primer Ajuste: Un trabajo que entre, se colocara en el primer hueco disponible lo bastante grande para contenerlo. Permite decidir con rapidez, en este solamente el S.O. busca el primer espacio para insertar el proceso, su ventaja de gran rapidez se descompensa en gran medida con la desventaja de que se pueden producir huecos de memoria de tamaños casi iguales. Por ejemplo si metieramos el de 10 en el 25 tendriamos despues un espacio utilizado de 10 al inicio y luego dos de 15 

E. Del peor Ajuste: Consiste en colocar un programa en el hueco donde peor se ajusta, es decir, en el hueco más grande posible. Al parecer no seria buena estrategia pero si analizamos mas a fondo nos daremos cuenta que se basa en el principio de divide y vencera. para ser mas claro supongamos que tenemos un proceso de 10 y queremos meterlo, este se insertara en el hueco de 25 que es el hueco disponible que mas espacio deja asi en lugar de tener un solo hueco tendremos 2 huecos 

Están relacionadas con la determinación de que parte del programa o de los datos se debe desalojar para dejar espacio a los programas entrantes 

 

3.1.4 ASIGNACIÓN CONTIGUA VS. NO CONTIGUA

La naturaleza de acceso directo de los discos nos brinda flexibilidad en la implementación de los archivos. En casi todos los casos, muchos archivos se almacenan en el mismo disco. El problema principal es cómo asignar espacio a esos archivos de modo que el espacio se aproveche de forma eficaz y se pueda acceder rápidamente a los archivos. En la asignación de almacenamiento no contiguo de un programa se divide en varios bloques o segmentos que se pueden colocar en la memoria, en fragmento que no necesitan ser adyacentes. Para el SO es más difícil controlar la situación, sin embargo, si la memoria tiene pequeños huecos disponibles es más fácil cargar y ejecutar programas que en otro caso deberían de esperar

 

 

ASIGNACIÓN CONTIGUA

 El método de asignación contigua requiere que cada archivo ocupe un conjunto de bloques contiguos en el disco. Las direcciones de disco definen un ordenamiento lineal en él. Con este ordenamiento, suponiendo que sólo un trabajo está accediendo al disco, el acceso al bloque b + 1 después del bloque b normalmente no requiere movimiento de la cabeza. Si es preciso mover la cabeza (del ultimo sector de un cilindro al primero del siguiente), sólo es una pista. Así, el número de búsquedas de disco necesarias para acceder a archivos asignados contiguamente es mínimo, lo mismo que el tiempo de búsqueda cuando finalmente se necesita una búsqueda. El sistema operativo VM/CMS de IBM utiliza asignación contigua por el buen desempeño que provee.

 

La asignación contigua de un archivo está definida por la dirección en disco y la longitud (en unidades de bloque) del primer bloque. Si el archivo tiene n bloques, y comienza en la posición b, ocupará los bloques b, b + 1, b + 2, ... , b + n – 1. La entrada de directorio para cada archivo indica la dirección del bloque inicial y la longitud del área asignada a este archivo.

 

El acceso a un archivo que se asignó de forma contigua es fácil. Si el acceso es secuencial, el sistema de archivos recuerda la dirección en disco del ultimo bloque al que se hizo referencia y, cuando llega el momento, lee el siguiente bloque. Si el acceso es directo al bloque i de un archivo que comienza en el bloque b, podemos acceder de inmediato al bloque b + i. Así, la asignación contigua permite manejar acceso tanto secuencial como directo.

 

Una dificultad de la asignación contigua es encontrar espacio para un archivo nuevo. La implementación del sistema de administración de espacio libre, que veremos en la fig., determina la forma de efectuar esto. Se puede usar cualquier sistema de administración, pero algunos son más lentos que otros.

 

Es evidente que el problema de asignación de espacio contiguo en disco es una aplicación específica del problema general de asignación dinámica de almacenamiento, a saber, cómo satisfacer una solicitud de tamaño n a partir de una lista de huecos libres. Las estrategias de primer ajuste y mejor ajuste son las que más comúnmente se usan para seleccionar un hueco libre del conjunto de huecos disponibles. Se ha demostrado mediante simulaciones que tanto el primer ajuste como el mejor ajuste son más eficientes que el peor ajuste en términos tanto de tiempo como de utilización de espacio. No se ha determinado claramente si el primer ajuste es mejor que el mejor ajuste en términos de aprovechamiento del espacio, pero generalmente es más rápido.

 

                               

 

 

ASIGNACIÓN NO CONTIGUA

 

        La asignación no contigua  o indizada resuelve los problemas de fragmentación externa y declaración de tamaño de la asignación contigua, pero, si no se usa una FAT, no puede apoyar un acceso directo eficiente, ya que los punteros a los bloques están dispersos junto con los bloques mismos por todo el disco y necesitan recuperarse en orden. La asignación no contigua resuelve este problema al reunir todos los punteros en un mismo lugar: el bloque índice.

 

        Cada archivo tiene su propio bloque índice, que es una matriz de direcciones de bloques de disco. La i-ésima entrada del bloque índice apunta al i-ésimo bloque del archivo. El directorio contiene la dirección del bloque índice. Para leer el i-ésimo bloque, usamos el puntero de la i-ésima entrada del bloque índice para encontrar y leer el bloque deseado.

 

La asignación indizada apoya el acceso directo sin sufrir fragmentación externa, porque cualquier bloque libre del disco puede satisfacer una solicitud de espacio adicional. La asignación indizada sí desperdicia espacio. El gasto extra de los punteros del bloque índice generalmente es mayor que el de los punteros de la asignación enlazada. Consideremos un caso común en el que tenemos un archivo que sólo ocupa uno o dos bloques. Con la asignación enlazada, sólo perdemos el espacio de un puntero por bloque (uno o dos punteros). Con la asignación indizada, es preciso asignar un bloque índice entero, aun si sólo uno o dos punteros son diferentes de nil.

 

3.1.5 MULTIPROGRAMACIÓN DE PARTICIÓN FIJA, PARTICIÓN VARIABLE, CON INTERCAMBIO DE ALMACENAMIENTO

 

Multiprogramación de partición fija: Los primeros sistemas de multiprogramación con partición fija, en la cual el almacenamiento principal se dividía en particiones de tamaño fijo. En cada partición podía haber un solo trabajo. Si un trabajo estaba listo para ser ejecutado y su partición estaba ocupada, tenia que esperar aunque estuvieran libres otras particiones

Multiprogramación con particiones Variables: Al observar los problemas de la multiprogramación con particiones fijas, se decidió implementar un esquema de multiprogramación con particiones variables.

Condensación de Huecos: cuando termina un programa en un sistema de multiprogramación con particiones variables el espacio liberado se registra nuevamente como un hueco adicional o como un hueco único. El proceso de fusionar huecos adyacentes para formar un solo hueco más grande se denomina condensación.

Compactación de Almacenamiento: La técnica de compactación de almacenamiento implica trasladar todas las áreas ocupadas del almacenamiento a algún extremo de la memoria principal. Este Proceso es utilizado cuando se tiene una memoria con particion variable  en el que se tiene  5 procesos y digamos que el 3 termino su trabajo lo que hace el S.O. es corer el proceso 4 y el 5 hacia arriba para ocupar el lugar del del 3 y asi no tener huecos entre ellos, aunque es tediosop para el sistema operativo porque a cada momento tiene que mover  los procesos

Multiprogramación con Intercambio de almacenamiento: antes se veía  que los programas para su ejecución permanecían en Memoria Principal  hasta acompletarse. El esquema llamado Intercambio (SWAPPIG) carece de este requisito

       

Hosted by www.Geocities.ws

1