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:
Ofrecer
a cada proceso un espacio lógico propio.
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)
Proporcionar
protección entre los procesos.
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
Permitir que los procesos compartan memoria
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
Dar soporte a las distintas regiones del proceso
Maximizar
el rendimiento del sistema
Proporcionar a los procesos mapas de memoria muy grandes
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 a 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
Permite explotar el principio de proximidad de referencias
Posibilita la realización de lectura adelantada(prefetching) de bloques antes de que estos sean solicitados
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
E. De Obtención:
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
E. De Colocación:
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
E. De Reemplazo:
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