Gestión de memoria: Segmentación
Posted by Adrián Manso | Posted in Gestión de Memoria | Posted on 2:38
0
• La segmentación y la paginación permiten dividir a los procesos
en partes ocupando varias zonas dispersas de la memoria.
• El espacio lógico de direcciones está formado por un conjunto
de segmentos, definidos por la dirección base y su longitud.
• Se utilizan direcciones lógicas de 2 dimensiones: segmento y
desplazamiento dentro del mismo
– Cada segmento tiene propiedades
diferentes: L, L/E, privado,
compartido...
– Se suelen utilizar como mínimo
segmentos de datos, código y pila
– Tienen tamaños diferentes
– Los módulos del programa usan
segmentos diferentes, que se
enlazan empezando en la dirección
lógica de origen 0.
Traducción de direcciones
• La traducción de direcciones es el proceso por el cual se
convierten las direcciones lógicas (de dos dimensiones: segmento, desplazamiento) a una dirección física de una
dimensión.
– Existe una estructura de n
datos auxiliar: la Tabla
de Segmentos (TdS)
– La tabla tiene una
entrada para cada
segmento del proceso
– Existe una tabla para
cada proceso más otra
general para almacenar
las descripciones
comunes a varios
procesos.
Implementación
• La TdS se puede implementar en memoria o con registros
– Registros:
• La comprobación y el cálculo de direcciones se realiza en paralelo,
por lo que la traducción de direcciones es muy rápida.
• Debe limitarse el número de segmentos para no usar muchos
registros
– En memoria:
• Adicionalmente se tiene un registro que apunta al comienzo de la
tabla (Registro Base de la TdS – RBTdS) y otro que contiene la
longitud de dicha tabla (Registro Longitud de la TdS – RLTdS).
• Para traducir la dirección: Se comprueba que s < RLTdS y se forma la
dirección de acceso a la TdS mediante: RBTdS + s
• Problema: Para acceder a memoria se requieren dos accesos (uno a
la TdS y otro a la dirección especificada). Se ralentiza el proceso.
• Solución:
– Usar registros que guardan las entradas usadas más recientemente
– Usar registros que guardan las entradas necesarias para la ejecución
Protección
• Se asocian diferentes tipos de protección a los diferentes tipos
de segmento
Memoria Compartida
• El modelo segmentado permite que varios procesos compartan
áreas de memoria física.
– Para el acceso a la memoria compartida, los procesos pueden utilizar
direcciones lógicas diferentes e incluso segmentos diferentes
– Las referencias dentro de la zona compartida deben ser relativas (al
segmento actual o al contador de programa)
– El código puede compartirse en modo de sólo lectura
Análisis del modelo segmentado
• Este modelo presenta desaprovechamiento de memoria (aunque
menor que con la asignación contigua)
– Fragmentación externa: huecos pequeños entre segmentos
– Espacio ocupado por las TdS de los procesos residentes en memoria
• Gestor de procesos:
– Cuando se crea un proceso, el planificador realiza las tareas:
• Comprobar que existe espacio para el nuevo proceso. Para ello debe
encontrar un hueco apropiado para cada segmento del mismo
• Crea una TdS para el proceso
• Guarda el RBTdS y el RLTdS en el BCP del proceso
• Para cada segmento copia su contenido en la memoria que le ha sido
asignada y actualiza la entrada en la TdS
• Incluye al proceso en la cola de procesos listos
– En el cambio de contexto
• Se guardan los registros con segmentos
• Se restauran los registros con segmentos, el RBTdS y el RLTdS
Ejemplo de implementación:
procesadores “x86” de intel
• Disponen de registros especializados
– para almacenar descripciones de segmentos (entradas en la TdS,
denominada “Tabla de Descriptores de Segmentos”)
• CS: código, DS: datos, SS: pila
• ES, FS, GS: uso general
– para localizar las tablas de segmentos
• GDTR, para localizar la GDT, Global Descriptor Table
• LDTR, para localizar la LDT, Local Descriptor Table
• Cada dirección lógica se divide en:
– Segmento: 16 bits
• tabla (GDT/LDT), 1 bit
• indice en la tabla, 13 bits (8192 segmentos por tabla)
• Requested Privilege Level (RPL), 2 bits
– Desplazamiento: 32 bits
• El espacio lógico de direcciones con segmentación es de:
– 21 x 213 x 232 = 246 = 64 TB



