GNU/Linux >> Tutoriales Linux >  >> FreeBSD

Freebsd:¿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 algún root 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 hablamos de aplicaciones de usuario, solo todas las init , ls , cd , y otros. binutils? )

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

¿Dónde está la verdad?

Respuesta aceptada:

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 presentado en todo el 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 para las variaciones BSD de Unix e incorporó varias innovaciones nuevas como el "Sistema de archivos rápido" (UFS), introdujo enlaces simbólicos y la API de sockets. AT&T siguió su propio camino y construyó System V al mismo tiempo.

Mientras tanto, la investigación continuó y algunas personas adoptaron el trabajo de BSD como base. En CMU, el núcleo BSD se utilizó como base para crear prototipos de algunas ideas nuevas:subprocesos, una API para controlar el sistema de memoria virtual (a través de "localizadores" conectables:mmap a nivel de usuario), un sistema de llamadas a procedimientos remotos a nivel del núcleo y la mayoría lo que es más importante, la idea de mover algunas operaciones a nivel de kernel al espacio del usuario. Esto se convirtió en el kernel de Mach.

No estoy 100 % seguro de si mmap vino de Mach y luego 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 núcleo de Mach se describía como un micro-núcleo, hasta la versión 2.5 era simplemente un sistema que proporcionaba funciones de subproceso, mmap y paso de mensajes, pero seguía siendo un núcleo monolítico, todos los servicios se ejecutaban en modo de núcleo.

En ese 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 usar la llamada al sistema mmap para pasar datos a ser copiados 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 presentó como un beneficio de los micronúcleos, incluso si la función podía aislarse de un micronúcleo.

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

NeXT optó por el kernel Mach 2.5 (que estaba basado en BSD 4.2 o 4.3) y GNU no comenzaría a funcionar 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 varios servidores ejecutándose sobre un micro kernel con la versión 3.0. No tengo conocimiento de que nadie en la naturaleza pueda ejecutar Mach 3.0, ya que todos los servidores de nivel de usuario interesantes usaban el código de 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 realizado 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 hacer 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 muy bien en las plataformas x86. Un poco más tarde, NetBSD se dividió nuevamente debido a otras disputas y esto condujo a la creación de OpenBSD.

Relacionado:Mac:¿es posible usar una Apple Time Capsule solo como una unidad de copia de seguridad conectada a la red y no como un enrutador?

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

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

Aunque las cosas no pintaban bien para los demandados, 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 estar basado en el código de AT&T.

Luego, la universidad lanzó dos versiones de BSD 4.4 encumbered y 4.4 lite. La versión gravada se iniciaría y 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 funcionó.

Los diversos esfuerzos de BSD rehicieron 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 microkernel Mach 3.0 seguía sin ser muy útil sin ninguno de los servidores de la zona del 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 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 estaba allí, nunca llegó a buen término. 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 ni contribuir a ninguno de los esfuerzos de BSD de código abierto, siguieron cargando con una visión del kernel mal especificada y se estaban ahogando en los protocolos RPC por su cuenta. núcleo. El micronúcleo se veía muy bien en el papel, pero resultó tener un exceso de ingeniería y solo hizo que todo fuera más lento.

En este punto, también tuvimos el debate entre Linus y Andy sobre los micronúcleos frente a los monolíticos y el mundo comenzó a darse cuenta de que era simplemente imposible agregar todos esos ciclos adicionales a un micronúcleo y seguir adelante con 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 kernel potencial para sus futuros sistemas operativos. Contrataron a Open Software Foundation para migrar Linux al kernel de Mach, y esto se hizo desde sus oficinas de Grenoble, creo que 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, a estas alturas, ni siquiera el software gratuito funcionaba bien en esos sistemas. Contrataron a Jordan Hubbard fuera de FreeBSD para actualizar su pila de Unix. Su equipo fue responsable de actualizar la zona de usuarios, y no sorprende que la zona de usuarios de MacOS se haya actualizado a las últimas versiones disponibles en BSD.

Relacionado:Mac:¿Error de Apple iD de instalación de Mac OS X Mountain Lion?

Apple cambió su Mach de 2.5 a 3.0 en algún momento, pero decidió no seguir con 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 sí, pero ya me había pasado a Linux y había dejado de rastrear el mundo BSD/Mach.

Hubo un rumor a finales de los 90 de que Avie en Apple intentó contratar a Linus (que ya era famoso en ese momento) para trabajar en su bebé, pero Linus decidió seguir trabajando en Linux.

Dejando a un lado la historia, esta página describe la zona de usuarios y el kernel de 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:


FreeBSD
  1. ¿Desde dónde se ejecuta un script de Shell?

  2. ¿Por qué Ls -l produce un tamaño diferente de Ls -s?

  3. ¿Desde dónde carga Unity/unity-greeter la configuración X?

  4. ¿Dónde almacena Linux mi syslog?

  5. ¿De dónde toma 'pkg-config' su información?

Mi historia de Linux:de usuario de Linux a colaborador

Mi historia de transición de Mac a Linux

Revisión de Zorin OS 12:aprenda de mi experiencia

Migración de Apache a Nginx en FreeBSD

sshfs montando el directorio de linux desde mac dejó de funcionar

¿Dónde debo instalar mi aplicación en Linux?