Gestion de memoria

Download Report

Transcript 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.
Ofrece a cada proceso un espacio lógico
propio.
Proporcionar protección entre los procesos
Permitir que los procesos compartan memoria
Maximizar el rendimiento del sistema
Es un sistema
con
multiprogramaci
ón es necesario
proteger al
sistema
operativo y a los
otros procesos
de posibles
accesos que se
puedan realizar
a sus espacios
de direcciones.
Compartición
Protección
Reubicación
En un sistema
multiprogramad
o la memoria se
encuentra
compartida por
varios procesos,
por lo tanto, los
procesos deben
ser cargados y
descargados de
memoria.
En ciertas
ocasiones, bajo
la supervisión y
el control del
sistema
operativo,
pueden ser
provechosos
que los
procesos
puedan
compartir
memoria.
Organización física
Organización lógica
Tanto la memoria
principal como la
secundaria presentan
una organización física
similar, como un
espacio de direcciones
lineal y unidimensional.
Debe existir una cierta
correspondencia entre
el S.O. y el hardware
al tratar los datos y los
programas de los
usuarios de acuerdo a
la estructura lógica que
ellos presenten.
Debe ser parte de la
gestión de memoria, la
organización del flujo
de información entre la
memoria principal y la
memoria secundaria.
1. Paginación
2. Segmentación
3. Asignación Estáticas / Dinámicas
4. Memoria Virtual
5. Direccionamiento de Memorias
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.
- 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.
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:
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:
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 un conjunto de bits que especifican
que tipo de accesos están
permitidos. Típicamente, se controla
el acceso 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
de marco es irrelevante.
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) activa
este 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
acelerar el acceso a las direcciones de esta página.
Ventaja / Desventaja
No tiene fragmentación
externa
Hay una pequeña
cantidad de
fragmentación interna
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.
- 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 dos componentes: número de
segmento y offset.
- Los segmentos pueden tener tamaños diferentes.En el 80x86: mov eax,
ds:esi.
- Para localizar el dato: selector DS y desplazamiento SI
Enlace dinámico
entre
segmentos
Modularidad de
programas
Objetivos Alcanzados
con la segmentación
Estructuras de
datos de largo
variable
Compartición
Protección
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.
- 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.
Compila módulos
separados.
Comparte los
segmentos.
Conoce las unidades
lógicas
Modificación de los
cambios dentro de un
modulo
Los segmentos
crecen
dinámicamente
Define segmentos
que aun no existan
- 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.
- 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ónPaginada, sin embargo esta también tiene desventajas y ventajas.
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.
Ejemplo de una partición estática en una memoria de 64 MB
Descripción
• La memoria
principal se
divide en un
conjunto de
particiones
estáticas,
durante la
generación del
sistema.
• Un proceso se
puede cargar en
una partición de
igual o mayor
tamaño.
Ventajas
• Sencilla de
implementar,
poca
sobrecarga del
sistema
operativo.
Desventajas
• Empleo
ineficiente de la
memoria debido
a la
fragmentación
interna.
• El número de
procesos
activos es fijo.
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.
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.
• No hay
fragmentación
interna.
• Uso más
eficiente de la
memoria
principal.
Desventajas
Ventajas
Descripción
• Las particiones
se crean
dinámicamente,
de forma que
cada proceso se
carga en una
partición de su
mismo tamaño.
• Uso ineficiente
del procesador
debido a la
compactación
para
contrarrestar la
fragmentación
externa.
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.
- 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
(direcciones reales).
disponibles
en
la
memoria
principal
- 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.
Un espacio de direcciones virtuales es mayor que el espacio de
direcciones reales.
1 Byte = 8 bits
1 K = 1024 Bytes
1 Mega = 1024 Kbytes
1 Giga = 1024 MBytes
1 Tera = 1024 GBytes
1 Peta = 1024 TBytes
- 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.
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.
- 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.
- 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.
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).
Directo
Indirecto
Relativo
Indexado
Registro
Indirecto
Inmediato
Inherente
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.
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.
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.
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.
Es la parte de dirección de la instrucción,
contiene no la dirección del operando sino el
mismo operando.
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.