administrador de memoria

23
ADMINISTRADOR DE ADMINISTRADOR DE MEMORIA MEMORIA El primer esquema de El primer esquema de asignación de memoria era asignación de memoria era el siguiente: el siguiente: El programa que se iba a El programa que se iba a ejecutar se cargaba por ejecutar se cargaba por completo en memoria y se le completo en memoria y se le asignaba tanto espacio asignaba tanto espacio contiguo como necesitase. contiguo como necesitase.

Upload: ionijohn

Post on 06-Jun-2015

2.282 views

Category:

Documents


2 download

DESCRIPTION

equipo 3

TRANSCRIPT

Page 1: ADMINISTRADOR DE MEMORIA

ADMINISTRADOR DE ADMINISTRADOR DE MEMORIAMEMORIA

El primer esquema de asignación de El primer esquema de asignación de memoria era el siguiente:memoria era el siguiente: El programa que se iba a ejecutar El programa que se iba a ejecutar se cargaba por completo en se cargaba por completo en memoria y se le asignaba tanto memoria y se le asignaba tanto espacio contiguo como necesitase.espacio contiguo como necesitase.

Page 2: ADMINISTRADOR DE MEMORIA

ALGORITMO PARA CARGAR UNA TAREA EN ALGORITMO PARA CARGAR UNA TAREA EN UN SISTEMA DE USUARIO UNICOUN SISTEMA DE USUARIO UNICO

1.1. Almacene la primera localidad de Almacene la primera localidad de memoria del programa en el registro memoria del programa en el registro base.base.

2.2. Ponga el contador del programa igual Ponga el contador del programa igual que la dirección de la primera localidad que la dirección de la primera localidad de memoria.de memoria.

3.3. Lea la primera instrucción del programa.Lea la primera instrucción del programa.4.4. Incremente el contador del programa en Incremente el contador del programa en

el numero de bytes que ocupa la el numero de bytes que ocupa la instrucción.instrucción.

Page 3: ADMINISTRADOR DE MEMORIA

ALGORITMO PARA CARGAR UNA TAREA EN ALGORITMO PARA CARGAR UNA TAREA EN UN SISTEMA DE USUARIO UNICOUN SISTEMA DE USUARIO UNICO

5.5. ¿Ha llegado a la ultima instrucción? Si ¿Ha llegado a la ultima instrucción? Si es así pare la carga del programa si no es así pare la carga del programa si no continué.continué.

6.6. El contador del programa es mas grande El contador del programa es mas grande que el tamaño de la memoria si es así que el tamaño de la memoria si es así deje de cargar si no continué.deje de cargar si no continué.

7.7. Cargue la instrucción en memoriaCargue la instrucción en memoria

8.8. Lea la siguiente instrucción y vuelva al Lea la siguiente instrucción y vuelva al paso 4.paso 4.

Page 4: ADMINISTRADOR DE MEMORIA

ALGORITMO PARA CARGAR UN ALGORITMO PARA CARGAR UN TRABAJO EN UNA PARTICION FIJATRABAJO EN UNA PARTICION FIJA

1.1. Determine el tamaño de memoria Determine el tamaño de memoria solicitado por la tarea.solicitado por la tarea.

2.2. Si el tamaño de la tarea es > la partición Si el tamaño de la tarea es > la partición mas grande se manda un mensaje de mas grande se manda un mensaje de error si no entonces continué.error si no entonces continué.

3.3. Ponga el contador en 1.Ponga el contador en 1.

4.4. Mientras el contador <= numero de Mientras el contador <= numero de particiones en memoria,particiones en memoria,

Page 5: ADMINISTRADOR DE MEMORIA

Si el tamaño de la tarea > tamaño de la Si el tamaño de la tarea > tamaño de la partición de memoria al contador le partición de memoria al contador le asignas contador +1, si no si el estado asignas contador +1, si no si el estado de la partición es libre cargue la tarea de la partición es libre cargue la tarea en la partición y cambie su estado a en la partición y cambie su estado a ocupado y vaya al paso 1 si no contador ocupado y vaya al paso 1 si no contador le asigna contador +1.le asigna contador +1.

5.5. No hay una partición disponible.No hay una partición disponible.6.6. Vaya al paso 1.Vaya al paso 1.

Page 6: ADMINISTRADOR DE MEMORIA

ALGORITMO DEL PRIMER ALGORITMO DEL PRIMER AJUSTEAJUSTE

1.1. Ponga el contador a 1.Ponga el contador a 1.2.2. Mientras el contador<= al numero de Mientras el contador<= al numero de

