Pourquoi Linux s'adapte-t-il si bien à différentes plates-formes matérielles?

22

Pourquoi Linux fonctionne-t-il bien sur autant de types de machines différents - ordinateurs de bureau, ordinateurs portables, serveurs, appareils embarqués, téléphones mobiles, etc.? Est-ce principalement parce que le système est ouvert, donc n'importe quelle partie peut être modifiée pour fonctionner dans différents environnements? Ou existe-t-il d'autres propriétés du noyau et / ou du système Linux qui permettent à cet OS de fonctionner plus facilement sur une si large gamme de plates-formes?

Justin Ethier
la source
7
Je pense que vous avez déjà une partie de la réponse - l'ouverture facilite l'adaptation de différents groupes de personnes ou d'entreprises à leurs besoins. Étant donné que le noyau a été notamment critiqué pour être monolithique, je ne suis pas sûr que sa conception initiale ait été délibérément optimisée pour l'évolutivité de quelque manière que ce soit. Je suppose qu'un plus grand nombre de personnes ont travaillé sur le noyau de Linux que sur d'autres systèmes d'exploitation - et peut-être que cela a forcé les principaux responsables à prendre soin de diviser le code en morceaux avec des interfaces claires? D'un autre côté, certaines variantes de BSD ont la portabilité comme objectif explicite.
RedGrittyBrick
@Red: Il a été critiqué pour être un noyau monolithique au lieu d'un micro-noyau - cela n'a rien à voir avec sa conception. Cela a à voir avec la quantité de noyau qui s'exécute dans l'espace utilisateur et la quantité qui s'exécute dans l'espace de noyau. Le noyau de Windows NT (par exemple) est très modulaire, mais il est toujours techniquement monolithique car la plupart des services (c'est-à-dire le système de fichiers) fonctionnent en mode noyau plutôt qu'en mode utilisateur.
Billy ONeal
@Billy: Windows NT est techniquement un noyau hybride . Je crois que Microsoft maintient toujours les sous-systèmes en utilisant le passage de messages et conserve la possibilité de déplacer des pièces dans l'espace utilisateur comme souhaité. Ils l'ont fait avec le système graphique de Vista: il est maintenant dans l'espace utilisateur après avoir été dans l'espace noyau depuis NT 4.0
Zan Lynx
2
@Zan: J'avais l'impression que le statut de "noyau hybride" était contesté . J'ai donc dit "monolithique". NT a certainement beaucoup de fonctionnalités monolithiques même s'il est divisé en morceaux de bibliothèque.
Billy ONeal
@Billy: Il me semble que si votre noyau peut être transformé en micro-noyau simplement en changeant quelques options et en reconstruisant, alors c'est autre chose que monolithique même si les constructions binaires les plus utilisées mettent tout dans l'espace d'adressage du noyau.
Zan Lynx, le

Réponses:

31

Bien que l'ouverture en soit certainement une partie, je pense que le facteur clé est l'insistance continue de Linus Torvald pour que tout le travail, du plus grand au plus petit, ait une place dans le noyau Linux principal, tant qu'il est bien fait. S'il avait décidé à un moment donné de tracer une ligne et de dire "d'accord, pour ce matériel de super-ordinateur sophistiqué, nous avons besoin d'une fourchette", alors des variantes complètement séparées de haut de gamme et de petit système auraient pu se développer. Dans l'état actuel des choses, au lieu de cela, les gens ont fait le travail le plus difficile pour que tout se joue bien ensemble.

Et, les kludges qui permettent à un côté des choses au détriment de l'autre ne sont généralement pas autorisés à entrer - encore une fois, forçant les gens à résoudre les problèmes de manière plus difficile mais plus correcte, ce qui s'avère généralement plus facile à avancer. une fois que tout ce qui est requis, le kludge devient une note de bas de page historique.

D'après une interview il y a plusieurs années :

Q: Linux est un système polyvalent. Il fournit des PC, d'énormes serveurs, des mobiles et une dizaine d'autres appareils. De votre position privilégiée, quel secteur sera celui où Linux exprimera le plus fort potentiel?

R: Je pense que la vraie puissance de Linux est exactement qu'il ne s'agit pas d'un créneau. Tout le monde peut jouer, et différentes personnes et différentes entreprises ont des motivations et des croyances totalement différentes en ce qui est important pour elles. Je ne suis donc même pas intéressé par un secteur en particulier.

mattdm
la source
18
Et le petit système et les énormes définitions de système ne cessent de changer tout le temps, donc ce sont de bonnes contraintes ont été évitées. Les téléphones intelligents multicœurs peuvent désormais bénéficier de tout le travail de superordinateur effectué il y a des années.
Zan Lynx
4

Linux s'adapte à de nombreux types de matériel différents car:

  • c'est très configurable
  • la source est disponible gratuitement et peut être construite pour n'importe quel CPU disposant d'un compilateur C disponible
  • Les processeurs des appareils embarqués et des téléphones portables ont au moins le même niveau ou plus de puissance par rapport aux 386 machines d'origine.
  • il fonctionne très bien avec rien d'autre qu'un réseau, une forme de disque ou un périphérique de type disque et un port série
LawrenceC
la source
Eh bien, quelqu'un aurait besoin d'écrire une quantité minimale de code de démarrage et d'exécution C pour la plate-forme cible. Oh, et il doit prendre en charge la mémoire virtuelle. Mais sinon c'est vrai :)
Billy ONeal
1
@Billy Il existe des ports pour nommer les systèmes: uClinux, uClinux / ARM et MontaVista Linux.
Tobu
@Tobu: Hmm .. Je ne comprends pas comment cela peut être. L'ensemble de la "philosophie Unix" pour plusieurs processus suppose que quelque chose comme cela forkest possible et forkne peut pas être fait de manière raisonnablement efficace sur un système de mémoire non virtuelle. Bien que les ports indiqués utilisent probablement des parties du noyau Linux et puissent exécuter certains logiciels Linux, il semble que les API exposées par ces ports soient pour la plupart différentes des noyaux Linux typiques. (Exemple: mappage de mémoire - qui nécessite évidemment de la mémoire virtuelle)
Billy ONeal
linuxjournal.com/article/7814 : dit que uCLinux ne prend pas en charge fork (), mais une variante de blocage appelée vfork (), les applications sous uCLinux doivent être réécrites pour utiliser vfork ou des threads.
LawrenceC
4

