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
No hay comentarios:
Publicar un comentario