bloques en memoria. Si el tamaño del bloques en memoria. Si el tamaño del bloque > tamaño de memoria (contador) bloque > tamaño de memoria (contador) entonces contador= contador+1, si no entonces contador= contador+1, si no cargue el trabajo en el tamaño de cargue el trabajo en el tamaño de memoria ajuste las lista de libre y memoria ajuste las lista de libre y ocupado de la memoria y vaya al paso 4.ocupado de la memoria y vaya al paso 4.

3.3. Coloque la tarea en la cola de espera.Coloque la tarea en la cola de espera.4.4. Vaya a recoger la siguiente tarea.Vaya a recoger la siguiente tarea.

Page 7: ADMINISTRADOR DE MEMORIA

ALGORTIMO DE MEJOR AJUSTEALGORTIMO DE MEJOR AJUSTE

1.1. Inicialice el bloque de memoria(0)=99999.Inicialice el bloque de memoria(0)=99999.2.2. Calcule el desperdicio inicial de memoria.Calcule el desperdicio inicial de memoria.3.3. Inicialice el subíndice=0.Inicialice el subíndice=0.4.4. Ponga el contador en 1.Ponga el contador en 1.5.5. Mientras el contador <= numero de Mientras el contador <= numero de

bloques en memoria. Si el tamaño de la bloques en memoria. Si el tamaño de la tarea > tamaño de la memoria al contador tarea > tamaño de la memoria al contador =contador +1 si no desperdicio de =contador +1 si no desperdicio de memoria=tamaño de la memoria – memoria=tamaño de la memoria – tamaño de la tarea.tamaño de la tarea.

Page 8: ADMINISTRADOR DE MEMORIA

Si el desperdicio inicial de la memoria > Si el desperdicio inicial de la memoria > desperdicio de la memoria al desperdicio de la memoria al subíndice=contador, al desperdicio inicial subíndice=contador, al desperdicio inicial de la memoria=desperdicio de la de la memoria=desperdicio de la memoria y al contador=contador+1.memoria y al contador=contador+1.

6.6. Si subíndice=0 entonces coloque la Si subíndice=0 entonces coloque la tarea en la cola de espera, si no cargue tarea en la cola de espera, si no cargue la tarea en el tamaño de la memoria y la tarea en el tamaño de la memoria y ajuste las listas de memoria ajuste las listas de memoria libres/ocupadas.libres/ocupadas.

7.7. Vaya a tomar la siguiente tarea.Vaya a tomar la siguiente tarea.

Page 9: ADMINISTRADOR DE MEMORIA

DesasignaciónDesasignaciónEl proceso de desasignación consiste en liberar un espacio El proceso de desasignación consiste en liberar un espacio

en la memoria y este espacio de querer liberar pasaría de un en la memoria y este espacio de querer liberar pasaría de un estado ocupado a un estado libreestado 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.

Page 10: ADMINISTRADOR DE MEMORIA

Si la ubicación de la tarea se encuentra unto a uno o mas bloques libresSi la ubicación de la tarea se encuentra unto a uno o mas bloques libresSi la ubicación de la tarea esta entre dos bloques libresSi la ubicación de la tarea esta entre dos bloques libres

Entonces combine los tres bloques en uno tamaño de la 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 -memoria(contador -1) + tamaño de la tarea + tamaño de la memoria(contador -1)1)

Fije el estado del tamaño de la memoria(contador+1) en Fije el estado del tamaño de la memoria(contador+1) en entrada nulaentrada nula

Si noSi noCombine ambos bloques en unoCombine ambos bloques en unotamaño de la memoria(contador -1) = tamaño de la memoria(contador -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 tarea1)=tamaño de la memoria(contador -1) + tamaño de la tarea

Si noSi nobusque una entrada nula en la lista de memoria librebusque una entrada nula en la lista de memoria libreintroduzca el tamaño de la tarea y la dirección de inicio en el introduzca el tamaño de la tarea y la dirección de inicio en el

lugar de la entrada nulalugar de la entrada nulaFije su estado en “libre”Fije su estado en “libre”

Algoritmo para Liberar Bloques de Algoritmo para Liberar Bloques de MemoriaMemoria

Page 11: ADMINISTRADOR DE MEMORIA

Caso 1, Unión de dos Bloques LibresCaso 1, Unión de dos Bloques Libres

Dirección de Inicio

Tamaño del Bloque

Estado

4075 105 Libre

5225 5 Libre

6785 600 Libre

7560 20 Libre

(7600) (200) (Ocupado)*

*7800 5 Libre

10250 4050 Libre

15125 230 Libre

