Téléchargement
illégal

Systèmes d'exploitation - Programmation d'un Noyau / OS


Programmer son propre noyau



Introduction


Je ne suis pas certain de l'utilité de programmer soi-même un noyau de système d'exploitation, étant donné qu'il en existe déjà qui sont libres, adaptables et relativement portables (exemple: Linux, GNU Hurd, etc...)

Mais ça peut être tout simplement passionnant de savoir comment se déroule la vie dans les abysses de votre ordinateur :-)

Et puis d'abord, c'est quoi un noyau?
Un noyau c'est ça.

Cet article n'a pas pour prétention de vous expliquer comment programmer un noyau, étant donné que je suis probablement aussi néophyte que vous dans le domaine. Ceci dit, je vais essayer de regrouper quelques ressources afin de faciliter la recherche d'informations dans le domaine.
Notez que je ne me suis concentré que sur les architectures x86 (les processeurs des PC). N'hésitez pas à compléter si vous trouvez des ressources pour d'autres architectures.

Prérequis

  • Connaître l'hexadécimal, ce qu'est un bit, un octet....
  • Connaître le langage assembleur x86.
  • Vous documenter sur certaines notions telles que la différence entre mode réel et mode protégé.
  • Connaître le langage C. Hé oui, de toute évidence, c'est le langage de "haut niveau" le plus utilisé dans la programmation noyau.
  • Lire ceci si vous ne l'avez pas déjà fait en lisant l'introduction.

Ressources en français


Ouf, il existe des articles en français qui expliquent les bases de la programmation noyau, et en plus ils sont bien faits !

PoorOS


PoorOS est disponible à cette adresse C'est un petit Os nommé avec affection "Os pourri" par son auteur. Derrière ce vilain sobriquet se cache un petit paquet pédagogique qui regroupe quatre programmes légers dans le but d'aborder les notions par étapes:
  • Boot_0
    • Qu'est ce qui se passe sommairement au démarrage d'un PC....
    • Aborde la notion du "chargeur" de noyau ou "loader". Ce sont les premières portions de code qui seront chargées depuis un lecteur (ici lecteur de disquette) par le bios.
    • Apprendre comment fonctionne la mémoire en mode réel, explication des segments et offsets de mémoires etc...
    • Notions vagues des services du Bios
  • Boot_1
    • Comment charger une plus grande portion de code depuis ce "loader".
  • Boot_2
    • Apprendre à jouer entre le mode réel et le mode protégé.
  • PoorOS
    • Utilisation du C++
    • Plein de choses croustillantes que je n'ai pas encore regardées :-)


Ce sommaire n'est qu'un pauvre résumé du fichier README situé dans l'archive de PoorOS. C'est dans ce fichier que toutes les étapes sont détaillées. Bien sûr le code source est également commenté (en anglais).
Boot_0, 1 et 2 sont programmés exclusivement en assembleur x86.

Un avantage de PoorOS est qu'il reste un programme très léger et donc lisible. Attention, il ne fonctionne qu'à partir d'une disquette.

Pépin (ex BosoKernel)


Un excellent cours avec codes sources fournis en exemple.
Un peu comme PoorOS, les bases semblent bien détaillées.
A visiter.

SimpleOs


Encore un petit noyau pour apprendre. Le code semble bien détaillé et chaque partie du code est dévoilée étape par étape.
C'est par là.

Autres liens


Un cours sur les systèmes d'exploitation

Ressources en anglais


Et en anglais, on trouve bien sûr plus de choses, et plus de détails.

Liens/documentations divers



A noter que j'ai piqué les 2 derniers liens dans la rubrique "liens" de la section "assembleur" du site Developpez.com. Merci à eux, ces 2 adresses sont très intéressantes.

Minix


Minix a d'abord été créé dans un but éducatif. Son code source est donc plus réduit, et donc plus lisible.
Il peut être utile d'y jeter un coup d'oeil une fois que vous avez des bases sur le sujet.
A noter que c'est noyau d'architecture micro-noyau

Linux


Linux est un noyau très mature et très complet.
On l'utilise pour des serveurs, pour des postes de travail, pour du temps réel, pour l'informatique embarquée etc...
C'est difficile de s'y retrouver dedans, donc pas terrible pour nous.
Par contre il peut être utile de regarder son code pour connaître des points précis: comment ça se passe avec d'autres processeurs etc.... Mais ne soyez pas déçus si vous ne parvenez pas à vos fins: c'est une jungle (environ 15000 fichiers de code source).

Outils indispensables


A noter que Qemu et nasm, sont aussi recommandés par l'auteur de PoorOS.

Qemu


Plus qu'indispensable, Qemu est vital pour programmer un noyau.
Pensiez-vous programmer votre noyau sur votre machine, le remettre sur disquette à chaque modification, et le tester sur une autre machine à chaque fois, voire redémarrer votre machine pour le tester car vous n'avez qu'un PC ?
Non, c'est invivable. C'est là qu'arrive Qemu, votre meilleur serviteur. C'est un émulateur open-source de processeur qui est capable d'émuler toute sorte d'architecture. Même pas besoin de faire un disquette pour tester votre noyau, il suffit d'utiliser une image de disquette.
Bref, je vous laisse voir les détails sur le site officiel et ici

Nasm


Nasm est un assembleur x86 open-source. Il est portable et ne s'embarrasse
pas d'une syntaxe affreuse.
A noter qu'il utilise la syntaxe intel.
Voir site officiel

Divers


Sources


A noter que certains des liens cités ici ont été trouvés via le forum et / ou le site de http://www.developpez.com
Publié par kilian - Dernière mise à jour le 25 juin 2011 à 02:55 par @ntoine
Ce document intitulé « Systèmes d'exploitation - Programmation d'un Noyau / OS » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Suggestions
  •  Systèmes d'exploitation - Programmation d'un Noyau / OS
  •  Copie du système d'exploitation + programme » Bonjour, j'ai actuellement un disque dur SATA à 7200, que je souhaite garder, mais j'aimerai basculer le système d'exploitation et mes programmes sur un deuxième disque dur à 10'000 tours, et après en supprimant et ne gardant que mes documents texte...
  •  Système d'exploitation » Articles : Description du système d'exploitation Pour qu'un ordinateur soit capable de faire fonctionner un programme informatique (appelé parfois application ou logiciel), la machine doit être en mesure d'effectuer un certain nombre d'opérations...
  •  Exercice/systeme d'exploitation (Résolu) » Meilleure réponse: Google...
  •  Problème Mettre a jour samsung wave. (Résolu) » Meilleure réponse: Salut, si tu as ce message "espace système 11Mo nécessaires pour la mise à niveau" soit tu désinstalles Kies avec toute la base de registre qui va avec soit tu passes ta mise a jour par "Bootloader" et le dernier firmware qui correspond
  •  Comment créer son système d'exploitation (Résolu) » Meilleure réponse: Bonjour, Créer son propre système d'exploitation est certes une entreprise difficile dans le cas ou on veut rivaliser avec windows, linux mac ou autre. L'avantage qu'on eu les pionniers de l'informatique, est que ca en étais a ces balbu
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
Cygwin - Désinstaller CygWin
Unix et Linux: Un héritage