Вы находитесь на странице: 1из 23

ADMINISTRADOR DE

MEMORIA
El primer esquema de asignación de
memoria era el siguiente:
 El programa que se iba a ejecutar
se cargaba por completo en
memoria y se le asignaba tanto
espacio contiguo como necesitase.
ALGORITMO PARA CARGAR UNA TAREA EN
UN SISTEMA DE USUARIO UNICO

1. Almacene la primera localidad de


memoria del programa en el registro
base.
2. Ponga el contador del programa igual
que la dirección de la primera localidad
de memoria.
3. Lea la primera instrucción del programa.
4. Incremente el contador del programa en
el numero de bytes que ocupa la
instrucción.
ALGORITMO PARA CARGAR UNA TAREA EN
UN SISTEMA DE USUARIO UNICO

1. ¿Ha llegado a la ultima instrucción? Si


es así pare la carga del programa si no
continué.
2. El contador del programa es mas grande
que el tamaño de la memoria si es así
deje de cargar si no continué.
3. Cargue la instrucción en memoria
4. Lea la siguiente instrucción y vuelva al
paso 4.
ALGORITMO PARA CARGAR UN
TRABAJO EN UNA PARTICION FIJA
1. Determine el tamaño de memoria
solicitado por la tarea.
2. Si el tamaño de la tarea es > la partición
mas grande se manda un mensaje de
error si no entonces continué.
3. Ponga el contador en 1.
4. Mientras el contador <= numero de
particiones en memoria,
Si el tamaño de la tarea > tamaño de la
partición de memoria al contador le
asignas contador +1, si no si el estado
de la partición es libre cargue la tarea
en la partición y cambie su estado a
ocupado y vaya al paso 1 si no contador
le asigna contador +1.
2. No hay una partición disponible.
3. Vaya al paso 1.
ALGORITMO DEL PRIMER
AJUSTE
1. Ponga el contador a 1.
2. Mientras el contador<= al numero de
bloques en memoria. Si el tamaño del
bloque > tamaño de memoria (contador)
entonces contador= contador+1, si no
cargue el trabajo en el tamaño de
memoria ajuste las lista de libre y
ocupado de la memoria y vaya al paso 4.
3. Coloque la tarea en la cola de espera.
4. Vaya a recoger la siguiente tarea.
ALGORTIMO DE MEJOR AJUSTE
1. Inicialice el bloque de
memoria(0)=99999.
2. Calcule el desperdicio inicial de memoria.
3. Inicialice el subíndice=0.
4. Ponga el contador en 1.
5. Mientras el contador <= numero de
bloques en memoria. Si el tamaño de la
tarea > tamaño de la memoria al
contador =contador +1 si no desperdicio
de memoria=tamaño de la memoria –
tamaño de la tarea.
Si el desperdicio inicial de la memoria >
desperdicio de la memoria al
subíndice=contador, al desperdicio
inicial de la memoria=desperdicio de la
memoria y al contador=contador+1.
2. Si subíndice=0 entonces coloque la
tarea en la cola de espera, si no cargue
la tarea en el tamaño de la memoria y
ajuste las listas de memoria
libres/ocupadas.
3. Vaya a tomar la siguiente tarea.
Desasignación
El proceso de desasignación consiste en liberar un espacio
en la memoria y este espacio de querer liberar pasaría de un
estado ocupado a un estado libre
Para un sistema de partición fija, el proceso es
bastante sencillo. Cuando se termina la tarea, el
administrador de memoria restablece el estado del
bloque de memoria, donde se asigno la tarea
como libre
Un sistema de partición dinámica utiliza un
algoritmo mas complicado, ya que este trata de
combinar áreas libres de memoria siempre que
sea posible.
Algoritmo para Liberar Bloques de
Memoria
Si la ubicación de la tarea se encuentra unto a uno o mas bloques libres
Si la ubicación de la tarea esta entre dos bloques libres
Entonces combine los tres bloques en uno tamaño de la
memoria(contador -1) + tamaño de la tarea + tamaño de la memoria(contador
-1)
Fije el estado del tamaño de la memoria(contador+1) en
entrada nula

Si no
Combine ambos bloques en uno
tamaño de la memoria(contador -1) = tamaño de la memoria(contador -1)
=tamaño de la memoria(contador -1) + tamaño de la tarea

Si no
busque una entrada nula en la lista de memoria libre
introduzca el tamaño de la tarea y la dirección de inicio en el lugar
de la entrada nula
Fije su estado en “libre”
Caso 1, Unión de dos Bloques Libres
Dirección Tamaño Estado Dirección Tamaño Estado
de Inicio del de Inicio del
Bloque Bloque
4075 105 Libre 4075 105 Libre
5225 5 Libre 5225 5 Libre
6785 600 Libre 6785 600 Libre
7560 20 Libre 7560 20 Libre
(7600) (200) (Ocupado)* 7600 205 Libre
10250 4050 Libre
*7800 5 Libre 15125 230 Libre
10250 4050 Libre 24500 1000 Libre
15125 230 Libre
24500 SeLibre
1000 inicia
localización 7800
Se modifica la lista, para reflejar la dir. del nuevo
bloque, 7600, que era la dir. De la 1era.
Instrucción que acaba de liberarlo.
Caso 2, Unión de Tres Bloques Libres

Dirección Tamaño Estado Dirección Tamaño Estado


