ADMINISTRACION DE LA MEMORIA
La parte del sistema operativo que administra la memoria se llama
administrador de la memoria. Para ello existen diferentes esquemas de
administración de memoria desde los más simples hasta los más elaborados entre
los cuales se ubican:
Administración de la memoria sin intercambio o paginación.
Los sistemas de
administración de memoria se pueden clasificar en dos tipos. Los que desplazan los procesos de
la memoria principal al disco y viceversa durante la ejecución (intercambio y
paginación) y aquellos que no.
1: Monopogramación sin intercambio o
paginación.
Es en forma
secuencial pues solo se tiene un objeto en memoria en cada instante, el usuario
carga toda la memoria con un programa, esto implica que cada proceso debe
contener controladores de dispositivo para cada uno de los dispositivos E/S que
utilice.
2: Multiprogramación y uso de la memoria.
La
multiprogramación facilita la programación de una aplicación al dividirla en
dos o más procesos. La mayoría de los procesos tardan cierto tiempo en la espera
de datos de dispositivos E/S.
Un modelo para el
uso y aprovechamiento de la CPU es el modelo probabilístico dado por la fórmula:
Uso de la CPU = 1
- pn
3: Multiprogramación con particiones fijas
El objetivo en
todo esto es tener más de un proceso en memoria a la vez, solución posible
sería dividir la memoria en n partes al inicio de una sesión de uso de la
máquina, pero aun así se obtiene el desperdicio de particiones grandes con una
tarea pequeña, la respuesta puede ser tener particiones pequeñas también.
Las tareas que van
llegando se forman hasta que una partición adecuada está disponible, en cuyo
momento la tarea se carga en esa partición y se ejecuta hasta terminar.
Intercambio
En un sistema por
lotes la organización de la memoria en particiones fijas es adecuado pero en un
ambiente multiusuario la situación es distinta con el tiempo compartido, ya que
existen más usuarios de los que puede albergar la memoria, por lo que es
conveniente albergar el exceso de los procesos en disco., por supuesto para ser
ejecutados estos procesos deben ser trasladados a la memoria principal. Al
traslado de procesos de disco a memoria y viceversa se le llama intercambio.
1: Multiprogramación con particiones
variables.
Mediante un
algoritmo de administración de memoria las particiones variables varían de
forma dinámica durante el uso de la máquina, evitando desperdicio de memoria
Otros métodos de
administración de memoria que tenemos son:
La administración
de memoria con mapa de bits
La memoria se
divide en unidades de asignación, a cada asignación le corresponden un bit en
el mapa de bits, un mapa de bits es una forma sencilla para llevar un registro
de las palabras de la memoria en una cantidad fija de memoria.
La administración
de memoria con listas ligadas
Otra forma de
mantener un registro en memoria es mediante una lista ligada donde cada entrada
de la lista específica un hueco o un proceso.
La administración
de memoria con el sistema de los asociados
Basado en el
sistema binario o utiliza para las direcciones.
Memoria Virtual
El método diseñado
por Fotheringham en 1961 se conoce como Memoria
Virtual, la idea es que el tamaño combinado de la pila, programa y datos
puede exceder la memoria física disponible para ello. El S.O. mantiene en
memoria aquellas partes del programa que se deben permanecer en memoria y el
resto lo deja en disco, las partes entre el disco y la memoria se intercambian
de modo que se vayan necesitando.
1: Paginación
El espacio de
direcciones de cada proceso se divide en bloques de tamaño uniforme llamados
páginas, los cuales se pueden colocar dentro de cualquier para página marco
disponible en memoria. Cuando las tablas de páginas son muy grandes se puede
utilizar un esquema de paginación de varios niveles para que las páginas se
paginen a sí mismas.
Existen distintos
niveles de paginación y a su vez distintos modelos de computadoras han
trabajado con ellas.
Paginación de
nivel 1: PDP-11
Paginación de 2
niveles: la VAX
Paginación de 3
niveles: la SPARC
Paginación de 4
niveles: la 68030
Memoria asociativa
En los algoritmos
de paginación las tablas de páginas se mantienen en la memoria debido a su gran
tamaño, en potencia este diseño tiene un efecto enorme en el rendimiento.
Algoritmos de reemplazo de páginas.
Cuando ocurre un
fallo de página el sistema operativo debe elegir una página para retirarla de
la memoria y hacer un espacio para la página por recuperar. Si la página por
eliminar fue modificada mientras estaba en memoria, debe escribirla en el disco
para mantener actualizada la copia del disco, si por el contrario la página no
ha sido modificada la copia del disco ya está actualizada por lo que no es
necesario volver a escribir, la página por leer sólo escribe encima de la
página por retirar.
Aunque es posible
elegir una página al azar para el reemplazo relacionado con un fallo de página,
el rendimiento del sistema es mucho mejor si se elige una página de poco uso.
1: Algoritmo de reemplazo de páginas optimo
Mejor algoritmo
posible para reemplazo de páginas pero irrealizable en la práctica.
Al momento de
ocurrir un fallo de página cierto conjunto de páginas se encuentran en la
memoria, en la siguiente instrucción se hará referencia a una de estas páginas,
otras páginas no se utilizaran sino hasta mucho después, cada página puede
ejecutarse con el número de instrucciones ejecutadas antes de la primera
referencia a esa página, el algoritmo dice que se elimine la página con la
mayor etiqueta; si una página no va a utilizase sino hasta mucho después que
otra la eliminación de la primera retrasa el fallo de página lo mas posible, el
único problema de este algoritmo es que es irrealizable. Al momento del fallo
de página el S.O. no tiene forma de saber a qué página se hace referencia.
2: Algoritmo de página de uso no muy
reciente.
En un fallo de página,
el sistema operativo inspecciona todas las páginas y las divide en cuatro
categorías según los valores actuales de los bits R y M
Clase 0: No se ha
hecho referencia ni ha sido modificada
Clase 1: No se ha
hecho referencia pero ha sido modificada
Clase 2: Se ha
hecho referencia pero no ha sido modificada
Clase 3: Se ha
hecho referencia y ha sido modificada
El algoritmo NRU
implica una hipótesis que indica que es mejor eliminar una página modificada
sin referencias al menos por lo general un intervalo de reloj, este algoritmo
es fácil de comprender, de implantación eficiente y con un rendimiento que, aún
sin ser el óptimo si es adecuado en muchos casos.
3: Algoritmo de reemplazo " primero en
entrar, primero en salir FIFO"
El sistema
operativo tiene una lista de todas las páginas que se encuentran en memoria,
siendo la primera página la más antigua y la última la más reciente, en un
fallo de página, se elimina la primera página y se añade la nueva al final de
la lista.
4: Algoritmo de reemplazo de páginas de la
segunda oportunidad
Una modificación
simple del FIFO que evita deshacerse de una página de uso frecuente inspecciona
el bit R de la página más antigua, busca una página antigua sin referencias
durante el anterior intervalo de tiempo.
5: Algoritmo de reemplazo de páginas del
reloj
Aunque el anterior
algoritmo es razonable un mejor enfoque es mantener las páginas en una lista
circular con la forma de un reloj, una manecilla apunta hacia la más antigua.
Al ocurrir un fallo de página se inspecciona la página a la que apunta la
manecilla si su bit R=0 se retira de la memoria, se inserta la nueva página en
su lugar en el reloj y la manecilla avanza una posición, si R=1 la manecilla
avanza una posición y el bit se limpia, esto continua hasta encontrar una
página con R=0.
Segmentación
La memoria virtual
que hemos analizado hasta ahora es unidimensional, puesto que cada segmento
constituye un espacio independiente de direcciones, los distintos segmentos
pueden crecer o reducirse en forma independiente sin afectar a los demás.
Una memoria
segmentada tiene otras ventajas como hacer más sencilla la administración de
las estructuras de datos que crecen o se reducen, si cada procedimiento ocupa
un segmento independiente con la posición inicial cero el ligado independiente
de los procesos compilados es mucho más sencillo.
Bit que se activa
si se hace referencia a la página en cuestión
Bit que se activa
si se modifica la página