trenta mac gmac macos unix operating-system linux-kernel kernel

macos - gmac - ¿Qué tan cerca están relacionados Mac OS X y BSD?



mac os linux (6)

Leí que Mac OS X y bsd están relacionados. Qué tan cercanos están relacionados. ¿Se puede ajustar e instalar el software Mac OS X en BSD?


El artículo de Wikipedia BSD es bueno (y está de acuerdo con mi propio entendimiento, por lo que vale). Dice que Darwin, el sistema en el que está basado Mac OS X de Apple, es un derivado de 4.4BSD-Lite2 y FreeBSD , y señala que 4.4BSD es la última versión con la que Berkeley estuvo involucrado.

Entonces, Darwin es como BSD como puedes obtener (¡como todos los demás BSD!). OS X se refiere a aquellas partes de la distribución que no son de código abierto, principalmente la GUI, pero que incluyen una variedad de marcos, y todo lo que dependa de estos no será portátil.

OS X en su conjunto es un sistema UNIX 03 . Eso es equivalente a ser un sistema verdaderamente compatible con POSIX (a diferencia de ser similar a POSIX).

Como han señalado otras respuestas, las partes de usuario del sistema operativo no sorprenden a nadie con mucha experiencia en Unix, y rara vez tuve dificultades para desarrollar el software Unix portátil en OS X.

Por el contrario, las partes del sistema operativo que no pertenecen al usuario son bastante diferentes. Apple parece estar dispuesto a innovar en esas áreas bastante alegremente. Creo (pero no estoy seguro) que estos cambios son formalmente parte de Darwin. Una de las diferencias más obvias es que launchd ha reemplazado cron, at, inetd y gran parte de la infraestructura de inicio.


En los días de OS X 10.4 pasé algún tiempo sin escribir un VFS para OS X. En aquellos días, de los principales subsistemas del kernel, solo la pila de red y el VFS eran realmente BSD. En ese momento, incluso el VFS había sido parcialmente reescrito para hacerlo más modular (todas las estructuras de datos BSD VFS se convirtieron en punteros opacos y el API se realizó a través de lo que se denominó funciones KPI). Creo que la pila de red iba por el mismo camino. También había una capa delgada en la interfaz con userland que hacía que el sistema operativo se viera como BSD para los programas de usuario.

Todo lo demás había sido reescrito o reemplazado: la gestión de memoria, la gestión de procesos, etc. provenían del microkernel Mach; el subsistema del controlador del dispositivo fue escrito desde cero por Apple.

En términos de programación de usuario, OS X es muy similar a BSD y los programas escritos para BSD deben ser fácilmente portátiles. Sin embargo, OS X tiene muchas API que no están disponibles en BSD. Estos incluyen casi todo lo relacionado con la interfaz de usuario: gráficos, sonido, etc. También existen otras interfaces que no existen en BSD, como la API de inicio, que es la forma preferida de OS X de iniciar procesos en segundo plano.


Instalado - no.

Portado desde la fuente, tal vez, vea Gnustep, Cocotron, EtoileOS, todos los cuales ofrecen diversos grados de compatibilidad con la pila de desarrollo de Cocoa (pero no con el antiguo Carbon). Existe una cantidad limitada de software de objetivo-C de la plataforma x desarrollada de esa manera.


Mac OS X es uno de los sabores de BSD Unix. Como Borelaid ya señaló, eso no significa necesariamente que portar aplicaciones de Mac a otros sabores de BSD sea fácil o incluso manejable, mucho menos que entre otros sabores comunes de BSD. Cada uno de ellos trae sus propios detalles, y OS X más que la mayoría.

Transmitir programas de otros sabores de BSD a OS X también implica trabajo y no siempre funciona (sin problemas o en absoluto), pero suele ser mucho más sencillo.


Si el software de Mac utiliza Cocoa, la biblioteca de visualización patentada de Apple (que lo hace , si se ejecuta en la Mac con una GUI y no requiere iniciar un servidor X), entonces puede tener algunos problemas para ejecutar el código en un sistema BSD normal.

Si su código solo usa funciones especificadas por POSIX, se abrirá limpiamente a Linux, BSD e incluso Windows.

Es cierto que Mac OS X y BSD están relacionados. Aunque tienen núcleos diferentes, comparten un antecesor común y un código de usuario significativo. Obviamente, no puedo cuantificar "qué tan cerca" - eso es subjetivo.


Depende de qué tipo de aplicaciones intentes conectar. Si escribe programas de consola C / C ++ POSIX-compatibles, se compilarán y funcionarán bien bajo cualquier sistema POSIX-compatible (principalmente sabores de Linux y BSD), pero tenga en cuenta que OS X a menudo no implementa las funciones POSIX más nuevas (por ejemplo, utimensat ) que están disponibles en Linux. Por otro lado, las aplicaciones gráficas usan Cocoa o el Carbon anterior, lo que requeriría GNUstep. Las aplicaciones gráficas de portabilidad no son comunes porque cada entorno gráfico tiene diferentes estándares de diseño y convenciones, por lo que las aplicaciones gráficas generalmente tienen que escribirse desde cero para cada entorno gráfico.