Con frecuencia me encuentro con el término "como unix" en muchos sitios web.
No hay un estándar; es justo en la forma en que se comporta.
Pero si tuviera que desarrollar un núcleo desde cero, ¿qué lo haría considerado "unix-like"?
Básicamente, ¿cuáles son las cosas que hacen que el código escrito sea como Unix?
linux
unix-philosophy
falta un axón
fuente
fuente
Respuestas:
Creo que la mayoría de los sistemas operativos "similares a Unix" hacen un esfuerzo muy serio para adherirse al estándar POSIX , supervisado por Open Group, que también controla la Especificación UNIX única que define un "UNIX verdadero". El primero es el núcleo del segundo.
Entonces, de hecho, hay un estándar que define los aspectos prácticos de los sistemas operativos tipo UNIX . Eche un vistazo a la lista de sistemas operativos "totalmente" y "en su mayoría" compatibles al final del artículo de Wikipedia en POSIX.
Hay algunas razones obvias en que Linux en particular podría no ser considerado totalmente compatible o certificable por la Especificación Single Unix (SUS), pero esto no se debe a que un sistema Linux dado sea necesariamente incompatible con él. El artículo de wikipedia resume las especificaciones de esta manera:
Obviamente, esto se refiere específicamente a muchos componentes del país de usuario (como el shell) que simplemente no forman parte del núcleo de Linux. Entonces no hay forma de que linux.org et. Alabama. puede tener el núcleo solo certificado; en este sentido, no es un sistema operativo en absoluto. Podrían, por supuesto, tratar de certificar algún sistema en particular usando el núcleo, pero esto no tendría sentido a la luz del esquema de distribución general: el núcleo y las personas que lo mantienen son independientes de las personas que mantienen el núcleo de usuario (GNU) que son independientes de las personas que mantienen distribuciones de SO ensambladas reales (Debian, Fedora, etc.).
Supongo que Debian o Fedora podrían participar en el proceso de certificación (por ejemplo, RedHat Enterprise podría convertirse en un "unix certificado"), pero esto plantea la pregunta de que es realmente deseable. Supongo que la razón principal de los sistemas SUS es ejecutar software (a escala comercial, no para el consumidor) escrito para tal, que simplemente no es el nicho de Linux: las personas que lo hagan pagarán miles de dólares por licencia para el sistema operativo, incluidos los lotes de soporte, etc., porque también están pagando decenas o cientos de miles de dólares por licencia por cualquier software adicional que quieran ejecutar en el sistema. Linux y los demás valores atípicos, por otro lado, han perseguido objetivos de diseño más allá del simple cumplimiento con fines comerciales, y hay varios ejemplos de esto, por ejemplo (desdehttp://en.wikipedia.org/wiki/STREAMS ):
Un alojamiento interesante que destaca el punto que SUS y The Open Group! = Linux,! = BSD, etc.
fuente
Para ampliar la primera respuesta sobre POSIX, para comprender lo que significa "unix-like", bueno, primero se debe tratar de comprender qué es exactamente UNIX. Mirando la documentación de Open Group , que posee la marca registrada Unix, encontrará detalles sobre la evolución de la especificación Single UNIX : aquí está UNIX03 :
UNIX98 :
UNIX95 (mi énfasis):
Las versiones de servidor del estándar agregan Internet Server e IPv6 en algunos casos.
Entonces, por supuesto, vemos la referencia a AT&T Bell Laboratories y el lenguaje C es el núcleo de lo que es UNIX: el lenguaje C, las herramientas de base modulares y el shell y cómo se diseñaron e implementaron el núcleo, el sistema de archivos y otros componentes clave del sistema operativo .
Ahí es donde el libro El diseño del sistema operativo UNIX de Maurice J. Bach se convierte en una lectura invaluable porque es un asunto histórico en este momento. Es de destacar, por supuesto, cómo se relaciona esto con otros inventos como el lenguaje C de hecho. C fue desarrollado por AT&T Bell para implementar Unix con un lenguaje que podría ser tan rápido como el ensamblado pero portátil en diferentes hardware, y mucho POSIX es una extensión del estándar C.
En lo que respecta al núcleo en sí, a menudo encontrará un diagrama conceptual como este para ilustrar de qué se trataba tradicionalmente un núcleo UNIX:
Aquí hay algunos extractos del clásico libro del Sr. Bach (1986) que discuten los fundamentos del núcleo del sistema V de UNIX:
Si está interesado en las diferentes implementaciones de kernels en sistemas operativos tipo Unix, también puede echar un vistazo a la implementación de FreeBSD (4.4BSD) o al kernel Mach o ver esta comparación de sus características.
Cuanto más sepa sobre el diseño de UNIX, más comprenderá lo que sucedió en el siguiente diagrama sobre la ascendencia de UNIX y su historia . Bach habla principalmente del Sistema V en su libro, pero también habla de BSD:
Hay más en esto de lo que parece a simple vista . Por ejemplo, Mac OSX tiene certificación UNIX03, pero ¿lo ve conectado a alguno de los UNIX puros (en su mayoría en rojo)?
Arriba puede ver cómo BSD, GNU, Microsoft y diversas personas contribuyeron a este universo. Aunque GNU y, en última instancia, Linux no tienen un linaje directo con UNIX, puede ver que GNU es un esfuerzo para rediseñar en el mundo de código abierto las herramientas y el software de UNIX comercial que se había cerrado. Por lo tanto, mirar el software mantenido por GNU da una idea, por ejemplo, de las aplicaciones y bibliotecas prototipo iniciales.
Las guerras de licencias jugaron un papel en la evolución (y el estancamiento a veces) de UNIX. Puede ver de inmediato que UNIX está alineado según el tipo de licencia: cerrado frente a BSD ( BSD permite que el código sea de código cerrado ... vea OSX) y GPL que permite que Linux y GNU se complementen en el mundo copyleft. Aquí está el mapa clásico del núcleo de Linux desarrollado inicialmente por Linus Torvalds, que también revela lo que un núcleo "puede" ser en un sistema operativo tipo Unix:
Esto sugiere la idea de que un tipo de diseño " kernel " no es lo que hace que el estándar UNIX o lo que define un sistema operativo tipo UNIX. Esto se evidencia por el hecho de que muchos sistemas operativos tipo UNIX pueden tener un núcleo monolítico o un microkernel: el monolítico era el tipo de diseño clásico para UNIX. De hecho, incluso dentro de UNIX puro, HPUX tiene un núcleo monolítico, mientras que AIX usa un microkernel. Este debate sobre el diseño trata sobre el rendimiento y no está relacionado con la ascendencia o identidad de Unix. Por otro lado, existe un enfoque conceptual tradicional para proporcionar servicios al software, tratar con sistemas de archivos, etc., bajo sistemas operativos UNIX / tipo UNIX.
Creo que tales consideraciones agregarán contexto a la parte del sistema operativo de su pregunta.
fuente