¿Por qué Linux escala tan bien a diferentes plataformas de hardware?

22

¿Por qué Linux funciona bien en tantos tipos diferentes de máquinas: computadoras de escritorio, computadoras portátiles, servidores, dispositivos integrados, teléfonos móviles, etc.? ¿Se debe principalmente a que el sistema está abierto, por lo que cualquier parte del mismo puede modificarse para funcionar en diferentes entornos? ¿O hay otras propiedades del kernel y / o sistema Linux que facilitan que este sistema operativo funcione en una gama tan amplia de plataformas?

Justin Ethier
fuente
77
Creo que ya tiene parte de la respuesta: la apertura facilita a los diferentes grupos de personas o empresas adaptarla a sus necesidades. Dado que el núcleo fue criticado notablemente por ser monolítico, no estoy seguro de que su diseño inicial haya sido deliberadamente optimizado para la escalabilidad de ninguna manera. Supongo que un mayor número de personas ha trabajado en el núcleo de Linux que en otros sistemas operativos, ¿y tal vez esto ha obligado a los encargados del mantenimiento a dividir el código en partes con interfaces claras? Por otro lado, algunas variantes de BSD tienen la portabilidad como un objetivo explícito.
RedGrittyBrick
@Red: Fue criticado por ser un kernel monolítico en lugar de un micro kernel, aunque eso no tiene nada que ver con su diseño. Tiene que ver con la cantidad de kernel que se ejecuta en el espacio de usuario y la cantidad que se ejecuta en kernelspace. El núcleo de Windows NT (por ejemplo) es muy modular, pero sigue siendo técnicamente monolítico porque la mayoría de los servicios (es decir, el sistema de archivos) se ejecutan en modo de núcleo en lugar de modo de usuario.
Billy ONeal
@ Billy: Windows NT es técnicamente un núcleo híbrido . Creo que Microsoft aún mantiene los subsistemas utilizando el paso de mensajes y mantiene la capacidad de mover piezas al espacio del usuario como lo desee. Lo hicieron con el sistema de gráficos en Vista: ahora está en el espacio del usuario después de haber estado en el kernel desde NT 4.0
Zan Lynx
2
@Zan: Tenía la impresión de que se disputaba el estado de "núcleo híbrido" . Por eso dije "monolítico". NT ciertamente tiene muchas características monolíticas, incluso si está dividido en piezas de biblioteca.
Billy ONeal
@Billy: Me parece que si su kernel puede convertirse en un micro-kernel simplemente cambiando algunas opciones y reconstruyendo, entonces es algo más que monolítico, incluso si las compilaciones binarias más utilizadas ponen todo en el espacio de direcciones del kernel.
Zan Lynx

Respuestas:

31

Si bien la apertura es ciertamente parte de ella, creo que el factor clave es la continua insistencia de Linus Torvald de que todo el trabajo, de grande a pequeño, tiene un lugar en el núcleo principal de Linux, siempre y cuando esté bien hecho. Si en algún momento hubiera decidido trazar una línea y decir "está bien, para ese sofisticado hardware de supercomputadora, necesitamos una bifurcación", entonces podrían haberse desarrollado variantes de sistemas pequeños y de alta gama completamente separadas. Tal como están las cosas, en cambio las personas han hecho el trabajo más duro para hacer que todo juegue relativamente bien.

Y, por lo general, no se permite que los errores que permiten un lado de las cosas en detrimento del otro, de nuevo, obliguen a las personas a resolver problemas de una manera más difícil pero más correcta, lo que suele ser más fácil de seguir. una vez que lo que sea necesario, el kludge se convierte en una nota al pie histórica.

De una entrevista hace varios años :

P: Linux es un sistema versátil. Suministra PC, grandes servidores, móviles y diez o más dispositivos. Desde su posición privilegiada, ¿qué sector será el que Linux expresará el mayor potencial?

R: Creo que el verdadero poder de Linux es exactamente que no se trata de un nicho. Todos pueden jugar, y diferentes personas y diferentes compañías tienen motivaciones y creencias totalmente diferentes en lo que es importante para ellos. Así que ni siquiera estoy interesado en ningún sector en particular.

mattdm
fuente
18
Y el sistema pequeño y las definiciones de sistema enormes siguen cambiando todo el tiempo, por lo que es bueno que se hayan evitado errores. Los teléfonos inteligentes multinúcleo ahora pueden beneficiarse de todo el trabajo de la supercomputadora realizado hace años.
Zan Lynx
4

