Capitulo3

49
CAPÍTULO I: GESTIÓN DE MEMORIA 3.1 Antecedentes 3.2 Espacio de direcciones físico y lógico. 3.3 Requisitos de Gestión de Memoria 3.3.1 Reubicación 3.3.2 Protección 3.3.3 Compartición

Transcript of Capitulo3

Page 1: Capitulo3

CAPÍTULO I: GESTIÓN DE MEMORIA 3.1 Antecedentes3.2 Espacio de direcciones físico y

lógico. 3.3 Requisitos de Gestión de Memoria3.3.1 Reubicación3.3.2 Protección3.3.3 Compartición

Page 2: Capitulo3

Antecedentes de la Gestión de Memoria

La gestión de la memoria es uno de aspectos más complicados del diseño de los SO

Gestionar memoria implica traer y llevar bloques de datos de memoria secundaria.

El SO se encarga de las siguientes actividades relacionadas con la gestión de memoria:

• Saber cuáles partes de la memoria se están usando actualmente y quién las está usando.

• Decidir cuáles procesos se cargarán en la memoria cuando se disponga de espacio.

• Asignar y liberar espacio de memoria según se necesite.

Page 3: Capitulo3

Introducción a la Gestión de MemoriaLa memoria es un conjunto de registros que sirven para almacenar

información.

La memoria se la puede clasificar según:

1. Tecnología de Manufactura2. Ubicación3. Densidad4. Método de Acceso5. Velocidad6. Costo

Clasificación de la memoria según Tecnología de Manufactura

Page 4: Capitulo3

Jerarquía de la Gestión de Memoria

Las memoria rápidas son caras.Las memorias grandes son lentas.

Page 5: Capitulo3

Jerarquía de la Gestión de Memoria

Relación de Capacidad vs Costo

Page 6: Capitulo3

Jerarquía de Memoria

Memoria Real:

La memoria real o principal es en donde son ejecutados 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 esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la información contenida en ella es de más rápido acceso. Solo la memoria caché es más rápida que la principal, pero su costo es a su vez mayor.

Page 7: Capitulo3

Jerarquía de Memoria

Memoria virtual:

1. El uso de almacenamiento secundario para ofrecer al conjunto de las aplicaciones la ilusión de tener más memoria RAM de la que realmente hay en el sistema. 2. Ofrecer a las aplicaciones la ilusión de que están solas en el sistema, y que por lo tanto, pueden usar el espacio de direcciones completo..

Page 8: Capitulo3

Gestor de Memoria

Con los antecedentes anteriores, se puede concluir que los 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.• Maximizar el rendimiento del sistema.• Proporcionar a los procesos mapas de memoria muy grandes.

Page 9: Capitulo3

Espacio de direcciones lógico y físico

Direcciones físicas: Son aquellas que referencian alguna posición en la memoria física.

Direcciones lógicas: Son las direcciones utilizadas por los procesos. 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.

Page 10: Capitulo3

Espacio de direcciones lógico y físico

Page 11: Capitulo3

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 limite es cargado con la dirección física de final.•Cuando una dirección relativa es encontrada es adicionada al registro base y comparada con el registro límite.•Esto provee protección de hardware.•Si está dentro del tamaño del proceso se realiza la traducción, caso contrario se envía una interrupción al Sistema Operativo.

Registro Base: establece la direccion 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 12: Capitulo3

TRADUCCIÓN DE DIRECCIONES Traducción(IdProc, dir_lógica) dir_física

Page 13: Capitulo3

TRADUCCIÓN DE DIRECCIONESReubicación Hardware: la MMU (memory management

unit) se encarga de la traducciónProceso:

Programa se carga en memoria sin modificarEl S.O. almacena por cada proceso su función de traducciónEl S.O. especifica a la MMU qué función aplicar para cada proceso

LO AD R1, #1000LO AD R2, #2000LO AD R3, /1500LO AD R4, [R1]STO RE R4, [R2]INC R1INC R2DEC R 3JNZ /12.................

Memoria

10000100041000810012100161002010024100281003210036..........

Procesador

R. Instrucción

HW traducción

LO AD R3, /1500

1150010000

+1500

PC8

Page 14: Capitulo3

TRADUCCIÓN DE DIRECCIONES Reubicación software: traducción de direcciones durante carga del programa. Esta solución se usa en sistemas sin el hardware específico de traducción (MMU).Proceso:

El programa se carga con las direcciones ya traducidasSe genera un código diferente del programa ejecutable

Desventajas:No asegura protección (no se verifica cada dirección a usar, sino que se usan las direcciones generadas tras el proceso de carga)No permite mover programa en tiempo de ejecución (suponer que es necesaria la reubicación del espacio asignado al proceso, por necesitar más espacio.....)

LO AD R1, #11000LO AD R2, #12000LO AD R3, /11500LO AD R4, [R1]STO RE R4, [R2]INC R1INC R2DEC R 3JNZ /10012.................

M em oria

10000100041000810012100161002010024100281003210036..........

Page 15: Capitulo3

UNIDAD DE MANEJO DE MEMORIA 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.

Page 16: Capitulo3

UNIDAD DE MANEJO DE MEMORIA

•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 17: Capitulo3

INTERCAMBIO Un proceso puede estar continuamente modificando su estado, lo cual implica que muchas veces un mismo proceso está en memoria principal para luego pasar a memoria auxiliar o secundaria, y volver a memoria principal para continuar su ejecución. Este proceso de retirada e incorporación de los procesos de y a la memoria se denomina Intercambio o swapping.

El objetivo del intercambio es dar cabida a la ejecución de más aplicaciones de las que pueden residir simultáneamente en la memoria del sistema:

