Fundamentos de la Gestión de Memoria en Sistemas Operativos: Paginación, Segmentación y MMU
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 4,62 KB
Gestión de Memoria en Sistemas Operativos
Objetivos del Sistema de Gestión de Memoria
- Ofrecer a cada proceso un espacio lógico propio.
- Proporcionar protección entre 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.
Espacio de Direcciones de un Proceso
Conjunto de direcciones a las que hace referencia un proceso.
Tipos de Espacios de Direcciones
- Físicas: Referencian alguna posición de la memoria física.
- Lógicas o Virtuales: Son las que utilizan los procesos y sufren una serie de transformaciones, realizadas por el procesador (la MMU), antes de convertirse en direcciones físicas.
- Lineales: Se obtienen a partir de las direcciones lógicas tras haber aplicado una transformación dependiente de la arquitectura.
Funciones de la Unidad de Manejo de Memoria (MMU)
- Convertir las direcciones lógicas emitidas por los procesos en direcciones físicas.
- Comprobar que la conversión se puede realizar.
- Comprobar que el proceso que intenta acceder a una cierta dirección de memoria tiene permisos para ello.
- En caso de fallos, se lanzará una excepción que deberá ser resuelta por el kernel del SO.
- La MMU se inicializa por cada proceso del sistema.
- En todos los procesos se configura la MMU para que la zona del kernel solo se pueda acceder en modo kernel (modo privilegiado).
- La configuración correspondiente al espacio de memoria del kernel es idéntica en todos los procesos.
Subsistema de Gestión de Memoria (Parte del Kernel del SO)
- Decide qué procesos residen en memoria principal (al menos una parte).
- Maneja parte del espacio de direcciones virtuales que ha quedado fuera.
- Controla la cantidad de memoria principal.
- Gestiona el intercambio de procesos entre memoria principal y memoria secundaria o dispositivo de swap.
Ventajas de la Paginación por Demanda
- Flexibilidad al mapear el espacio de direcciones virtuales de un proceso con la memoria física de la máquina.
- Permite que el tamaño de un proceso sea mayor que la cantidad de memoria física disponible.
- Más procesos residiendo en memoria simultáneamente.
Memoria Virtual
La memoria virtual es un mecanismo que permite al sistema gestionar niveles de memoria principal y memoria secundaria.
- Transferencia de bloques entre ambos niveles (normalmente basado en paginación).
- De memoria secundaria a principal: por demanda.
- De memoria principal a secundaria: por expulsión.
Paginación
La paginación es una técnica de gestión de memoria donde:
- El espacio virtual de direcciones se divide en unidades llamadas páginas, todas del mismo tamaño.
- La memoria principal se divide en marcos de páginas del mismo tamaño que las páginas virtuales (en cada marco de página se carga una página de un proceso).
- No todo el espacio virtual de direcciones está cargado en memoria principal. Una copia completa se encuentra en disco y las páginas se traen a memoria principal cuando se necesitan.
Tabla de Páginas (TP)
La Tabla de Páginas (TP) relaciona cada página con el marco que la contiene.
- La MMU usa la TP para traducir direcciones lógicas a físicas.
- Típicamente usa dos tablas de páginas (TPs): TP de usuario y TP de sistema (solo se permite usar estas direcciones en modo sistema).
Transformación de Dirección Virtual a Física
Los bits de mayor peso de la dirección virtual se interpretan como el número de la página en la TP y los de menor peso como el número de palabra dentro de la página (desplazamiento).
Segmentación
La segmentación es otra técnica de gestión de memoria donde:
- El espacio de direcciones se divide en segmentos, cada uno de los cuales corresponde a una rutina (procedimiento o función). Cada programa contiene una cierta cantidad de segmentos.
- Los primeros segmentos se reservan para procedimientos, datos y pila pertenecientes al programa en ejecución.
- Los segmentos restantes contienen un archivo por segmento.