¿Está desactualizado el diseño del kernel de Linux?

¿Está desactualizado el diseño del kernel de Linux?

Linux ha hecho grandes avances a lo largo de los años, avanzando mucho más allá de donde estaba cuando comenzó. Pero un redditor se preguntó recientemente si Linux sufría de un diseño de kernel desactualizado. Hizo su pregunta en el subreddit de Linux y obtuvo algunas respuestas interesantes.

Ronis_BR inició el hilo con estos comentarios:

Soy usuario de Linux desde 2004. Sé mucho sobre cómo usar el sistema, pero no entiendo demasiado sobre lo que hay bajo el capó del kernel. En realidad, mi conocimiento se detiene en cómo compilar mi propio kernel.

Sin embargo, me gustaría preguntarles a los informáticos aquí ¿qué tan desactualizado está el kernel de Linux con respecto a su diseño? Quiero decir, se inició en 1992 y algunas características no cambiaron. Por otro lado, supongo que el estado del arte del diseño del kernel del sistema operativo (si existe ...) debería haber avanzado mucho.

¿Es posible afirmar en qué puntos el diseño del kernel de Linux es más avanzado en comparación con el diseño de kernels de Windows, macOS, FreeBSD? (Observe que me refiero al diseño, no a cuál es mejor. Por ejemplo, HURD tiene un gran diseño, pero es bastante sencillo decir que Linux es mucho más avanzado hoy en día).

Más en Reddit

Sus compañeros redditors de Linux respondieron con sus pensamientos sobre el diseño del kernel:

ExoticMandibles : “¿" Desactualizado "? No. El diseño del kernel de Linux está bien informado con respecto al diseño moderno del kernel. Es solo que hay que tomar decisiones, y Linux se decantó por la tradicional.

La tensión en el diseño del núcleo es entre "seguridad / estabilidad" y "rendimiento". Los micronúcleos promueven la seguridad a costa del rendimiento. Si tiene un microkernel mínimo diminuto, donde el kernel facilita hablar con el hardware, la administración de memoria, IPC y poco más, tendrá una superficie API relativamente pequeña que lo hará difícil de atacar. Y si tiene un controlador de sistema de archivos / controlador de gráficos / etc. con errores, el controlador puede fallar sin quitar el kernel y probablemente se pueda reiniciar sin causar daño. ¡Estabilidad superior! ¡Seguridad superior! Todas las cosas buenas.

La desventaja de este enfoque es la sobrecarga eterna e ineludible de todo ese IPC. Si su programa quiere cargar datos desde un archivo, tiene que pedirle al controlador del sistema de archivos, lo que significa que IPC procese un cambio de contexto de proceso y dos transiciones de anillo. Luego, el controlador del sistema de archivos le pide al kernel que hable con el hardware, lo que significa dos transiciones de anillo. Luego, el controlador del sistema de archivos envía su respuesta, lo que significa más transiciones de dos anillos de IPC y otro cambio de contexto. Sobrecarga total: dos cambios de contexto, dos llamadas IPC y seis transiciones de timbre. ¡Muy caro!

Un kernel monolítico pliega todos los controladores de dispositivo en el kernel. Por lo tanto, un controlador de gráficos con errores puede derribar el kernel, o si tiene un agujero de seguridad, podría ser aprovechado para comprometer el sistema. ¡Pero! Si su programa necesita cargar algo desde el disco, llama al núcleo, que hace una transición de anillo, habla con el hardware, calcula el resultado y devuelve el resultado, haciendo otra transición de anillo. Sobrecarga total: dos transiciones de anillo. ¡Mucho mas barato! ¡Mucho mas rápido!

En pocas palabras, el enfoque de microkernel dice "Renunciemos al rendimiento por una seguridad y estabilidad superiores"; el enfoque del kernel monolítico dice "mantengamos el rendimiento y solucionemos los problemas de seguridad y estabilidad a medida que surgen". El mundo parece aceptar, si no preferir, este enfoque.

ps Windows NT nunca fue un microkernel puro, pero lo fue durante mucho tiempo. NT 3.x tenía controladores gráficos como proceso de usuario y, sinceramente, NT 3.x era súper estable. NT 4.0 movió los controladores de gráficos al kernel; era menos estable pero mucho más eficaz. Este fue un movimiento generalmente popular ".

F22Rapture : “Un beneficio práctico del enfoque del kernel monolítico que se aplica a Linux es que empuja a los proveedores de hardware a introducir sus controladores en el kernel, porque pocos proveedores de hardware quieren mantenerse al día con los cambios de la interfaz del kernel por sí mismos. Dado que la mayoría de los controladores están en árbol, las interfaces se pueden refactorizar continuamente sin la necesidad de admitir API heredadas. El kernel solo garantiza que no romperán el espacio de usuario, no el espacio del kernel (controladores), y hay mucha rotación cuando se trata de esas interfaces de controladores, lo que empuja a los proveedores a conectar sus controladores. Nvidia es uno de los pocos proveedores en los que puedo pensar que tiene los recursos para mantener su propio controlador fuera del árbol basado completamente en componentes propietarios.

