36 votes

Quelles sont les bonnes et mauvaises choses dans la conception du noyau Linux ?

Je ne suis pas un maître du code du noyau, mais j'ai une idée de base de sa structure. Dans ce post, nous pouvons discuter des bonnes et mauvaises choses dans la conception du noyau.

Mise à jour : Non, ce n'est pas pour les devoirs. Je l'aurais mentionné si c'était le cas.

Voir ça : http://stackoverflow.com/questions/1548442/i-know-how-to-program-now-how-do-i-learn-to-design

Tout le monde loue la conception du noyau Linux. Dressons une liste des bonnes et mauvaises décisions qui ont été prises lors de la conception du noyau.

8voto

SjB Points 6823

Il existe un article intitulé "Linux Kernel Design Patterns". Vous pouvez y trouver divers modèles de conception de noyau pour Linux. Un article qui continue est " Patrons de conception du noyau Linux - Partie 1 "Commencez par là et cherchez sur Google un article supplémentaire sur le Kernel Design Pattern.

5voto

martinus Points 6895

Je ne parle pas directement de la conception de Linux, mais je pense que le processus de développement qui se cache derrière est le plus remarquable. Le noyau lui-même est en constante évolution, et ce à une vitesse incroyable. Ceci n'est possible que grâce au contrôle de version décentralisé ( git ), ce qui permet à un très grand nombre de développeurs de travailler simultanément.

En outre, avec git bisect ils ont accompli quelque chose de remarquable : il est désormais possible pour les non-développeurs de repérer les bogues. Voici une citation de David Miller :

Ce que les gens ne comprennent pas, c'est que c'est une situation où le "principe du nœud final s'applique. Lorsque vous avez ressources limitées (ici : les développeurs) vous ne poussez pas la majeure partie de la charge sur eux. Au lieu de cela, vous poussez les choses vers la ressource que vous avez en grande quantité, les les noeuds finaux (ici : les utilisateurs), de sorte que la de sorte que la situation évolue réellement.

Les personnes qui signalent un bogue ont accès à l'environnement où le bogue se produit, et "git bisect" extrait automatiquement les informations pertinentes de cet cet environnement. C'est également un bon moyen d'obtenir de nouveaux contributeurs.

De plus, lorsque les développeurs veulent contribuer au code, ils doivent absolument décomposer leur code en minuscules correctifs applicables séparément, afin que chaque modification puisse être facilement examinée. De cette façon, une grande partie de leur code peut être comprise par de nombreuses personnes.

El Style de gestion Linux est une lecture intéressante. Linus essaie de créer une atmosphère où l'on ne se cache pas derrière la politesse, mais où l'on dit clairement ce que l'on pense. Cela peut parfois sembler grossier, mais je suis sûr que cela permet de maintenir la qualité du code à un niveau élevé.

4voto

chezgi Points 65

De mauvaises choses :

  1. le taux de nouvelles fonctionnalités est élevé et le cycle de correction des bogues pour ces fonctionnalités est faible.
  2. le système de configuration doit être intelligent. et catégorisé pour certains besoins généraux. s'il a un assistant comme le système de configuration et plus d'interactions et d'informations lors de la configuration.
  3. gros verrou du noyau et autres verrous partout sans bon mécanisme de vérification.

de bonnes choses :

  1. pilotes en mode utilisateur : système de fichiers en mode utilisateur, pilote de bloc en mode utilisateur, pilote de bloc en mode utilisateur, raw hid, ...
  2. bonne inclusion des pilotes. de nos jours, une grande variété de périphériques sont supportés par le noyau linux.
  3. virtualisation de la lumière dans le noyau.
  4. bons mécanismes de communication entre l'espace utilisateur et l'espace noyau (dev,proc,sys,debugfs,...)
  5. Très bonne utilisation du langage C avec des pointeurs de fonction sur des structures pour simuler certaines des caractéristiques de l'orientation objet.
  6. mode utilisateur linux pour le débogage.
  7. bon support des systèmes embarqués
  8. de très bons mécanismes de sécurité : selinux, apparmor, vérification d'intégrité,...

1voto

Maxim Veksler Points 4231

Je pense que ce http://linuxhelp.blogspot.com/2006/05/monolithic-kernel-vs-microkernel-which.html devrait apporter un éclairage à votre question.

1voto

James Points 11054

La pire des choses :

Le système de construction (oui, je sais que cela n'a rien à voir avec la conception du noyau lui-même).
C'est un véritable cauchemar, qui ne ressemble à aucun autre système existant, et si pour une raison quelconque (l'ajout d'une nouvelle architecture, par exemple) vous devez le modifier, vous devez apprendre un tout nouveau langage pour le faire.

La meilleure chose :

Presque tout est configurable. C'est incroyable que fondamentalement le même noyau est utilisé dans de minuscules dispositifs intégrés sans MMU, et dans des superordinateurs dotés d'énormes mémoires et de milliers de processeurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X