¿De dónde viene Mac OS X?


43

Hablando con los propietarios de Mac, obtuve varias versiones de donde proviene Mac OS X. Se sabe que tiene alguna raíz en BSD, pero ¿cuánto y dónde?

Algunos dicen que Mac OS X tiene un núcleo FreeBSD, con todas las utilidades anteriores que lo convierten en un sistema operativo específico para Mac. (No se habla acerca de las aplicaciones de usuario aquí, solamente todos los init, ls, cd, y otros. Binutils? )

Otros dicen que Mac OS X es un núcleo Darwin, que es Mac puro, y que las utilidades del sistema operativo provienen de BSD.

Donde esta la verdad


11
El título de esta pregunta realmente debería ser "De dónde viene Mac OS X", ya que todas las versiones de Mac OS anteriores a X son un sistema operativo no basado en Unix completamente diferente.
Sandy

1
@Sandy: arregló los Xes
Warren Young

Iba a sugerir 'infierno' pero luego tuve el desagradable recuerdo de Microsoft y su horrible 'Windows' ... ¿Aparte de eso? NeXTSTEP y BSD si la memoria me sirve bien y estoy seguro de que las respuestas lo notan.
Pryftan

Respuestas:


67

La historia de MacOS es un poco más complicada. Estaba muy interesado en esto a finales de los 90, ya que Mach había sido lanzado alrededor del mundo como una forma más rápida de construir un sistema Unix.

El origen del núcleo es un poco más complicado.

Todo comienza con AT&T distribuyendo su sistema operativo a algunas universidades de forma gratuita. Este Unix se mejoró ampliamente en Berkeley y se convirtió en la base de las variaciones BSD de Unix e incorporó varias innovaciones nuevas como el "Sistema de archivos rápido" (UFS), los enlaces simbólicos introducidos y los sockets API. AT&T siguió su propio camino y construyó el Sistema V al mismo tiempo.

Mientras tanto, la investigación continuó y algunas personas adoptaron el trabajo de BSD como base. En CMU, el kernel BSD se utilizó como base para la creación de prototipos de algunas ideas nuevas: subprocesos, una API para controlar el sistema de memoria virtual (a través de "pagers" conectables - mmap de nivel de usuario), un sistema de llamada a procedimiento remoto a nivel de kernel y la mayoría Es importante la idea de mover algunas operaciones a nivel de kernel al espacio de usuario. Esto se convirtió en el núcleo de Mach.

No estoy 100% seguro de si mmap vino de Mach, y más tarde fue adoptado por BSD, o si Mach simplemente fue pionero en la idea y BSD agregó su propio mmap basado en las ideas de Mach.

Aunque el kernel Mach se describió como un micro kernel, hasta la versión 2.5 era simplemente un sistema que proporcionaba el hilo, mmap, características de paso de mensajes pero seguía siendo un kernel monolítico, todos los servicios se ejecutaban en modo kernel.

En este momento, Rick Rashid (ahora en Microsoft) y Avie Tevanian (ahora en Apple) habían tenido una idea novedosa que podría acelerar Unix. La idea era utilizar la llamada al sistema mmap para pasar los datos que se copiarán desde el espacio del usuario a los "servidores" que implementan el sistema de archivos. Esta idea era esencialmente una variación de tratar de evitar hacer copias de los mismos datos, pero se lanzó como un beneficio de los micro núcleos, incluso si la característica pudiera aislarse de un micro núcleo.

Los puntos de referencia de este sistema Unix más rápido respaldado por VM es lo que llevó a las personas en NeXT y en la FSF a elegir Mach como la base de sus núcleos.

NeXT fue con el kernel Mach 2.5 (que estaba basado en BSD 4.2 o 4.3) y GNU en realidad no comenzaría en el trabajo por años. Esto es lo que usaban los sistemas operativos NeXTSTEP.

Mientras tanto, en CMU, el trabajo continuó en Mach y finalmente se dieron cuenta de la visión de tener múltiples servidores ejecutándose sobre un micro núcleo con la versión 3.0. No estoy al tanto de que nadie en la naturaleza pueda ejecutar Mach 3.0 ya que todos los servidores interesantes de nivel de usuario usaron el código AT&T, por lo que se consideraron gravados, por lo que siguió siendo un producto de investigación.