Sospecho que si los controladores fueran sus propias islas pequeñas separadas por interfaces estables, es posible que no tengamos tantas empresas dispuestas a abrir su código ".

Mallardtheduck : “En este contexto," monolítico "no se refiere a tener (casi) todo el código del kernel y del controlador en un solo árbol fuente, se refiere al hecho de que todo el kernel y los controladores se ejecutan como una sola" tarea "en un espacio de direcciones único.

Esto es distinto de un "microkernel" donde los diversos elementos del kernel y controladores se ejecutan como tareas separadas con espacios de direcciones separados.

Como se mencionó, el kernel de Windows es básicamente monolítico, pero los controladores aún se desarrollan por separado. macOS usa una especie de kernel híbrido que usa un microkernel en su núcleo, pero aún tiene casi todo en una sola "tarea", a pesar de tener casi todos los controladores desarrollados / suministrados por Apple ".

Slabity : “La gente ha estado discutiendo esto desde antes de 2004. El debate Tanenbaum-Torvalds en 1999 1992 es un gran ejemplo de los argumentos entre los diseños de microkernel y kernel monolítico.

Personalmente, soy parte del campo del microkernel. Son más limpios, más seguros y más portátiles. En este sentido, el diseño del kernel estaba desactualizado en el momento de su creación.

… Linux ha superado muchos de los problemas que vienen con los diseños de kernel monolíticos. Se ha vuelto modular, su estricta política de código lo ha mantenido relativamente seguro, y no creo que nadie se oponga a lo portátil que es ".

TEchnicolourSocks : “Solo hay una forma correcta de diseñar el kernel y es la forma de TempleOS.

Escrito en HolyC, no conectado a la red, solo ring-0. Como Dios quiso ".

Scandalousmambo : “La naturaleza de desarrollar un sistema tan complejo como el kernel de Linux significa que siempre estará" desactualizado "según las personas que estaban en sillas altas cuando se diseñó por primera vez.

Este sistema operativo probablemente representa decenas de millones de horas de trabajo.

¿Se puede reemplazar? Por supuesto. ¿Lo hará? No."

Grumbel : “En términos puramente prácticos, ya no hay mucha diferencia. En el pasado, HURD estaba bastante bien con sus sistemas de archivos de espacio de usuario y demás. Pero Linux desde entonces ha ganado la mayor parte de esa funcionalidad. Si desea escribir un sistema de archivos, un controlador USB o un dispositivo de entrada en el espacio de usuario, puede hacerlo, sin necesidad de piratear el kernel. Ahora puede incluso parchear el kernel en tiempo de ejecución si realmente lo desea.

La filosofía de Linux de no escribir controladores con errores que bloqueen el kernel en primer lugar, en lugar de hacerlo súper robusto contra los controladores de mierda, también parece funcionar bastante bien en el mundo real. Probablemente tengamos que agradecerle a USB por eso, ya que tener hardware autodescriptivo eliminó la necesidad de escribir un nuevo controlador para cada nuevo dispositivo que conecte a la PC.

Así que todo el debate sobre el diseño es ahora incluso más académico de lo que solía ser, ya que simplemente no quedan muchas características que obtendría con cambios de diseño solamente y que no podría implementar en un kernel monolítico ".

KugelKurt : “Aunque gran parte de la discusión aquí es sobre microkernels vs kernel monolítico, la investigación más reciente se centró en lenguajes de programación.

Si comenzó un kernel completamente nuevo hoy, es probable que no esté escrito en C. Los proyectos Singularity y Midori de Microsoft exploraron la viabilidad de los kernels de código administrado / C #.

El sistema operativo que no es de investigación más conocido sin un kernel C es probablemente Haiku, que está escrito en C ++ ".

OmniaVincitVeritas : “Estaba desactualizado cuando se creó por primera vez y sigue siéndolo. Pero, como sabemos, el progreso técnico casi nunca funciona, de modo que la solución técnica / científicamente superior se eleva a la cima en el corto plazo; muchas otras cosas también influyen en el éxito.

Si lo hiciera, estaríamos ejecutando microkernels 100% seguros escritos en Haskell. Las empresas de seguridad no existirían. Tendría un híbrido de unicornio / poni que funciona con la luz del sol ".

Daemonpenguin : “Hay algunos conceptos que, en teoría, pueden proporcionar mejores diseños de kernel. Existe un kernel de Rust, por ejemplo, que podría eludir varios vectores de ataque de memoria. Los microkernels tienen, en teoría, algunas opciones de diseño muy buenas que los hacen portátiles, confiables y potencialmente autocorregibles.

Sin embargo, el problema es que son más teoría que práctica. No importa qué tan buena sea una teoría, la gente casi siempre tomará lo que es práctico (es decir, trabajar ahora) en lugar de un mejor diseño. El kernel de Linux tiene tanto soporte de hardware y tantas empresas que financian el desarrollo que es poco probable que otros kernels (independientemente de sus geniales opciones de diseño) se pongan al día.