Por lo que el intercambio consiste en trasladar el código y los datos de un proceso completo de memoria al sistema de almacenamiento secundario, para cargar otro previamente almacenado, no permite a un proceso utilizar más memoria RAM de la que realmente existe en el sistema.

Page 18: Capitulo3

INTERCAMBIO 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.

Page 19: Capitulo3

INTERCAMBIO Las funciones que un intercambiador debe cumplir son: -          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.

Page 20: Capitulo3

REUBICACIÓN

La reubicación se refiere se refiere al hecho de cargar y ejecutar un programa en una posición arbitraria de memoria. Existen dos tipos de reubicación:

- Reubicación estática: cuando un proceso que ha sido bajado a memoria secundaria al ser cargado nuevamente ocupará el mismo lugar en memoria principal donde se ubicaba al inicio; aún cuando el área esté ocupado deberá esperar para poderse colocar. Este esquema no ofrece muchas ventajas. 

Page 21: Capitulo3

REUBICACIÓN

Reubicación dinámica: cuando el proceso se va ha subir en memoria principal puede ser colocado en cualquier partición 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.

Page 22: Capitulo3

PROTECCIÓN

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

Page 23: Capitulo3

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 sinrestricciones a todos los bloques de memoria

Page 24: Capitulo3

COMPARTICIÓN* Utilizar particiones de memoria compartidas (comunes) ¿Protección? - Registros base/límite: requeriría conjuntos separados de pares de registros base/limite dedicados para acceder a los espacio de memoriaprivado y compartido. - Implica la existencia de algún mecanismo que indique encada acceso que conjunto de registros emplear* Claves de protección: requeriría controlar los bloques compartidos para que en los conmutaciones de contexto se cambien las claves de protección - Necesidad de llevar la cuenta de que bloques están siendo .compartidos y ¿por quién?

Page 25: Capitulo3

ASIGNACIÓN CONTIGUA Cuando 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:

Page 26: Capitulo3

ASIGNACIÓN CONTIGUA Existen dos esquemas 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.

Page 27: Capitulo3

ASIGNACIÓN CONTIGUA

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.

Page 28: Capitulo3

ASIGNACIÓN CONTIGUA

Asignación con múltiples particiones: 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.

Page 29: Capitulo3

ASIGNACIÓN DE MEMORIA PARTICIONADA 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.

Page 30: Capitulo3

ASIGNACIÓN DE MEMORIA PARTICIONADA ESTÁTICA

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.

Page 31: Capitulo3

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

Page 32: Capitulo3

TABLA DE DESCRIPCIÓN DE PARTICIONES

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.

Page 33: Capitulo3

TABLA DE DESCRIPCIÓN DE PARTICIONES

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

Page 34: Capitulo3

TABLA DE DESCRIPCIÓN DE PARTICIONES

PPrimer Ajuste Mejor Ajuste Peor Ajuste

Page 35: Capitulo3

ASIGNACIÓN ESTÁTICA

Los algoritmos más utilizados son: Primer Ajuste y Mejor Ajuste. La elección entre estos dos métodos implica escoger entre la velocidad de ejecución y utilización de la memoria.

Cabe indicar que ambos algoritmos deben buscar en las entradas de la TDP para identificar la partición que se ajuste más exactamente.

Las peticiones para asignar particiones pueden provenir de una de dos fuentes principalmente:

1) Las creaciones de nuevos procesos. 2) Las reactivaciones de procesos retirados de memoria.

Page 36: Capitulo3

ASIGNACIÓN ESTÁTICA

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

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.

Page 37: Capitulo3

ASIGNACIÓN ESTÁTICA Protección: Un SO debe estar protegido contra intervenciones no autorizadas de procesos de usuario y prohibir el acceso inadvertido a áreas de de memoria asignadas a otros procesos. En los SO que utilizan registro base para la reubicación, una práctica habitual es utilizar registros límite (dirección virtual más alta de un programa) para la protección.

Page 38: Capitulo3

ASIGNACIÓN ESTÁTICA

En el caso de que haya error se produce una llamada al SO.

Los valores base y límite de cada proceso se guardan normalmente en su BPC; en cada conmutación de proceso estos registros son cargado con los valores requeridos por el nuevo proceso en ejecución.

Otro método de protección es registrar los derechos de acceso en la propia memoria a través de la utilización de claves mediante la cual pueden acceder sin restricciones a todos los bloques de memoria.

Page 39: Capitulo3

ASIGNACIÓN ESTÁTICA

Compartición:

El gestor de memoria debe permitir la compartición de memoria entre procesos cooperativos. Hay tres técnicas básicas de compartición en sistemas con partición fija de memoria:

* Confiar los objetos compartidos al sistema operativo * Mantener múltiples copias de los objetos compartidos, una por cada partición participante. * Utilizar particiones de memoria compartidas.

Page 40: Capitulo3

ASIGNACIÓN ESTÁTICA

Protección:

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

Page 41: Capitulo3

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

Page 42: Capitulo3

PARTICIÓN 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.

Page 43: Capitulo3

PARTICIÓN DINÁMICA

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.

Page 44: Capitulo3

PARTICIÓN DINÁMICA

-  * 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.

Page 45: Capitulo3

PARTICIÓN DINÁMICA

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

* 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.

Page 46: Capitulo3

PARTICIÓN DINÁMICA-  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.

Page 47: Capitulo3

PARTICIÓN DINÁMICA

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

Page 48: Capitulo3

PARTICIÓN DINÁMICA

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

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.

Page 49: Capitulo3

COMPACTACIÓN

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