Entradas con la etiqueta “Kernel”

Artistas del mail

12 de diciembre, 2009 - por | | Curiosidades, Kernel

Si has tenido la curiosidad de trastear alguna vez con el kernel de linux, habrás visto que hay todo un directorio dedicado a documentación, tanto general como particular, ésta última organizada a su vez en directorios que se corresponden con las partes del sistema.

Bueno, el caso es que dentro de la documentación general hay varias joyitas literarias, entre las que suelen destacar las firmadas por Linus Torvalds, el alma mater del proyecto. Una de esas joyitas es el fichero “email-clients.txt”, que describe algunos de los requisitos que debe tener el cliente de email con el que trabaje el desarrollador. ¿Por qué? Pues porque los patches para el kernel de linux se envían a través de emails, y a poder ser, como texto dentro del cuerpo del mensaje. Ésto no es siempre así; el “mantainer” del código puede que acepte adjuntos, pero incluso en ese caso, hay toda una serie de reglas que deberías respetar cuando compongas el adjunto.

Es un nivel de detalle, y para algo que ya nos es tan familiar, que estas cosas son las que me conquistan siempre dentro del espíritu de linux: no hay ninguna barrera humana -cualquiera puede hacerte llegar el patch-, pero se establecen ciertas convenciones -que éstas sí se siguen rigurosamente- para que el trabajo resulte productivo y esa no-barrera pueda llegar a ser una realidad. Por ahí le vas viendo el sentido a toda la arquitectura liviana del entorno: “todo se trata como un fichero”, “pequeñas utilidades que se interconectan”, “cuanto más complejo, más probabilidad de errores”, etc.

Para que veais lo seria que se pone la cosa con la composición de emails, transcribo algunas de las convenciones:

Don’t let your email client do automatic word wrapping for you. This can also corrupt your patch.

Email clients should generate and maintain References: or In-Reply-To:
headers so that mail threading is not broken.

It’s a good idea to send a patch to yourself, save the received message,
and successfully apply it with ‘patch’ before sending patches to Linux
mailing lists.

Lotus Notes (GUI) Run away from it.

Si te parece interesante, échale a un vistazo a otros ficheros tan instructivos como éste en el repositorio del proyecto.

Gestión de memoria en el kernel de linux

29 de octubre, 2008 - por | | Kernel, Linux

Cuando se trabaja habitualmente con linux la gestión de memoria es un tema recurrente. En entornos de desarrollo del kernel o de software, es una cuestión bien conocida y con la que hay que pelearse a diario. Sin embargo, en entornos web, tanto en desarrollo como en administración de sistemas, es una suerte de caja negra. Tanto porque la complejidad del tema implica una curva de aprendizaje relativamente alta, como porque los lenguajes con los que se trabaja gestionan automáticamente la memoria y, por lo tanto, no exigen un conocimiento práctico de ésta, a diferencia de aquellos otros -por ejemplo, C- que no incorporan dicha gestión automática.

En la red hay algunos artículos que están bastante bien para introducirse en el tema y ordenar un poco las ideas. Además, también hay varios capítulos de libros que merece la pena reseñar.

El capítulo Memory Management del libro de David A. Rusling, colgado en linuxhq.com, es una buena introducción a pesar de que tiene ya unos años y de que, por lo tanto, se basa en una versión del kernel muy distinta a las actuales. Está muy bien organizado y describe los conceptos fundamentales.

En DeveloperWorks de IBM Vikram Shukla publicó en 2006 Explore the Linux memory model. A first step to understanding the Linux design. Es un texto bastante claro que se ocupa del modelo de gestión de memoria en su conjunto: gestión de la memoria virtual, gestión de la memoria física y gestión de la memoria del kernel.

A finales de 2007 LWN comenzó a publicar una serie de 9 artículos de Ulrich Drepper bajo el provocativo título What every programmer should know about memory. La serie se recogió también en un documento en pdf, que se puede encontrar tanto en LWN como en la página personal de Drepper en Red Hat. Los artículos abarcan un abánico muy amplio de temas, y son especialmente interesantes para el desarrollador los dedicados a optimización de caché y multihilo.

El libro de Claudia Salzberg, Gordon Fischer y Steven Smolski, The Linux Kernel Primer, es una obra muy buena. Lástima que sólo esté en papel. Puedes echarle una ojeada en Amazon.com. El capítulo 4 se ocupa íntegramente de la gestión de memoria, comenzando con las “pages” y las “memory zones”. A continuación, la explicación del ciclo de vida del “slab allocator” es realmente buena. Leer el capítulo anterior, sobre el modelo de ejecución de procesos, ayuda a tener una visión de conjunto.

La conocida obra de Greg Kroah-Hartman Linux Kernel in a Nutshell contiene algunas referencias útiles para configurar y optimizar el kernel en relación con la memoria. Se le saca provecho una vez que se han consultado los textos anteriores.

Finalmente, y ya más orientada al hacking, el wiki LinuxMM quiere ser el punto de encuentro para la documentación del funcionamiento de la gestión de memoria, así como para la coordinación de nuevos proyectos de desarrollo relacionados con ésta.

¿Conoces algún otro recurso que te haya resultado útil? Coméntalo e iré actualizando la lista. :-)

Actualización 22 de Diciembre de 2008

El libro de Mel Gorman, Understanding the Linux Virtual Memory Manager, ofrece un acercamiento detallado sobre la gestión de la memoria en Linux, y se encuentra disponible de forma gratuita en formato pdf.