19
Gestión de Memoria (Manejo de Memoria Principal y/o Secundaria) La memoria es un conjunto de registros que sirven para almacenar información. La memoria se puede clasificar según: 1. Tecnología de Manufactura 2. Ubicación 3. Densidad 4. Método de acceso 5. Velocidad 6. Costo Capacidad vs Costo La diferencia de estas memorias es el costo de las mismas según su clasificación y velocidad para acceder a los registros, mientras más veloces sean serán más costosas y por consiguiente serán de menor capacidad y mientras más lentas sean serán de menor costo y de mayor capacidad. Memoria real Memoria real o principal es el espacio donde se ejecutan los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. Por lo general el costo de esta memoria es más alto que el de la memoria secundaria ya que el acceso a los registros contenidos en ella es más rápido, solo la memoria Caché es más rápida que esta, pero como anteriormente se mencionó su costo es más alto. Jerarquía de memoria

UNO Gestión de Memoria

Embed Size (px)

Citation preview

Page 1: UNO Gestión de Memoria

Gestión de Memoria (Manejo de Memoria Principal y/o Secundaria)La memoria es un conjunto de registros que sirven para almacenar información.

La memoria se puede clasificar según:

1. Tecnología de Manufactura2. Ubicación3. Densidad4. Método de acceso5. Velocidad 6. Costo

Capacidad vs CostoLa diferencia de estas memorias es el costo de las mismas según su clasificación y velocidad para acceder a los registros, mientras más veloces sean serán más costosas y por consiguiente serán de menor capacidad y mientras más lentas sean serán de menor costo y de mayor capacidad.

Memoria realMemoria real o principal es el espacio donde se ejecutan los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos.

Por lo general el costo de esta memoria es más alto que el de la memoria secundaria ya que el acceso a los registros contenidos en ella es más rápido, solo la memoria Caché es más rápida que esta, pero como anteriormente se mencionó su costo es más alto.

Jerarquía de memoriaEl almacenamiento secundario es para ofrecer a las aplicaciones la ilusión de tener más memoria RAM de la que realmente existe en el sistema.

Ofrece a las aplicaciones la ilusión de que están solas en el sistema y que pueden usar el espacio de direcciones completo.

Gestor de MemoriaLos objetivos del Gestor de Memoria son:

Ofrecer a cada proceso un espacio Lógico Propio Proporcionar protección entre los procesos Permitir que los procesos compartan memoria Dar soporte a las distintas regiones del proceso

Page 2: UNO Gestión de Memoria

Maximizar el rendimiento del sistema Proporcionar a los procesos mapas de memoria muy grandes.

Espacio de direcciones Lógico y FísicoDirecciones Físicas: Son aquellas que referencias alguna posición en Memoria Física

Direcciones Lógicas: Son las direcciones utilizadas por los procesos y que sufren una serie de transformaciones, realizadas por el Procesador (La MMU), antes de convertirse en direcciones físicas.

Las direcciones lógicas son direcciones generadas por la CPU.

Ejemplo de espacio y direcciones lógico y Físico

Traducción de Direcciones Cuando un proceso es asignado al estado de ejecución, un registro base (en la CPU)

es cargado con la dirección física de inicio del proceso. Un registro límite es cargado con la dirección física de final. Cuando una dirección relativa es encontrada es adicionada al registro base y es

comparada con el registro límite. Esto provee protección de Hardware. Si está dentro del tamaño del proceso de realiza la traducción en caso contrario se

envía una interrupción al SO.

Registro base: Establece la dirección física donde comienza el espacio de memoria del proceso.

Registro límite: Establece la dirección donde termina el espacio de memoria del proceso, en relación al registro base.

Page 3: UNO Gestión de Memoria

Ejemplo de Registro base y Registro Límite:

Traducción (IdProc, dir_lógica) dir_física

IntercambioUn proceso puede continuamente modificar su estado, lo cual significa que puede pasar de estar en memoria principal a estar en memoria secundaria y viceversa para continuar así con su ejecución a este proceso de retirada e incorporación se le denomina Retirada o Swapping.

El objetivo de este denominado Intercambio o Swapping es dar cabida a la ejecución de mas proceso de los que puede contener la memoria del sistema por lo cual el Intercambio o Swapping consiste en: Trasladar el código y los datos de un proceso de la memoria al sistema de almacenamiento secundario para cargar un proceso previamente almacenado, esto no permite a un proceso utilizar más memoria RAM de la que realmente existe en el sistema.

