Gestión de Memoria
Introducción
Asignación de espacio contiguo
Asignación estática de memoria particionada
Asignación dinámica de memoria particionada
Protección y uso compartido
Asignación de espacio no contiguo
Segmentación
Paginación
Segmentación con paginación
Gestión de memoria virtual
Introducción
Paginación por demanda
Algoritmos de reemplazo de páginas
Algoritmos de asignación de marcos de página
Introducción
Antecedentes
Un programa debe cargarse en memoria desde disco y colocarse dentro de un proceso para que se ejecute
La memoria principal y los registros son los únicos dispositivos de almacenamiento a los que puede acceder la CPU directamente
El acceso a registro es muy rápido; supone un ciclo de CPU (o menos)
El acceso a memoria principal puede durar varios ciclos
Las memorias caché se colocan entre la memoria principal y la CPU para acelerar el acceso a la información
Procesamiento de un Programa de Usuario
Vinculación de Direcciones
La vinculación de instrucciones y datos a direcciones de memoria puede realizarse en tres etapas diferentes
Compilación: Si se conoce a priori la posición que va a ocupar un proceso en la memoria se puede generar código absoluto con referencias absolutas a memoria; si cambia la posición del proceso hay que recompilar el código
Carga: Si no se conoce la posición del proceso en memoria en tiempo de compilación se debe generar código reubicable
Ejecución: Si el proceso puede cambiar de posición durante su ejecución la vinculación se retrasa hasta el momento de ejecución. Necesita soporte hardware para el mapeo de direcciones (ej., registros base y límite)
Espacio de Direcciones Físicas y Lógicas
El concepto de espacio de direcciones lógicas vinculado a un espacio de direcciones físicas separado es crucial para una buena gestión de memoria
Dirección lógica – es la dirección que genera el proceso; también se conoce como dirección virtual
Dirección física – dirección que percibe la unidad de memoria
Las direcciones lógicas y físicas son iguales en los esquemas de vinculación en tiempo de compilación y de carga; pero difieren en el esquema de vinculación en tiempo de ejecución
Registros Base y Límite
Un par de registros base y límite definen el espacio de direcciones lógicas
Unidad de Gestión de Memoria (MMU)
La MMU (Memory-Management Unit) es un dispositivo hardware que transforma las direcciones virtuales en físicas
Con la MMU el valor del registro de reubicación (registro base) es añadido a cada dirección generada por un proceso de usuario en el momento en que es enviada a la memoria
El programa de usuario trabaja con direcciones lógicas; nunca ve las direcciones físicas reales
Reubicación Dinámica Mediante Registro
Intercambio
Un proceso puede ser retirado temporalmente de la memoria a algún almacenado auxiliar; más tarde será incorporado de nuevo a la memoria para que continúe su ejecución
Almacenamiento auxiliar – disco rápido con capacidad suficiente para albergar copias de imágenes de memoria para todos los usuarios; debe proporcionar acceso directo a estas imágenes de la memoria
Roll out, roll in – variante del intercambio usada para algoritmos de planificación basados en prioridad; un proceso de baja prioridad es retirado de memoria para que otro con mayor prioridad pueda ser cargado y ejecutado
La mayor parte del tiempo de intercambio es tiempo de transferencia; el tiempo de transferencia total es directamente proporcional a la cantidad de memoria intercambiada
En muchos sistemas (ej. UNIX, Linux, y Windows) se pueden encontrar versiones modificadas del intercambio
El SO mantiene una cola de listos para los procesos intercambiados que pueden ejecutarse
Página siguiente |