Una MacBook Pro con la tapa parcialmente abierta y la pantalla brillando sobre el teclado.

¿Es macOS UNIX o solo Unix? ¿O es similar a Unix? Respondemos al debate interminable y explicamos estándares como POSIX y SUS a lo largo del camino.

macOS: ¿UNIX o no?

Este tema plantea un montón de preguntas diferentes. ¿Cuál es el linaje de macOS? ¿Cuánto de ese material hereditario todavía está presente en macOS de hoy? ¿Importa? Antes de que podamos comenzar a responder si algo es UNIX, Unix o similar a Unix, debemos estar cómodos con lo que significan esos términos. ¿Quién decide si algo es Unix o UNIX, y qué criterios utilizan?

Empecemos desde el principio.

Unix se creó hace cincuenta años en Bell Labs, una empresa de investigación y desarrollo propiedad de AT&T. Avance rápido hasta 1973 y la versión 4 de Unix, que se reescribió en el lenguaje de programación C. Esto hizo que el sistema operativo fuera mucho más portátil y más fácil de transferir a diferentes plataformas de hardware. Ese mismo año,  Ken Thompson y Dennis Ritchie, dos de los principales arquitectos de Unix, presentaron un artículo en una conferencia sobre sistemas operativos. Inmediatamente recibieron solicitudes de copias del sistema operativo.

Obligado por un decreto de consentimiento que se remonta a 1956, AT&T tuvo que evitar "cualquier negocio que no sea el suministro de servicios de comunicaciones de operador común". Unix no calificó como algo de lo que AT&T pudiera beneficiarse. Entonces, la compañía hizo algo notable en ese momento: distribuyó Unix como código fuente con una licencia liberal. Los pequeños cargos cubrían el envío y el embalaje y una "regalía razonable".

Una proliferación de Unixes

Debido a que Unix se proporcionó "tal cual", vino sin soporte. Como resultado, una comunidad Unix comenzó a unirse para ayudar a los miembros, y parchear y extender Unix. Por lo tanto, puede obtener el código fuente, modificarlo y obtener soporte de la comunidad. Eso le suena familiar. Comenzaron a aparecer diferentes versiones de Unix, adaptadas y ajustadas para adaptarse a la organización que realiza el trabajo.

Bob Fabry, profesor de ciencias de la computación en UC Berkeley, formó parte del comité del programa del Simposio sobre principios de sistemas operativos de 1973. Escuchó una presentación de Thompson y Ritchie, titulada The UNIX Time-Sharing System .

Fabry solicitó una copia del sistema operativo y, en 1974, se instaló Unix en un PDP / 11 en el Computer Sciences Research Group (CSRG) en UC Berkeley. De manera significativa, Ken Thompson pasó un año allí, trabajando en lo que rápidamente se convirtió en el sabor propio de Unix de la universidad. Se distribuyeron copias de los cambios y adiciones de UC Berkeley y se conocieron como Berkeley Software Distribution (BSD). Eventualmente, se convirtieron en distribuciones de todo un sistema Unix, todavía conocido como BSD. Los números de versión, como 4.2BSD, identificaron las diferentes versiones.

En 1984, AT&T fue liberada de las restricciones del decreto de consentimiento de 1956 y pudo comercializar su sistema operativo correctamente. Incluía código BSD, como TCP / IPvi y el shell C, cshIncluso con esta polinización cruzada y colaboración, hubo dificultades con la concesión de licencias. BSD contenía código de AT&T, que no era de código abierto, pero sí los elementos de BSD.

Se desarrolló una versión de BSD sin código de AT&T para solucionar estos problemas. Sin embargo, cuando se eliminó el código de AT&T, faltaba aproximadamente el 20 por ciento del kernel. William Jolitz escribió las partes faltantes, y esa versión de Unix fue lanzada como 386BSDEl proyecto 386BSD se estancó, pero en 1993, su base de código fuente dio lugar a los proyectos NetBSD y FreeBSD.

Eso nos ha dado una pieza del rompecabezas: FreeBSD.

Próximo paso

Después de que fue despedido de Apple, Inc. en 1985, Steve Jobs fundó una compañía llamada NeXT, IncPara proporcionar un sistema operativo para su línea de productos de estaciones de trabajo, NeXT desarrolló NeXTSTEPUsó BSD como base de código pero introdujo un kernel completamente diferente.