MINIX, por ejemplo, tiene un diseño sólido y algunas características asombrosas, pero tiene muy poco soporte de hardware, por lo que casi nadie desarrolla para la plataforma ".

Más en Reddit

DistroWatch opiniones 4MLinux 21.0

Linux ofrece muchos tipos diferentes de distribuciones. Algunos vienen con más software y otros con menos. 4MLinux está dirigido a aquellos que prefieren una distribución ligera. Un escritor de DistroWatch tiene una revisión completa de 4MLinux 21.0.

Joshua Allen Holm informa para DistroWatch:

4MLinux es una distribución de Linux ligera diseñada para proporcionar cuatro áreas clave de funcionalidad. Con solo el software disponible en ISO, 4MLinux proporciona una amplia variedad de aplicaciones para realizar el mantenimiento del sistema; reproducir muchos tipos de archivos multimedia; ofrecer un miniservidor para proporcionar un servidor web básico; y tiene una selección decente de juegos, que la distribución coloca en una categoría que llama misterio. Esas cuatro funciones proporcionan la base del nombre de la distribución. Cuatro cosas que comienzan con "M", entonces 4MLinux.

Arrancar 4MLinux desde una unidad flash es un proceso rápido. Me conecté rápida y automáticamente como root y pude empezar a trabajar en el entorno de escritorio. Para el escritorio, 4MLinux usa JVM combinado con un lanzador Wbar en la parte superior de la pantalla que proporciona accesos directos a los programas principales. Además, existe IDesk para administrar el escritorio y Conky para proporcionar información básica sobre el estado del sistema. Wbar, IDesk y Conky se pueden apagar, pero el sistema ya es muy ligero cuando se encuentran en su estado habilitado predeterminado.

Fuera de la caja, 4MLinux viene con una buena selección de software. En el menú de la aplicación JVM hay atajos para un terminal, aplicaciones de Internet, mantenimiento, multimedia, miniservidor y misterio. El submenú de Internet contiene enlaces para navegación web, HexChat para IRC, Sylpheed para correo electrónico, Transmission para Bittorrent, uGet para descargar, una utilidad para compartir archivos a través de Bluetooth, GNOME PPP para conexiones de acceso telefónico a Internet y una opción para activar y desactivar Tor.

4MLinux proporciona una gran cantidad de software en un paquete pequeño. Para el mantenimiento del sistema, es una buena opción tenerlo a mano. Para multimedia, miniservidor y misterio, proporciona una selección útil de software, pero hay otras distribuciones que se enfocan en solo una de esas tareas y lo hacen mejor al estar más enfocados. Eso no quiere decir que 4MLinux sea malo, pero intenta hacer demasiadas cosas diferentes a la vez. Para ser completamente honesto, creo que 4MLinux sería una oferta más fuerte si fuera 3MLinux y eliminara el aspecto misterioso por completo. Quizás incluir solo el solitario o algún otro juego ligero para divertirse mientras se ejecutan las tareas de mantenimiento y usar el espacio liberado al eliminar los juegos para incluir algunas de las aplicaciones de extensión opcionales por defecto.

Más en DistroWatch

LinuxInsider analiza Ultimate Edition 5.4

Ultimate Edition, por otro lado, está en el extremo opuesto del espectro de 4MLinux. UE es definitivamente el deleite de los maximalistas, ya que está repleto de software. Un escritor de LinuxInsider tiene una revisión completa de Ultimate Edition 5.4.

Jack M. Germain informa para LinuxInsider:

No estaba emocionado con mis experiencias prácticas iniciales al familiarizarme con Ultimate Edition 5.4. Encontré una molesta lista de cosas que estaban mal.

Con muchos años de revisión de distribuciones de Linux en mi haber, he notado una conexión sólida entre las primeras impresiones del sitio web de una distribución y las impresiones duraderas del rendimiento de una distribución. Digamos que la condición desorganizada del sitio web, en este caso, se lleva a cabo en el último lanzamiento de esta distribución.

Un pequeño ejemplo: no encontré ninguna lista de los requisitos mínimos de instalación del hardware. Eso resultó ser frustrante. Perdí el tiempo intentando cargar Ultimate Linux en varias computadoras antiguas. Algunos de los problemas estaban relacionados con la memoria y el espacio de almacenamiento. Otros problemas involucraron deficiencias en la tarjeta gráfica.

Ultimate Edition se dirige a los recién llegados a Linux, pero aquellos que lo intentan pueden necesitar un poco más de familiaridad con Linux para solucionar algunos de los problemas al ejecutar este sistema operativo Linux no tan definitivo.

Más en LinuxInsider

¿Te perdiste una redada? Consulte la página de inicio de Eye On Open para estar al día con las últimas noticias sobre código abierto y Linux .