24500 1000 Libre

Dirección de Inicio

Tamaño del Bloque

Estado

4075 105 Libre

5225 5 Libre

6785 600 Libre

7560 20 Libre

7600 205 Libre

10250 4050 Libre

15125 230 Libre

24500 1000 Libre

Se inicia localización 7800Se modifica la lista, para reflejar la dir. del nuevo bloque, 7600,

que era la dir. De la 1era. Instrucción que acaba de liberarlo.Se debe de mostrar su nuevo tamaño: (200+5)

Page 12: ADMINISTRADOR DE MEMORIA

Caso 2, Unión de Tres Bloques LibresCaso 2, Unión de Tres Bloques Libres

Dirección de Inicio

Tamaño del Bloque

Estado

4075 105 Libre

5225 5 Libre

6785 600 Libre

*7560 20 Libre

(7580) (20) (Ocupado)1

*7600 205 Libre

10250 4050 Libre

15125 230 Libre

24500 1000 Libre

Dirección de Inicio

Tamaño del Bloque

Estado

4075 105 Libre

5225 5 Libre

6785 600 Libre

7560 245 Libre

* (entrada nula)

10250 4050 Libre

15125 230 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.

Page 13: ADMINISTRADOR DE MEMORIA

Caso 3, Desasignación de un Bloque AisladoCaso 3, Desasignación de un Bloque Aislado

Dirección de Inicio

Tamaño del Bloque

Estado

4075 105 Libre

5225 5 Libre

6785 600 Libre

7560 245 Libre

* (entrada nula)

10250 4050 Libre

15125 230 Libre

24500 1000 LibreDirección de Inicio

Tamaño del Bloque

Estado

7805 1000 Ocupado

*8805 445 Ocupado

9250 1000 Ocupado

Dirección de Inicio

Tamaño del Bloque

Estado

4075 105 Libre

5225 5 Libre

6785 600 Libre

7560 245 Libre

*8805 445 Libre

10250 4050 Libre

15125 230 Libre

24500 1000 Libre

Dirección de Inicio

Tamaño del Bloque

Estado

7805 1000 Ocupado

* (entrada nula)

9250 1000 Ocupado

Page 14: ADMINISTRADOR DE MEMORIA

Particiones Dinámicas Particiones Dinámicas RelocalizablesRelocalizables

En este tipo de esquema el administrado de memoria relocaliza En este tipo de esquema el administrado de memoria relocaliza los programas para reunir los bloques vacios y los compacta los programas para reunir los bloques vacios y los compacta para hacer un bloque de memoria lo bastante grande para para hacer un bloque de memoria lo bastante grande para

aceptar algunas o todas las tareas en espera de entraraceptar 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.

Page 15: ADMINISTRADOR DE MEMORIA

Diagrama inicial de memoria (a)

Diagrama de memoria después de la

compactación(b)

Page 16: ADMINISTRADOR DE MEMORIA

Administración de memoriaAdministración de memoriaSistemas recientesSistemas recientes

Page 17: ADMINISTRADOR DE MEMORIA

Administración de la memoria

Asignación de la memoria en segmentos

Asignación de memoria en paginación por

demanda

Asignación de memoria por segmentación por

segmentación por paginación por demanda

Page 18: ADMINISTRADOR DE MEMORIA

ASIGNACION DE LA MEMORIA POR PAGINASASIGNACION DE LA MEMORIA POR PAGINAS

Se basa en el concepto de dividir cada Se basa en el concepto de dividir cada tarea de llegada en páginas de igual tarea de llegada en páginas de igual tamañotamaño

Las secciones de un disco se conocen Las secciones de un disco se conocen como sectores o algunas veces como como sectores o algunas veces como bloques bloques

Y los sectores de la memoria principal se Y los sectores de la memoria principal se denominan marcos de paginadenominan marcos de pagina

Page 19: ADMINISTRADOR DE MEMORIA

Paginación por demandaPaginación por demanda

La paginación por demanda introdujo la idea de La paginación por demanda introdujo la idea de cargar nada mas una porción del programa en cargar nada mas una porción del programa en la memoria para su procesamiento.la memoria para su procesamiento.

Además aprovecha el hecho que los programas Además aprovecha el hecho que los programas se escriben de manera secuencial de manera se escriben de manera secuencial de manera que mientras una sección o modulo que mientras una sección o modulo

Una de las innovaciones es que hizo posible el Una de las innovaciones es que hizo posible el amplio uso de la memoria virtualamplio uso de la memoria virtual

Page 20: ADMINISTRADOR DE MEMORIA

Algoritmos Algoritmos

