Bienvenue sur unix.stackexchange.com!
Il n'y a pas de réponse facile à votre question, et des gens bien meilleurs que moi ont écrit des livres entiers sur le noyau Linux et les systèmes d'exploitation en général.
A propos de la portée du projet: écrire un système d'exploitation n'est pas une tâche simple! Même un système d'exploitation délibérément minimal comme Minix est une chose assez complexe! Pour vous donner une idée de Linux, pensez aux programmes C que vous avez écrits jusqu'à présent. Le cursus universitaire moyen a tendance à être de quelques milliers de lignes de C au maximum. Je pense que mon projet de dernière année était d'environ 30 à 35 000 lignes de C ++. Le noyau Linux est composé d'environ 13 000 000 lignes de code C.
Pourquoi tout est-il dans des fichiers séparés? Les projets importants sont stockés dans des fichiers séparés pour des raisons logistiques et pratiques. Pensez simplement à charger un fichier de 13 000 000 lignes dans un éditeur! Avant d'aborder un énorme projet comme Linux, vous devez absolument affiner vos compétences en C au point où la question `` pourquoi plusieurs fichiers '' se répond. Vous devriez également pouvoir lire le code C , pas seulement l'écrire. (plus difficile qu'il n'y paraît au premier abord)
Vous devriez certainement être très compétent en C. Le noyau est maintenu par des milliers de personnes, et vous serez appelé à comprendre les idiomes C personnels de chacun d'entre eux (accordé, dans les normes de codage du noyau assez rigides, mais quand même - tout le monde a leur propre style de résolution de problèmes).
Après avoir obtenu votre C fu, assurez-vous de bien comprendre les systèmes d'exploitation. Cela vous aidera à comprendre le code. Tout Linux n'est pas essentiel. Le noyau proprement dit est assez petit! Qu'est-ce que c'est:
- Des milliers de pilotes matériels pour divers appareils.
- Couches d'abstraction pour différentes classes de périphériques afin de simplifier les API et l'écriture des pilotes. Par exemple, nous avons le VFS pour les systèmes de fichiers, la couche Event pour les périphériques d'entrée, et cetera.
- Des quantités choquantes de code et de fichiers compilés conditionnellement répondant aux diverses architectures qui exécutent Linux (toutes les machines Linux ne sont pas des PC Intel, et certaines sont incroyablement différentes de ce à quoi vous pourriez vous attendre). Le noyau doit gérer ces différences, ce qui signifie plus de code.
Un problème que vous trouverez immédiatement est que ces composants ne sont pas si faciles à débrancher, à changer et à rebrancher. Il existe de nombreuses interrelations. En bref, changer des bits du noyau est délicat.
La raison pour laquelle les gens vous ont suggéré Minix est simple: c'est un système d'exploitation complet, mais il n'est pas alourdi par les besoins d'un système aussi complexe que Linux. Le code est petit, mais offre toujours toutes les fonctionnalités. Après tout, les premières versions de Linux ont été inspirées par Minix.
Bien sûr, Minix a moins de support matériel de nos jours. Et alors? C'est une aubaine! Les ordinateurs modernes se virtualisent très bien. Utilisez-le à votre avantage: une machine virtuelle pour exécuter Minix est si légère qu'elle rendra le développement difficile.
Si votre projet est de construire un système d'exploitation, vous pourriez faire pire que de commencer par étudier Minix. Vous pouvez également acheter et lire le livre que Minix a été écrit pour accompagner « Les systèmes d'exploitation modernes d'Andrew Tanenbaum ».
Vous devez également définir vos objectifs et définir précisément vos termes . Si votre propre définition d'un système d'exploitation est celle de Microsoft (un système d'exploitation avec une interface graphique et une suite logicielle complète), vous pouvez être dans un très long projet! Des centaines de milliers de personnes ont travaillé depuis les années 1960 pour nous amener où nous en sommes, après tout.
Enfin, souvenez-vous du cri de guerre de l'informaticien: « ne réinventez jamais la roue! '(nous aimons faire des exceptions lors de l'apprentissage, bien sûr. Et pour le plaisir :))