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 :
La norme de produit UNIX 03 est la marque des systèmes conformes à la version 3 de la spécification UNIX unique. Il s'agit d'une version considérablement améliorée de la norme de produit UNIX 98. Les améliorations obligatoires comprennent l'alignement avec le langage de programmation ISO / IEC 9989: 1999 C, IEEE Std 1003.1-2001 et ISO / IEC 9945: 2002. Cette norme de produit comprend les normes de produit obligatoires suivantes: appels système internationaux et bibliothèques étendues V3, commandes et utilitaires V4, langage C V2 et interfaces de terminal internationalisées.
UNIX98 :
La norme de produit UNIX 98 est une version considérablement améliorée de la norme de produit UNIX 95. Les améliorations obligatoires incluent (1) les interfaces Threads, (2) l'extension de support multi-octets (MSE), (3) la prise en charge des fichiers volumineux, (4) la liaison dynamique, (5) les modifications pour supprimer les dépendances ou restrictions de longueur des données matérielles, et (6 ) Changements de l'an 2000. En outre, les améliorations facultatives suivantes sont incluses: des fonctions d'administration de logiciels et un ensemble d'API pour une prise en charge en temps réel. Cette norme de produit comprend les normes de produit obligatoires suivantes: Appels système internationaux et bibliothèques étendues V2, commandes et utilitaires V3, langage C, service de transport (XTI) V2, sockets V2 et interfaces de terminal internationalisées. En outre, il peut également être conforme à la norme de produit d'administration de logiciel.
UNIX95 (c'est moi qui souligne):
Cette norme produit définit une plate-forme consolidée pour la prise en charge d'une large gamme d'applications développées à l'origine pour l'une des classes de systèmes d'exploitation dérivées du code du système d'exploitation UNIX et / ou des interfaces développées à l'origine par AT&T , en plus des installations fournies par la norme de produit de base. Il a une portée plus large que Base. Cette norme de produit comprend les normes de produit suivantes: appels système internationaux et bibliothèques étendues, commandes et utilitaires V2, langage C, service de transport (XTI), sockets et interfaces de terminal internationalisées.
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:
Cependant, ils [les sous-systèmes d'application et les programmes] utilisent tous des services de niveau inférieur finalement fournis par le noyau, et ils se prévalent de ces services via l'ensemble des appels système. Le système V compte environ 64 appels système, dont moins de 32 sont fréquemment utilisés. Ils ont des options simples qui les rendent faciles à utiliser mais fournissent beaucoup de puissance à l'utilisateur. L'ensemble des appels système et les algorithmes internes qui les implémentent forment le corps du noyau [...]
[...] ses deux principaux composants sont le sous-système de fichiers et le sous-système de processus.
Les fichiers sont organisés en systèmes de fichiers, qui sont traités comme des périphériques logiques; un périphérique physique tel qu'un disque peut contenir plusieurs périphériques logiques (systèmes de fichiers). Chaque système de fichiers a un superbloc qui décrit la structure et le contenu du système de fichiers, et chaque fichier dans un système de fichiers est décrit par un inode qui donne les attributs du fichier. Les appels système qui manipulent des fichiers le font via des inodes. [et le pool de tampons]
[...] Il existe deux versions de l'inode: la copie de disque qui stocke les informations d'inode lorsque le fichier n'est pas utilisé et la copie in-core qui enregistre des informations sur les fichiers actifs.
L'exécution des processus utilisateur sur les systèmes UNIX est divisée en deux niveaux: utilisateur et noyau. Lorsqu'un processus exécute un appel système, le mode d'exécution du processus passe du mode utilisateur au mode noyau : le système d'exploitation exécute et tente de traiter la demande de l' utilisateur [...]
[...] la philosophie du système UNIX est de fournir des primitives de système d'exploitation qui permettent aux utilisateurs d'écrire de petits programmes modulaires qui peuvent être utilisés comme blocs de construction pour créer des programmes plus complexes. Une telle primitive visible pour les utilisateurs shell est la capacité de rediriger les E / S .
[...] En plus de gérer les appels système, le noyau s'occupe de la comptabilité générale pour la communauté des utilisateurs, contrôlant la planification des processus, gérant le stockage et la protection des processus dans la mémoire principale, alignant les interruptions, gérant les fichiers et les périphériques et prenant soin des erreurs système conditions.
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.