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.
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


0