Linux escala a muchos tipos diferentes de hardware porque:

  • es muy configurable
  • la fuente está disponible gratuitamente y se puede construir para cualquier CPU que tenga un compilador C disponible
  • Los procesadores en dispositivos integrados y teléfonos móviles tienen al menos el mismo nivel o más potencia en comparación con las 386 máquinas originales en las que se llevó a cabo el desarrollo inicial de Linux, y continúan ganando potencia
  • funciona bien con nada más que una red, alguna forma de disco o dispositivo similar a un disco y un puerto serie
LawrenceC
fuente
Bueno, alguien necesitaría escribir una cantidad mínima de código de arranque y tiempo de ejecución C para la plataforma de destino. Ah, y tiene que soportar memoria virtual. Pero por lo demás cierto :)
Billy ONeal
1
@ Billy Hay puertos para los sistemas nommu: uClinux, uClinux / ARM y MontaVista Linux.
Tobu
@Tobu: Hmm .. No entiendo cómo puede ser eso. Toda la "Filosofía de Unix" para múltiples procesos tiene la suposición de que algo así forkes posible y forkno se puede hacer de manera razonablemente eficiente en un sistema de memoria no virtual. Si bien los puertos indicados probablemente usan partes del kernel de Linux y pueden ejecutar algún software de Linux, en su mayor parte parece que las API expuestas por estos puertos son diferentes a los núcleos de Linux típicos. (Ejemplo: mapeo de memoria, que obviamente requiere memoria virtual)
Billy ONeal
linuxjournal.com/article/7814 : dice que uCLinux no es compatible con fork (), pero una variante de bloqueo llamada vfork (), las aplicaciones bajo uCLinux tienen que ser reescritas para usar vfork o hilos.
LawrenceC
4

El kernel de Linux escala bien porque eso es lo que es. El núcleo del núcleo es relativamente pequeño y hace lo que debe hacer. Los controladores de dispositivo son opcionales y pueden dejarse fuera del núcleo para sistemas más pequeños. Más allá de los requisitos mínimos del núcleo, la mayoría de las funcionalidades se implementan como características opcionales.

Eche un vistazo al archivo de configuración instalado junto a la mayoría de los núcleos. Enumerará todas las funciones que se activaron y qué controladores son compatibles.

Los controladores son compatibles ya sea incrustados en el núcleo o como módulos cargables. Esto permite que un núcleo se configure dinámicamente para el hardware en el que se está ejecutando. Este es el enfoque utilizado por muchas distribuciones.

Además de tener las herramientas de compilación, modificar el núcleo para un nuevo hardware es relativamente simple. Para un nuevo procesador, solo el código relacionado debe implementarse como modificaciones a la funcionalidad existente. Los nuevos dispositivos solo requieren un nuevo controlador con los ganchos relevantes. Los nuevos sistemas de archivos también son modificaciones relativamente triviales.

La base del código se ha mantenido bien para mantener esta flexibilidad sin bifurcación externa. La compilación condicional impulsa un núcleo muy flexible que se ha mantenido lo más mínimo posible.

BillThor
fuente
1

Me falta la experiencia técnica detallada para respaldar esta respuesta, pero mi experiencia sugiere que Linux escala bien en comparación con otros sistemas operativos que uso con frecuencia (principalmente, Windows). Entonces, tal vez la pregunta sea por qué Windows no escala tan bien como Linux.

Si repetir la pregunta de esa manera aún es útil para usted, sugeriría que las fuerzas del mercado motiven a Microsoft a agregar características y funcionalidades orientadas al hardware más reciente y más capaz, porque venden más copias del sistema operativo principalmente cuando los usuarios finales compran nuevos sistemas. . Entonces, en cualquier momento, encuentro que la última versión de Windows funciona mal en hardware antiguo y menos capaz.

Perdóname si eso simplifica demasiado tu pregunta.

Mox
fuente
Parece que estás hablando del sistema operativo, mientras que el tipo está hablando del núcleo. Bueno, a menos que sepas con seguridad si el núcleo de Windows está hinchado.
tshepang
@Tshepang: Para ser justos, las preguntas se refieren al "núcleo y / o sistema Linux". ¿Windows 7 y Windows Phone 7 comparten un núcleo? Lo poco que he leído sugiere que sus núcleos podrían tener menos código en común que los núcleos de Ubuntu Server y Android.
RedGrittyBrick
Gracias, pero la pregunta era realmente sobre Linux y no sobre cualquier otro sistema operativo. Hay muchos otros por ahí: en.wikipedia.org/wiki/List_of_operating_systems
Justin Ethier
El núcleo NT es realmente muy eficiente, pero es la gran cantidad de capas que lo rodean lo que lo hace
LawrenceC