Ejemplo de Intercambio:

Page 4: UNO Gestión de Memoria

El lugar de almacenamiento temporal suele ser un espacio suficientemente grande como para acomodar copias de las imágenes de memoria de todos los usuarios.

Las funciones de un intercambio son las siguientes:

Selección de los procesos para retirarlos de memoria Selección de procesos para incorporarlos a memoria Gestión y asignación del espacio de Intercambio

Reubicación

Existen dos tipos de reubicación:

Reubicación Estática: es cuando un proceso que ha sido bajado a memoria secundaria al ser cargado nuevamente ocupará el mismo lugar de memoria principal donde se encontrado ubicado antes de ser bajado a memoria secundaria, aun cuando el área de memoria principal se encuentre ocupado este deberá esperar para poderse colocar nuevamente.

Este esquema no ofrece muchas ventajas.

Page 5: UNO Gestión de Memoria

Reubicación Dinámica: Cuando el proceso de sube a memoria principal puede ser colocado en cualquier espacio de memoria libre.

En este caso es necesario realizar un reasignación de direcciones cada vez que el programa se ejecute. Este esquema resulta costoso por el hardware que se utiliza, así como aumenta el tiempo de acceso a memoria.

Protección* Para garantizar seguridad, el hardware puede trabajar con un par de registros base/límite.

Ejemplo diagrama de protección:

* Registrar los derechos de acceso en la propia memoria

A cada dirección se le añade un número de bits para identificar al propietario Problema: costoso Mejora: Asociar estos bits a bloques de memoria física Comprobación: tiempo de ejecución SO => Clave “maestra” única que le da acceso sin restricciones a todos los bloques

de memoria

Asignación ContiguaCuando hablamos de asignación contigua significa que cada objeto lógico es colocado en un conjunto de posiciones de memoria con direcciones estrictamente consecutivas.

Un espacio de memoria se divide generalmente en dos: una parte destinada para el Sistema Operativo residente y otra destinada a proceso del usuario; tal como se ve en la siguiente figura:

Ejemplo gráfico de Asignación Contigua:

Page 6: UNO Gestión de Memoria

Existen dos tipos de manejo:

Asignación con una sola partición.

En este caso, en el espacio correspondiente a los procesos de usuario se carga un solo proceso a la vez; estos procesos se los conoce como procesos transitorios.

El sistema operativo gasta poco tiempo y esfuerzo en gestionar la memoria de este modo. Básicamente el SO necesita llevar la cuenta de las posiciones primera y última disponibles para la asignación de procesos transitorios.

Cuando un proceso transitorio termina, el SO puede cargar otro para que se ejecute. El SO debe asegurarse que el tamaño de la imagen de procesos a cargar esté dentro de los límites de la memoria disponible, caso contrario se no se puede cargar el proceso.

El proceso anuncia su terminación y transfiere el control al SO invocando el servicio TERMINAR (EXIT) o su equivalente; en cuyo momento puede cargarse otro proceso que esté esperando.

Un monitor monoproceso raramente soporta protección entre procesos de usuario, ya que en cada momento sólo permite que haya un único proceso residente en memoria. Sin embargo es deseable proteger el código del sistema operativo para que no sea deteriorado por el proceso transitorio en ejecución, sino está protegido, el sistema puede caerse frecuentemente y necesitar ser arrancado de nuevo cuando se ejecutan programas de usuario sin depurar.

Este tipo de asignación fue usada en PCs basadas en DOS.

Asignación con múltiples particiones

Page 7: UNO Gestión de Memoria

La técnica anterior permita la ejecución de un solo proceso de usuario a la vez. Sin embargo, lo que se requiere generalmente es que existan varios procesos en memoria.

 

Uno de los esquemas consiste en dividir la memoria en varias particiones de tamaño fijo, ubicando un proceso en cada partición.

La división puede realizarse de manera estática y dinámica.

Asignación de memoria particionada de forma Estática

Se divide a la memoria principal en un conjunto de regiones no sobrepuestas llamadas particiones. Las particiones se efectúan en algún momento antes de ejecutar los programas de usuario y desde ahí las particiones permanecen fijas.

El número de particiones distintas representan un límite superior al número de procesos activos en el sistema. A este valor se le puede denominar grado de multiprogramación.

Principios de Operación:

