E N D
GESTION DE MEMORIA La Gestión de Memoria es una tarea realizada por el Sistema Operativo de un computador que consiste en cargar y descargar procesos en memoria principal para que sean ejecutados. Para ello el S.O. gestiona lo que se conoce como MMU o Unidad de Administración de Memoria, el cual es un dispositivo hardware que transforma las direcciones lógicas en físicas.
TECNICAS DE GESTION DE MEMORIA Paginación Segmentación Asignación Estáticas / Dinámicas Memoria Virtual Direccionamiento de Memorias
PAGINACIÓN Consiste que la memoria principal se divida en un conjunto de marcos de igual tamaño. Cada proceso se divide en páginas de igual tamaño que los marcos. Un proceso se carga situando todas sus páginas en marcos libres pero no necesariamente contiguos.
PAGINACIÓN - La memoria física se divide en bloques de amaño fijo que llamamos marcos. - La memoria virtual se divide en bloques del mismo tamaño llamados páginas. - Los programas se dividen en páginas. - Al ejecutar un proceso se cargan sus páginas en los marcos.
PAGINACIÓN Tablas de páginas • Son tablas que contienen (para cada proceso) el número marco que corresponde a cada página virtual del proceso . • - Estructura de una entrada de la Tabla de Páginas:
PAGINACIÓN Tablas de páginas • Tamaño de página viene definido por el Hardware y suele ser una potencia de 2 que varía entre 512 y 16M . • - Ej. simplificado: Direccionamiento de un espacio virtual de 64K, distribuido en 16 páginas de 4K:
PAGINACIÓN Cada entrada de la tabla de páginas, además del número de marco que corresponde con esa página, contiene información adicional como la siguiente: -Información de protección: Es unconjunto de bitsque especifican quetipode accesos están permitidos.Típicamente, se controla elacceso de lectura, de ejecución y de escritura. - Indicación de página válida: Es un bit que especifica si esa página es válida, en el caso de que no lo sea, la información del número demarco es irrelevante.
PAGINACIÓN En la entrada de la tabla de páginas puede haber información adicional, tal como la siguiente: - Indicación de página accedida. • La MMU (Memory Management Unit o unidad de gestión de memoria) activaeste bit indicando cuando se accede a una dirección lógica que pertenece a esa página. -Indicación de página modificada. La MMU activa este bit indicando cuando se escribe en una dirección lógica que pertenece a esa página. -Desactivación de cache. Este bit indica que no debe usarse, la cache de la memoria principal para acelerarel acceso a las direcciones de esta página.
SEGMENTACIÓN Es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su división lógica; llevándose a cabo una agrupación lógica de la información en bloques de tamaño variable denominados segmentos.
CARACTERISTICAS • - Los bloques de un proceso (código, datos, pila, DLLs, etc.) pueden estar situados en áreas de memoria no contiguas. • - Suministra reubicación dinámica. • - Protección y uso compartido. • - Cada segmento empieza en una dirección virtual fija (reubicación). • - Las direcciones en estos sistemas tienen doscomponentes: número de segmento y offset. • - Los segmentos pueden tener tamaños diferentes.En el 80x86: moveax, ds:esi. • - Para localizar el dato: selector DS y desplazamiento SI
OBJETIVOS Modularidad de programas Enlace dinámico entre segmentos Objetivos Alcanzados con la segmentación Compartición Estructuras de datos de largo variable Protección
COMPARTICIÓN DE SEGMENTOS Una de las ventajas de la segmentación sobre la paginación es que se trata más de un hecho lógico que físico. En un sistema de segmentación, una vez que un segmento ha sido declarado como compartido, entonces las estructuras que lo integran pueden cambiar de tamaño. Lo anterior no cambia el hecho lógico de que residen en un segmento compartido. Dos procesos pueden compartir un segmento con solo tener entradas en sus tablas generales que apunten al mismo segmento del almacenamiento primario.
BLOQUES • - No necesitan ser de igual tamaño. • - Los bloques separados no necesitan ser adyacentes. • - Deben estar compuestos de posiciones contiguas de almacenamiento. • Sin embargo se complica la protección de bloques de memoria de un proceso de usuario. • Es más difícil limitar el rango de acceso de cualquier programa.
VENTAJAS Compila módulos separados. Comparte los segmentos. Conoce las unidades lógicas Los segmentos crecen dinámicamente Define segmentos que aun no existan Modificación de los cambios dentro de un modulo
DESVENTAJAS - Hay un incremento en los costos de hardware y de software para llevar a cabo la implantación, así como un mayor consumo de recursos: memoria, tiempo de CPU, etc. - Debido a que los segmentos tienen un tamaño variable se pueden presentar problemas de fragmentación externas, lo que puede ameritar un plan de reubicación de segmentos en memoria principal. - Se complica el manejo de memoria virtual, ya que los discos almacenan la información en bloques de tamaños fijos, mientras los segmentos son de tamaño variable. Esto hace necesaria la existencia de mecanismos más costosos que los existentes para paginación.
DESVENTAJAS - Permite que los segmentos varíen de tamaño, puede ser necesarios planes de reubicación a nivel de los discos, si los segmentos son devueltos a dicho dispositivo; lo que conlleva a nuevos costos. - No se puede garantizar, que al salir un segmento de la memoria, este pueda ser traído fácilmente de nuevo, ya que será necesario encontrar nuevamente un área de memoria libre ajustada a su tamaño. - La compartición de segmentos permite ahorrar memoria, pero requiere de mecanismos adicionales de hardware y software. Estas desventajas bien pueden ser minimizadas por la Segmentación- Paginada, sin embargo esta también tiene desventajas y ventajas.
ASIGNACIONES ESTÁTICAS Se basa en una gran reserva de memoria donde se van asignando los elementos del programa de forma contigua; a diferencia de la asignación estática, se encuentra la asignación dinámica asigna una dirección base a cada elemento a partir de la cual se va configurando la estructura de datos. Y la tercera tenemos la asignación mixta la cual es una combinación de las dos anteriores para aprovechar sus ventajas realizando una asignación estática-dinámica.
ASIGNACIONES ESTÁTICAS Ejemplo de una partición estática en una memoria de 64 MB
ASIGNACIÓN DE MEMORIA EN PARTICIÓN ESTÁTICA
Asignaciones Dinámicas Es una asignación a una dirección base de cada elemento a partir de la cual se va configurando la estructura de datos; a diferencia de la asignación dinámica, se encuentra la asignación estática, la cual se basa en una gran reserva de memoria donde se van asignando los elementos del programa de forma contigua. Luego tenemos la asignación mixta la cual es una combinación de las dos anteriores para aprovechar sus ventajas realizando una asignación estática-dinámica.
Asignación de memoria con particiones dinámicas • Consiste en determinar en qué hueco ubicar un nuevo proceso. Para esto existen tres algoritmos: mejor ajuste, primer ajuste o próximo ajuste. • - Mejor ajuste: consiste en ubicar el proceso en el espacio de memoria que más se ajuste a su tamaño. • - Primer ajuste: consiste en ubicar el proceso en el primer hueco disponible, recorriendo desde el inicio de la memoria, cuyo tamaño sea suficiente para el proceso. • - Próximo ajuste: consiste en ubicar el siguiente hueco disponible, que sea suficientemente grande, a partir de la última asignación de memoria.
MEMORIA VIRTUAL Es una técnica para proporcionar la simulación de un espacio de memoria mucho mayor que la memoria física de una máquina. Esta "ilusión" permite que los programas se hagan sin tener en cuenta el tamaño exacto de la memoria física. El espacio de direcciones virtual, está mapeado de tal forma que una pequeña parte de él, está en memoria real y el resto almacenado en el disco.
DESCRIPCIÓN - Se refiere a la capacidad de obtener acceso a direcciones de un espacio de memoria mucho mayor que el que dispone la memoria principal. - Los métodos más comunes para implementar la memoria virtual son la paginación y la segmentación. - En un sistema de memoria virtual las direcciones generadas por los programas en ejecución (direcciones virtuales) no son necesariamente las disponibles en la memoria principal (direcciones reales).
DESCRIPCIÓN - Los procesos hacen referencia a direcciones virtuales, estos se deben ejecutar en la memoria real. - Es preciso establecer una correspondencia entre las direcciones virtuales y las reales durante la ejecución de un proceso. Tal correspondencia se realiza mediante mecanismos de traducción dinámica de direcciones. - Las direcciones contiguas en la memoria virtual de un proceso, no son necesariamente contiguas en la memoria real.
NIVELES DE ALMACENAMIENTO Un espacio de direcciones virtuales es mayor que el espacio de direcciones reales. UNIDADES DE MEDIDA DE MEMORIA 1 Byte = 8 bits 1 K = 1024 Bytes 1 Mega = 1024 Kbytes 1 Giga = 1024 MBytes 1 Tera = 1024 GBytes 1 Peta = 1024 TBytes
CORRESPONDENCIA DE BLOQUES - Los mecanismos de traducción dinámica de direcciones deben mantener mapas de correspondencias de traducción de direcciones. - Las correspondencias se establecen a nivel de bloques de igual tamaño o de diferente tamaño. - Las direcciones son bidimensionales. - Cada proceso tiene su propia tabla de correspondencias de bloques.
ESTUDIO DE LA MEMORIA VIRTUAL Posición de memoria: Unidad elemental de almacenamiento de una memoria. En un microcomputador cada posición de memoria almacena 8 bits (1 Byte), cuya combinación codifica el dato que almacena (generalmente 1 carácter). Dirección de memoria: Nombre o referencia que tiene cada Posición de memoria.
VENTAJAS • - Los programas se pueden ejecutar por partes, la memoria lógica puede ser mayor que la real disponible. • - Puesto que cada programa ocupa menos memoria real, se puede elevar el índice de multiprogramación y, por tanto, la eficiencia del sistema. • - Al cargar menos cantidad de cada programa se necesitan menos operaciones de entrada y salida para las operaciones de carga e intercambio de los mismos.
VENTAJAS - Permite gestionar más eficientemente la memoria física. Cualquier espacio libre, incluso una única página, puede ser aprovechado para cargar un nuevo programa y comenzar a ejecutarlo. Por otra parte, si una página de un programa no hace referencia durante la ejecución, no habrá que cargarla. - La independencia de los programas con respecto a la máquina es completa. Además del direccionamiento virtual que aporta la paginación, la cantidad de memoria física disponible para ejecutar el programa sólo es relevante para la velocidad de ejecución del programa.
Direccionamiento de Memoria Es un identificador único para una ubicación de la memoria con las cuales un CPU u otros dispositivos puede almacenar, modificar o recuperar datos de la misma. Tanto la memoria física como la memoria virtual emplean direccionamiento o direcciones de memoria para acceder a sus datos. En la memoria física, la dirección accede a la memoria RAM real (los chips RAM incorporados a la placa madre), y la dirección de memoria virtual hace referencia a un espacio del disco duro que simula memoria RAM (el archivo de paginación).
Direccionamiento Directo La instrucción contiene la dirección de la posición de memoria donde se encuentra el operando La dirección contiene no la dirección donde se encuentra el operando, sino la dirección donde se encuentra la dirección del operando. Direccionamiento Indirecto
Direccionamiento Relativo Es la parte dirección de la instrucción contiene el número N. En memoria la dirección del operando se encuentra sumando el numero N al número del contador del programa. Direccionamiento Indexado Es la parte dirección de la instrucción contiene un número N que puede ser positivo o negativo. Sin embargo para utilizar el direccionamiento indexado, el computador debe estar equipado con un registro especial empleado para permitir direccionamiento indexado, y denominado naturalmente registro índice. La posición de memoria donde se localiza el operando se encuentra mediante la suma I + N.
Registro Indirecto Este registro contiene la dirección de memoria del operando. Una instrucción que invoque realmente direccionamiento de registro indirecto, no tiene bits significativos en su parte dirección. En lugar de ello, la instrucción completa se incluye en los bits asignados a la parte de operación de la instrucción. Direccionamiento Inmediato Es la parte de dirección de la instrucción, contiene no la dirección del operando sino el mismo operando.
Direccionamiento Inherente Es una dirección que es parte de una instrucción se refiere a una posición de memoria. Cuando una instrucción indica una fuente o un destino de datos y no se direcciona específicamente, ya no se hace referencia a la posición de memoria, se dice que la instrucción tiene una dirección inherente.