Alrededor de este tiempo, el equipo de Jolitz había hecho un puerto de 4.3+ BSD a la arquitectura 386 y publicó sus esfuerzos de portabilidad en DrDobbs. 386BSD no se mantuvo activamente y surgió un grupo para mantener y avanzar 386BSD, el equipo de NetBSD. Las peleas internas dentro del grupo NetBSD causaron la primera división y FreeBSD se formó a partir de esto. NetBSD en ese momento quería centrarse en tener un BSD multiplataforma, y ​​FreeBSD quería centrarse en tener un Unix que funcionara bien en plataformas x86. Un poco más tarde, NetBSD se dividió nuevamente debido a otras disputas y esto condujo a la creación de OpenBSD.

Una bifurcación de BSD 4.3 para plataformas x86 se comercializó con una compañía llamada BSDi, y varios miembros del equipo original de Berkeley trabajaron allí y mantuvieron buenas relaciones con el equipo de BSD en la Universidad.

AT&T no se divirtió y comenzó la demanda AT&T vs BSDi, que luego se amplió para demandar a la Universidad también. La demanda fue sobre BSDi usando un código de propiedad de AT&T que no había sido reescrito por Berkeley. Esto retrasó BSD en comparación con el prometedor sistema operativo Linux.

Aunque las cosas no se veían bien para los acusados, en algún momento alguien se dio cuenta de que SystemV había incorporado grandes porciones de código BSD bajo la licencia BSD y AT&T no había cumplido con sus obligaciones en la licencia. Se llegó a un acuerdo en el que AT&T no tendría que retirar su producto del mercado, y la Universidad acordó eliminar cualquier código que aún pudiera basarse en el código de AT&T.

La universidad luego lanzó dos versiones de BSD 4.4 gravados y 4.4 lite. La versión gravada arrancaría y se ejecutaría, pero contenía el código de AT&T. La versión lite no contenía ningún código de AT&T pero no funcionaba.

Los diversos esfuerzos de BSD volvieron a hacer su trabajo además de la nueva versión 4.4 lite y tuvieron un sistema de arranque en cuestión de meses.

Mientras tanto, el micro kernel Mach 3.0 no fue muy útil sin ninguno de los servidores de usuario.

Un estudiante de una universidad escandinava (creo que podría estar equivocado) fue el primero en crear un sistema Mach 3.0 completo con un sistema operativo completo basado en la versión 4.4 lite, creo que esto se llamó "Lites". El sistema funcionó, pero fue lento.

Durante 1992-1996 y ahora BSD ya tenía una llamada al sistema mmap (), así como la mayoría de los otros sistemas Unix. La "ventaja del micro núcleo" que no existía, nunca llegó a concretarse. NeXT todavía tenía un núcleo monolítico. La FSF todavía estaba tratando de hacer que Mach construyera, y no queriendo tocar el código BSD o contribuir a ninguno de los esfuerzos de código abierto BSD, siguieron cargando en una visión del núcleo mal especificada y se estaban ahogando en los protocolos RPC por su propia cuenta. núcleo. El micro núcleo se veía muy bien en papel, pero resultó estar sobredimensionado e hizo todo más lento.

En este punto, también tuvimos el debate entre Linus y Andy sobre los micro-núcleos frente a los núcleos monolíticos y el mundo comenzó a darse cuenta de que era imposible agregar todos esos ciclos adicionales a un micro núcleo y aún así adelantarse a un núcleo monolítico bien diseñado .

Apple aún no había adquirido NeXTSTEP, pero también estaba comenzando a considerar a Mach como un núcleo potencial para sus futuros sistemas operativos. Contrataron a la Open Software Foundation para portar Linux al kernel de Mach, y esto se hizo desde sus oficinas de Grenoble, creo que esto se llamó "mklinux".

Cuando Apple compró NeXT, lo que tenían en sus manos era una base Unix relativamente antigua, un Unix basado en 4.2 o 4.3 y, por ahora, ni siquiera el software libre funcionaba de manera inmediata en esos sistemas. Contrataron a Jordan Hubbard lejos de FreeBSD para actualizar su stack de Unix. Su equipo fue responsable de actualizar la tierra del usuario, y no es una sorpresa que la tierra de usuarios de MacOS se haya actualizado a las últimas versiones disponibles en BSD.

