Administración 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 mas simples hasta los mas 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.
· 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.
· Multiprogramación
y uso de la memoria.
La multiprogramación facilita la programación de una aplicación
al dividirla en dos o mas 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
· Multiprogramación
con particiones fijas
El objetivo en todo esto es tener mas 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 aún 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 mas 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.
· 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.
· 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.
· 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.
· 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.
· 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 mas antigua y la última la
mas reciente, en un fallo de página, se elimina la primera página y se añade la
nueva al final de la lista.
· 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 mas antigua, busca
una página antigua sin referencias durante el anterior intervalo de tiempo.
· 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 mas 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 mas
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 mas 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
0 comentarios:
Publicar un comentario