Mac OS X no es FreeBSD en esteroides

General 24 Marzo, 2009

Existe un mito que se repite continuamente y que nació en la comunidad de software libre como un señalamiento de dedo hacia Apple, este mito dice que el núcleo de Mac OS X es FreeBSD, dando a entender que OS X no es más que un FreeBSD con un escritorio bonito hecho por Apple, este mito esta pensado para tapar las carencias de Linux respecto a OS X.

Leyendo la última columna de Silta en faq-mac me encuentro con esto:

Ya, silta, ¿y qué pinta el código abierto aquí? os preguntaréis. El kernel (núcleo) de Mac OS X es FreeBSD una “variante” de UNIX libre y gratuita alrededor de la que Apple dispone todas las tecnologías privativas y de pago que componen el atractivo interfaz gráfico de Mac OS X, y en consecuencia el producto final que comercializan. A nivel Mac OS X Server (la versión servidor del sistema) también se implementan soluciones abiertas como OpenDirectory, por ejemplo.

El nucleo de OS X no es FreeBSD sino XNU, se dice que se basa en FreeBSD por el hecho de tener una parte BSD en el nucleo, pero también podriamos decir que tiene una parte OpenBSD, otra NetBSD… hay un largo etcetera de posibilidades.

Para entender lo que tiene OS X se ha de hacer un recorrido histórico.

NextStep, el BSD 4.2 y FreeBSD

Cuando en 1987 NeXT presento Nextstep 1.0 este se basaba en la combinación del micronucleo Mach2 y BSD 4.2, por aquel entonces BSD era una versión academica de Unix completamente gratuita y de código abierto  pero que necesitaba el Unix de pago para funcionar por lo que no era un sistema completo. NeXT decidio optar por el Mach2 que tomo el papel del Unix System V en el sistema y conjuntamente con el BSD 4.2 se creo un sistema operativo capaz de competir de tú a tú con Unix pero que no era Unix, curiosamente a este sistema le llamaron XNU.

Todas las versiones de NeXTStep hasta Mac OS X 10.0 y todas las versiones de este hasta Snow Leopard usan la combo Mach+BSD, en OS X esto vario levemente pero os lo explico más adelante.

En el caso de FreeBSD su gestación empezó en 1990 con el proyecto 386BSD, el plan era llenar los huecos que le faltaban a BSD para no ser dependiente del Unix de AT&T y poder distribuirse de forma completa, se trataba del primer SO de código abierto y distribuido que iba a aparecer en el mercado, ya desde ese momento el código del núcleo de NextStep y el código de los BSD ya era diferente.

El problema era que AT&T creía que todo el código del Unix de Berkeley era suyo también por lo que cuando BSDi lanzo el primer sistema operativo BSD independiente de AT&T los denunciaron en un juicio que duro dos años, paralizo el desarrollo de los BSD libres y al mismo tiempo permitio que un tal Linux apareciera y tuviera una ventaja de tiempo.

NeXT por otro lado terminaría cerrando su división de hardware en 1993 y seguiría haciendo software, no con mucho éxito hasta que al final Jobs consiguio vender su empresa a Apple. NextStep fue la base para Mac OS X, no son exactamente iguales sino que han habido una serie de diferencias, en este caso me centrare en el nucleo.

El núcleo XNU

Mach3

Este nucleo es un microkernel, se le llama así a aquellos que dejan ciertos servicios típicos del sistema operativo a manos de capas superiores, en el caso de XNU los servicios que no son manejados por Mach3 pasan a estar a menos de la parte BSD de XNU. Mach3 se encarga de:

  • Gestión de hilos y procesos
  • Multitarea preventiva
  • Comunicación entre hilos y procesos
  • Gestión de memoria protegida
  • Gestión de memoria virtual
En el caso de FreeBSD no existe un Mach3 y la forma de gestionar todo esto se hace de forma diferente que en XNU, FreeBSD al tener un núcleo monolítico carga en la misma jerarquía todos los servicios del sistema, XNU no hace lo mismo.
BSD
Tanto FreeBSD como Mac OS X son sistemas modulares, esto significa que existe un núcleo y luego diferentes elementos que se añaden a niveles superiores como si de modulos se tratara, estos modulos puden tratarse desde servicios para que el sistema operativo los use hasta APIs de desarrollo.
Mientras que en FreeBSD hay una serie de servicios que están al nivel del núcleo en el caso de XNU están a un nivel superior, estos son:
  • API POSIX
  • Perfiles de seguridad
  • Perfiles de usuarios y grupos de usuairos
  • Permisos
  • La pila de red
  • El sistema de archivos virtual incluyendo el Journaling
Se ha de dejar claro que pese a que el código de estos elementos esta sacado directamente de FreeBSD, no todos los elementos de FreeBSD son colocados en XNU y tampoco esto significa que XNU sea FreeBSD. El hecho de que Apple tome código de dicho proyecto para su sistema operativo no convierte a su sistema operativo en FreeBSD. 
No todas las partes BSD del XNU provienen de FreeBSD, algunas de ellas vienen de NetBSD y otras de OpenBSD, pero en su mayoría el código dominante es el venido de FreeBSD.
La última parte del núcleo es el IO Kit que es el encargado de comunicar software y hardware.
Darwin
Darwin es un sistema operativo libre y abierto sobre el que se monta toda la parte propietaria de OS X, si se dice que OS X tiene un 50% de código abierto y/o libre entonces esta parte es la denominada Darwin que no es más que XNU con un nivel superior de software añadido que le permite interactuar con el usuario a través de una serie de herramientas y servicios adicionales incluidos en el sistema.
Es erróneo llamar a Mac OS X como FreeBSD+Tecnologías propietarias de Apple. Más bien lo podríamos llamar Darwin+Tecnologías Propietarias de Apple.

3 Responses to “Mac OS X no es FreeBSD en esteroides”

  1. silta Says:

    Im-presionante. Gracias, en serio.
    No pretender ser justificación pero en el artículo de ayer pequé de perezoso y no fui a buscar toda la documentación técnica. No pretendía ser exhaustivo, hace tiempo hice una presentación de “¿Por qué Apple?” que cobró cierta notoriedad y ahí hablaba del kernel Mach… pero hace mucho de eso y últimamente sólo uso el Mac, me preocupa un poco cómo está hecho, pero lo que más me preocupa es que funcione. Y lo hace.
    Ayer simplemente quería celebrar los 8 años de Mac OS X yponer de relieve las 4 cosillas que se podrían modificar, en mi modesta e inexperta opinión.
    Esta explicación con historia es una gozada que aclara muchas cosas, muchas de las cuales ni siquiera sabía de lejos (otras sí).
    Gracias de nueva.

    Namaste,
    silta

  2. Frank Davila Says:

    excelente tu explicacion, pero me gustaria saber como la obtubiste si apple es celoso con sus tecnologias, bueno y ya que sabemos que que darwin es XNU y que OSX es la union de XNU y freebsd, ¿un particular podria sacar una variante OSX no-apple uniendo estas dos partes?

  3. Eliú Hurtado Says:

    Excelente, me aclaraste muchas dudas, 1A!!!!

Leave a Reply