Tanto el kernel de Linux como el de macOS están basados en UNIX. Algunos dicen que macOS es «linux», otros dicen que ambos son compatibles debido a las similitudes entre los comandos y la jerarquía del sistema de archivos.

Hoy quiero mostrar un poco de ambos, mostrando las diferencias y similitudes entre el Kernel de Linux & Kernel de Mac como ya mencioné en anteriores artículos sobre el kernel de Linux.

Table of Contents

Kernel de macOS

En 1985, Steve Jobs dejó Apple debido a un desacuerdo con el CEO John Sculley y la junta directiva de Apple. Entonces fundó una nueva empresa de informática llamada NeXT. Jobs quería que un nuevo ordenador (con un nuevo sistema operativo) saliera al mercado rápidamente. Para ahorrar tiempo, el equipo de NeXT utilizó el núcleo Mach de Carnegie Mellon y partes de la base de código BSD para crear el sistema operativo NeXTSTEP.

Sistema operativo de escritorio NeXTSTEP

NeXT nunca llegó a ser un éxito financiero, en parte debido a la costumbre de Jobs de gastar el dinero como si todavía estuviera en Apple. Mientras tanto, Apple intentó sin éxito actualizar su sistema operativo en varias ocasiones, incluso asociándose con IBM. En 1997, Apple compró NeXT por 429 millones de dólares. Como parte del acuerdo, Steve Jobs regresó a Apple y NeXTSTEP se convirtió en la base de macOS e iOS.

Núcleo de Linux

A diferencia del núcleo de macOS, Linux no fue creado como parte de una empresa comercial. En cambio, fue creado en 1991 por el estudiante de informática Linus Torvalds. Originalmente, el kernel fue escrito según las especificaciones del ordenador de Linus porque quería aprovechar su nuevo procesador 80386.

Linus publicó el código de su nuevo kernel en la web en agosto de 1991. Pronto, estaba recibiendo sugerencias de código y recursos en todo el mundo. Al año siguiente, Orest Zborowski portó el sistema X Windows a Linux, dándole la capacidad de soportar una interfaz gráfica de usuario.

Recursos del kernel de MacOS

El kernel de macOS se conoce oficialmente como XNU. El acrónimo significa «XNU no es Unix». Según la página oficial de Apple en Github, XNU es «un kernel híbrido que combina el kernel Mach desarrollado en la Universidad Carnegie Mellon con FreeBSD y componentes C++ para los drivers.»

La parte del código del subsistema BSD está «normalmente implementada como servidores de espacio de usuario en sistemas de microkernel». La parte Mach es responsable del trabajo de bajo nivel, como la multitarea, la memoria protegida, la gestión de la memoria virtual, el soporte de depuración del kernel y la E/S de la consola.

Recursos del kernel de MacOS

Mapa de MacOS: el corazón de todo se llama Darwin; y dentro de él, tenemos utilidades del sistema separadas y el kernel XNU, que está compuesto en partes por el kernel Mach y por el kernel BSD.

A diferencia de Linux, este kernel está dividido en lo que llaman el kernel híbrido, lo que permite que una parte del mismo se detenga para su mantenimiento, mientras otra sigue funcionando. En varios debates esto también abrió la cuestión del hecho de que un kernel híbrido es más estable; si una de sus partes se detiene, la otra puede iniciarlo de nuevo.

Recursos del kernel de Linux

Mientras que el kernel de macOS combina las capacidades de un microkernel con Mach y un kernel monolítico como BSD, Linux es sólo un kernel monolítico. Un kernel monolítico se encarga de gestionar la CPU, la memoria, la comunicación entre procesos, los controladores de dispositivos, el sistema de archivos y las llamadas de servicio del sistema. Es decir, lo hace todo sin subdivisiones.

Obviamente, esto ya ha suscitado muchas discusiones incluso con el propio Linus y otros desarrolladores, que afirman que un kernel monolítico es más susceptible a los errores además de ser más lento; pero Linux es todo lo contrario a esto cada año, y puede ser optimizado como un kernel híbrido. Además, con la ayuda de RedHat, el kernel incluye ahora un Live Patch que permite el mantenimiento en tiempo real sin necesidad de reiniciar.

Diferencias entre el kernel de macOS (XNU) y el de Linux

  1. El kernel de macOS (XNU) existe desde hace más tiempo que el de Linux y se basa en una combinación de dos bases de código aún más antiguas. Esto pesa a favor, por estabilidad e historia.
  2. Por otro lado, Linux es más nuevo, escrito desde cero y utilizado en muchos otros dispositivos; tanto que está presente en los 500 mejores entre los mejores superordenadores y en el recientemente inaugurado superordenador norteamericano.

En el ámbito del sistema, no disponemos de un gestor de paquetes a través de la línea de comandos en el terminal de macOS.

La instalación de los paquetes en formato .pkg -como los de BSD- es a través de esta línea de comandos, si no a través de la GUI:

$ sudo installer -pkg /path/to/package.pkg -target /

¡NOTA: el .pkg de MacOS es totalmente diferente al .pkg de BSD!

No penséis que macOS soporta programas de BSD y viceversa. No soporta y no instala. Puedes tener un comando equivalente a apt en macOS, bajo 2 opciones:

Instalar Homebrewor MacPorts. Al final, tendrá la siguiente sintaxis:$ brew install PACKAGE

$ port install PACKAGE

Recuerde que no todos los programas/paquetes disponibles para Linux o BSD estarán en MacOS Ports.

Compatibilidad

En términos de compatibilidad, no hay mucho que decir; el núcleo Darwin y el núcleo Linux son tan distintos como comparar el núcleo Windows NT con el núcleo BSD. Los controladores escritos para Linux no funcionan en macOS y viceversa. Deben ser compilados previamente; curiosamente, Linux tiene una serie de demonios de macOS, ¡incluyendo el servidor de impresión CUPS!

Lo que tenemos en común de compatibilidad son, de hecho, herramientas de terminal como los paquetes GNU Utils o Busybox, por lo que no sólo tenemos BASH sino también gcc, rm, dd, top, nano, vim, etc. Y esto es intrínseco a todas las aplicaciones basadas en UNIX. Además, tenemos la arquitectura de carpetas del sistema de archivos, carpetas comunes al root en /, / lib, / var, / etc, / dev, etc.

Conclusión

macOS y Linux tienen sus similitudes y diferencias, al igual que BSD comparado con Linux. Pero al estar basados en UNIX, comparten patrones que los hacen familiares al entorno. Quienes usen Linux y migren pro macOS o viceversa estarán familiarizados con una serie de comandos y características.

La diferencia más llamativa sería la interfaz gráfica, cuyo problema sería una cuestión de adaptación personal.


El alojamiento de LinuxAndUbuntu está patrocinado por massiveGRID