administrador de memoria
DESCRIPTION
equipo 3TRANSCRIPT
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.
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.
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.
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,
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.
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.
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.
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.
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.
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
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)
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.
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
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.
Diagrama inicial de memoria (a)
Diagrama de memoria después de la
compactación(b)
Administración de memoriaAdministración de memoriaSistemas recientesSistemas recientes
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
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
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
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
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
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)
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.