2005/02/28

Confusion entre segmentos y secciones

En la literatura relacionada con organización de memoria, aparece repetitivamente una confusión entre segmentos y secciones. Por fin, pude desenredar la pita y concluir que los segmentos estan relacionados con las porciones de memoria asignados a un proceso, y las secciones son porciones del archivo binario, que posteriormente son asignadas a los segmentos de un proceso, una vez se solicita la invocación de un programa. En la arquitectura i386 los segmentos son los segmentos de datos, codigo o texto y pila. No existe el segmento de BSS (Block Started by Symbol) o el segmento de heap. En el primer caso el BSS es una seccion de un binario ELF que se mapea en tiempo de ejecución al segmento de datos. En el segundo caso, el segmento de pila contiene un area destinada para el heap, pero este ultimo no es un segmento como tal. Dandole una mirada a los fuentes del kernel linux 2.6.10, se pueden observar 2 estructuras de datos relacionadas con el manejo de memoria. La primera denominada mm_struct se encuentra asociado a cada proceso, y en esta existen las variables start_brk y brk, que permiten establecer los limites en el segmento de pila, destinados al heap.