Algoritmo de procesamiento de instrucción del hardwareAlgoritmo de procesamiento de instrucción del hardware

1.1. Iniciar el procesamiento de la instrucciónIniciar el procesamiento de la instrucción

2.2. Generar la dirección de los datos Generar la dirección de los datos

3.3. Calcular el numero de la paginaCalcular el numero de la pagina

4.4. Si la pagina esta en la memoria Si la pagina esta en la memoria

entonces entonces

Obtenga los datos y termine la instrucciónObtenga los datos y termine la instrucción

Pase a la siguiente instrucciónPase a la siguiente instrucción

Regrese al paso 1Regrese al paso 1

De lo contrarioDe lo contrario

Genere una interrupcion de pagina Genere una interrupcion de pagina

Page 21: ADMINISTRADOR DE MEMORIA

Algoritmo de manejo de fallas de paginaAlgoritmo de manejo de fallas de pagina1 Sin no hay un marco de pagina libre 1 Sin no hay un marco de pagina libre

entonces entonces

Seleccione la pagina por intercambiar utilizando el algoritmo de eliminación de Seleccione la pagina por intercambiar utilizando el algoritmo de eliminación de paginaspaginas

Actualice la tabla de mapa de paginas de la tareaActualice la tabla de mapa de paginas de la tarea

Si el contenido de la pagina ha cambiado, entoncesSi el contenido de la pagina ha cambiado, entonces

Escriba la pagina en el discoEscriba la pagina en el disco

Fin del siFin del si

Fin siFin si

2 Utilice el numero de pagina 3 del algoritmo de procesamiento de instrucciones del 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 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 solicitada(el administrador de archivos, utiliza el numero de pagina para obtener la dirección del disco) dirección del disco)

3 Lea la pagina hacia la memoria 3 Lea la pagina hacia la memoria

4 Actualice la tabla de mapa de paginas de la tarea 4 Actualice la tabla de mapa de paginas de la tarea

5 Actualice la tabla del mapa de memoria 5 Actualice la tabla del mapa de memoria

6 Vuelva a iniciar la instrucción interrumpida6 Vuelva a iniciar la instrucción interrumpida

Page 22: ADMINISTRADOR DE MEMORIA

Políticas y conceptos de remplazo de paginasPolíticas y conceptos de remplazo de paginas

Política de reemplazo de pagina es crucial para la Política de reemplazo de pagina es crucial para la eficiencia del sistema razón por la cual hay que elegir eficiencia del sistema razón por la cual hay que elegir con cuidado el algoritmos para hacerlo.con cuidado el algoritmos para hacerlo.

Dos de los mas conocidos son el FIFO yDos de los mas conocidos son el FIFO y

(se basa en la teoría se debe eliminar la pagina que ha (se basa en la teoría se debe eliminar la pagina que ha estado mas tiempo en memoria)estado mas tiempo en memoria)

Política de la menos recientemente utilizadaPolítica de la menos recientemente utilizada

(cambia las paginas que recientemente se han usado (cambia las paginas que recientemente se han usado menos)menos)

Page 23: ADMINISTRADOR DE MEMORIA

Conjunto de trabajoConjunto de trabajoUn conjunto de trabajo de una tarea es el conjunto de paginas que Un conjunto de trabajo de una tarea es el conjunto de paginas que residen en la memoria, que permiten acceso directo, sin incurrir en residen en la memoria, que permiten acceso directo, sin incurrir en una falla de pagina.una falla de pagina.

Cuando un usuario solicita la ejecución de un programa, la primera 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 pagina se carga en la memoria y la ejecución continua conforme se cargan mas paginas: las que contienen declaraciones de variables, cargan mas paginas: las que contienen declaraciones de variables, otras que contienen instrucciones, otras que contienen datos, etc.otras que contienen instrucciones, otras que contienen datos, etc.

después de cierto tiempo, la mayor parte de los programas llega a después de cierto tiempo, la mayor parte de los programas llega a un estado razonablemente estable y el procesamiento continua sin un estado razonablemente estable y el procesamiento continua sin problemas, con muy pocas fallas de paginas adicionales. problemas, con muy pocas fallas de paginas adicionales.

al llegar a ese punto, el conjunto de trabajo de la tarea esta en la 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, memoria, y el programa no generará muchas fallas de pagina, hasta que pase a otra fase que requiera un conjunto diferente de hasta que pase a otra fase que requiera un conjunto diferente de paginas para efectuar el trabajo: un conjunto de trabajo diferente.paginas para efectuar el trabajo: un conjunto de trabajo diferente.