de Inicio del de Inicio del Bloque
Bloque 4075 105 Libre
4075 105 Libre 5225 5 Libre
5225 5 Libre 6785 600 Libre
6785 600 Libre 7560 245 Libre
*7560 20 Libre * (entrada
(7580) (20) (Ocupado)1 nula)
*7600 205 Libre 10250 4050 Libre
10250 4050 Libre 15125 230 Libre
15125 230 Libre 24500 1000 Libre
24500 1000 Libre
Dado que la entrada en la localidad 7600 se combino
con la entrada anterior, debemos “vaciar” esta entrada.
Lo hacemos cambiando el estado a entrada nula, sin
dirección de inicio ni tamaño. Esto vuelve innecesario
tener que re arreglar la lista a expensas de memoria.
Caso 3, Desasignación de un Bloque Aislado
Dirección Tamaño Estado Dirección Tamaño Estado
de Inicio del Bloque de Inicio del Bloque
4075 105 Libre 4075 105 Libre
5225 5 Libre 5225 5 Libre
6785 600 Libre 6785 600 Libre
7560 245 Libre 7560 245 Libre
* (entrada *8805 445 Libre
nula) 10250 4050 Libre
10250 4050 Libre 15125 230 Libre
15125 230 Libre 24500 1000 Libre
24500 1000 Libre
Dirección Tamaño Estado Dirección Tamaño Estado
de Inicio del de Inicio del
Bloque Bloque
7805 1000 Ocupado 7805 1000 Ocupado
*8805 445 Ocupado * (entrada
9250 1000 Ocupado nula)
Particiones Dinámicas
Relocalizables
En este tipo de esquema el administrado de memoria relocaliza
los programas para reunir los bloques vacios y los compacta
para hacer un bloque de memoria lo bastante grande para
aceptar algunas o todas las tareas en espera de entrar

El sistema operativo compacta la memoria a este


proceso también se le conoce como recolección de
basura o desfragmentación, para recuperar secciones
fragmentadas de espacio de memoria.
Diagrama inicial Diagrama de memoria
de memoria después de la
(a) compactación(b)
Administración de memoria
Sistemas recientes
Administración de la
memoria

Asignación de la Asignación de memoria


memoria en segmentos en paginación por
demanda

Asignación de memoria
por segmentación por
segmentación por
paginación por demanda
ASIGNACION DE LA MEMORIA POR PAGINAS

Se basa en el concepto de dividir cada


tarea de llegada en páginas de igual
tamaño
Las secciones de un disco se conocen
como sectores o algunas veces como
bloques
Y los sectores de la memoria principal se
denominan marcos de pagina
Paginación por demanda
La paginación por demanda introdujo la idea de
cargar nada mas una porción del programa en
la memoria para su procesamiento.
Además aprovecha el hecho que los programas
se escriben de manera secuencial de manera
que mientras una sección o modulo
Una de las innovaciones es que hizo posible el
amplio uso de la memoria virtual
Algoritmos
Algoritmo de procesamiento de instrucción del hardware
2. Iniciar el procesamiento de la instrucción
3. Generar la dirección de los datos
4. Calcular el numero de la pagina
5. Si la pagina esta en la memoria
entonces
Obtenga los datos y termine la instrucción
Pase a la siguiente instrucción
Regrese al paso 1
De lo contrario
Genere una interrupcion de pagina
Algoritmo de manejo de fallas de pagina
1 Sin no hay un marco de pagina libre
entonces
Seleccione la pagina por intercambiar utilizando el algoritmo de
eliminación de paginas
Actualice la tabla de mapa de paginas de la tarea
Si el contenido de la pagina ha cambiado, entonces
Escriba la pagina en el disco
Fin del si
Fin si
2 Utilice el numero de pagina 3 del algoritmo de procesamiento de
instrucciones del hardware para obtener la dirección del disco
donde se almacena la pagina solicitada(el administrador de
archivos, utiliza el numero de pagina para obtener la dirección del
disco)
3 Lea la pagina hacia la memoria
4 Actualice la tabla de mapa de paginas de la tarea
5 Actualice la tabla del mapa de memoria
6 Vuelva a iniciar la instrucción interrumpida
Políticas y conceptos de remplazo de paginas

Política de reemplazo de pagina es crucial para la


eficiencia del sistema razón por la cual hay que elegir
con cuidado el algoritmos para hacerlo.
Dos de los mas conocidos son el FIFO y
(se basa en la teoría se debe eliminar la pagina que ha
estado mas tiempo en memoria)
Política de la menos recientemente utilizada
(cambia las paginas que recientemente se han usado
menos)
Conjunto de trabajo
Un conjunto de trabajo de una tarea es el conjunto de paginas que
residen en la memoria, que permiten acceso directo, sin incurrir en
una falla de pagina.
Cuando un usuario solicita la ejecución de un programa, la primera
pagina se carga en la memoria y la ejecución continua conforme se
cargan mas paginas: las que contienen declaraciones de variables,
otras que contienen instrucciones, otras que contienen datos, etc.
después de cierto tiempo, la mayor parte de los programas llega a
un estado razonablemente estable y el procesamiento continua sin
problemas, con muy pocas fallas de paginas adicionales.
al llegar a ese punto, el conjunto de trabajo de la tarea esta en la
memoria, y el programa no generará muchas fallas de pagina,
hasta que pase a otra fase que requiera un conjunto diferente de
paginas para efectuar el trabajo: un conjunto de trabajo diferente.