Segmentación en memoria.

Segmentación en memoria.

de Agustin Silvano Garcia -
Número de respuestas: 2

Buenas,

            me surgió una duda con respecto a como se distribuyen en la memoria los segmentos.

Por lo que había entendido desde un principio la memoria estaba dividida en segmentos iguales (sin superposición).

Viendo las notas del curso veo que aparece el concepto de solapamiento y me surgió la duda de como es la distribución de los segmentos dentro de la memoria.


Gracias.


Saludos.

En respuesta a Agustin Silvano Garcia

Re: Segmentación en memoria.

de Federico Rivero -

Estimado,

Cómo estás? Bueno, en primer lugar aclarar que esto que voy a decir es referido a x86, que es lo que vemos en el curso, pero los segmentos son dinámicos, dado que el valor de los registros de segmento puede cambiar. Y una vez fijado el valor de un registro de segmento, como las direcciones se calculan como segmento * 16 + desplazamiento, fijado un valor para el segmento, los siguientes 64kb de memoria (2^16 direcciones obtenibles a partir de variar el desplazamiento de 16 bits) forman el segmento.

Resta ver que como los valores de los registros de segmento pueden ser cualquiera, es perfectamente posible que los segmentos se solapen:

Ej: ES = 0x1000, DS = 0x1100, y permitime el siguiente diagrama, bastante burdo:


0x10000 - - - - Comienza segmento ES

               |
0x11000 - - - -  Comienza segmento DS
               |

               |                    ; En este espacio de direcciones

               |                    ; se solapan los segmentos.

               |

0x1FFFF - - - - Termina segmento ES

               |

0x20FFF- - - - Termina segmento DS

Saludos,

        Federico