El kernel de Linux tiene casi 25 años . Si tuviera que encontrar una versión corta sobre el historial de desarrollo del kernel de Linux desde 1991 (su fecha de inicio), y en particular desde 1994 (1.0.0) hasta hoy, bueno, no podría. Lo mejor que podría hacer antes de leer todas las notas de lanzamiento del núcleo sería proporcionar las siguientes características generales de lanzamiento agregadas al núcleo hasta la versión 3.11 (notas y enlaces omitidos):
- La versión 1.0 del kernel de Linux se lanzó el 14 de marzo de 1994. Esta versión del kernel de Linux solo admitía sistemas informáticos basados en i386 de un solo procesador. La portabilidad se convirtió en una preocupación, por lo que la versión 1.2 (lanzada el 7 de marzo de 1995) obtuvo soporte para sistemas informáticos que utilizan procesadores basados en las arquitecturas Alpha, SPARC y MIPS.
- La versión 2.0 se lanzó el 9 de junio de 1996. Hubo 41 lanzamientos en la serie. La característica principal de 2.0 era el soporte SMP (es decir, soporte para múltiples procesadores en un solo sistema) y soporte para más tipos de procesadores.
- La versión 2.2 (lanzada el 26 de enero de 1999) eliminó el spinlock global y proporcionó un soporte SMP mejorado, y agregó soporte para las arquitecturas m68k y PowerPC, así como nuevos sistemas de archivos (incluido el soporte de solo lectura para NTFS de Microsoft).
- La versión 2.4.0 , lanzada el 4 de enero de 2001, contenía soporte para ISA Plug and Play, USB y tarjetas de PC. También incluyó soporte para el procesador PA-RISC de Hewlett-Packard. El desarrollo de 2.4.x cambió un poco porque se pusieron a disposición más funciones a lo largo de la serie, que incluyen: soporte para Bluetooth, Logical Volume Manager (LVM) versión 1, soporte RAID, InterMezzo y sistemas de archivos ext3.
- La versión 2.6.0 se lanzó el 18 de diciembre de 2003. El desarrollo de 2.6.x cambió aún más para incluir nuevas características a lo largo de la serie. Entre los cambios que se han realizado en la serie 2.6 están: integración de µClinux en las fuentes del núcleo de la línea principal, soporte de PAE, soporte para varias nuevas líneas de CPU, integración de ALSA en las fuentes del núcleo de la línea principal, soporte para hasta 2 32 usuarios ( desde 2 16 ), soporte para hasta 2 29 ID de proceso (solo 64 bits, arcos de 32 bits todavía limitados a 2 15), aumentó considerablemente la cantidad de tipos de dispositivos y la cantidad de dispositivos de cada tipo, mejor compatibilidad de 64 bits, compatibilidad con sistemas de archivos que admiten tamaños de archivo de hasta 16 terabytes, preferencia en el núcleo, compatibilidad con la biblioteca nativa de hilos POSIX (NPTL), integración de Linux en modo de usuario en las fuentes del núcleo de la línea principal, integración de SELinux en las fuentes del núcleo de la línea principal, soporte InfiniBand y mucho más. También es notable la adición de varios sistemas de archivos en las versiones 2.6.x: FUSE, JFS, XFS, ext4 y más. Los detalles sobre el historial de la serie 2.6 del núcleo se pueden encontrar en los archivos ChangeLog en el área de lanzamiento del código fuente de la serie 2.6 del núcleo de kernel.org.
- La versión 3.0 se lanzó el 22 de julio de 2011. Torvalds anunció que el gran cambio fue "NADA. Absolutamente nada". El 30 de mayo de 2011, Torvalds anunció: "... asegurémonos de que realmente hagamos el próximo lanzamiento no solo con un nuevo número brillante, sino también con un buen núcleo". Después del esperado proceso de desarrollo de 6-7 semanas, se lanzará cerca del 20 aniversario de Linux.
- En diciembre de 2012, Torvalds decidió reducir la complejidad del kernel eliminando la compatibilidad con los procesadores i386, haciendo que la serie 3.7 del kernel sea la última que aún admite el procesador original. La misma serie de soporte unificado para el procesador ARM.
- La versión 3.11 , lanzada el 2 de septiembre de 2013, agrega muchas características nuevas, como el nuevo indicador O_TMPFILE para abrir (2) para reducir las vulnerabilidades de archivos temporales, la gestión dinámica de energía de AMD Radeon experimental, el sondeo de red de baja latencia y zswap (caché de intercambio comprimido).
También podría agregar que durante muchos años la Fundación Linux ha estado informando sobre el desarrollo del kernel. Estos son los aspectos más destacados del desarrollo del núcleo 2012-2013:
- Casi 92,000 conjuntos de cambios se han fusionado de 3,738 desarrolladores individuales que representan a 536 corporaciones (que conocemos).
- Una amplia gama de nuevas características importantes se ha fusionado en la línea principal. Estos incluyen operación completa sin tick, espacios de nombres de usuario, virtualización KVM y Xen para ARM, seguimiento de carga por entidad en el planificador, punto de control / reinicio de espacio de usuario, soporte de arquitectura ARM de 64 bits, sistema de archivos orientado a flash F2FS, muchas mejoras de red dirigidas En los problemas de latencia y bufferbloat, dos subsistemas independientes que proporcionan almacenamiento en caché rápido para dispositivos de almacenamiento en bloque, y mucho más.
- La disputa de larga data sobre las características del kernel específicas de Android se ha desvanecido por completo en el fondo. La muy discutida función de "wakelocks" ha sido reemplazada silenciosamente por una solución principal diferente que se utiliza en los últimos dispositivos Android.
- El uso de herramientas automatizadas para encontrar errores en los núcleos de desarrollo ha aumentado significativamente durante este período. Herramientas como el probador de fuzz "trinity" y el sistema de construcción y arranque de día cero están encontrando un gran número de errores en los núcleos de prelanzamiento, acortando el ciclo de desarrollo y permitiendo a la comunidad entregar lanzamientos de mayor calidad.
- Las contribuciones de las industrias móviles e integradas continúan aumentando. Linaro, Samsung y TI, por ejemplo, juntos contribuyeron 4.4% de los cambios en la versión anterior de este documento; para el período hasta 3.10, contribuyeron con casi el 11% de todos los cambios.
- El proyecto kernel participó en el Programa de Extensión para Mujeres por primera vez, dando lugar a 41 solicitudes para 7 puestos disponibles. Durante el proceso de solicitud, se enviaron 374 parches al núcleo, y más de 1/3 de esos parches fueron aceptados en la versión 3.10 del núcleo. El proceso interno ahora está en marcha, pero los resultados no comenzarán a aparecer hasta futuras versiones del kernel.
Además, cuantificar lo que le está sucediendo al kernel no es muy difícil ya que tenemos métricas más allá de las confirmaciones individuales . Por ejemplo, sabemos que el núcleo 1.0.0 en 1994 tenía 176 250 líneas de código; y sabemos que un kernel contemporáneo como 3.10 tiene 15 803 499 líneas de código. Considerablemente más. La frecuencia de liberación del kernel ha aumentado (63 días para 3.10), así como la tasa de cambio (9 confirmaciones por hora o más mientras hablamos). Para citar la Fundación Linux:
La capacidad de mantener esta tasa de cambio durante años no tiene precedentes en ningún proyecto de software público anterior.
Pero todo esto trae poca información en mi opinión. Por lo tanto, preguntaría:
- ¿Puede esta evolución de un cuarto de siglo calificarse sumariamente más allá de la adición lineal de todas las características enumeradas que componen este núcleo con el tiempo?
- ¿Y esto aporta alguna idea sobre de qué se trata el kernel de Linux o hacia dónde va? Después de 25 años de desarrollo, ¿se pueden sacar algunas conclusiones al respecto?
Buscando una respuesta abstracta en términos simples que lo diga todo sin recurrir a decirlo todo.
Respuestas:
Usted pregunta:
Dudo que tales preguntas tengan respuestas bien definidas. Sin embargo, creo que no es difícil entender las fuerzas que impulsan el desarrollo del kernel de Linux.
Primero, las computadoras son cosas cada vez más importantes. Chomsky comenta en alguna parte que son centrales para cualquier economía industrializada. Una computadora no es nada sin un sistema operativo, lo que hace que los sistemas operativos sean importantes.
Por un tiempo en los años 80 y 90, los sistemas operativos propietarios se volvieron ascendentes. Esto era, en cierto sentido, un estado de cosas antinatural. Windows de Microsoft fue durante un tiempo dominante, y en cierto sentido todavía lo es, pero solo mantuvo su posición explotando los efectos de red.
Con el auge de internet, se hizo posible producir un sistema operativo comunitario. Sin embargo, dicho sistema operativo solo sería útil si a su vez no pudiera ser patentado. La familia de sistemas operativos BSD no estaba en esa categoría. De ahí el surgimiento del kernel de Linux como el corazón de un sistema operativo de la comunidad que no puede ser patentado.
Tenga en cuenta que muchos grandes proveedores de computadoras se han quedado atrás del kernel de Linux. ¿Por qué? Las personas se preocupan por la libertad. Las comunidades se preocupan por la libertad. Las empresas solo se preocupan por las ganancias y las estrategias asociadas. Creo que muchas corporaciones informáticas hicieron las paces con la noción de un sistema operativo "mercantilizado", un "campo de juego nivelado", por así decirlo. Observaron el ejemplo de Microsoft ganando mucho dinero al patentar un sistema operativo, pero no todos pueden ser Microsoft, y tener un solo proveedor en tal posición de poder es, por decir lo menos problemático, aunque solo sea porque da ellos una ventaja injusta desde el punto de vista de las otras corporaciones.
Entonces, creo que dado que la mayoría de las corporaciones no están en condiciones de convertirse en Microsoft, y tal vez no lo desean, han decidido apoyar un sistema operativo "básico". De nuevo, un campo de juego nivelado. Por lo tanto, todos pueden usar este sistema operativo para cualquier propósito que quieran, y nadie en el grupo tiene una ventaja con respecto a nadie más. Otra forma de verlo es que tener algo tan básico como que un sistema operativo se convierta en propietario es una grave interferencia con los principios del libre mercado. En general, las corporaciones no están especialmente a favor de los mercados libres si pueden estar en el lado ganador, pero si no pueden, entonces lo están.
La mayoría de las características del kernel de Linux realmente se pueden deducir de estas dinámicas. Por ejemplo, la naturaleza modular y maleable de un sistema operativo similar a Unix se adapta bien a un sistema operativo que está diseñado para ser "básico". Además, en parte, la naturaleza de rápido movimiento del proyecto del núcleo se debe a que está tratando de satisfacer todas estas demandas corporativas para que sean lo que necesitan. Si bien mucha actividad se centra en el soporte / controladores de hardware, también hay mucha actividad fuera de esa área; Desarrollo constante de nuevas características y mantenimiento y mejora de las existentes.
Por supuesto, no debemos descartar los deseos de la comunidad, comúnmente llamada comunidad de software libre, o, a veces, FOSS (software libre y de código abierto), de tener un sistema operativo gratuito para que lo use la gente común, que no está controlado por las corporaciones. Después de todo, proyectos como Debian y Fedora están a cargo de voluntarios que creen en estos valores. Sin embargo, creo que el papel desempeñado por las corporaciones tampoco debe subestimarse.
fuente