Le noyau Linux évolue bien car c'est ce qu'il est. Le noyau central est relativement petit et fait ce qu'il doit faire. Les pilotes de périphériques sont facultatifs et peuvent être exclus du noyau pour les petits systèmes. Au-delà des exigences minimales du noyau, la plupart des fonctionnalités sont implémentées en tant que fonctionnalités facultatives.

Jetez un œil au fichier de configuration installé à côté de la plupart des noyaux. Il répertorie toutes les fonctionnalités qui ont été activées ainsi que les pilotes pris en charge.

Les pilotes sont pris en charge intégrés dans le noyau ou en tant que modules chargeables. Cela permet à un noyau d'être configuré dynamiquement sur le matériel sur lequel il s'exécute. C'est l'approche utilisée par de nombreuses distributions.

En plus d'avoir les outils de compilation, la modification du noyau pour un nouveau matériel est relativement simple. Pour un nouveau processeur, seul le code associé doit être implémenté en tant que modification de la fonctionnalité existante. Les nouveaux appareils nécessitent uniquement un nouveau pilote avec les crochets appropriés. Les nouveaux systèmes de fichiers sont également des modifications relativement triviales.

La base de code a été bien entretenue pour conserver cette flexibilité sans fourche externe. La compilation conditionnelle entraîne un noyau très flexible qui a été maintenu aussi minimal que possible.

BillThor
la source
1

Je n'ai pas l'expertise technique détaillée pour sauvegarder cette réponse, mais mon expérience suggère que Linux évolue bien par rapport aux autres systèmes d'exploitation que j'utilise fréquemment (principalement Windows). Alors peut-être que la question est de savoir pourquoi Windows ne évolue pas aussi bien que Linux.

Si reformuler la question de cette façon vous est toujours utile, je suggérerais que les forces du marché incitent Microsoft à ajouter des fonctionnalités et des fonctionnalités adaptées au matériel le plus récent et le plus performant, car ils vendent plus de copies du système d'exploitation principalement lorsque les utilisateurs finaux achètent de nouveaux systèmes . Donc, à tout moment, je trouve que la dernière version de Windows fonctionne mal sur du matériel plus ancien et moins performant.

Pardonnez-moi si cela simplifie trop votre question.

Mox
la source
Il semble que vous parliez du système d'exploitation, tandis que le gars parle du noyau. Eh bien, sauf si vous savez avec certitude si le noyau Windows est gonflé.
tshepang
@Tshepang: Pour être honnête, la question porte sur le "noyau et / ou système Linux". Windows 7 et Windows Phone 7 partagent-ils un noyau? Le peu que j'ai lu suggère que leurs noyaux pourraient avoir moins de code en commun que les noyaux d'Ubuntu Server et d'Android.
RedGrittyBrick
Merci, mais la question concernait vraiment Linux et pas tout autre OS. Il y en a beaucoup d'autres: en.wikipedia.org/wiki/List_of_operating_systems
Justin Ethier
Le noyau NT est en fait très efficace, mais c'est le grand nombre de couches qui l'entourent qui font
LawrenceC