it-swarm-es.tech

¿De dónde viene Mac OS X?

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. (Aquí no se habla de aplicaciones de usuario, solo todas las init, ls, cd y otras. 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

43
Didier Trosset

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 micronúcleo, 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 del 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 base para 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 durante 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 utilizando 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 kernel" que no existía, nunca se hizo realidad. 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 relativamente antigua de Unix, 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 fuera de FreeBSD para actualizar su stack de Unix. Su equipo fue responsable de actualizar la tierra del usuario, y no es una sorpresa que el país 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 utilizó Lites, contrató al hacker escandinavo o si adoptó el 4.4 lite como su sistema operativo. Sospecho que sí, 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: alt text

67
miguel.de.icaza

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 de Cocoa de hoy para OS X. Dos API han divergido mucho desde Apple compró NeXT en 1997, aunque hay esfuerzos en cursoesfuerzos para proporcionar clones de cacao 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, BSD y GNU herramientas de usuario, etc.)

En cuanto a la idea del kernel de FreeBSD, es más o menos 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. Segundo, 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.

24
Warren Young

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

BSD + Elementos de NeXTSTEP + Apple Tweaks = 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 Tweak aquí y allá)

0
Tweety Bird