Cualquier proceso cuyo tamaño sea menor o igual que el tamaño de una partición puede ser cargado.

Si todas las particiones están ocupadas, el Sistema Operativo puede intercambiar un proceso fuera de una partición

Un programa puede ser demasiado grande para caber en una partición. El programador debe entonces diseñar el programa con soporte para overlays (uso de la memoria principal es ineficiente).

Un programa, cualquiera sea su tamaño ocupa una partición entera. Esto es llamado fragmentación interna. El esquema de particiones no iguales disminuye el problema pero no lo elimina.

Tabla de descripción de particiones

El Sistema Operativo maneja una estructura en la cual se señala que partes de la memoria están disponibles y cuáles ocupadas; ésta estructura se conoce como TDP (Tabla de Descripción de Particiones).

Ejemplo gráfico de tabla de descripción de particiones:

Page 8: UNO Gestión de Memoria

Las particiones se asignan a procesos nuevos y a procesos que han sido suspendidos y retirados de memoria y nuevamente están activos.

Puesto que en algún momento dado existe un conjunto de espacios libres o huecos de diferentes tamaños dispersos en memoria. De ahí surge un problema, como asignar memoria a un proceso de tamaño n a partir de una lista de huecos libres. Esto se puede resolver a través de los siguientes algoritmos:

Primer ajuste: asignar el primer hueco que tenga el tamaño suficiente. Mejor ajuste: asignar el hueco más pequeño que tenga tamaño suficiente. Peor ajuste: asignar el hueco más grande.

Ejemplo algoritmos de ajuste: A partir del siguiente mapa de memoria, debemos ubicar el Pn= 70Kb utilizando los tres algoritmos mencionados

Page 9: UNO Gestión de Memoria

Existen situaciones que impiden que se pueda asignar memoria a un proceso, las más comunes son:

Primer Ajuste Mejor Ajuste Peor Ajuste

Page 10: UNO Gestión de Memoria

1) Ninguna partición es suficientemente grande para acomodar el nuevo proceso.2) Todas las particiones están asignadas.3) Algunas particiones están libres, pero ninguna de ellas es lo suficientemente grande

para acomodar el proceso.

Asignación de memoria particionada de forma Dinámica

El número de particiones y su tamaño es variable, las cuales son creadas dinámicamente para que se acomoden a las necesidades de cada proceso solicitante.

Cuando un proceso termine o sea retirado de memoria el gestor de memoria puede devolver el espacio vacante al fondo de áreas de memoria libres a partir del cual se efectúan las asignaciones de particiones.

El gestor de memoria puede continuar creando y asignando particiones a procesos solicitantes hasta que agote toda la memoria física o alcance el máximo grado de multiprogramación permitido.

Principios de Operación:

Cuando se le pide que carge una imagen de proceso, el módulo de gestión de memoria del SO intenta crear una partición adecuada para asignar al proceso solicitante.

Para lo cual se debe localizar un área libre contigua de memoria que sea igual o mayor que el tamaño del proceso, si se encuentra un área libre adecuada.

El SO fabrica una partición a partir de ella para conseguir un ajuste exacto a las necesidades del proceso, el trozo restante de memoria libre, es devuelto al fondo de la memoria libre para ser usado posteriormente por el módulo asignación.

La partición se crea introduciendo su base, tamaño y estado (ASIGNADA) en la TDP.

* Si no es posible asignarle un área libre adecuada, el SO devuelve una indicación de error.

* Cuando un proceso termina o es retirado de memoria, el SO devuelve el espacio de la partición al fondo de la memoria libre e invalida la entrada correspondiente a la TDP.

* Cuando una partición es creada se le atribuyen dirección, tamaño y base los cuales permanecen inalterados hasta que exista la partición.

* Las áreas libres de memoria se producen al terminar de usar particiones y con los restos generados por la creación de particiones.

* Para la creación y asignación de particiones el SO debe llevar la cuenta de las direcciones iniciales y el tamaño de cada área libre de memoria.

A continuación se citan el proceso de creación de las particiones:

Page 11: UNO Gestión de Memoria

* El sistema es inicializado declarando como libre toda la memoria disponible para asignación dinámica y marcando como no USADA todas las entradas de la TDP.

*La lista de espacio libre contiene una sola entrada: toda la memoria disponible formando un solo bloque contiguo. Desde ese momento, la creación de una partición P de tamaño P_TAMAÑO se efectúa así:

Buscar en la lista de memoria libre un área libre L, tal que L_TAMAÑO ≥ P_TAMAÑO, en caso de no encontrar ninguna se termina con un error.

Calcular DIFE=L_TAMAÑO – P_TAMAÑO. Si DIFE ≤ c; donde c es una constante (pequeña), asignar entonces el área libre entera para crear la partición P haciendo P_TAMAÑO= L_TAMAÑO y P_BASE=L_BASE, ajustando los enlaces de los bloques adyacentes en la lista de memoria libre.

Si DIFE > c; entonces asignar espacio a la partición P en el bloque L, haciendo P_BASE= L_BASE, en donde L_BASE= P_BASE + P_TAMAÑO, y L_TAMAÑO= L_TAMAÑO – P_TAMAÑO.

Encontrar una entrada no utilizada en la TDP y anotar en ella la base (P_BASE) y el tamaño (P_TAMAÑO). Cambiar el estado a asignada.

Anotar el número de entrada en la TDP en el bloque de control del proceso, T, para el cual se está creando la partición P.

Los Algoritmos más habituales para la selección de un área libre de memoria en la creación de una partición son:

* Primer Ajuste y su variante, siguiente ajuste.

* Mejor Ajuste.

* Peor Ajuste.

Siguiente ajuste

El siguiente ajuste es una modificación del primer ajuste en donde el puntero a lista de memoria libre se guarda después de una asignación y se utiliza para comenzar a partir de él búsqueda de la asignación siguiente; en donde la siguiente búsqueda continúa en donde se quedó la última, en vez de comenzar siempre desde el principio de la lista de memoria libre.

El primer ajuste y el mejor ajuste se encuentran entre los algoritmos más populares para asignación dinámica de memoria; así el primer ajuste recorre la mitad de la lista de memoria libre entera siendo más rápido pero no minimiza la memoria desaprovechada para una asignación determinada; en cambio el mejor ajuste es más lento y tiende a producir bloques de restos libres pequeños que puedan resultar demasiado pequeños para asignaciones posteriores.

Las particiones pueden terminarse después de un intercambio o tras la finalización del proceso R de la siguiente forma:

Page 12: UNO Gestión de Memoria

UPasar el bloque del control de R para localizar la entrada en TDP, TDP[BCP[R]], que describe la partición P que va a ser anulada.

Si el proceso R va a ser retirado de memoria, copiar su imagen en tiempo de ejecución desde la partición P al lugar designado en el archivo de intercambio.

HHacer que el puntero [BCP[R]], a la partición asignada tome el valor de NINGUNA.

DDevolver P a la lista de memoria libre, e integrarla con las áreas libres vecinas si es posible.

IInvalidar la entrada en TDP que describe la partición anulada.

La integración de áreas libres adyacentes cuando se devuelven bloques libres es un método normalmente utilizado para reducir la fragmentación, y consecutivamente la cantidad de memoria desaprovechada.

La compactación de memoria es utilizada para solucionar la memoria fragmentada, la cual consiste en reubicar algunas o todas las particiones en un extremo de la memoria y así combinar los huecos en un área libre grande. La compactación puede realizarse siempre que sea posible o sólo cuando sea necesaria.

Existen dos clases de traslados de las particiones: selectivo y global.

Glosario

Page 13: UNO Gestión de Memoria

MMU La unidad de manejo de memoria (MMU) es parte del procesador. Sus funciones son:

• Convertir las direcciones lógicas emitidas por los procesos en direcciones físicas.

• Comprobar que la conversión se puede realizar. La dirección lógica podría no tener una dirección física asociada. Por ejemplo, la página correspondiente a una dirección se puede haber trasladado a una zona de almacenamiento secundario temporalmente.

• Comprobar que el proceso que intenta acceder a una cierta dirección de memoria tiene permisos para ello.

• La MMU se inicializa para cada proceso del sistema. Esto permite que cada proceso pueda usar el rango completo de direcciones lógicas (memoria virtual), ya que las conversiones de estas direcciones serán distintas para cada proceso.

Page 14: UNO Gestión de Memoria

Universidad Mariano Gálvez de Guatemala

Facultad de Ingeniería

Nombre: Josué David Tujal García

No. Cané: 3090-08-17089

Gestión de Memoria(Manejo de Memoria Principal y/o Secunaria)

Cuso: Estructura de Datos

Catedrático: Atilio Maltez