¿Pueden los 25 años de desarrollo del kernel de Linux ser calificados o abstraídos en términos simples? [cerrado]

12

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:

  1. ¿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?
  2. ¿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.


fuente
El tipo de "soporte para hasta 229 ID de procesos" me llamó la atención, así que busqué en Google y la única referencia es, al parecer, la fuente original de ese párrafo . Pensé que las ID de proceso tienen un rango (firmado) de 16 bits, es decir, ~ 16,000, pero de hecho puede ser mucho más que eso . Ciertamente no son unos pocos cientos.
Ricitos
3
Esta pregunta es demasiado amplia porque está buscando el artículo de Wikipedia sobre el tema.
Gilles 'SO- deja de ser malvado'
¿Tiene la intención de escribir un documento aquí? Eso está bien, pero sería útil, en cuanto a consejos, si es específico sobre lo que está tratando de hacer. Supongo que no es solo tener un buen resumen listo para su próxima noche en el abrevadero local;)
Ricitos
1
Recuerdo vagamente que había al menos algunas personas planeando escribir disertaciones sobre esto o algo similar. Sospecho que encontrará literatura académica sobre el tema ... Además de señalar las publicaciones existentes, parece que sus preguntas requerirán meses de investigación para responder.
derobert
En su pregunta, tal vez necesite contarnos sobre los términos simples para obtener una buena respuesta aquí. Aparte de eso, publique esto en el lkml y obtenga sus comentarios sobre su cronología. Si te perdiste algo importante, te lo harán saber.
Bananguin

Respuestas:

11

Usted pregunta:

¿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?

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.

Faheem Mitha
fuente
1
+1 Por plantear el problema de las fuerzas sociopolíticas que hicieron que Linux en combinación con GNU fuera desconcertante en la corriente principal. Creo que ese es un aspecto muy significativo de los orígenes, que aunque puede parecer un "problema no técnico", en realidad es una característica definitoria de las manos en el desarrollo del sistema operativo (ver particularmente los escritos de Eric S. Raymond ) y una parte importante de la dinámica de su adopción por una amplia gama de fabricantes de hardware y como la plataforma históricamente predominante de Internet.
Ricitos
^ Nota muchas personas tienen un núcleo de Linux en su casa y no lo saben debido a esto (el router, su caja de DVR, etc.)
GOLDILOCKS
Elogio su respuesta por situar el núcleo a tiempo y apelar a la dinámica que prevaleció: la evolución de la informática; el atractivo comercial; las fuerzas del mercado; La Internet; libertad de computación; Licencia; y cómo todo lo anterior tiene un impacto en la implementación en el núcleo, con una perspectiva en Linux en su conjunto. Tengo que leer en su declaración sobre un "estado de cosas antinatural" que podemos carecer de una perspectiva histórica para evaluar esto adecuadamente, y esto es importante. Aunque estaba realmente centrado en el núcleo per se, pensaré más en sus puntos y comentarios anteriores. ¡Gracias!
1
@goldilocks: sin mencionar sus teléfonos Android.
slebetman