Apple cambió su Mach de 2.5 a 3.0 en algún momento, pero decidió no seguir el enfoque de micro-kernel y en su lugar mantuvo todo en proceso. Nunca he podido confirmar si Apple usó Lites, contrató al hacker escandinavo o si adoptó el 4.4 lite como sistema operativo. Sospecho que lo hicieron, pero ya me había mudado a Linux y había dejado de rastrear el mundo BSD / Mach.

A finales de los años 90, se rumoreaba que Avie en Apple intentó contratar a Linus (que ya era famoso en este momento) para trabajar en su bebé, pero Linus decidió seguir trabajando en Linux.

Dejando a un lado la historia, esta página describe el país de usuario y el núcleo Mach / Unix:

http://developer.apple.com/mac/library/documentation/Darwin/Conceptual/KernelProgramming/Architecture/Architecture.html#//apple_ref/doc/uid/TP30000905-CH1g-CACDAEDC

Encontré este gráfico de la historia de OSX: texto alternativo


Entendí que la razón principal por la que Stallman en FSF buscó a Mach no fue el rendimiento sino la facilidad de usar un depurador: podía usar el depurador para depurar servidores Mach con mucha más facilidad que el código de depuración que se ejecuta en el espacio del kernel. Aunque tal vez fue el rendimiento lo que lo convenció de que esta era una forma viable de implementar.
skiphoppy

44
Si realmente quieres ver un verdadero microkernel en acción, prueba QNX. En QNX4, el núcleo tenía solo 32 K-bytes y solo manejaba el paso de mensajes, la programación de la CPU y las interrupciones. Todas las otras partes del sistema operativo QNX se podían intercambiar sin apagar o reiniciar el sistema, y ​​era extremadamente robusto. Hubo un tiempo en que había un emulador de ventanas para QNX llamado Willows que ejecutaba aplicaciones de Windows más rápido que las ventanas nativas. Si bien esto no tiene nada que ver con OS-X per se, QNX demostró que los microkernels son realmente viables cuando se hacen correctamente.

20
La imagen ya no está disponible.
Hermann Ingjaldsson

77
Imagen todavía no disponible
Sildoreth

Steve Jobs le ofreció un trabajo a Linus en 2000. Linus habla de eso aquí. wired.com/2012/03/mr-linux/all/1
Alistair McMillan

24

En el lado de Unix, OS X es un descendiente de NeXTSTEP , que se derivó de 4.3BSD con las partes centrales del núcleo reemplazadas por Mach .

La API de programación NeXT, que finalmente se denominó OpenStep , es la base de la API Cocoa de hoy para OS X. Dos API han divergido mucho desde que Apple compró NeXT en 1997, aunque hay esfuerzos continuos para proporcionar clones Cocoa compatibles con API de código abierto. .

Agregue a eso la API de compatibilidad clásica de MacOS, llamada Carbon, y tendrá la interfaz de programación OS X.

(Hay mucho más para OS X, pero son aplicaciones además de todo esto: Finder, las herramientas de usuario BSD y GNU, etc.)

En cuanto a la idea del kernel de FreeBSD, es correcto, pero es una forma poco sofisticada de verlo. El núcleo original vino, como dije, de NeXT, que ensambló su primer núcleo de 4.3BSD y Mach. Esto significa que tanto FreeBSD como NeXTSTEP compartieron algún código a través de 4.3BSD.

El meme de que OS X se basa en FreeBSD tiene dos fuentes más recientes. Primero, Apple ha seguido prestando innovaciones del mundo BSD, generalmente de FreeBSD. En segundo lugar, Apple contrató al cofundador del proyecto FreeBSD, Jordan Hubbard, poco después de hacer el primer lanzamiento público de OS X. Trabajó para Apple hasta junio de 2013.


0

Cuando le dijeron que OSX tiene su propio sabor de Unix, son técnicamente correctos.

Elementos BSD + de NeXTSTEP + Ajustes de Apple = DARWIN

Para decirlo de otra manera. Ordenando solo Hot Fudge / ice cream (BSD) agregue Nuts (NeXTStep) más crema batida y una cereza (Apple Add-in y ajustes) = A Hot Fudge Sundae (Darwin)

Pero BSD es la base a la que se agregaron los demás, por lo que gran parte de BSD funcionará en Darwin (con un ajuste aquí y allá)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.