Kernel


Traducido del original de M.Tim Jones (mtj@mtjones.com) y que se pueden encontrar en el servicio de documentación técnica de IBM.

Una visita guiada desde el Registro Maestro de Arranque (Master Boot Record) hasta la primera aplicación en el espacio de usuario

31 May 2006

El proceso de arranque de un sistema Linux® consiste de un número de fases. Pero tanto si estás arrancando un escritorio estándar x86 como si tu objetivo es el altamente empotrado PowerPC®, mucho del flujo es sorprendentemente similar. Este artículo explora el proceso de arranque de Linux desde su fase de lanzamiento hasta el inicio del primer espacio de usuario de una aplicación. Por el camino, veremos otros diversos temas relacionados con el arranque tales como cargadores de arranque, descompresión del núcleo, el disco RAM inicial, y otros elementos del arranque Linux.

En los viejos tiempos, el proceso de arranque de una computadora significaba alimentar una cinta de papel que contenía el programa de arranque o manualmente cargar un programa de arranque usando el panel frontal de interruptores de direcciones/datos/control. Los equipos actuales vienen equipados con utilidades que simplifican el proceso de arranque, pero que no lo hacen necesariamente simple.

Empecemos con una vista de alto nivel de un arranque Linux de manera que tengamos una vista amplia. Despues revisaremos que sucede en cada uno de los pasos individuales. Las referencias a las fuentes durante el proceso ayudarán a navegar el árbol del núcleo e investigar en profundidad.

(más…)

[Traducido del artículo original de M.Tim Jones del 30 de octubre de 2007 para IBM]

Una revisión por capas basada en la estructura

Cuando se trata de sistemas de ficheros, Linux® es la navaja suiza de los sistemas operativos. Linux soporta un gran número de sistemas de ficheros, desde sistemas con diario (journaling) a clustering o criptográficos. Linux es una maravillosa plataforma para usar sistemas de ficheros estándar o los más exóticos, e incluso para el desarrollo de sistemas de ficheros. Este artículo explora el sistema de ficheros virtual (VFS por sus siglas en inglés) —algunas veces llamado el sistema de ficheros conmutador (switch) — en el kernel de Linux y después revisa algunas de las principales  estructuras que mantienen los sistemas de ficheros unidos.

Leer el resto del artículo…

Empiezo con éste una serie de artículos, traducidos de los originales de M.Tim Jones (mtj@mtjones.com) y que se pueden encontrar en el servicio de documentación técnica de IBM. Algunos de ellos ya tienen algunos meses de antigüedad, lamentablemente los he descubierto recientemente a partir del último publicado, pero los voy a ir traduciendo en el orden cronológico de publicación intentando traducir uno cada semana.

Puesto que muchas veces la designación técnica de algunos elementos y algoritmos descritos en estos artículos suele ser la inglesa, sin que exista una traducción válida, adjuntaré a cada traducción literal que haga de estos conceptos el nombre original en inglés.

Y una vez expuestos estos dos puntos, empiezo con el cuerpo del artículo original.

 

Anatomía del asignador de losas (slab allocator) de Linux

[artículo original]

Un buen rendimiento del sistema operativo depende en parte de la habilidad del propio sistema para gestionar eficientemente los recursos. En los viejos tiempos, los gestores de pila (heap memory managers) eran la norma, pero el rendimiento se veia afectado por la fragmentación y la necesidad de reasignar memoria. Hoy, el núcleo de Linux® usa un método que fue originado en Solaris pero que ha sido usado en sistemas empotrados durante algún tiempo ya, asignando memoria como objetos basándose en su tamaño. Éste artículo explora las ideas tras el asignador de losas (slab allocator) y examina sus interfaces y sus usos.

Leer el resto del artículo…

Parece increíble poder mezclar estos tres conceptos, pero parece ser que el pingüino nos tenia reservada una pequeña sorpresa temporal, al menos en la versión x86-64 que no parece estar muy fina a pesar de llevar ya cierto tiempo en el mercado los procesadores a los que va destinado.

Vayamos al grano, tengo una máquina AMDX2 de 64 bits con un núcleo pre-compilado de la Mandriva2007 para x86-64. El rendimiento es más que aceptable, va muy rápido y no ha dado ningún problema salvo tener que encontrar todo el software que me ha hecho falta en la versión adaptada a esta arquitectura (para poder instalar via RPM, evidentemente podría, y lo he hecho con algún paquete, haber compilado los fuentes, pero no siempre es tan sencillo como pueda parecer)

En cualquier caso, hace unos dias he tenido serios problemas de “continuidad” con el funcionamiento de esta máquina, ya que me aparecían “kernels oops” que la reiniciaban o que la dejaban en un estado inestable en el que la mayoría de señales no funcionaban (fallaba algún subsistema y todo lo relacionado con él también). Los “oops” tenían que ver con IRQs, con E/S de disco cuando haciamos trabajo intensivo sobre él, etc…

Seguir leyendo…