Title: Tema 5: Gestin de Memoria
1Tema 5 Gestión de Memoria
- 1.- Introducción
- 2.- Requisitos de la Gestión de Memoria
- 3.- Direccionamiento
- 3.1.- Correspondencia estática en tiempo de
compilación - 3.2.- Correspondencia estática en tiempo de carga
- 3.3.- Correspondencia estática en tiempo de
ejecución - 3.4.- Espacio de direcciones lógicas versus
físicas - 4.- Gestión de la memoria
- 4.1 Asignación contigua
- 4.1.1 Monitor de un solo proceso
- 4.1.2 Múltiples particiones
- 4.2 Asignación no contigua
- 4.2.1 Paginación
- 4.2.2 Segmentación
- 4.2.3 Segmentación paginación
21. Introducción
- Memoria Principal
- Área de almacenamiento dividido en unidades a las
que se puede referenciar a través de una
dirección. - Recurso básico Para que un programa se ejecute
debe encontrarse en memoria principal, al menos,
una parte - Gestor de Memoria
- Parte del Sistema Operativo que se encarga de las
tareas relacionadas con la administración de la
Memoria Principal. - Dependencia total del Hardware
- Según sea este, será el tipo de gestión de
memoria - Tareas del Gestor de Memoria
- Asignación de Memoria Principal a los procesos
que la solicitan - Localización de espacios libres, y ocupados
- Aprovechamiento máximo de dicha memoria
- Relación con otras partes del sistema operativo
- Planificadores
32. Requisitos de un Sistema de Gestión de Memoria
- Reubicación o Correspondencia
- El programador debe trabajar al margen de la
localización de su código en memoria - El gestor de memoria (HWSW) debe establecer la
correspondencia de direcciones lógicas y físicas - Protección
- El gestor de memoria debe proteger las zonas
asignadas a cada proceso de accesos por parte de
terceros. - Compartición
- El gestor de memoria debe permitir compartición
de memoria entre varios procesos. - Organización lógica
- El gestor de memoria debe comprender la
organización lógica formada por módulos que
tienen los programas (texto, datos,
procedimientos, pila...) - Organización física
- Debe encargarse de la localización de espacios
libres en memoria principal donde cargar los
programas. - Debe poder proporcionar un mecanismo para poder
ejecutar programas cuyo tamaño supere el de la
propia memoria principal (Memoria Virtual)
43. Direccionamiento3.1. Correspondencia estática
en tiempo de compilación
Programa Fuente
Compilación y Enlazado
Ejecutable
Direcciones reales
Módulo de Carga
Proceso en Memoria
Direcciones reales
53.2 Correspondencia estática en tiempo de carga
Programa Fuente
Compilación y Enlazado
Direcciones relativas al comienzo del programa
Ejecutable
Módulo de Carga
Direcciones relativas al comienzo del programa
Proceso en Memoria
63.3 Correspondencia estática en tiempo de
ejecución
Programa Fuente
Compilación y Enlazado
Direcciones relativas al comienzo del programa.
Ejecutable
Módulo de Carga
Direcciones relativas al comienzo del programa.
Proceso en Memoria
Mueve proceso a otra zona de memoria
Reubicador
73.4. Espacio de direcciones lógicas versus físicas
- Dirección lógica
- Referencia a posición de memoria independiente de
la asignación actual de datos - Generada por la CPU
- Espacio de direcciones lógicas
- Conjunto de direcciones generadas por un programa
- Dirección física
- Designa posición real de la memoria principal
- Aquella cargada en el registro de direcciones de
la memoria - Espacio de direcciones físicas
- Conjunto de posiciones de memoria
correspondientes a las direcciones lógicas
84. Gestión de la memoria
- Evolución histórica de métodos de organización
hasta llegar a la Memoria Virtual - Esquemas de asignación
- Memoria Real
- Asignación contigua
- Sistemas de un solo proceso
- Sistemas de multiprogramación
- Con particiones fijas
- Código absoluto
- Código reubicable
- Con particiones variables
- Asignación no contigua
- Paginación simple
- Segmentación simple
- Segmentación paginación simple
- Memoria virtual
- Paginación por demanda
- Segmentación por demanda
94.1. Asignación contigua de memoria
- 4.1.1. Monitor de un solo proceso
- Dos áreas contiguas
- Sistema Operativo (parte residente) (monitor)
- Situado habitualmente en la parte inferior
- Donde residen los vectores de interrupción
- Área de procesos transitorios
- Se coloca un único proceso de usuario
- Se elimina cuando finaliza y antes de cargar otro
- Protección
- Sistema operativo - Procesos del usuario
- Posibles accesos accidentales o malintencionados
a datos del S.O. - Un modo de protección
- Registro límite y registro de relocalización
- Se comprueba cada dirección generada por la CPU
104.1.2. Múltiples Particiones
- Multiprogramación ? Necesidad de varios procesos
en memoria simultáneamente - Dos modos de asignación Particiones fijas y
Variables - Particiones fijas
- División de la memoria en varios trozos
(particiones) - Tamaño diferente de las particiones
- Tamaño fijo de las particiones (inamovible)
- Único proceso por partición con tamaño ?
partición - Estructuras de datos para la gestión de
particiones fijas - Tabla de descripción de particiones
- Estado (libre/asignada)
- Base de la partición
- Tamaño de la partición
- Estrategia de asignación
- Primer ajuste, Mejor ajuste, Peor ajuste
- Qué hacer si no hay particiones libres
- Esperar a la finalización de algún proceso
- Intercambio
- Protección entre procesos
11 - Grado de multiprogramación.
- Limitado al número de particiones
- Fragmentación Interna
- Dentro de cada partición queda una zona de
memoria no aprovechable - El proceso es más pequeño que la partición
- No se puede asignar a ningún otro proceso
- Es posible que procesos esperando entrar en
memoria no tengan partición a pesar de haber
espacio libre para ellos - Ejemplo
- OS/MFT (Multiprogramación con nº fijo de tareas)
12Particiones variables
- Las particiones son variables en número y
longitud - Inicialmente la memoria sólo contiene el sistema
operativo - A cada proceso se le asigna la memoria que
necesita exactamente - Estructuras de datos para gestionar la memoria
- Mapa de bits
- División de memoria en pequeñas unidades libres u
ocupadas - Lista de procesos y huecos
- Lista única
- Lista de procesos y lista de huecos
- Sistema de los asociados (Knuth 1973)
- División de memoria en bloques potencia de 2
- Se compactan 2 bloques adyacentes del mismo
tamaño - Agiliza la fusión de huecos
- Algoritmos de asignación de particiones
- Primer ajuste, Mejor ajuste y Peor ajuste
- Qué hacer si no hay particiones libres
- Esperar a la finalización de algún proceso
- Intercambio
13-
- Condensación de huecos
- Unión de huecos adyacentes al liberar un proceso
- Compactación
- Movimiento de procesos en la memoria para unir
huecos dispersos y crear huecos de mayor tamaño
144.2. Asignación no contigua de memoria
- El espacio de direcciones lógico de un proceso se
reparte entre diferentes zonas de la memoria
principal - Métodos de organización
- Paginación simple
- Segmentación simple
- Segmentación paginación simple
- 4.2.1. Paginación simple
- División de la memoria principal en bloques de
igual tamaño denominados marcos - División del espacio de direcciones de un proceso
en bloques de igual tamaño denominados páginas. - Marcos y páginas tienen el mismo tamaño
- Carga de un proceso en memoria
- Se van asignando marcos libres a páginas del
proceso - No tienen por qué ser consecutivos.
- La paginación no es visible al programador
- Se elimina la fragmentación externa
- La fragmentación interna sólo se produce en la
última página - Páginas pequeñas
- Reducen la fragmentación interna
- Aumentan tamaño de tabla de páginas
154.2.1. Paginación Simple
- Estructuras de datos
- Tabla de Páginas ? Una por cada proceso
- Entrada tabla páginas ? Una por cada página del
proceso - Guarda el número de marco donde se guarda la
página cuyo número coincide con el índice - Posibilidad de campo para página válida/inválida
- otros posibles campos
- Bit de modificación
- Bits de protección (lectura, escritura)
- Bits de Página referida
- Tabla de marcos ? Una entrada por cada marco de
memoria física - Empleada por el S.O. para la gestión de memoria
- Indica si el marco está libre o asignado y a qué
página de qué proceso
16- Direccionamiento
- Dirección lógica Nº Página Desplazamiento
- Tamaño de página potencia de 2
- Direccionamiento más sencillo
- Fácil Traducción
- Dirección lógica y relativa (respecto al inicio )
coinciden - Traducción de direcciones lógicas a físicas
- MMU realiza traducción
- Accede a tabla de páginas del proceso actual
- Proceso de traducción ( Ver figura página 23)
- Obtener nº página de los n bits más
significativos de la dirección y desplazamiento
de los m menos significativos
17- Soporte Hardware de tabla de páginas
- Registros dedicados
- Gran velocidad para traducción de direcciones
- Muy caro, útil solamente cuando las tablas son
pequeñas - Memoria principal
- La tabla de páginas se almacena en memoria
- RBTP Registro Base de la Tabla de Páginas
almacena un puntero a la tabla de páginas del
proceso en ejecución - Para acceder a una dirección necesita 2 accesos a
memoria - Acceso a entrada en tabla de páginas
- Acceso a dirección deseada
- Mucho más lento el proceso de traducción
- Registros asociativos (TLB)
- Memoria cache especial de alta velocidad
- Registro clave - valor (nº página - nº marco)
- Se comparan todas las claves simultáneamente
- Búsqueda rápida, hardware caro Nº entradas de 8
a 2048 - Solución
- TLB contiene unas pocas entradas de tabla de
páginas - Si el marco está en la TLB, se coge
18Traducción de direcciones lógicas a físicas
mediante tabla de páginas
Búsqueda directa y asociativa en entradas en la
tabla de páginas
19- Tablas de páginas multinivel
- Utilizadas por la mayoría de los sistemas de
paginación. - Las tablas de páginas pueden ser muy grandes ?
Las tablas están sujetas también a paginación. - Esquema de dos niveles
- Nivel 1 Tabla de páginas para acceso a la tabla
de páginas del proceso - Nivel 2 Tabla de páginas del proceso
- Traducción de direcciones
- Dirección lógica (32 bits) número de página (20
bits) desplazamiento (12 bits) - Nº página (20 bits) p1 (10 bits) p2 (10 bits)
- p1 - índice a tabla de páginas exterior
- p2 - desplamiento en tabla de páginas exterior
20Tabla de páginas de dos niveles
21- Tabla de páginas invertida
- Sólo una tabla de páginas en el sistema con
tantas entradas como marcos haya - Entrada dirección virtual de página (nº de
página) y pid del proceso - El índice nos devuelve nº de marco donde está la
página - Compartición de páginas
- Es necesario a veces compartir datos entre
procesos - Página como unidad de compartición
224.2.2. Segmentación
- Paginación
- Espacio de direcciones unidimensional 0 ? Máxima
- Segmentación
- Espacio de direcciones bidimensional
- Proceso dividido en Segmentos
- Cada segmento 0 ? Máxima
- Cada segmento utiliza zonas de memoria contigua
- No necesitan estar juntos en memoria
- Visión de la memoria igual que el usuario
- Programa conjunto de segmentos
- Se produce fragmentación externa
23- Estructuras de Datos
- Tabla de segmentos
- Una tabla por proceso
- Una entrada por cada segmento
- Dirección base y límite (o longitud) del segmento
- Bit de modificación desde su carga en memoria
- Otros bit de protección (R/W, ...) o de
compartición - Lista de bloques libres
- Zonas libres existentes en memoria
- Direccionamiento
- Dirección lógica Nº Segmento desplazamiento
- Traducción de direcciones
- Se realiza dinámicamente en cada referencia a
memoria - Necesita un hardware especial que realiza la
traducción - Nº segmento dirección lógica ? índice tabla
segmentos - Dirección física Dirección base de la entrada
desplazamiento de la dirección lógica
24- Soporte hardware de la tabla de segmentos
- Registros
- Muy rápida
- Muy cara
- Memoria principal
- Registro base de la tabla de segmentos
- Registro longitud de la tabla de segmentos
- Dos referencias a memoria por cada dirección
lógica - A la entrada en la tabla de segmentos
- A la dirección deseada
25- Facilita la compartición
- Se comparten unidades lógicas, segmentos,
permitiendo compartir datos, programas,
subrutinas, etc. - Facilita la protección
- Se puede asociar a cada segmento uno o varios
bits de protección - Facilita la ampliación de memoria.
- Si esta estructura se encuentra en un segmento
específico para ella, basta con ampliar el tamaño
del segmento
264.2.3. Segmentación con paginación
- Paginación
- Elimina fragmentación externa
- Aprovecha eficientemente la memoria
- Segmentación
- Visible al programador
- Soporte para compartición y protección
- Segmentación con paginación
- Combina las ventajas de ambas
- Método básico
- División del espacio de direcciones del usuario
en segmentos - División de cada segmento en páginas
- Dirección lógica
- Desde el punto de vista del usuario
- Número de segmento desplazamiento
- Desde el punto de vista de la máquina
- Nº segmento nº página desplazamiento
- Estructuras de datos utilizadas
- Cada proceso
- Una tabla de segmentos
27- Traducción de direcciones