Ensamblador - Ayuda con la bendita segmentacion

 
Vista:

Ayuda con la bendita segmentacion

Publicado por Fafa (2 intervenciones) el 07/08/2006 10:22:05
Hola, no entiendo como se aplica la segmentacion, se que es una forma de dividir la memoria y a su vez proteger los bloques divididos (segmentos) en modo protegido, pero no entiendo como se obtiene un segmento.
Supongamos que tengo una memoria de 256 MB, por lo tanto podria declarar una variable de la siguiente manera (ejemplo en Pascal):

MEMORIA :Array[0..268435456] of Byte

asi mismo podria acceder a una posicion de memoria, supongamos la posicion 15000, de la siguiente manera:

POSICION[ 15000 ] := 150

de esta forma estaria accediendo a la posicion 15000 de la memoria y asignandole el valor 150.
Hasta aca todo bien, pero esta el problema del direccionamiento que no puede exceder a valores superiores al MB y por lo tanto se utiliza la segmentacion, pues bien, como obtengo la posicion de memoria 15000 en el formato SEGMENTO:OFFSET, osea, como se a que segmento pertenece la posicion de memoria 15000 ?
Se transformar del formato SEGMENTO:OFFSET a memoria real, pero no se la operacion inversa.
Todo esto lo hago en forma de pregunta y no de afirmacion, asi es como yo lo entiendo y quisiera saber en que estoy equivocado.

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder