Quels sont certains petits projets de noyau Linux intéressants pour aider à apprendre la source?

StackOverflow https://stackoverflow.com/questions/135637

Question

Quels petits projets suggéreriez-vous à un novice avec le noyau, mais à quelqu'un qui a beaucoup d’expérience en systèmes et en C? L’objectif est de développer une connaissance du code source du noyau et une installation d’expérimentation d’idées folles.

J'essaie de penser à quelques petites tâches gérables (par exemple, ajouter un appel système), mais que suggéreriez-vous? Pour un public cible, pensez à quelqu'un qui a au moins un cours de premier cycle sur l'OS à son actif.

Était-ce utile?

La solution

Lorsque j’ai suivi le cours de premier cycle sur le système d’exploitation mentionné ci-dessus, l’une de nos tâches consistait à ajouter quelques appels système. Ils étaient extrêmement simples: rien que la lecture et la réinitialisation des compteurs qui comptaient le nombre de fois où d’autres appels système ont été invoqués. Cependant, ajouter un appel système nécessite de regarder et de modifier pas mal de fichiers, beaucoup d'entre eux sont dans le même sous-arbre relativement petit de la source du noyau, mais cela suffit pour vous familiariser avec les conventions de codage, au moins.

Vous pouvez également envisager:

  • Ajouter un autre mode (très simple) au planificateur pour mettre en œuvre une politique que vous trouvez intéressante. L’implémentation "Une pour toutes les gouverner" est assez difficile (et encore plus difficile à convenir), mais faire un simple ordonnanceur O (N), même un ordonnanceur rudimentaire O (1), peut être fait relativement simplement, sur le plan de l’algorithme. Même dans ce cas, il faut parcourir beaucoup de code.

  • Écriture d'un pilote de périphérique pour un matériel externe très simple, tel qu'un microcontrôleur 8 bits communiquant via un port série ou même quelque chose que vous construisez vous-même. Si vous avez une expérience matérielle, essayez peut-être d'écrire un pilote de périphérique pouvant émuler un contrôleur NES (bit-bang quelques fils en utilisant le port série et peut-être un registre à décalage série-parallèle). Vous pouvez également faire quelque chose comme piloter un écran LED à 7 segments vraiment simple (comme dans un réveil) ou une petite collection d'entre eux.

Autres conseils

Le projet des gardiens du noyau en possède de très bons.

Au risque de déclencher une guerre des flammes: je vous conseillerais de ne pas utiliser le code du noyau Linux. Si vous voulez vous familiariser avec la programmation du noyau, optez pour FreeBSD, NetBSD ou OpenSolaris, par exemple. Le code est beaucoup plus propre et mieux structuré (il s’agit bien d’opinion subjective), conçu et même documenté. De plus, ils ont un débogueur de noyau (notez que Linus s’oppose à la fois aux débogueurs de noyau et aux API de noyau stables, ce qui fait de tout noyau une cible mobile pour votre travail). Ces systèmes d’exploitation ont même une liste de projets sur leurs sites Web respectifs, et j’ai personnellement une très bonne expérience avec les gens des forums OpenSolaris et des listes de diffusion NetBSD.

Vous dites que vous avez une expérience de C - regardez les référentiels Web de code source de Linux et d'OpenSolaris ou certains BSD, comparez le code et exprimez votre propre opinion. Ce que je dis, c’est, je suppose, qu’il ya plus à UNIX open-source qu’à Linux et qu’il faut au moins les regarder avant de choisir Linux.

Un projet basé sur Unix v6 est un bon point de départ pour commencer . "Xv6, un système d'exploitation d'enseignement de type Unix"

Il existe également un cynix , un simple noyau monolithique de type Unix IA-32 (non maintenu).

Un excellent didacticiel est le Lancez votre propre système d'exploitation UNIX-clone de jouet . ".

Essayez de télécharger le code source MINIX  et jouez avec, essayez de comprendre la logique et cela prendra du temps sans doute, mais si vous vous en tenez à cela, vous pourrez devenir un expert dans un certain temps

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top