domingo, 28 de noviembre de 2010

4.6 Segmentación

Hasta ahora la memoria que hemos vista es una memoria unidimensional por que las direcciones virtuales van desde 0 hasta una dirección máxima. Una solución consiste en proveer a la maquina muchos espacios de direcciones independientes, llamados segmentos.

Cada segmento consiste en una secuencia lineal de direcciones, desde 0 hasta el máximo. Cada longitud de segmento puede cambiar durante la ejecución. Los segmentos pueden crecer y encogerse de forma independiente, sin afectarse entre sí. La segmentación facilita compartir procedimientos o datos entre varios procesos.

Implementación de la segmentación pura

La segmentación es diferente a la paginación: el tamaño de pagina es fijo mientras el de los segmentos no. Después del cierto tiempo de ejecución del sistema, la memoria estará divida en trozos, unos con segmentos y otros con agujeros. Este fenómeno se llama cuadriculación o fragmentación externa, desperdicia memoria en los agujeros.

Segmentación con paginación: MULTICS

Cada programa MULTICS tiene una tabla de segmentos, con un descriptor por segmento. Un descriptor de segmento contiene una indicación de si el segmento está en la memoria principal o no.

Una dirección en MULTICS consta de dos partes: el segmento y la dirección dentro del segmento. La dirección dentro del segmento se subdivide en un numero de pagina y una palabra dentro de la pagina.

Segmentación con paginación: El Pentium de Intel

El corazón de la memoria virtual Pentium consiste en dos tablas, la LDT (tabla de descriptor local) y la GDT (tabla de descriptor global). Cada programa tiene su propia LDT, pero solo hay una GDT para todos los programas de la computadora.

No hay comentarios:

Publicar un comentario