Creo que … voy a tratar de darle una respuesta más técnica que la mayoría de las personas aquí. Abróchate el cinturón, toma una taza de café, esta será larga.
Primero, Unix. Unix es una familia de sistemas operativos que se remonta a los Laboratorios Bell a finales de los 60 y principios de los 70. Sus creadores, Ken Thompson y Dennis Ritchie, habían estado involucrados en un proyecto de sistema operativo mainframe “a gran escala” (por el momento, en estos días su núcleo de 135K sería considerado extremadamente liviano) llamado Multics que involucraba a MIT, Bell Labs, Honeywell y GE. Si Multics califica como exitoso o no depende de a quién le pregunte; fue profundamente influyente en el desarrollo posterior del sistema operativo, pero en el mercado fue en gran parte solo un éxito para Honeywell / Groupe Bull, que lo apoyó hasta el año 2000, y Ken Thompson lo consideró un fracaso absoluto. “Unix”, obviamente, era un juego de palabras con Multics, y tomó las complejidades de Multics y las redujo al mínimo. El código de recuperación de errores se eliminó en gran medida a favor de la función panic (), el antecesor de cada kernel panic, pantalla azul u otros modos de falla controlados variados del hardware moderno. Unix copió en gran medida el modelo de proceso y el sistema de archivos y dejó todo lo demás atrás.
Lo que finalmente hizo que Unix fuera un estándar de facto fue un efecto secundario de los decretos de consentimiento que limitaban las prácticas comerciales de AT&T. No podían vender Unix como producto directamente, solo licenciarlo a otros ISV y OEM, y su licencia era lo suficientemente vaga como para que cuando un profesor de informática australiano llamado John Lions compilara una lista editada del código fuente del kernel para la Versión 6 en el DEC PDP / 11–40 miniordenador, luego lo distribuyó con las notas de clase que había escrito para explicarlo, se extendió por toda la comunidad académica y creó toda una generación de expertos en Unix prácticamente de la noche a la mañana. Esos estudiantes, especialmente Bill Joy y amigos de la Universidad de California en Berkeley, llevaron su trabajo en Unix al mundo comercial y lo extendieron por todas partes. En pocas palabras, esto creó dos corrientes de Unices en competencia y una guerra de formatos que se prolongó durante la década de 1980 hasta la década de 1990, hasta que la competencia de Microsoft Windows NT lo detuvo. A partir de ese momento, y con la ayuda de la creación del kernel de Linux y el lanzamiento de una última versión de Berkeley Unix en forma de 4.4BSD-Lite, Unix era menos un producto específico y más un estándar, específicamente la familia IEEE 1003 de estándares, conocidos como POSIX, o como la especificación UNIX de Open Group.
Lo importante que debe saber sobre POSIX / SUS es que no especifica detalles de implementación internos, y de hecho puede aplicarse a los sistemas operativos (actualmente más notablemente z / OS de IBM, que está certificado por SUS debido a su componente API Unix) que no son Realmente consideró Unix per se. Esto significa que hay algunas diferencias significativas entre los distintos miembros de la constelación. Solía haber formas de distinguir BSD de Unix derivado de AT&T (System V): el comando de impresión (lpr (BSD) vs lp (SysV)), el shell (C shell (BSD) vs Bourne (SysV)) y el como, pero se volvieron irrelevantes cuando los dos convergieron durante la década de 1990. (En esos casos particulares, la mayoría de los sistemas Unix y Unix modernos usan shells basados en Bourne, generalmente GNU Bash o Almquist shell, y la arquitectura de impresión CUPS de Apple, usada en macOS, Linux y varios otros sistemas, admite ambos Interfaces estilo BSD y estilo SysV.)
Ahora, ya hemos hablado de BSD, pero la forma abreviada es que tanto BSD como Linux son lo que se llaman núcleos monolíticos: mantienen todas sus cosas a nivel de sistema en el espacio del núcleo, donde los programas privilegiados que pueden comunicarse directamente con el hardware o manipular recursos comunes del sistema en vivo. Hubo un movimiento significativo en la década de 1990 para ir a los microkernels, que mueven tanta funcionalidad como sea posible a un espacio de usuario menos privilegiado, pero no funcionó muy bien, ya que la gente descubrió que el cambio de privilegios de microkernel creaba demasiados gastos generales. para la mayoría de los propósitos; Incluso los sistemas operativos como macOS y Windows NT que se habían construido explícitamente en plataformas de microkernel terminaron haciendo agujeros masivos en el diseño y ahora funcionan de manera más o menos monolítica. Sin embargo, BSD apuesta por la simplicidad: las bases de código son pequeñas, los programas individuales no intentan hacer demasiado y todo es lo más limpio y eficiente posible. La licencia también es importante: la licencia BSD, utilizada en la mayoría de los BSD principales, excepto macOS, está cerca del dominio público, y solo requiere un reconocimiento de los creadores originales del código. BSD también tiene un linaje ininterrumpido que se remonta a la base de código de AT&T, aunque todo el código de AT&T se había eliminado en 1994.
Linux es un poco diferente. Linus Torvalds lo creó desde cero a partir de 1991, basado libremente en otro de novo similar a Unix llamado Minix junto con la versión actual de POSIX, y usando Minix como plataforma de desarrollo inicial. Rápidamente encontró una audiencia lista entre los usuarios de software GNU de la Fundación de Software Libre de Richard Stallman, que tradicionalmente ha tenido un enfoque menos espartano a las características del software; Como resultado, para los extraños, los comandos de usuario de Linux a menudo parecen inflados y con demasiadas funciones en comparación con sus homólogos de BSD, lo que ha llevado a la creación de proyectos como BusyBox y suckless.org para admitir distribuciones de Linux que se ejecutan en entornos más estrictos como teléfonos inteligentes y redes enrutadores El entorno de Linux en general es muy modular, y se han intercambiado partes significativas del sistema a lo largo de los años (más notablemente, al menos cuatro arquitecturas de sonido diferentes y múltiples enfoques para los servicios del sistema, de los cuales systemd es el más reciente y probablemente más controvertido). Un aspecto cultural de esto es que no hay One True Linux: la división más fundamental en la comunidad es entre Red Hat y Debian, basado en gran medida en el administrador de paquetes estándar elegido (Red Hat = RPM, Debian = apt-get). Hay distribuciones de escritorio basadas en GNU, pero también hay minimalistas (Tiny Core, Suckless’s Stali), específicas de la aplicación (Android, dd-wrt), orientadas a los aficionados al hardware (Raspbian) y muchas otras. Linux también utiliza la Licencia Pública GNU versión 2, lo que significa que cualquier cambio que realice en el núcleo debe distribuirse junto con el núcleo modificado.
Compare esto con BSD; solo hay un puñado de distribuciones, y generalmente están integradas de arriba a abajo como un solo proyecto. Este es especialmente el caso de OpenBSD, que se ha centrado en la seguridad durante casi toda su existencia y, por lo tanto, se audita no solo en el nivel de los programas individuales, sino de arriba a abajo como un sistema; rara vez verás a un desarrollador de Linux hacer algo así sin reinventar mucho las ruedas, debido a todos los componentes dispares que tienes que juntar para construir una distribución de Linux.
tl; dr Las diferencias son de naturaleza histórica y cultural, aunque las culturales son probablemente más importantes ya que afectan directamente la forma en que se construyen y usan los sistemas. Unix es el término general; BSD y Linux describen partes específicas de la familia.
stl; sdr Todo es Unix. BSD se enfoca en la integración y no le importa lo que hagas con ella; Linux se centra en la flexibilidad y requiere que comparta sus cambios.