| Artículos | 01 DIC 2003

Visión general del kernel Linux 2.6

Tags: Histórico
Alejandro Sánchez.
Vamos a revisar los cambios principales que se han producido dentro del kernel de Linux, concretamente en lo que respecta a la versión de desarrollo 2.5 (versión inestable) para conocer más a fondo lo que será la versión 2.6.

Para los que no conozcan lo que es el kernel de Linux, es simplemente aquella parte fundamental del sistema operativo que se encarga de la planificación de los procesos, de gestionar la memoria, planificar la entrada/salida y dar soporte a los distintos dispositivos del sistema, entre otros.
El proyecto del kernel Linux comenzó en 1991 gracias al finlandés Linux Torvalds a partir de Minix, un sistema operativo desarrollado por Tanenbaum para arquitecturas i386. En principio se llamó Freax, pero más tarde lo hizo llamar Linux, que es como ahora mismo se conoce. La primera versión oficial de Linux salió en marzo de 1994 y únicamente soportaba arquitecturas i386. Posteriormente, en marzo de 1995 se dio el soporte para otras arquitecturas como SPARC, Alpha y MIPS, aunque únicamente para sistemas monoprocesador. Sin embargo, ya en Linux 2.0, que llegó en junio de 1996, aparte de incluir nuevas arquitecturas, se integraba soporte para máquinas SMP o multiprocesador. Después de la versión 2.0 surgieron ya las principales versiones de lo que se conocen hoy en día como 2.2 (enero de 1999) y 2.4 (enero de 2001).
Principalmente en lo que fue la 2.4 hubo cambios notables, pues se le añadió soporte para ISA Plug and Play, soporte USB y soporte para PC Card. En cuanto a la 2.6 que nos ocupa los cambios más importantes están relacionados con temas de escalabilidad en grandes máquinas y soporte para dispositivos como PDA, al igual que otros sistemas de ficheros, mejoras en la gestión de memoria, el nuevo planificador y uso de hilos en espacio de kernel, entre otros. A continuación vamos a ir revisando las características más importantes que nos proporciona la nueva versión de Linux.

Escalabilidad en pequeños dispositivos
Uno de los cambios más notables, aparte de que Linux sea un sistema multiplataforma (amplio soporte para distintas arquitecturas) es la escalabilidad, ya que con la versión 2.6 se ha conseguido que se pueda utilizar tanto en pequeños como en grandes sistemas, de forma que podremos usar Linux tanto en pequeños microcontroladores como en grandes mainframes.
Respecto a lo que fue el soporte para dispositivos embebidos dentro de Linux, surgió por parte del proyecto uClinux, que lo que pretendía es dar soporte a diferentes tipos de microcontroladores. Con esta variante se ha conseguido un gran soporte de Linux en el mercado de los dispositivos embebidos, y ahora más estando dentro de la rama oficial del kernel, ya que se conseguirá de ahora en adelante un amplio desarrollo dentro de esta área de interés.
En cuanto al soporte a este tipo de dispositivos, se dieron cuenta de que una gran parte de ellos no tenía una Unidad de Gestión de Memoria (MMU), que es lo que permitía al sistema disponer de modo protegido, por lo que se carece de protección de memoria por medio de paginación. En definitiva, que había que ofrecer a estos tipos de dispositivos únicamente modo real.
Por consiguiente, ahora lo que se ha integrado es uClinux, que sí incluye una MMU y cubre la necesidad para dispositivos como H8/300, NEC v850 o varios modelos de Motorola.

Alta ampliabilidadcon NUMA
Otro cambio muy importante que se ha dado dentro de Linux es el soporte NUMA, de forma que Linux sea más aceptable dentro de grandes servidores. Para los que no conozcan NUMA, es un paso por delante de lo que se conoce como SMP, en el que un único procesador tiene varios procesos conviviendo. La idea es muy similar a un cluster. Luego cada uno de los nodos dedicados puede ser en sí mismo NUMA o SMP clásico.
En cuanto a este cambio, se vio que se producía ineficiencia en máquinas multiprocesador, por lo que se ha conseguido una gran escalabilidad en ambos tipos de arquitecturas (SMP y NUMA), aportando una mejora sustancial al soporte de gestión de memoria, planificación entre nodos, gestión de memoria en grandes máquinas, etc.
Para soportar adecuadamente estas máquinas NUMA, Linux ha tenido que adaptar el nuevo modelo creando una nueva API concerniente a la topología de la arquitectura, de forma que ahora, por ejemplo, el planificador es capaz de entender la relación entre los distintos nodos y optimizar el uso del procesador para que vayan ejecutándose distintos procesos.

Soporte para distintas arquitecturase Hyper-Threading
Otro cambio que ahora soporta Linux es el concepto de “subarquitectura”, de forma que cada tipo de arquitectura va a tener subtipos en los que comparte zonas comunes con esa arquitectura. De esta forma, ahora con i386 vienen dos nuevos tipos de plataformas: la primera es NCR’s Voyager, que es un sistema SMP (desarrollado por Intel MP) y la segunda, el PC-9800 desarrollado por NEC, que es una de las arquitecturas más utilizadas en Japón.
Una de las características añadidas dentro del kernel 2.6 es el soporte de Hyper-Threading en arquitecturas Pentium 4. Esta característica permite que un único procesador se comporte de forma similar a dos. Esto naturalmente aporta una gran mejora de rendimiento, ya que puede ejecutar en un mismo procesador varios hilos de proceso.

Sistemas de ficheros
Dentro del área de sistema de ficheros ha sido ampliamente mejorado, ya que sistemas de ficheros como ext2 y ext3 han ido incorporando nuevas mejoras, como son soporte para extents (acceso a bloques contiguos), un nuevo asignador de bloques y una reescritura de la forma de acceder a los bloques mediante lo que se conoce como HTree (o hashing tree).
Quizás uno de los cambios que tendrá más importancia llegue cuando se integre reiser4, pero hasta el momento se consiguen grandes mejoras sobre reiser3 y otros sistemas de ficheros como son JFS y XFS, ya que se ha logrado una gran estabilidad sobre ellos y un gran rendimiento. Ahora cada vez más los sistemas de ficheros están más orientados a objetos, incorporan metadatos y cada vez son más sofisticados los métodos que tienen para recuperar datos en caso de cuelgue del sistema mediante métodos ampliamente conocidos, como son el journaling o software updates.
Referente a otros sistemas de ficheros como NTFS, ya es posible montar un volumen como lectura/escritura, se ha reescrito totalmente, al igual que sistemas de ficheros como FAT12 (MSDOS) y una amplia mejora en HPFS, HFS. En cuanto a formato de lectura/escritura de CD, se ha dado soporte de compresión dentro de lo que se conoce como ISO9660 y UFS.
Respecto a la mejora de rendimiento en compartición de memoria, se ha creado hugetlbfs, el cual agiliza la compartición de datos principalmente usada en grandes bases de datos.

Audio y multimedia
Dentro de las características de 2.6 la novedad es el soporte de ALSA en sustitución de lo que se conocía anteriormente como OSS en 2.4. El viejo modelo (Sistema de Sonido Abierto) tenía sus limitaciones, ya que no disponía de una estructura basada en hilos y no era segura en máquinas SMP, por lo que solucionar estos problemas provocaba una gran incompatibilidad en la mayoría de los dispositivos. Por ello se decidió integrar ALSA dentro del kernel.
Además de ampliar estas carencias, se ha adoptado una estructura totalmente modular desde un principio, de tal forma que permite de forma sencilla mejorar esta arquitectura dando soporte a múltiples tarjetas de sonido. Con ALSA tambi

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información