NeXT usó una versión modificada del microkernel Mach 4.3BSD para formar NeXTSTEP, que es la segunda parte de este rompecabezas. Mach fue desarrollado en Carnegie Mellon para facilitar la investigación en computación distribuida y paralela. El equipo de investigación utilizó BSD como sistema operativo y reemplazó el kernel en lugar de escribir su propio sistema operativo.

XNU

En 1996, Apple, Inc. compró NeXT, Inc. y, por lo tanto, adquirió NeXTSTEP. Apple comenzó a desarrollar el sistema operativo que finalmente convertirse macOS a modo de Mac OS XActualizó el kernel de Mach y lo reemplazó con la versión más avanzada que la Open Software Foundation desarrolló y usó en el sistema operativo OSF / 1Apple también actualizó los componentes BSD con versiones actualizadas y mejoradas de la distribución FreeBSD.

Apple devolvió elementos del kernel BSD al kernel de Mach. También desarrolló un núcleo híbrido que combinaba características de arquitecturas monolíticas y microkernel.

El I / O Kit, que Apple desarrollado en base a DriverKit de NeXTSTEP, también se incluyó. Esto hizo posible agregar controladores a un kernel sin tener que modificarlo cada vez.

XNU es la tercera parte del rompecabezas.

Los estándares POSIX y SUS

En 1996, dos organismos de normalización, X / Open y Open Software Foundation, se fusionaron para formar The Open Group.

Open Group es el organismo certificador de la marca comercial UNIX. En otras palabras, tiene que sellar su sistema operativo como compatible con sus estándares antes de que pueda llamarlo UNIX. UNIX en todas las letras mayúsculas es la insignia de cumplimiento.

Entonces, las categorías son las siguientes:

  • Unix:  una familia de sistemas operativos. Esta familia incluye tanto sistemas operativos UNIX como sistemas operativos similares a Unix.
  •  Sistemas operativos UNIX : Estos han sido certificados como compatibles con los estándares.
  • Sistemas operativos similares a Unix : se ven y funcionan como Unix, pero no han sido certificados como compatibles.

Es muy posible, por supuesto, que algunos sistemas operativos en la categoría "similar a Unix" puedan ser probados mañana y se encuentren compatibles. Estos son efectivamente UNIX ahora, pero solo se pueden categorizar como Unix porque aún no tienen el sello de goma.

Hay dos estándares que certifican UNIX: POSIX y Single UNIX Specification (SUS)SUS es un superconjunto de POSIX. Entonces, algo puede ser compatible con POSIX, pero eso no lo convierte en UNIX. Sin embargo, si algo es compatible con SUS, es UNIX.

POSIX y el SUS forman grandes colecciones de documentos (alrededor de 3.700 páginas). Definen el funcionamiento y el comportamiento esperado de cada aspecto de un sistema UNIX compatible. Todo, desde E / S asíncronas y síncronas, hasta la interfaz de secuencias de comandos y los programas a nivel de usuario, se catalogan y definen.

Los estándares definen las interfaces de la aplicación y el comportamiento en tiempo de ejecución, pero no dictan cómo se implementan.

Entonces, ¿es macOS UNIX?

La respuesta tiene que ser afirmativa.

Puede rastrear su linaje desde FreeBSD hasta BSD, y desde allí, hasta el Unix distribuido por Bell Labs antes de que aumente la tarifa de licencia de AT&T.

Pero eso no importa.

Si escribe un sistema operativo desde cero en este momento, siempre que satisfaga los requisitos del SUS, se considera UNIX. Y no importa cómo lo implementes. El kernel XNU en el corazón de macOS es una arquitectura híbrida. Combina el código de Apple con partes de los núcleos Mach y BSD.

Pero eso tampoco importa. Lo que importa es que cumpla con los requisitos de los estándares con los que se mide.

La parte BSD del kernel XNU proporciona las interfaces de programación de aplicaciones POSIX (como las diversas llamadas al sistema API y BSD). Mantener ese elemento del kernel BSD intacto dentro de XNU es clave para obtener la certificación como UNIX. Permite que XNU hable UNIX compatible y compatible con el resto del sistema.

macOS es un sistema operativo compatible con UNIX 03 certificado por The Open Group. Lo ha sido desde 2007, comenzando con MAC OS X 10.5. La única excepción fue Mac OS X 10.7 Lion, pero se recuperó el cumplimiento con OS X 10.8 Mountain Lion.

Curiosamente, así como GNU significa "GNU no es Unix",  XNU significa "X no es Unix ".