Je rencontre fréquemment le terme "unix-like" sur de nombreux sites Web.
Il n'y a pas de norme; c'est juste dans la façon dont il se comporte.
Mais si je devais développer un noyau à partir de zéro, qu'est-ce qui le rendrait "unix-like"?
En gros, quelles sont les choses qui font du code écrit comme Unix?
linux
unix-philosophy
il manque un axone
la source
la source
Réponses:
Je crois que la plupart des systèmes d'exploitation "de type Unix" font un effort très sérieux pour adhérer au standard POSIX , qui est supervisé par l'Open Group, qui contrôle également la spécification UNIX unique qui définit un "vrai UNIX". Le premier est au cœur du second.
Il existe donc, en fait, une norme qui définit les aspects pratiques des systèmes d' exploitation de type Unix. Jetez un œil à la liste des systèmes d'exploitation "entièrement" et "principalement" conformes à la fin de l'article de wikipedia sur POSIX.
Il y a des raisons évidentes pour lesquelles Linux en particulier pourrait ne pas être considéré comme entièrement conforme ou certifiable par la spécification Single Unix (SUS), mais ce n'est pas parce qu'un système Linux donné est nécessairement incompatible avec lui. L'article de wikipedia résume la spécification de cette façon:
Cela fait évidemment référence à de nombreux composants de l'espace utilisateur (tels que le shell) qui ne font tout simplement pas partie du noyau Linux. Il n'y a donc aucun moyen que linux.org et. Al. peut avoir le noyau seul certifié - en ce sens, ce n'est pas du tout un système d'exploitation. Ils pourraient, bien sûr, essayer de certifier un système particulier en utilisant le noyau, mais cela n'aurait aucun sens à la lumière du schéma de distribution général: le noyau et les personnes qui le maintiennent sont indépendants des personnes qui maintiennent le noyau utilisateur (GNU) qui sont indépendants des personnes qui gèrent les distributions OS assemblées (Debian, Fedora, etc.).
Je suppose que Debian ou Fedora eux-mêmes pourraient s'engager dans le processus de certification (ainsi, par exemple, RedHat Enterprise pourrait devenir un "unix certifié"), mais cela soulève la question que ce soit réellement souhaitable. Je suppose que la principale raison des systèmes SUS est d'exécuter des logiciels (à l'échelle commerciale, non grand public) écrits pour cela, ce qui n'est tout simplement pas le créneau Linux - les gens qui font cela paieront des milliers de dollars par licence pour le système d'exploitation, y compris les lots de support, etc., car ils paient également des dizaines ou des centaines de milliers de dollars par licence pour tout logiciel supplémentaire qu'ils souhaitent exécuter sur le système. Linux et les autres valeurs aberrantes, d'autre part, ont poursuivi des objectifs de conception au-delà de la simple conformité à des fins commerciales, et il existe divers exemples de cela, par exemple (dehttp://en.wikipedia.org/wiki/STREAMS ):
Un hébergement intéressant qui met en évidence le fait que SUS et The Open Group! = Linux,! = BSD, etc.
la source
Pour développer la première réponse à propos de POSIX, pour comprendre ce que "unix-like" signifie, il faut d'abord essayer de comprendre ce qu'est exactement UNIX. En consultant la documentation de l' Open Group , propriétaire de la marque Unix, vous trouverez des détails sur l' évolution de la spécification UNIX - voici UNIX03 :
UNIX98 :
UNIX95 (c'est moi qui souligne):
Les versions serveur de la norme ajoutent Internet Server et IPv6 dans certains cas.
Donc, bien sûr, nous voyons la référence aux laboratoires AT&T Bell et le langage C est au cœur de ce qu'est UNIX: le langage C, les outils de base modulaires et le shell et comment le noyau, le système de fichiers et d'autres composants clés du système d'exploitation ont été conçus et mis en œuvre .
C'est là que le livre La conception du système d'exploitation UNIX de Maurice J. Bach devient une lecture inestimable car il s'agit de questions historiques à ce stade. Il convient de noter bien sûr comment cela est lié à d' autres inventions comme le langage C. C a été développé par AT&T Bell pour implémenter Unix avec un langage qui pourrait être aussi rapide que l'assemblage mais portable sur différents matériels, et beaucoup de POSIX est une extension de la norme C.
En ce qui concerne le noyau lui-même, vous trouverez souvent un schéma conceptuel tel que celui-ci pour illustrer ce qu'était traditionnellement un noyau UNIX:
Voici quelques extraits du livre classique de M. Bach (1986) qui discutent des fondements du noyau UNIX System V:
Si vous êtes intéressé par les différentes implémentations des noyaux dans les systèmes d'exploitation de type Unix, vous pouvez également jeter un œil à l' implémentation de FreeBSD (4.4BSD) ou au noyau Mach ou regarder cette comparaison de leurs fonctionnalités.
Plus vous en savez sur la conception d'UNIX, plus vous comprenez ce qui s'est passé dans le diagramme suivant sur l'ascendance d'UNIX et son histoire . M. Bach parle principalement du système V dans son livre, mais il parle également de BSD:
Il y a plus que cela ne semble vraiment. Par exemple, Mac OSX est certifié UNIX03, mais le voyez-vous connecté à l'un des UNIX purs (en rouge principalement)?
Ci-dessus, vous pouvez voir comment BSD, GNU, Microsoft et diverses personnes ont contribué à cet univers. Même si GNU et finalement Linux n'ont pas de lignée directe avec UNIX, vous voyez que GNU est un effort pour réorganiser dans le monde open source les outils et logiciels d'UNIX commerciaux qui étaient devenus fermés. Donc, regarder le logiciel GNU maintenu donne une idée, par exemple, des applications et bibliothèques de prototype initiales.
Les guerres de licences ont joué un rôle dans l'évolution (et parfois la stagnation) d'UNIX. Vous pouvez voir immédiatement que les UNIX sont alignés selon le type de licence - fermé vs BSD ( BSD permet de rendre le code source fermé ... voir OSX) et GPL qui permet à Linux et GNU de se compléter dans le monde du copyleft. Voici la carte classique du noyau Linux initialement développée par Linus Torvalds, qui révèle également ce qu'un noyau "peut" être dans un système d'exploitation de type Unix:
Cela suggère l'idée qu'un type de conception " noyau " n'est pas ce qui fait la norme UNIX ou ce qui définit un système d'exploitation de type Unix. Cela est démontré par le fait que de nombreux systèmes d'exploitation de type Unix peuvent avoir un noyau monolithique ou un micro-noyau - monolithique était le type de conception classique pour UNIX. En fait, même au sein d'UNIX purs, HPUX a un noyau monolithique tandis qu'AIX utilise un micro-noyau. Ce débat sur le design concerne la performance et n'est pas lié à l'ascendance ou à l'identité Unix. D'autre part, il existe une approche conceptuelle traditionnelle pour fournir des services aux logiciels, traiter des systèmes de fichiers, etc. sous des systèmes d'exploitation de type UNIX / unix.
Je pense que de telles considérations ajouteront du contexte à la partie OS de votre question.
la source