A la pregunta que siempre te haces: ¿macOS es UNIX o es solo Unix? ¿O tal vez es como Unix? Respondemos a este infinito debate y te explicamos algunos estándares como POSIX y como SUS, todo esto a lo largo de este artículo.
Si estás interesado en saber más del sistema operativo bandera de la compañía Apple, te decimos cómo crear una lista de reproducción en macOS. Solo haz clic en el enlace y echa un vistazo.
En realidad, ¿macOS es UNIX o no?
Este tema siempre ha planteado muchas preguntas diferentes. Entre las cuales podemos mencionar algunas: ¿cuál es el origen y la línea de desarrollo de macOS? ¿Cuánto de ese material de desarrollo hereditario todavía está presente en el sistema operativo macOS de estos tiempos?
¿Acaso eso importa? Pero antes de que podamos comenzar a responder si algo es UNIX, Unix o similar a Unix, debemos sentirnos cómodos con lo que significan esos términos. ¿Quién decide si algo es Unix o UNIX y qué criterios utilizan? Así que debemos empezar desde el principio.
Para empezar, Unix fue creado alrededor de 50 años atrás, en Bell Labs. Una compañía de investigación y desarrollo propiedad de nada más y nada menos que AT&T. Ya en el año 1973 salió la versión 4 de Unix, la cual fue reescrita en el lenguaje de programación C.
Esto hizo que el sistema operativo fuera mucho más portable y más fácil de transferir a diferentes hardware. En ese mismo año, los desarrolladores Ken Thompson y Dennis Ritchie, que eran dos de los principales arquitectos de Unix, presentaron un documento en una conferencia sobre sistemas operativos. Inmediatamente recibieron solicitudes de copias lo que habían presentado en esa conferencia.
Debes conocer que, obligado por un decreto de consentimiento del año 1956, la compañía AT&T tuvo que evitar «cualquier negocio que no sea la prestación de servicios de comunicaciones de operador común». Es decir, que Unix no calificó como algo de lo que AT&T podría beneficiarse.
Entonces, la empresa hizo algo muy novedoso para ese entonces: distribuyó Unix como código fuente con una licencia libre. Los pequeños cargos cubrieron el envío, el embalaje y una regalía razonable.
Comienza una proliferación de sistemas operativos Unix
Debido a que Unix fue desarrollado así tal cual, todo ello se produjo sin soporte. Como resultado, una comunidad de Unix comenzó a unirse para ayudar a los miembros a parchearlo y extenderlo. Así pues, pudieron obtener el código fuente, modificarlo y tener también soporte de la comunidad. Eso quizás te suene un tanto familiar.
De esta manera comenzaron a aparecer diferentes distribuciones de Unix, ajustados para adaptarse a las organizaciones que lo codifican para que hagan el trabajo. Es así como Bob Fabry, profesor de ciencias computacionales en la Universidad de California en Berkeley, formó parte del comité del programa para el Simposio de 1973 sobre principios de sistemas operativos.
Como todo el mundo que asistió allí, escuchó la 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 la Universidad de Berkeley.
Como nota significante, Ken Thompson pasó un año allí, trabajando en lo que rápidamente se convirtió en la distribución propia de Unix en Berkeley. Se distribuyeron copias de los cambios y adiciones de UC Berkeley, que se conocieron como Berkeley Software Distribution (BSD).
La distribución más efectiva fue la BSD
Finalmente, se convirtieron en distribuciones de todo un sistema Unix, aún conocido como BSD. Los números de versión, como 4.2BSD, identificaron las diferentes versiones. En el año de 1984, AT&T fue liberado de las restricciones del decreto de consentimiento de 1956 y pudo comercializar su sistema operativo plenamente.
Este incluía código BSD, como TCP/IP , “vi” y el shell C, csh. Incluso con este desarrollo cruzado y colaboración, hubo dificultades con las licencias. BSD contenía código de AT&T, que no era de código abierto, pero los elementos BSD sí que lo eran.
Así pues, se desarrolló una versión de BSD sin código AT&T para solucionar estos inconvenientes. No obstante, cuando se borró el código de AT&T, faltaba aproximadamente el 20% del kernel.
William Jolitz desarrolló las partes de código faltantes y esa versión de Unix se lanzó como 386BSD. El proyecto 386BSD se estancó, pero en el año 1993, su base de código fuente dio origen a los proyectos NetBSD y FreeBSD. Eso nos ha dado una pieza de este complicado rompecabezas: FreeBSD.
Aparición de NeXTSTEP
Después de que fue despedido de Apple Inc. en el año 1985, el mismísimo Steve Jobs fundó una compañía llamada NeXT Inc. Esto con el fin de suministrar un sistema operativo para su línea de productos de estaciones de trabajo, la compañía NeXT desarrolló NeXTSTEP. Utilizaron BSD como una base de código pero introdujeron un kernel completamente diferente.
Es así como NeXT usó una versión modificada del micro kernel Mach y 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. Del mismo modo, el equipo de investigación utilizó BSD como sistema operativo y reemplazó el núcleo en lugar de escribir su propio sistema operativo.
Echemos un vistazo a XNU
En el año 1996, Apple Inc. compró NeXT, Inc. y así adquirió también NeXTSTEP. Apple comenzó a desarrollar finalmente el sistema operativo que se convertiría en macOS a modo de Mac OS X. También actualizó el kernel de Mach y lo reemplazó con la versión más avanzada que Open Software Foundation desarrolló y utilizó en el SO OSF/1.
Apple también desarrolló los componentes BSD con versiones actualizadas y mejoradas de la distribución FreeBSD. Del mismo modo, Apple incluyó elementos del núcleo BSD en el kernel Mach y también desarrolló un kernel híbrido que combinaba características de arquitecturas tanto monolíticas como de micro kernel.
Igualmente, el I/O Kit, que Apple desarrolló con base en DriverKit de NeXTSTEP, también fue incluido. Esto hizo posible agregar controladores a un kernel sin tener que modificarlo cada vez que se tenía que incluir algo. En este punto, podemos decirte que XNU es la tercera parte del rompecabezas
¿macOS es UNIX? Veamos los estándares POSIX y SUS
Llegamos al año 1996, en el cual 2 organismos de normalización, X/Open y Open Software Foundation, se fusionaron para formar The Open Group. Así, Open Group es el organismo certificador de la marca UNIX.
En otras palabras, tienes que sellar tu sistema operativo para que cumpla con sus estándares antes de que puedas llamarlo UNIX. Así UNIX, con todas las letras mayúsculas, es la insignia de cumplimiento de los estándares.
Aquí veremos entonces que las categorías son las siguientes:
Unix: una familia de sistemas operativos. Esta familia incluye sistemas operativos UNIX y sistemas operativos similares a Unix.
Sistemas operativos UNIX: han sido certificados como compatibles con los estándares válidos para ello.
Sistemas operativos tipo Unix: estos se ven y funcionan como Unix, pero no han sido certificados como compatibles.
¿macOS es UNIX? Si pasan los estándares, sí lo es
Es posible, por supuesto, que algunos sistemas operativos en la categoría “Tipo Unix” (Unix-like) puedan probarse mañana y cumplir los estándares. Estos son efectivamente UNIX, pero solo se pueden clasificar como Unix debido a que todavía no tienen el sello que los certifica como tal.
Hay dos estándares que certifican UNIX: POSIX y Single UNIX Specification (SUS). SUS es un súper conjunto de POSIX. Entonces, un SO puede ser compatible con POSIX, pero eso no lo convierte en UNIX. No obstante, si algún SO cumple con el estándar SUS, es UNIX.
Los estándares POSIX y SUS forman grandes colecciones de documentos; alrededor de 3.700 páginas. Definen la operación y el comportamiento esperado de cada aspecto de un sistema UNIX compatible. Todo está allí, desde la I/O asíncrona y síncrona, hasta la interfaz de secuencias de comandos y los programas a nivel de usuario Todos ellos están catalogados y muy bien definidos.
Los estándares definen las interfaces de aplicación y el comportamiento del mismo en su tiempo de ejecución, pero algo que no dicen, es cómo se implementan.
Así las cosas, ¿macOS es UNIX?
La respuesta tiene que ser: SÍ. Puedes rastrear su origen desde FreeBSD hasta BSD y desde allí, hasta el Unix distribuido por Bell Labs antes de que AT&T aumente la tarifa de la licencia. Pero quizás, eso no importa.
Si desarrollas un SO desde cero en estos momentos, siempre y cuando cumpla con 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. Y lo es porque combina el código de Apple con partes de los kernel Mach y BSD.
Pero te decimos que eso tampoco importa. Lo que importa es que cumple con los requisitos de los estándares con los cuales se puede medir.
La parte BSD del núcleo 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. Esto permite también a XNU “hablar” compatiblemente con UNIX y con el resto del sistema.
macOS es un sistema operativo compatible con UNIX 03 certificado por The Open Group. Ha sido así 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.
De forma divertida, así como GNU significa «GNU’s Not Unix», XNU también significa «X is Not Unix».