Memoria en linux
Ingeniería de Telecomunicación
CURSO 2003-2004
Arquitectura Computadores, S.O.
Estudio mapa de memoria proceso en Linux
Análisis del mapa de memoria de los procesos en Linux
El objetivo principal es entender de forma aplicada cómo está organizado el mapa de memoria de un proceso y cómo evoluciona durante la ejecución del mismo. Para ello, seproporciona una serie de programas que realizan diversas operaciones y que acceden al archivo /proc/pid/maps de Linux para mostrar su propio mapa de memoria en diversos instantes. El alumno ejecutará estos programas y analizará la salida que producen para intentar mejorar sus conocimientos sobre la gestion de memoria.
El archivo /proc/pid/maps de Linux
El sistema operativo Linux ofrece un tipo desistema de archivos muy especial: el sistema de archivos proc. Este sistema de archivos no tiene soporte en ningún dispositivo. Su objetivo es poner a disposición del usuario datos del estado del sistema en la forma de archivos. Esta idea no es original de Linux ya que casi todos los sistemas UNIX la incluyen. Sin embargo, Linux se caracteriza por ofrecer más información del sistema que el resto devariedades de UNIX. En este sistema de archivos se puede acceder a información general sobre características y estadísticas del sistema, así como a información sobre los distintos procesos existentes. La información relacionada con un determinado proceso se encuentra en un directorio que tiene como nombre el propio identificador del proceso (pid). Así, si se pretende obtener información de un procesoque tiene un identificador igual a 1234, habrá que acceder a los archivos almacenados en el directorio /proc/1234/. Para facilitar el acceso de un proceso a su propia información, existe, además, un directorio especial, denominado self. Realmente, se trata de un enlace simbólico al directorio correspondiente a dicho proceso. Así, por ejemplo, si el proceso con identificador igual a 2345 accede aldirectorio /proc/self/, está accediendo realmente al directorio /proc/2345/.
En el directorio correspondiente a un determinado proceso existe numerosa información sobre el mismo. Sin embargo, en esta práctica nos vamos a centrar en el archivo que contiene información sobre el mapa de memoria del proceso: el archivo maps. Cuando se lee este archivo, se obtiene una descripción detallada del mapa dememoria del proceso en ese instante. Como ejemplo, se incluye a continuación el contenido de este archivo para un proceso que ejecuta el programa cat.
08048000-0804a000 r-xp 00000000 08:01 65455 /bin/cat
0804a000-0804c000 rw-p 00001000 08:01 65455 /bin/cat
Profesor Responsable: Federico García Crespí. fedeg@umh.es
Profesor de Laboratorio: Federico García Crespí
Departamento:FISICA Y ARQUITECTURA DE COMPUTADORES
Área de Conocimiento: Arquitectura y Tecnología de Computadores
Curso: 4oIT
Docencia: Anual
Aula Teoría: Altabix 1.6
Aula Practicas: ai-2.2

0804c000-0804e000 rwxp 00000000 00:00 0
40000000-40013000 r-xp 00000000 08:01 163581
40013000-40014000 rw-p 00013000 08:01 163581
40022000-40135000 r-xp 00000000 08:01 165143
40135000-4013b000 rw-p00113000 08:01 165143
4013b000-4013f000 rw-p 00000000 00:00 0
bfffe000-c0000000 rwxp fffff000 00:00 0
/lib/ld-2.2.5.so
/lib/ld-2.2.5.so
/lib/libc-2.2.5.so
/lib/libc-2.2.5.so
Cada línea del archivo describe una región del mapa de memoria del proceso. Por cada región, aparece la siguiente información:
• Rango de direcciones virtuales de la región (en la primera línea, por ejemplo, de ladirección 08048000 hasta 0804a000).
• Protección de la región: típicos bits r (permiso de lectura), w (permiso de escritura) y x (permiso de ejecución).
• Tipo de compartimiento: p (privada) o s (compartida). Hay que resaltar que en el ejemplo todas las regiones son privadas.
• Desplazamiento de la proyección en el archivo. Por ejemplo, en la segunda línea, aparece 00001000 (4096 en decimal), lo...
Regístrate para leer el documento completo.