GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi Linux ressemble-t-il à Unix si son noyau est monolithique ?

Je crois que la réponse réside dans la façon dont vous définissez "Unix-like". Selon l'entrée wikipedia pour "Unix-like", il ne semble pas y avoir de définition standard.1

Un système d'exploitation de type Unix (parfois appelé UN*X ou *nix) est un système d'exploitation qui se comporte d'une manière similaire à un système Unix, sans nécessairement se conformer ou être certifié à une version de la spécification UNIX unique.

Il n'y a pas de norme pour définir le terme, et une certaine divergence d'opinion est possible quant à la mesure dans laquelle un système d'exploitation donné est "de type Unix".

Le terme peut inclure des systèmes d'exploitation gratuits et open-source inspirés de l'Unix des Bell Labs ou conçus pour émuler ses fonctionnalités, des équivalents commerciaux et propriétaires, et même des versions basées sur le code source UNIX sous licence (qui peut être suffisamment "Unix-like" pour passer la certification et portent la marque "UNIX").

La raison la plus évidente est probablement qu'UNIX et MINIX sont des antécédents de Linux, ayant inspiré sa création.2

Torvalds a commencé le développement du noyau Linux sur MINIX et les applications écrites pour MINIX ont également été utilisées sur Linux. Plus tard, Linux a mûri et d'autres développements du noyau Linux ont eu lieu sur les systèmes Linux.

Linus Torvalds avait voulu appeler son invention Freax, un mot-valise de "libre", "freak" et "x" (comme une allusion à Unix).

Qu'un système soit monolithique ou micro-noyau ne semble pas être pris en compte lors de l'appel d'un système d'exploitation "Unix-like". Du moins, pas aussi souvent que si le système est compatible POSIX ou principalement compatible POSIX.


La "méthode UNIX" se réfère vraiment à l'expérience de l'utilisateur. Un petit ensemble d'utilitaires peut être combiné pour créer une ligne de commande efficace du système d'exploitation. En relation avec cela, les utilitaires des systèmes d'exploitation ne sont en aucun cas "spéciaux" ou ont un pouvoir au-delà des programmes que vous pouvez écrire vous-même.

C'est un point difficile à faire valoir ces jours-ci, car UNIX a tellement réussi dans cet aspect qu'il est devenu la façon dont les systèmes d'exploitation sont censés présenter leurs interfaces de ligne de commande. Le point est mieux illustré par un contre-exemple :voici comment faire cp a.txt b.txt sur un mainframe IBM :

//COPY     JOB ,CLASS=E,MSGCLASS=X,NOTIFY=&SYSUID
//cp       EXEC PGM=IEBGENER
//SYSIN    DD DUMMY
//SYSPRINT DD SYSOUT=*
//SYSUT1   DD DSNAME=a.txt,DISP=SHR
//SYSUT2   DD DSNAME=b.txt,DISP=(NEW,CATLG),UNIT=SYSDA

Cela ne copiera même pas tous les types de fichiers.

UNIX a fait un certain nombre d'hypothèses qui simplifient la convivialité au détriment des performances. Les canaux de fichiers 1 (stdin), 2 (stdout) et 3 (stderr) vont vers et depuis le terminal, supprimant une grande partie du passe-partout du JCL ci-dessus. Le système de fichiers prend en charge un type de données - les octets - et un mode d'accès - séquentiel (bien que le pointeur où les données séquentielles peuvent être lues ou écrites puisse être déplacé pour implémenter une sorte "d'accès aléatoire"). Cela signifie que les utilitaires système n'ont besoin de traiter qu'un seul type de fichier et un seul type de données pour couvrir tous les fichiers et types de données. Le système de fichiers ne nécessite pas de pré-allocation. L'ajout de fichiers au répertoire (alias "catalogue de disques" sur les mainframes IBM) se produit automatiquement si le nom de fichier est connu du système d'exploitation.

Ces hypothèses ont eu tellement de succès qu'aujourd'hui nous n'y pensons même plus. Alors qu'à l'époque, ils auraient semblé prodigues - imaginez la surcharge d'un système de fichiers qui n'a pas été informé à l'avance de la taille maximale d'un fichier.

Mais UNIX ne s'est pas arrêté là. Il a promu une approche "boîte à outils" des utilitaires système. L'IEBGENER du mainframe peut imprimer des fichiers, réorganiser les champs dans les enregistrements, supprimer des enregistrements, créer des enregistrements vierges. En revanche, sous UNIX, cp copie les fichiers, cat répertorie le contenu des fichiers, coupe les champs des poignées. Il existe une syntaxe soignée pour enchaîner le stdout d'une commande au stdin du fichier suivant, le tout sur une seule ligne de terminal. En utilisant cette syntaxe "pipe" et ces petites commandes, nous pouvons faire tout ce que IEBGENER peut faire. Et des choses dont les auteurs d'IEBGENER n'ont jamais rêvé.

Kernighan et Plauger ont écrit un livre influent en 1976 sur cette approche -- Outils logiciels -- et c'est vraiment la première exposition de la "voie UNIX". Kernighan et Pike ont réaffirmé cette approche dans leur livre de 1984 L'environnement de programmation UNIX .


Linux
  1. Qu'est-ce que POSIX ? Pourquoi est-ce important pour les utilisateurs Linux/UNIX ?

  2. Comment vérifier la version du noyau sous Linux

  3. Linux – Linux est-il un Unix ?

  4. Linux - Pourquoi n'y a-t-il pas de système de fichiers Rootfs présent sur le système ?

  5. Linux - Pourquoi le noyau ne peut-il pas exécuter Init ?

Linux est-il un système d'exploitation ou un noyau ?

Le noyau Linux et ses fonctions

Histoire Unix et Linux

Linux contre Unix

Pourquoi l'utilisateur le plus puissant d'un système Unix/Linux s'appelle-t-il "root ?"

Pourquoi les numéros d'appel du système Linux dans x86 et x86_64 sont-ils différents ?